0 txs
0 calls
constructor
constructor()
functions
allocatedETHDeficit
viewfunction allocatedETHDeficit() view returns (uint256)
allocatedETHForClaims
viewfunction allocatedETHForClaims() view returns (uint256)
allocatedETHSurplus
viewfunction allocatedETHSurplus() view returns (uint256)
balance
viewfunction balance() view returns (uint256)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
getRoleMember
viewfunction getRoleMember(bytes32 role, uint256 index) view returns (address)
getRoleMemberCount
viewfunction getRoleMemberCount(bytes32 role) view returns (uint256)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
latestCumulativeETHRequested
viewfunction latestCumulativeETHRequested() view returns (uint128)
MANAGER_ROLE
viewfunction MANAGER_ROLE() view returns (bytes32)
mETH
viewfunction mETH() view returns (address)
nextRequestId
viewfunction nextRequestId() view returns (uint256)
numberOfBlocksToFinalize
viewfunction numberOfBlocksToFinalize() view returns (uint256)
oracle
viewfunction oracle() view returns (address)
REQUEST_CANCELLER_ROLE
viewfunction REQUEST_CANCELLER_ROLE() view returns (bytes32)
requestByID
viewfunction requestByID(uint256 requestID) view returns (tuple)
requestInfo
viewfunction requestInfo(uint256 requestID) view returns (bool, uint256)
stakingContract
viewfunction stakingContract() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
totalClaimed
viewfunction totalClaimed() view returns (uint256)
allocateETH
payablefunction allocateETH() payable
cancelUnfinalizedRequests
nonpayablefunction cancelUnfinalizedRequests(uint256 maxCancel) returns (bool)
claim
nonpayablefunction claim(uint256 requestID, address requester)
create
nonpayablefunction create(address requester, uint128 mETHLocked, uint128 ethRequested) returns (uint256)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(tuple init)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setNumberOfBlocksToFinalize
nonpayablefunction setNumberOfBlocksToFinalize(uint256 numberOfBlocksToFinalize_)
withdrawAllocatedETHSurplus
nonpayablefunction withdrawAllocatedETHSurplus()
events
Initialized
event Initialized(uint8 version)
ProtocolConfigChanged
event ProtocolConfigChanged(bytes4 indexed setterSelector, string setterSignature, bytes value)
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)
UnstakeRequestCancelled
event UnstakeRequestCancelled(uint256 indexed id, address indexed requester, uint256 mETHLocked, uint256 ethRequested, uint256 cumulativeETHRequested, uint256 blockNumber)
UnstakeRequestClaimed
event UnstakeRequestClaimed(uint256 indexed id, address indexed requester, uint256 mETHLocked, uint256 ethRequested, uint256 cumulativeETHRequested, uint256 blockNumber)
UnstakeRequestCreated
event UnstakeRequestCreated(uint256 indexed id, address indexed requester, uint256 mETHLocked, uint256 ethRequested, uint256 cumulativeETHRequested, uint256 blockNumber)
errors
AlreadyClaimed
error AlreadyClaimed()
DoesNotReceiveETH
error DoesNotReceiveETH()
NotEnoughFunds
error NotEnoughFunds(uint256 cumulativeETHOnRequest, uint256 allocatedETHForClaims)
NotFinalized
error NotFinalized()
NotRequester
error NotRequester()
NotStakingContract
error NotStakingContract()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b61313680620000f36000396000f3fe6080604052600436106101dc5760003560e01c80639010d07c11610102578063c02d4c8e11610095578063ddd5e1b211610064578063ddd5e1b21461069d578063ec87621c146106bd578063ee99205c146106f1578063fe3af1c11461071e57610213565b8063c02d4c8e14610632578063ca15c87314610647578063d547741f14610667578063d54ad2a11461068757610213565b8063ae5cf272116100d1578063ae5cf272146105d2578063b2d42b46146105e8578063b5475cf6146105fd578063b69ef8a81461061d57610213565b80639010d07c146104a257806391d14854146104c25780639a6e6ed114610515578063a217fddf146105bd57610213565b806329e848671161017a5780634d13bfa6116101495780634d13bfa6146104215780634f588bf1146104295780636a84a985146104605780637dc0d1d01461047557610213565b806329e848671461036f5780632d830ce3146103c15780632f2ff15d146103e157806336568abe1461040157610213565b80631e846464116101b65780631e846464146102b3578063248a9ca3146102d3578063278c5acd1461030357806328ad3aac1461034d57610213565b806301ffc9a714610245578063106b263c1461027a5780631453444d1461029d57610213565b36610213576040517f34352c7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517f34352c7300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b34801561025157600080fd5b50610265610260366004612a64565b610752565b60405190151581526020015b60405180910390f35b34801561028657600080fd5b5061028f6107ae565b604051908152602001610271565b3480156102a957600080fd5b5061028f60cb5481565b3480156102bf57600080fd5b506102656102ce366004612aa6565b6107fe565b3480156102df57600080fd5b5061028f6102ee366004612aa6565b60009081526065602052604090206001015490565b34801561030f57600080fd5b5060cf5461032c906fffffffffffffffffffffffffffffffff1681565b6040516fffffffffffffffffffffffffffffffff9091168152602001610271565b34801561035957600080fd5b5061036d610368366004612aa6565b610d21565b005b34801561037b57600080fd5b5060ce5461039c9073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610271565b3480156103cd57600080fd5b5061036d6103dc366004612b20565b610de4565b3480156103ed57600080fd5b5061036d6103fc366004612bfb565b611060565b34801561040d57600080fd5b5061036d61041c366004612bfb565b61108a565b61036d611139565b34801561043557600080fd5b50610449610444366004612aa6565b6111a3565b604080519215158352602083019190915201610271565b34801561046c57600080fd5b5060d05461028f565b34801561048157600080fd5b5060ca5461039c9073ffffffffffffffffffffffffffffffffffffffff1681565b3480156104ae57600080fd5b5061039c6104bd366004612c2b565b6112e3565b3480156104ce57600080fd5b506102656104dd366004612bfb565b600091825260656020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561052157600080fd5b50610535610530366004612aa6565b611302565b6040516102719190600060c08201905067ffffffffffffffff835116825273ffffffffffffffffffffffffffffffffffffffff602084015116602083015260408301516fffffffffffffffffffffffffffffffff80821660408501528060608601511660608501528060808601511660808501528060a08601511660a0850152505092915050565b3480156105c957600080fd5b5061028f600081565b3480156105de57600080fd5b5061028f60cd5481565b3480156105f457600080fd5b5061036d6113fa565b34801561060957600080fd5b5061028f610618366004612c6b565b611503565b34801561062957600080fd5b5061028f61178d565b34801561063e57600080fd5b5061028f6117ab565b34801561065357600080fd5b5061028f610662366004612aa6565b6117ee565b34801561067357600080fd5b5061036d610682366004612bfb565b611805565b34801561069357600080fd5b5061028f60cc5481565b3480156106a957600080fd5b5061036d6106b8366004612bfb565b61182a565b3480156106c957600080fd5b5061028f7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0881565b3480156106fd57600080fd5b5060c95461039c9073ffffffffffffffffffffffffffffffffffffffff1681565b34801561072a57600080fd5b5061028f7fef6d3da212345543d99125b43af0bc451d30ffaf90d4560558d702b21179a70f81565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f5a05180f0000000000000000000000000000000000000000000000000000000014806107a857506107a882611c6b565b92915050565b60cb5460cf546000916fffffffffffffffffffffffffffffffff90911611156107f85760cb5460cf546107f391906fffffffffffffffffffffffffffffffff16612ce5565b905090565b50600090565b60007fef6d3da212345543d99125b43af0bc451d30ffaf90d4560558d702b21179a70f61082a81611d02565b60d0546000819003610840576000925050610d1b565b8381101561084c578093505b60008467ffffffffffffffff81111561086757610867612abf565b6040519080825280602002602001820160405280156108e557816020015b6040805160c08101825260008082526020808301829052928201819052606082018190526080820181905260a082015282527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9092019101816108855790505b50905060005b85811015610b3b5760d080546000919061090790600190612ce5565b8154811061091757610917612cf8565b60009182526020918290206040805160c0810182526003909302909101805467ffffffffffffffff8116845273ffffffffffffffffffffffffffffffffffffffff68010000000000000000909104169383019390935260018301546fffffffffffffffffffffffffffffffff80821692840192909252700100000000000000000000000000000000908190048216606084015260029093015480821660808401529290920490911660a082015290506109cf81611d0f565b156109da5750610b3b565b60d08054806109eb576109eb612d27565b60008281526020812060037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9093019283020180547fffffffff000000000000000000000000000000000000000000000000000000001681556001810182905560020155905582518190849084908110610a6757610a67612cf8565b602002602001018190525081610a7c90612d56565b9150806020015173ffffffffffffffffffffffffffffffffffffffff1681604001516fffffffffffffffffffffffffffffffff167ff8d5df096390c80d709314ba3a8e55a91854bab1fbf8cce78081bdd48eb49aed836060015184608001518560a001518660000151604051610b2d94939291906fffffffffffffffffffffffffffffffff948516815292841660208401529216604082015267ffffffffffffffff91909116606082015260800190565b60405180910390a3506108eb565b60d054600090808203610b795760cf80547fffffffffffffffffffffffffffffffff0000000000000000000000000000000016905560009150610c82565b600060d0610b88600184612ce5565b81548110610b9857610b98612cf8565b60009182526020918290206040805160c0810182526003909302909101805467ffffffffffffffff8116845273ffffffffffffffffffffffffffffffffffffffff68010000000000000000909104169383019390935260018301546fffffffffffffffffffffffffffffffff80821692840192909252700100000000000000000000000000000000908190048216606084015260029093015480821660808401529290920490911660a0820181905260cf80547fffffffffffffffffffffffffffffffff000000000000000000000000000000001690911790559050610c7d81611d0f565b159250505b60005b83811015610d125760ce548551610d009173ffffffffffffffffffffffffffffffffffffffff1690879084908110610cbf57610cbf612cf8565b602002602001015160200151878481518110610cdd57610cdd612cf8565b6020026020010151606001516fffffffffffffffffffffffffffffffff16611dd6565b80610d0a81612d56565b915050610c85565b50909550505050505b50919050565b7f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b08610d4b81611d02565b60cd82905560408051602081018490527f28ad3aac00000000000000000000000000000000000000000000000000000000917f01d854e8dde9402801a4c6f2840193465752abfad61e0bb7c4258d526ae42e749101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052610dd891612dfc565b60405180910390a25050565b600054610100900460ff1615808015610e045750600054600160ff909116105b80610e1e5750303b158015610e1e575060005460ff166001145b610eaf576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790558015610f0d57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b610f15611e63565b8151610f2390600090611efa565b60c082015160cd55608082015160c9805473ffffffffffffffffffffffffffffffffffffffff9283167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560a084015160ca8054918416918316919091179055606084015160ce80549190931691161790556020820151610fcb907f241ecf16d79d0f8dbfb92cbc07fe17840425976cf0667f022fe9877caa831b0890611efa565b610ff97fef6d3da212345543d99125b43af0bc451d30ffaf90d4560558d702b21179a70f8360400151611efa565b801561105c57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050565b60008281526065602052604090206001015461107b81611d02565b6110858383611efa565b505050565b73ffffffffffffffffffffffffffffffffffffffff8116331461112f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610ea6565b61105c8282611f1c565b60c95473ffffffffffffffffffffffffffffffffffffffff16331461118a576040517f135420fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3460cb600082825461119c9190612e69565b9091555050565b600080600060d084815481106111bb576111bb612cf8565b600091825260208083206040805160c0810182526003909402909101805467ffffffffffffffff8116855273ffffffffffffffffffffffffffffffffffffffff68010000000000000000909104169284019290925260018201546fffffffffffffffffffffffffffffffff8082169285019290925270010000000000000000000000000000000090819004821660608501526002909201548082166080850152919091041660a0820152915061127082611d0f565b905060008083608001518460a001516112899190612e7c565b6fffffffffffffffffffffffffffffffff16905060cb548110156112d7576112d48160cb546112b89190612ce5565b85608001516fffffffffffffffffffffffffffffffff16611f3e565b91505b50909590945092505050565b60008281526097602052604081206112fb9083611f54565b9392505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915260d0828154811061134757611347612cf8565b60009182526020918290206040805160c0810182526003909302909101805467ffffffffffffffff8116845273ffffffffffffffffffffffffffffffffffffffff68010000000000000000909104169383019390935260018301546fffffffffffffffffffffffffffffffff80821692840192909252700100000000000000000000000000000000908190048216606084015260029093015480821660808401529290920490911660a082015292915050565b60c95473ffffffffffffffffffffffffffffffffffffffff16331461144b576040517f135420fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006114556117ab565b9050806000036114625750565b8060cb60008282546114749190612ce5565b909155505060c954604080517fc151aa72000000000000000000000000000000000000000000000000000000008152905173ffffffffffffffffffffffffffffffffffffffff9092169163c151aa72918491600480830192600092919082900301818588803b1580156114e657600080fd5b505af11580156114fa573d6000803e3d6000fd5b5050505050505b565b60c95460009073ffffffffffffffffffffffffffffffffffffffff163314611557576040517f135420fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cf5460009061157a9084906fffffffffffffffffffffffffffffffff16612ea5565b60d080546040805160c08101825267ffffffffffffffff43818116835273ffffffffffffffffffffffffffffffffffffffff808d16602085018181526fffffffffffffffffffffffffffffffff8089168789019081528f8216606089019081528f831660808a01908152838e1660a08b0181815260018e018f5560009e909e528a5160038e027fe89d44c8fd6a9bac8af33ce47f56337617d449bf7ff3956b618c646de829cbcb810180549851909a1668010000000000000000027fffffffff0000000000000000000000000000000000000000000000000000000090981691909b161795909517909655905190518216700100000000000000000000000000000000908102918316919091177fe89d44c8fd6a9bac8af33ce47f56337617d449bf7ff3956b618c646de829cbcc88015593519951811690930298909216979097177fe89d44c8fd6a9bac8af33ce47f56337617d449bf7ff3956b618c646de829cbcd9093019290925560cf80547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169092179091559151949550919391929184917fed5afdabca1838de7f5496f997e6e788ad3207f6299f64700e63435813b7ade49161177b918b918b918a916fffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b60405180910390a35095945050505050565b600060cc5460cb5411156107f85760cc5460cb546107f39190612ce5565b60cf5460cb546000916fffffffffffffffffffffffffffffffff1610156107f85760cf5460cb546107f3916fffffffffffffffffffffffffffffffff1690612ce5565b60008181526097602052604081206107a890611f60565b60008281526065602052604090206001015461182081611d02565b6110858383611f1c565b60c95473ffffffffffffffffffffffffffffffffffffffff16331461187b576040517f135420fb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060d0838154811061189057611890612cf8565b60009182526020918290206040805160c0810182526003909302909101805467ffffffffffffffff8116845273ffffffffffffffffffffffffffffffffffffffff680100000000000000009091041693830184905260018101546fffffffffffffffffffffffffffffffff8082169385019390935270010000000000000000000000000000000090819004831660608501526002909101548083166080850152041660a0820152915061196f576040517f646cf55800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806020015173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146119d8576040517fe39da59e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6119e181611d0f565b611a17576040517f1bee0d5a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60cb548160a001516fffffffffffffffffffffffffffffffff161115611a8b5760a081015160cb546040517f8c9053680000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff90921660048301526024820152604401610ea6565b60d08381548110611a9e57611a9e612cf8565b60009182526020822060039091020180547fffffffff0000000000000000000000000000000000000000000000000000000016815560018101829055600201819055608082015160cc80546fffffffffffffffffffffffffffffffff92909216929091611b0c908490612e69565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16837f5de6f9e4fdf1b740a7ba3b485303743eec250be281a2dd4df046c7fcecbdb04d836060015184608001518560a001518660000151604051611ba894939291906fffffffffffffffffffffffffffffffff948516815292841660208401529216604082015267ffffffffffffffff91909116606082015260800190565b60405180910390a360ce5460608201516040517f42966c680000000000000000000000000000000000000000000000000000000081526fffffffffffffffffffffffffffffffff909116600482015273ffffffffffffffffffffffffffffffffffffffff909116906342966c6890602401600060405180830381600087803b158015611c3357600080fd5b505af1158015611c47573d6000803e3d6000fd5b505050506110858282608001516fffffffffffffffffffffffffffffffff16611f6a565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806107a857507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316146107a8565b611d0c81336120c4565b50565b60ca54604080517ff3a009a0000000000000000000000000000000000000000000000000000000008152905160009273ffffffffffffffffffffffffffffffffffffffff169163f3a009a0916004808301926101009291908290030181865afa158015611d80573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611da49190612ef1565b6020015167ffffffffffffffff1660cd54836000015167ffffffffffffffff16611dce9190612e69565b111592915050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261108590849061217e565b600054610100900460ff16611501576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610ea6565b611f04828261228d565b60008281526097602052604090206110859082612381565b611f2682826123a3565b6000828152609760205260409020611085908261245e565b6000818310611f4d57816112fb565b5090919050565b60006112fb8383612480565b60006107a8825490565b80471015611fd4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610ea6565b60008273ffffffffffffffffffffffffffffffffffffffff168260405160006040518083038185875af1925050503d806000811461202e576040519150601f19603f3d011682016040523d82523d6000602084013e612033565b606091505b5050905080611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610ea6565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661105c57612104816124aa565b61210f8360206124c9565b604051602001612120929190612fe2565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f08c379a0000000000000000000000000000000000000000000000000000000008252610ea691600401613063565b60006121e0826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff1661270c9092919063ffffffff16565b90508051600014806122015750808060200190518101906122019190613076565b611085576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610ea6565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff1661105c57600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff85168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556123233390565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60006112fb8373ffffffffffffffffffffffffffffffffffffffff8416612723565b600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff161561105c57600082815260656020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b60006112fb8373ffffffffffffffffffffffffffffffffffffffff8416612772565b600082600001828154811061249757612497612cf8565b9060005260206000200154905092915050565b60606107a873ffffffffffffffffffffffffffffffffffffffff831660145b606060006124d8836002613098565b6124e3906002612e69565b67ffffffffffffffff8111156124fb576124fb612abf565b6040519080825280601f01601f191660200182016040528015612525576020820181803683370190505b5090507f30000000000000000000000000000000000000000000000000000000000000008160008151811061255c5761255c612cf8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106125bf576125bf612cf8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060006125fb846002613098565b612606906001612e69565b90505b60018111156126a3577f303132333435363738396162636465660000000000000000000000000000000085600f166010811061264757612647612cf8565b1a60f81b82828151811061265d5761265d612cf8565b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a90535060049490941c9361269c816130af565b9050612609565b5083156112fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610ea6565b606061271b848460008561286c565b949350505050565b600081815260018301602052604081205461276a575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556107a8565b5060006107a8565b6000818152600183016020526040812054801561285b576000612796600183612ce5565b85549091506000906127aa90600190612ce5565b905081811461280f5760008660000182815481106127ca576127ca612cf8565b90600052602060002001549050808760000184815481106127ed576127ed612cf8565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061282057612820612d27565b6001900381819060005260206000200160009055905585600101600086815260200190815260200160002060009055600193505050506107a8565b60009150506107a8565b5092915050565b6060824710156128fe576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610ea6565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161292791906130e4565b60006040518083038185875af1925050503d8060008114612964576040519150601f19603f3d011682016040523d82523d6000602084013e612969565b606091505b509150915061297a87838387612985565b979650505050505050565b60608315612a1b578251600003612a145773ffffffffffffffffffffffffffffffffffffffff85163b612a14576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610ea6565b508161271b565b61271b8383815115612a305781518083602001fd5b806040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ea69190613063565b600060208284031215612a7657600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146112fb57600080fd5b600060208284031215612ab857600080fd5b5035919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b73ffffffffffffffffffffffffffffffffffffffff81168114611d0c57600080fd5b8035612b1b81612aee565b919050565b600060e08284031215612b3257600080fd5b60405160e0810181811067ffffffffffffffff82111715612b7c577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040528235612b8a81612aee565b81526020830135612b9a81612aee565b60208201526040830135612bad81612aee565b60408201526060830135612bc081612aee565b6060820152612bd160808401612b10565b6080820152612be260a08401612b10565b60a082015260c083013560c08201528091505092915050565b60008060408385031215612c0e57600080fd5b823591506020830135612c2081612aee565b809150509250929050565b60008060408385031215612c3e57600080fd5b50508035926020909101359150565b6fffffffffffffffffffffffffffffffff81168114611d0c57600080fd5b600080600060608486031215612c8057600080fd5b8335612c8b81612aee565b92506020840135612c9b81612c4d565b91506040840135612cab81612c4d565b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b818103818111156107a8576107a8612cb6565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612d8757612d87612cb6565b5060010190565b60005b83811015612da9578181015183820152602001612d91565b50506000910152565b60008151808452612dca816020860160208601612d8e565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60408152602460408201527f7365744e756d6265724f66426c6f636b73546f46696e616c697a652875696e7460608201527f3235362900000000000000000000000000000000000000000000000000000000608082015260a0602082015260006112fb60a0830184612db2565b808201808211156107a8576107a8612cb6565b6fffffffffffffffffffffffffffffffff82811682821603908082111561286557612865612cb6565b6fffffffffffffffffffffffffffffffff81811683821601908082111561286557612865612cb6565b805167ffffffffffffffff81168114612b1b57600080fd5b8051612b1b81612c4d565b6000610100808385031215612f0557600080fd5b6040519081019067ffffffffffffffff82118183101715612f4f577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b81604052612f5c84612ece565b8152612f6a60208501612ece565b6020820152612f7b60408501612ece565b6040820152612f8c60608501612ece565b606082015260808401519150612fa182612c4d565b816080820152612fb360a08501612ee6565b60a0820152612fc460c08501612ee6565b60c0820152612fd560e08501612ee6565b60e0820152949350505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835161301a816017850160208801612d8e565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351613057816028840160208801612d8e565b01602801949350505050565b6020815260006112fb6020830184612db2565b60006020828403121561308857600080fd5b815180151581146112fb57600080fd5b80820281158282048414176107a8576107a8612cb6565b6000816130be576130be612cb6565b507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190565b600082516130f6818460208701612d8e565b919091019291505056fea26469706673582212209fb9f40f270290a006908b332e196aff2c5b5f2698b78850fed0ddbb730d6a5264736f6c63430008140033