0 txs
2 calls
constructor
constructor()
functions
BATCH_CLAIMER_ROLE
purefunction BATCH_CLAIMER_ROLE() pure returns (bytes32)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
getAvailableRewards
viewfunction getAvailableRewards() view returns (uint256 availableBalance)
getOrderRedeemedStatus
viewfunction getOrderRedeemedStatus(address user, bytes32 orderId) view returns (bool isRedeemed)
getRewardTokenBalances
viewfunction getRewardTokenBalances() view returns (uint256 availableBalance, uint256 totalContractBalance)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
paused
viewfunction paused() view returns (bool)
PAUSER_ROLE
purefunction PAUSER_ROLE() pure returns (bytes32)
REWARD_ADMIN_ROLE
purefunction REWARD_ADMIN_ROLE() pure returns (bytes32)
REWARD_MANAGER_ROLE
purefunction REWARD_MANAGER_ROLE() pure returns (bytes32)
rewardToken
viewfunction rewardToken() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
validateAndGetHashToSign
viewfunction validateAndGetHashToSign(address userWallet, uint256 rewardAmount, bytes32 orderId) view returns (bytes32 hashToSign)
version
purefunction version() pure returns (string)
claimReward
nonpayablefunction claimReward(uint256 rewardAmount, bytes32 orderId, bytes signature) returns (bool success)
claimRewardFor
nonpayablefunction claimRewardFor(address user, uint256 rewardAmount, bytes32 orderId, bytes signature) returns (bool success)
depositRewards
nonpayablefunction depositRewards(uint256 amount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address admin, address rewardAdmin, address rewardManager, address pauser, address newRewardToken)
pause
nonpayablefunction pause()
reconcileBalance
nonpayablefunction reconcileBalance()
recoverUnaccountedTokens
nonpayablefunction recoverUnaccountedTokens(uint256 amount)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
setRewardToken
nonpayablefunction setRewardToken(address newRewardToken)
unpause
nonpayablefunction unpause()
withdrawRewards
nonpayablefunction withdrawRewards(uint256 amount)
events
EIP712DomainChanged
event EIP712DomainChanged()
Initialized
event Initialized(uint64 version)
Paused
event Paused(address account)
RewardClaimed
event RewardClaimed(address indexed user, uint256 amount, bytes32 indexed orderId)
RewardsDeposited
event RewardsDeposited(address indexed depositor, uint256 amount, uint256 newBalance)
RewardsReconciled
event RewardsReconciled(uint256 untrackedAmount, uint256 newAvailableBalance)
RewardsWithdrawn
event RewardsWithdrawn(address indexed withdrawer, uint256 amount, uint256 newBalance)
RewardTokenSet
event RewardTokenSet(address indexed newRewardToken)
RewardTokenUpdated
event RewardTokenUpdated(address indexed newRewardToken)
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)
UnaccountedTokensRecovered
event UnaccountedTokensRecovered(address indexed recipient, uint256 amount)
Unpaused
event Unpaused(address account)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
ExpiryTooFar
error ExpiryTooFar(bytes32 orderId, uint256 orderTimestamp)
ExpiryTooSoon
error ExpiryTooSoon(bytes32 orderId, uint256 orderTimestamp)
InsufficientAvailableRewards
error InsufficientAvailableRewards()
InsufficientUnaccountedTokens
error InsufficientUnaccountedTokens()
InvalidAmount
error InvalidAmount()
InvalidInitialization
error InvalidInitialization()
InvalidOrderId
error InvalidOrderId(bytes32 orderId)
InvalidSignatureOrParameters
error InvalidSignatureOrParameters(string errorMessage, uint8 error)
NotInitializing
error NotInitializing()
OrderAlreadyUsed
error OrderAlreadyUsed()
OrderExpired
error OrderExpired(bytes32 orderId, uint256 orderTimestamp)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
RewardExceedsMaxAmount
error RewardExceedsMaxAmount(uint256 rewardAmount, uint256 maxAmount)
RewardsManagerCannotClaim
error RewardsManagerCannotClaim()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UnauthorizedSigner
error UnauthorizedSigner(address signer)
ZeroAddress
error ZeroAddress()
creation bytecode
0x6080604052348015600e575f5ffd5b5060156019565b60c9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560685760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6121da806100d65f395ff3fe608060405234801561000f575f5ffd5b50600436106101c6575f3560e01c80636a8cb20f116100fe5780639342c8f41161009e578063e63ab1e91161006e578063e63ab1e9146103f7578063f337d43d1461040a578063f7c618c11461041d578063fc9c99ac14610447575f5ffd5b80639342c8f4146103b7578063a217fddf146103ca578063d547741f146103d1578063dedd43a0146103e4575f5ffd5b806384b0196e116100d957806384b0196e146103635780638aee81271461037e5780638bdf67f21461039157806391d14854146103a4575f5ffd5b80636a8cb20f1461032b5780636d750d80146103485780638456cb591461035b575f5ffd5b806336568abe116101695780635c975abb116101445780635c975abb146102b657806365db6818146102cd578063685ae6f9146102e05780636a76440014610318575f5ffd5b806336568abe146102785780633f4ba83a1461028b57806354fd4d5014610293575f5ffd5b80631959f959116101a45780631959f9591461020f578063248a9ca31461023f5780632f2ff15d1461025257806335bd07a714610265575f5ffd5b806301ffc9a7146101ca5780630b2ec672146101f25780631459457a146101fc575b5f5ffd5b6101dd6101d8366004611b3d565b61044f565b60405190151581526020015b60405180910390f35b6101fa610485565b005b6101fa61020a366004611b7f565b6104dd565b7fb38ef5cec0faa52025e2b98aa7ab4a44313e267af746e5713f57ac96f83d75dd5b6040519081526020016101e9565b61023161024d366004611be0565b610763565b6101fa610260366004611bf7565b610783565b610231610273366004611c21565b6107a5565b6101fa610286366004611bf7565b610a05565b6101fa610a3d565b60408051808201825260018152603160f81b602082015290516101e99190611c7f565b5f5160206121655f395f51905f525460ff166101dd565b5f5160206121255f395f51905f52610231565b6101dd6102ee366004611c91565b6001600160a01b03919091165f908152600260209081526040808320938352929052205460ff1690565b6101fa610326366004611be0565b610a8a565b610333610bbd565b604080519283526020830191909152016101e9565b5f5160206120e55f395f51905f52610231565b6101fa610c36565b61036b610c83565b6040516101e99796959493929190611cb9565b6101fa61038c366004611d4f565b610d2c565b6101fa61039f366004611be0565b610dca565b6101dd6103b2366004611bf7565b610ea3565b6101fa6103c5366004611be0565b610ed9565b6102315f81565b6101fa6103df366004611bf7565b610fc9565b6101dd6103f2366004611e05565b610fe5565b5f5160206121055f395f51905f52610231565b6101dd610418366004611e61565b611108565b5f5461042f906001600160a01b031681565b6040516001600160a01b0390911681526020016101e9565b600154610231565b5f6001600160e01b03198216637965db0b60e01b148061047f57506301ffc9a760e01b6001600160e01b03198316145b92915050565b61049c5f5160206121255f395f51905f5233610ea3565b6104d357335f5160206121255f395f51905f5260405163e2517d3f60e01b81526004016104ca929190611eac565b60405180910390fd5b6104db6111ab565b565b5f6104e6611276565b805490915060ff600160401b82041615906001600160401b03165f8115801561050c5750825b90505f826001600160401b031660011480156105275750303b155b905081158015610535575080155b156105535760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561057d57845460ff60401b1916600160401b1785555b6001600160a01b038a166105a45760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0388166105cb5760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0387166105f25760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0389166106195760405163d92e233d60e01b815260040160405180910390fd5b6001600160a01b0386166106405760405163d92e233d60e01b815260040160405180910390fd5b61064861129e565b61065061129e565b6106586112a6565b6106a46040518060400160405280600d81526020016c53617069656e5265776172647360981b81525061069f6040805180820190915260018152603160f81b602082015290565b6112b6565b6106ae5f8b6112cc565b506106c65f5160206121055f395f51905f52886112cc565b506106de5f5160206121255f395f51905f528a6112cc565b506106f65f5160206120e55f395f51905f52896112cc565b505f80546001600160a01b0319166001600160a01b038816179055831561075757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050505050565b5f9081525f5160206121455f395f51905f52602052604090206001015490565b61078c82610763565b6107958161136d565b61079f83836112cc565b50505050565b5f825f036107c65760405163162908e360e11b815260040160405180910390fd5b816107e757604051636b798d5160e11b8152600481018390526024016104ca565b816001600160401b0381164210610823576040516316ab1aa960e31b8152600481018490526001600160401b03821660248201526044016104ca565b61082e603c42611ed9565b816001600160401b031610156108695760405163329698d760e11b8152600481018490526001600160401b03821660248201526044016104ca565b61087561012d42611ed9565b816001600160401b031611156108b0576040516390c1d80f60e01b8152600481018490526001600160401b03821660248201526044016104ca565b6001548411156108d357604051638c9471c960e01b815260040160405180910390fd5b6001600160a01b0385165f90815260026020908152604080832086845290915290205460ff1615610917576040516388b3904360e01b815260040160405180910390fd5b61092e5f5160206120e55f395f51905f5286610ea3565b1561094c5760405163911d099b60e01b815260040160405180910390fd5b694a1d89bb94865ec0000084111561098a5760405163026eede560e11b815260048101859052694a1d89bb94865ec0000060248201526044016104ca565b604080517f8815cb9b8f4a8e1f91b1cffe2597532481c17a543c544b8a2ef63bbdfa1633d760208201526001600160a01b0387169181019190915260608101859052608081018490525f9060a0016040516020818303038152906040528051906020012090506109f981611377565b925050505b9392505050565b6001600160a01b0381163314610a2e5760405163334bd91960e11b815260040160405180910390fd5b610a3882826113a3565b505050565b610a545f5160206121055f395f51905f5233610ea3565b610a8257335f5160206121055f395f51905f5260405163e2517d3f60e01b81526004016104ca929190611eac565b6104db61141c565b610aa15f5160206121255f395f51905f5233610ea3565b610acf57335f5160206121255f395f51905f5260405163e2517d3f60e01b81526004016104ca929190611eac565b5f80546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa158015610b15573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b399190611eec565b90505f60015482610b4a9190611f03565b905080831115610b6d5760405163a3ea676760e01b815260040160405180910390fd5b5f54610b83906001600160a01b0316338561147b565b60405183815233907fbb616a475dce3c5ca6cf5f6feb058ecad1544bf41f739697d738e74a714be27c9060200160405180910390a2505050565b6001545f80546040516370a0823160e01b81523060048201529192839290916001600160a01b0316906370a0823190602401602060405180830381865afa158015610c0a573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c2e9190611eec565b915091509091565b610c4d5f5160206121055f395f51905f5233610ea3565b610c7b57335f5160206121055f395f51905f5260405163e2517d3f60e01b81526004016104ca929190611eac565b6104db6114d3565b5f60608082808083815f5160206120c55f395f51905f528054909150158015610cae57506001810154155b610cf25760405162461bcd60e51b81526020600482015260156024820152741152540dcc4c8e88155b9a5b9a5d1a585b1a5e9959605a1b60448201526064016104ca565b610cfa61151b565b610d026115db565b604080515f80825260208201909252600f60f81b9c939b5091995046985030975095509350915050565b610d365f33610ea3565b610d575760405163e2517d3f60e01b81526104ca9033905f90600401611eac565b6001600160a01b038116610d7e5760405163d92e233d60e01b815260040160405180910390fd5b5f80546001600160a01b0319166001600160a01b0383169081178255600182905560405190917f2d6b04df9b7d358407d1a014f1114b064add34c19d63d395db155a7e533e967a91a250565b610de15f5160206121255f395f51905f5233610ea3565b610e0f57335f5160206121255f395f51905f5260405163e2517d3f60e01b81526004016104ca929190611eac565b805f03610e2f5760405163162908e360e11b815260040160405180910390fd5b5f54610e46906001600160a01b0316333084611619565b8060015f828254610e579190611ed9565b909155505060015460405133917f6e8a19c7bcac2f8ca75d80a333a2cfffd851001c55ba805c58cc66c70d92bd7491610e9891858252602082015260400190565b60405180910390a250565b5f9182525f5160206121455f395f51905f52602090815260408084206001600160a01b0393909316845291905290205460ff1690565b610ef05f5160206121255f395f51905f5233610ea3565b610f1e57335f5160206121255f395f51905f5260405163e2517d3f60e01b81526004016104ca929190611eac565b805f03610f3e5760405163162908e360e11b815260040160405180910390fd5b600154811115610f6157604051638c9471c960e01b815260040160405180910390fd5b8060015f828254610f729190611f03565b90915550505f54610f8d906001600160a01b0316338361147b565b60015460405133917ffa73d3ab3a92ed3f2b694757d8e4b2f3c293654b11b9c79111f8971f861b22b291610e9891858252602082015260400190565b610fd282610763565b610fdb8161136d565b61079f83836113a3565b5f610fee611652565b610ff6611689565b6110207fb38ef5cec0faa52025e2b98aa7ab4a44313e267af746e5713f57ac96f83d75dd33610ea3565b61106157337fb38ef5cec0faa52025e2b98aa7ab4a44313e267af746e5713f57ac96f83d75dd60405163e2517d3f60e01b81526004016104ca929190611eac565b61106d858585856116b9565b6110778584611754565b8360015f8282546110889190611f03565b90915550505f546110a3906001600160a01b0316868661147b565b82856001600160a01b03167fe413caa6d70a6d9b51c2af2575a2914490f614355049af8ae7cde5caab9fd201866040516110df91815260200190565b60405180910390a350600161110060015f5160206121855f395f51905f5255565b949350505050565b5f611111611652565b611119611689565b611125338585856116b9565b61112f3384611754565b8360015f8282546111409190611f03565b90915550505f5461115b906001600160a01b0316338661147b565b604051848152839033907fe413caa6d70a6d9b51c2af2575a2914490f614355049af8ae7cde5caab9fd2019060200160405180910390a35060016109fe60015f5160206121855f395f51905f5255565b5f80546040516370a0823160e01b81523060048201526001600160a01b03909116906370a0823190602401602060405180830381865afa1580156111f1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112159190611eec565b9050600154811115611273575f600154826112309190611f03565b600183905560408051828152602081018590529192507f19f82ff182db3566d9c7d3d87dc1b7220ff7b88ef9e6a220a7c75c870e33df7f910160405180910390a1505b50565b5f807ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0061047f565b6104db611796565b6112ae611796565b6104db6117bb565b6112be611796565b6112c882826117c3565b5050565b5f5f5160206121455f395f51905f526112e58484610ea3565b611364575f848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561131a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4600191505061047f565b5f91505061047f565b6112738133611822565b5f61047f61138361184d565b8360405161190160f01b8152600281019290925260228201526042902090565b5f5f5160206121455f395f51905f526113bc8484610ea3565b15611364575f848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4600191505061047f565b61142461185b565b5f5160206121655f395f51905f52805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b610a3883846001600160a01b031663a9059cbb85856040516024016114a1929190611eac565b604051602081830303815290604052915060e01b6020820180516001600160e01b03838183161783525050505061188a565b6114db611689565b5f5160206121655f395f51905f52805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583361145d565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10280546060915f5160206120c55f395f51905f529161155990611f16565b80601f016020809104026020016040519081016040528092919081815260200182805461158590611f16565b80156115d05780601f106115a7576101008083540402835291602001916115d0565b820191905f5260205f20905b8154815290600101906020018083116115b357829003601f168201915b505050505091505090565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10380546060915f5160206120c55f395f51905f529161155990611f16565b6040516001600160a01b03848116602483015283811660448301526064820183905261079f9186918216906323b872dd906084016114a1565b5f5160206121855f395f51905f5280546001190161168357604051633ee5aeb560e01b815260040160405180910390fd5b60029055565b5f5160206121655f395f51905f525460ff16156104db5760405163d93c066560e01b815260040160405180910390fd5b5f6116c58585856107a5565b90505f806116d383856118f6565b5090925090505f8160038111156116ec576116ec611f4e565b1461170c57806040516322f1b27d60e11b81526004016104ca9190611f62565b6117235f5160206120e55f395f51905f5283610ea3565b61174b5760405163e74c68bb60e01b81526001600160a01b03831660048201526024016104ca565b50505050505050565b6001600160a01b039091165f90815260026020908152604080832093835292905220805460ff19166001179055565b60015f5160206121855f395f51905f5255565b61179e61193f565b6104db57604051631afcd79f60e31b815260040160405180910390fd5b611783611796565b6117cb611796565b5f5160206120c55f395f51905f527fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d102611804848261200a565b5060038101611813838261200a565b505f8082556001909101555050565b61182c8282610ea3565b6112c857808260405163e2517d3f60e01b81526004016104ca929190611eac565b5f611856611958565b905090565b5f5160206121655f395f51905f525460ff166104db57604051638dfc202b60e01b815260040160405180910390fd5b5f5f60205f8451602086015f885af1806118a9576040513d5f823e3d81fd5b50505f513d915081156118c05780600114156118cd565b6001600160a01b0384163b155b1561079f57604051635274afe760e01b81526001600160a01b03851660048201526024016104ca565b5f5f5f835160410361192d576020840151604085015160608601515f1a61191f888285856119cb565b955095509550505050611938565b505081515f91506002905b9250925092565b5f611948611276565b54600160401b900460ff16919050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f611982611a93565b61198a611afb565b60408051602081019490945283019190915260608201524660808201523060a082015260c00160405160208183030381529060405280519060200120905090565b5f80807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0841115611a0457505f91506003905082611a89565b604080515f808252602082018084528a905260ff891692820192909252606081018790526080810186905260019060a0016020604051602081039080840390855afa158015611a55573d5f5f3e3d5ffd5b5050604051601f1901519150506001600160a01b038116611a8057505f925060019150829050611a89565b92505f91508190505b9450945094915050565b5f5f5160206120c55f395f51905f5281611aab61151b565b805190915015611ac357805160209091012092915050565b81548015611ad2579392505050565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470935050505090565b5f5f5160206120c55f395f51905f5281611b136115db565b805190915015611b2b57805160209091012092915050565b60018201548015611ad2579392505050565b5f60208284031215611b4d575f5ffd5b81356001600160e01b0319811681146109fe575f5ffd5b80356001600160a01b0381168114611b7a575f5ffd5b919050565b5f5f5f5f5f60a08688031215611b93575f5ffd5b611b9c86611b64565b9450611baa60208701611b64565b9350611bb860408701611b64565b9250611bc660608701611b64565b9150611bd460808701611b64565b90509295509295909350565b5f60208284031215611bf0575f5ffd5b5035919050565b5f5f60408385031215611c08575f5ffd5b82359150611c1860208401611b64565b90509250929050565b5f5f5f60608486031215611c33575f5ffd5b611c3c84611b64565b95602085013595506040909401359392505050565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b602081525f6109fe6020830184611c51565b5f5f60408385031215611ca2575f5ffd5b611cab83611b64565b946020939093013593505050565b60ff60f81b8816815260e060208201525f611cd760e0830189611c51565b8281036040840152611ce98189611c51565b606084018890526001600160a01b038716608085015260a0840186905283810360c0850152845180825260208087019350909101905f5b81811015611d3e578351835260209384019390920191600101611d20565b50909b9a5050505050505050505050565b5f60208284031215611d5f575f5ffd5b6109fe82611b64565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112611d8b575f5ffd5b81356001600160401b03811115611da457611da4611d68565b604051601f8201601f19908116603f011681016001600160401b0381118282101715611dd257611dd2611d68565b604052818152838201602001851015611de9575f5ffd5b816020850160208301375f918101602001919091529392505050565b5f5f5f5f60808587031215611e18575f5ffd5b611e2185611b64565b9350602085013592506040850135915060608501356001600160401b03811115611e49575f5ffd5b611e5587828801611d7c565b91505092959194509250565b5f5f5f60608486031215611e73575f5ffd5b833592506020840135915060408401356001600160401b03811115611e96575f5ffd5b611ea286828701611d7c565b9150509250925092565b6001600160a01b03929092168252602082015260400190565b634e487b7160e01b5f52601160045260245ffd5b8082018082111561047f5761047f611ec5565b5f60208284031215611efc575f5ffd5b5051919050565b8181038181111561047f5761047f611ec5565b600181811c90821680611f2a57607f821691505b602082108103611f4857634e487b7160e01b5f52602260045260245ffd5b50919050565b634e487b7160e01b5f52602160045260245ffd5b60408082526019908201527f5369676e6174757265207265636f76657279206661696c65640000000000000060608201526080810160048310611fb357634e487b7160e01b5f52602160045260245ffd5b82602083015292915050565b601f821115610a3857805f5260205f20601f840160051c81016020851015611fe45750805b601f840160051c820191505b81811015612003575f8155600101611ff0565b5050505050565b81516001600160401b0381111561202357612023611d68565b612037816120318454611f16565b84611fbf565b6020601f821160018114612069575f83156120525750848201515b5f19600385901b1c1916600184901b178455612003565b5f84815260208120601f198516915b828110156120985787850151825560209485019460019092019101612078565b50848210156120b557868401515f19600387901b60f8161c191681555b50505050600190811b0190555056fea16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d1000f51adb3f49e4a9bbb17b3783f025995eaf8c24be2c8eefff214bdfda05ef94d65d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a0d12a8904e05dd8284d2f53d2272cabbacb009999d0c1d26a37d0b3aaea3d5e902dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f033009b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f00a26469706673582212206ce556f2d6063201a369942b2f749e4b3a7dc92447797671f7388d25c7c0168d64736f6c634300081e0033