0 txs
11 calls
constructor
constructor(address _proofSigner, address _BioFiTokenAddress)
functions
BioFiTokenAddress
viewfunction BioFiTokenAddress() view returns (address)
emergencyWithdrawalActive
viewfunction emergencyWithdrawalActive() view returns (bool)
getStakerCount
viewfunction getStakerCount() view returns (uint256 count)
getTierCount
viewfunction getTierCount() view returns (uint256 count)
getTiers
viewfunction getTiers() view returns (tuple[] stakeTiers)
isOwner
viewfunction isOwner() view returns (bool)
owner
viewfunction owner() view returns (address)
readPrincipalInterest
viewfunction readPrincipalInterest(address staker, uint256 activityCount) view returns (uint256 principal, uint256 interest, uint256 storedInterest)
readStake
viewfunction readStake(address staker) view returns (tuple stake)
readStakeInterest
viewfunction readStakeInterest(address staker, uint256 activityCount) view returns (tuple stake, uint256 interest)
rewardsStorage
viewfunction rewardsStorage(address) view returns (uint256)
stakerIds
viewfunction stakerIds(address) view returns (bool exists, uint256 id)
stakers
viewfunction stakers(uint256) view returns (address)
tiers
viewfunction tiers(uint256) view returns (bool isActive, string name, uint256 requiredActivities, uint256 aprNumerator, uint256 aprBonusNumerator, uint256 aprDenominator, uint256 minStake, uint256 maxStake, uint256 stakeDuration)
totalInvestment
viewfunction totalInvestment(uint256) view returns (uint256)
verifyMessage
purefunction verifyMessage(string message, bytes signature) pure returns (address signer)
closeStake
nonpayablefunction closeStake(uint256 points, uint256 expiresAt, bytes activityProof)
createStake
nonpayablefunction createStake(uint256 tierId, uint256 BioFiTokenAmount) returns (uint256 completionTimestamp)
createStakeTier
nonpayablefunction createStakeTier(string name, uint256 aprNumerator, uint256 aprBonusNumerator, uint256 aprDenominator, uint256 requiredActivities, uint256 minStake, uint256 maxStake, uint256 stakeDuration) returns (uint256 index)
disableEmergencyTokenWithdrawals
nonpayablefunction disableEmergencyTokenWithdrawals()
importStakes
nonpayablefunction importStakes(address[] _stakers, uint256[] _tierIds, uint256[] _BioFiTokenAmounts, uint256[] _customTimestamps, uint256[] _customStartTimestamps, uint256[] _rewardsStorageAmounts) returns (bool)
renounceOwnership
nonpayablefunction renounceOwnership()
setActive
nonpayablefunction setActive(uint256 tierIndex, bool newState)
setProofSigner
nonpayablefunction setProofSigner(address _proofSigner)
topUpStake
nonpayablefunction topUpStake(uint256 BioFiTokenAmount, uint256 points, uint256 expiresAt, bytes activityProof) returns (uint256 completionTimestamp)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeStake
nonpayablefunction upgradeStake(uint256 newTier, uint256 points, uint256 expiresAt, bytes activityProof) returns (uint256 completionTimestamp)
withdrawTokens
nonpayablefunction withdrawTokens(address token, address to, uint256 amount)
events
CloseStake
event CloseStake(address staker, uint256 principal, uint256 interest)
CreateStake
event CreateStake(address staker, uint256 stakeAmount, uint256 tierId, uint256 completionDate)
CreateStakeTier
event CreateStakeTier(uint256 tierId, string name, uint256 aprNumerator, uint256 aprBonusNumerator, uint256 aprDenominator, uint256 requiredActivities, uint256 minStake, uint256 maxStake, uint256 stakeDuration)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SetActive
event SetActive(uint256 tierId, bool isActive)
SetProofSigner
event SetProofSigner(address proofSigner)
TopUpStake
event TopUpStake(address staker, uint256 topUpAmount)
UpgradeStake
event UpgradeStake(address staker, uint256 oldTier, uint256 newTier)
errors
No errors.
creation bytecode
0x608060405234801561000f575f80fd5b50604051616247380380616247833981810160405281019061003191906102c6565b5f61004061026160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361014a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101419061035e565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101af906103c6565b60405180910390fd5b600160098190555081600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160055f6101000a81548160ff0219169083151502179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050506103e4565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102958261026c565b9050919050565b6102a58161028b565b81146102af575f80fd5b50565b5f815190506102c08161029c565b92915050565b5f80604083850312156102dc576102db610268565b5b5f6102e9858286016102b2565b92505060206102fa858286016102b2565b9150509250929050565b5f82825260208201905092915050565b7f496e76616c69642070726f6f66207369676e65720000000000000000000000005f82015250565b5f610348601483610304565b915061035382610314565b602082019050919050565b5f6020820190508181035f8301526103758161033c565b9050919050565b7f496e76616c696420746f6b656e206164647265737300000000000000000000005f82015250565b5f6103b0601583610304565b91506103bb8261037c565b602082019050919050565b5f6020820190508181035f8301526103dd816103a4565b9050919050565b615e56806103f15f395ff3fe608060405234801561000f575f80fd5b50600436106101c2575f3560e01c80638da5cb5b116100f7578063d7fa023d11610095578063ec7f98281161006f578063ec7f98281461054a578063f2fde38b14610568578063f962a22a14610584578063fd5e6dd1146105b4576101c2565b8063d7fa023d146104e0578063de17057014610510578063e60a955d1461052e576101c2565b806392b6a078116100d157806392b6a0781461045957806392e23e711461046357806394e395781461047f578063c8ae0d7d146104af576101c2565b80638da5cb5b146104015780638f32d59b1461041f57806391c6c0fe1461043d576101c2565b80634f21e2df1161016457806367184e281161013e57806367184e2814610378578063715018a61461039657806371ac8e8f146103a057806378631f35146103d1576101c2565b80634f21e2df146102fc57806355b069d41461032c5780635e35359e1461035c576101c2565b806317d7f795116101a057806317d7f7951461024e57806332a643701461026c57806333186f851461029c57806341f89cfe146102cc576101c2565b8063039af9eb146101c65780630ebe0e18146101fe5780631319649d14610230575b5f80fd5b6101e060048036038101906101db91906138e0565b6105e4565b6040516101f5999897969594939291906139a4565b60405180910390f35b61021860048036038101906102139190613a90565b6106cf565b60405161022793929190613ace565b60405180910390f35b6102386107cd565b6040516102459190613b03565b60405180910390f35b6102566107d9565b6040516102639190613b2b565b60405180910390f35b610286600480360381019061028191906138e0565b6107fe565b6040516102939190613b03565b60405180910390f35b6102b660048036038101906102b19190613c70565b610813565b6040516102c39190613b03565b60405180910390f35b6102e660048036038101906102e19190613cf0565b610bc2565b6040516102f39190613b03565b60405180910390f35b61031660048036038101906103119190613e9f565b610bd7565b6040516103239190613fd0565b60405180910390f35b61034660048036038101906103419190613c70565b610e6d565b6040516103539190613b03565b60405180910390f35b61037660048036038101906103719190613fe9565b61124b565b005b610380611416565b60405161038d9190613b03565b60405180910390f35b61039e611422565b005b6103ba60048036038101906103b59190613a90565b611523565b6040516103c89291906140e3565b60405180910390f35b6103eb60048036038101906103e69190613cf0565b6115de565b6040516103f8919061410b565b60405180910390f35b61040961168a565b6040516104169190613b2b565b60405180910390f35b6104276116b1565b6040516104349190613fd0565b60405180910390f35b61045760048036038101906104529190613cf0565b61170d565b005b61046161185d565b005b61047d60048036038101906104789190614124565b61190d565b005b610499600480360381019061049491906141e9565b611b8d565b6040516104a69190613b03565b60405180910390f35b6104c960048036038101906104c49190613cf0565b611e40565b6040516104d79291906142b9565b60405180910390f35b6104fa60048036038101906104f591906142e0565b611e6c565b6040516105079190613b03565b60405180910390f35b61051861210c565b60405161052591906144e3565b60405180910390f35b6105486004803603810190610543919061452d565b6122c7565b005b6105526123d0565b60405161055f9190613fd0565b60405180910390f35b610582600480360381019061057d9190613cf0565b6123e2565b005b61059e60048036038101906105999190614609565b612435565b6040516105ab9190613b2b565b60405180910390f35b6105ce60048036038101906105c991906138e0565b61245f565b6040516105db9190613b2b565b60405180910390f35b600281815481106105f3575f80fd5b905f5260205f2090600902015f91509050805f015f9054906101000a900460ff1690806001018054610624906146ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610650906146ac565b801561069b5780601f106106725761010080835404028352916020019161069b565b820191905f5260205f20905b81548152906001019060200180831161067e57829003601f168201915b5050505050908060020154908060030154908060040154908060050154908060060154908060070154908060080154905089565b5f805f8060045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff161515151581526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481525050905080604001519350610783868661249a565b925060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549150509250925092565b5f600780549050905090565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6003602052805f5260405f205f915090505481565b5f600160095f8282546108269190614709565b925050819055505f60095490505f61083f86868661279d565b90505f60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090505f816080015190508160800151421061092f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610926906147ac565b60405180910390fd5b5f8061093b33866128a5565b9150915061095c3385602001518d856109549190614709565b865f80612a56565b96508060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109aa9190614709565b925050819055505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610a0c9190613b2b565b602060405180830381865afa158015610a27573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610a4b91906147de565b90508b811015610a90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8790614853565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd33308f6040518463ffffffff1660e01b8152600401610aee93929190614871565b6020604051808303815f875af1158015610b0a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b2e91906148ba565b610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b649061492f565b60405180910390fd5b7f7f89f244e1ba6f246c289a29ad1d0de7c4c58d32e4b2d80f0f4f385f0edf1490338d604051610b9e92919061494d565b60405180910390a15050505050506009548114610bb9575f80fd5b50949350505050565b6006602052805f5260405f205f915090505481565b5f610be06116b1565b610c1f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c16906149be565b60405180910390fd5b5f5b8751811015610e5e575f60085f8a8481518110610c4157610c406149dc565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff16610d48576007898381518110610cad57610cac6149dc565b5b6020026020010151908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600780549050610d249190614a09565b81600101819055506001815f015f6101000a81548160ff0219169083151502179055505b610dd9898381518110610d5e57610d5d6149dc565b5b6020026020010151898481518110610d7957610d786149dc565b5b6020026020010151898581518110610d9457610d936149dc565b5b6020026020010151898681518110610daf57610dae6149dc565b5b602002602001015160018a8881518110610dcc57610dcb6149dc565b5b6020026020010151612a56565b50838281518110610ded57610dec6149dc565b5b602002602001015160065f8b8581518110610e0b57610e0a6149dc565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508080600101915050610c21565b50600190509695505050505050565b5f600160095f828254610e809190614709565b925050819055505f60095490506002805490508610610ed4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ecb90614a86565b60405180910390fd5b5f60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090505f60028881548110610f8957610f886149dc565b5b905f5260205f209060090201604051806101200160405290815f82015f9054906101000a900460ff16151515158152602001600182018054610fca906146ac565b80601f0160208091040260200160405190810160405280929190818152602001828054610ff6906146ac565b80156110415780601f1061101857610100808354040283529160200191611041565b820191905f5260205f20905b81548152906001019060200180831161102457829003601f168201915b5050505050815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815260200160088201548152505090505f82602001519050888360200151106110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d790614aee565b60405180910390fd5b8160c001518360400151101561112b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161112290614b7c565b60405180910390fd5b8160e0015183604001511115611176576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161116d90614c0a565b60405180910390fd5b5f61118289898961279d565b90505f8061119033846128a5565b9150915061119f338d84613055565b97508060065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546111ed9190614709565b925050819055507f8ef88319c897c85db21d2cf717d2b2fe331fa9ee56df3d74e41d63230e5127df33858e60405161122793929190614c28565b60405180910390a15050505050506009548114611242575f80fd5b50949350505050565b6112536116b1565b611292576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611289906149be565b60405180910390fd5b60055f9054906101000a900460ff166112e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112d790614ccd565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361134e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161134590614d5b565b60405180910390fd5b5f8111611390576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138790614de9565b60405180910390fd5b5f8390508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016113cf92919061494d565b6020604051808303815f875af11580156113eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061140f91906148ba565b5050505050565b5f600280549050905090565b61142a6116b1565b611469576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611460906149be565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b61152b61381e565b5f60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505091506115d5848461249a565b90509250929050565b6115e661381e565b60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050919050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166116f161306d565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6117156116b1565b611754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161174b906149be565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036117e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117da90614e51565b60405180910390fd5b80600a5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f944bcc95fa327acc87ec57ceaf15c73ecc170d87f40de1f822c14570285f78e9816040516118529190613b2b565b60405180910390a150565b6118656116b1565b6118a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189b906149be565b60405180910390fd5b60055f9054906101000a900460ff166118f2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e990614ccd565b60405180910390fd5b5f60055f6101000a81548160ff021916908315150217905550565b600160095f82825461191f9190614709565b925050819055505f60095490505f61193885858561279d565b90505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60045f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090508060800151421015611a46576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a3d90614eb9565b60405180910390fd5b5f80611a5233866128a5565b915091505f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548284611aa19190614709565b611aab9190614709565b90505f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f831115611b74578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611b3292919061494d565b6020604051808303815f875af1158015611b4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b7291906148ba565b505b5050505050506009548114611b87575f80fd5b50505050565b5f611b966116b1565b611bd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcc906149be565b60405180910390fd5b5f8611611c17576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0e90614f21565b60405180910390fd5b85881015611c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5190614f89565b60405180910390fd5b85871015611c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c9490615017565b60405180910390fd5b5f6040518061012001604052806001151581526020018c8c8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f8201169050808301925050505050505081526020018781526020018a815260200189815260200188815260200186815260200185815260200184815250905060028054905091505f60035f8481526020019081526020015f2081905550600281908060018154018082558091505060019003905f5260205f2090600902015f909190919091505f820151815f015f6101000a81548160ff0219169083151502179055506020820151816001019081611d9f91906151d2565b5060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e08201518160070155610100820151816008015550507f17c6b1e4d9de5efe4bdf6101852390e88fdd6c8869d8ed44374cc2cabd776eb6828c8c8c8c8c8c8c8c8c604051611e2a9a999897969594939291906152cd565b60405180910390a1509998505050505050505050565b6008602052805f5260405f205f91509050805f015f9054906101000a900460ff16908060010154905082565b5f8060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611ecc9190613b2b565b602060405180830381865afa158015611ee7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0b91906147de565b905083811015611f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4790614853565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401611f8d93929190614871565b6020604051808303815f875af1158015611fa9573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611fcd91906148ba565b61200c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120039061492f565b60405180910390fd5b5f60085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff166120f657600733908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016007805490506120d29190614a09565b81600101819055506001815f015f6101000a81548160ff0219169083151502179055505b612101338787613055565b935050505092915050565b60605f60028054905090505f8167ffffffffffffffff81111561213257612131613b4c565b5b60405190808252806020026020018201604052801561216b57816020015b612158613856565b8152602001906001900390816121505790505b5090505f5b828110156122be576002818154811061218c5761218b6149dc565b5b905f5260205f209060090201604051806101200160405290815f82015f9054906101000a900460ff161515151581526020016001820180546121cd906146ac565b80601f01602080910402602001604051908101604052809291908181526020018280546121f9906146ac565b80156122445780601f1061221b57610100808354040283529160200191612244565b820191905f5260205f20905b81548152906001019060200180831161222757829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250508282815181106122a6576122a56149dc565b5b60200260200101819052508080600101915050612170565b50809250505090565b6122cf6116b1565b61230e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612305906149be565b60405180910390fd5b6002805490508210612355576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161234c906153ab565b60405180910390fd5b5f6002838154811061236a576123696149dc565b5b905f5260205f209060090201905081815f015f6101000a81548160ff0219169083151502179055507fb43464c32a3cc15ea31c3e13db7db00e57c742ba81008d107550cc22b2f53d3083836040516123c39291906153c9565b60405180910390a1505050565b60055f9054906101000a900460ff1681565b6123ea6116b1565b612429576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612420906149be565b60405180910390fd5b61243281613074565b50565b5f805f806124428561319d565b92509250925061245486828585613202565b935050505092915050565b6007818154811061246e575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505090505f6002826020015181548110612554576125536149dc565b5b905f5260205f209060090201604051806101200160405290815f82015f9054906101000a900460ff16151515158152602001600182018054612595906146ac565b80601f01602080910402602001604051908101604052809291908181526020018280546125c1906146ac565b801561260c5780601f106125e35761010080835404028352916020019161260c565b820191905f5260205f20905b8154815290600101906020018083116125ef57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250509050815f01516126a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126979061543a565b60405180910390fd5b5f826080015142116126b257426126b8565b82608001515b90505f6301e1338090505f836040015187106126da57836080015190506126e2565b836060015190505b8360a00151811015612729576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612720906154a2565b60405180910390fd5b5f828560a001518660a00151846127409190614a09565b88604001518960600151886127559190614a09565b61275f91906154c0565b61276991906154c0565b612773919061552e565b61277d919061552e565b90508560a001518161278f9190614a09565b965050505050505092915050565b5f8242106127e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d7906155ce565b60405180910390fd5b5f90505f8414806127f057505f83145b806127fb57505f8251145b61289e575f612809856133a1565b90505f6128153361346b565b828660405160200161282993929190615690565b6040516020818303038152906040529050600a5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661287c8286612435565b73ffffffffffffffffffffffffffffffffffffffff160361289b578592505b50505b9392505050565b5f805f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff16612936576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292d90615724565b60405180910390fd5b5f81600601541461297c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129739061578c565b60405180910390fd5b5f612987868661249a565b905042826006018190555080826005015f8282546129a59190614709565b925050819055505f825f015f6101000a81548160ff021916908315150217905550816002015460035f846001015481526020019081526020015f20546129eb9190614a09565b60035f846001015481526020019081526020015f20819055507f7712eab9bace2a6db4db50e391a24280d3a83952dfa3067d0f5894a1acead37286836002015483604051612a3b93929190614c28565b60405180910390a18160020154819350935050509250929050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603612ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612add906157f4565b60405180910390fd5b6002805490508610612b2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b249061585c565b60405180910390fd5b5f60028781548110612b4257612b416149dc565b5b905f5260205f209060090201604051806101200160405290815f82015f9054906101000a900460ff16151515158152602001600182018054612b83906146ac565b80601f0160208091040260200160405190810160405280929190818152602001828054612baf906146ac565b8015612bfa5780601f10612bd157610100808354040283529160200191612bfa565b820191905f5260205f20905b815481529060010190602001808311612bdd57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481526020016008820154815250509050805f0151612c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c85906158c4565b60405180910390fd5b5f60045f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206040518060e00160405290815f82015f9054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050805f015115612d72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d699061592c565b60405180910390fd5b8160c00151871015612db9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db090615994565b60405180910390fd5b8160e00151871115612e00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612df7906159fc565b60405180910390fd5b5f861115612e5a5742861180612e135750845b612e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e4990615a8a565b60405180910390fd5b859250612eb5565b5f82610100015190505f8111612ea5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e9c90615af2565b60405180910390fd5b8042612eb19190614709565b9350505b5f4290508515612f05575f8511612f01576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ef890615b5a565b60405180910390fd5b8490505b5f6040518060e001604052806001151581526020018b81526020018a81526020018381526020018681526020015f81526020015f81525090508060045f8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c082015181600601559050508860035f8c81526020019081526020015f2054612ff59190614709565b60035f8c81526020019081526020015f20819055507f7cc860bef2fa56b3d46227731e60b3b6ce0af9627bfdfbeca273f9ea5dae8a188b8a8c8860405161303f9493929190615b78565b60405180910390a1505050509695505050505050565b5f6130648484845f805f612a56565b90509392505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036130e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130d990615c2b565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f60418451146131e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131db90615c93565b60405180910390fd5b602084015192506040840151915060608401515f1a90509193909250565b5f806040518060400160405280602081526020017f19457468657265756d205369676e6564204d6573736167653a0a30303030303081525090505f8087519050603983019150620f423f811115613257575f80fd5b5f80620186a090505b5f81146132f6575f8184613274919061552e565b90505f810361329a575f830361329957600a82613291919061552e565b915050613260565b5b82806132a590615cb1565b93505081816132b491906154c0565b846132bf9190614a09565b9350600a826132ce919061552e565b91506030816132dd9190614709565b905084806132ea90615cb1565b95505080855350613260565b5f820361330657601b9150613316565b601a826133139190614709565b91505b8185525f858b60405160200161332d929190615cf8565b6040516020818303038152906040528051906020012090506001818b8b8b6040515f81526020016040526040516133679493929190615d4e565b6020604051602081039080840390855afa158015613387573d5f803e3d5ffd5b505050602060405103519650505050505050949350505050565b60605f60016133af84613498565b0190505f8167ffffffffffffffff8111156133cd576133cc613b4c565b5b6040519080825280601f01601f1916602001820160405280156133ff5781602001600182028036833780820191505090505b5090505f82602001820190505b600115613460578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161345557613454615501565b5b0494505f850361340c575b819350505050919050565b60606134918273ffffffffffffffffffffffffffffffffffffffff16601460ff166135e9565b9050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106134f4577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816134ea576134e9615501565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310613531576d04ee2d6d415b85acef8100000000838161352757613526615501565b5b0492506020810190505b662386f26fc10000831061356057662386f26fc10000838161355657613555615501565b5b0492506010810190505b6305f5e1008310613589576305f5e100838161357f5761357e615501565b5b0492506008810190505b61271083106135ae5761271083816135a4576135a3615501565b5b0492506004810190505b606483106135d157606483816135c7576135c6615501565b5b0492506002810190505b600a83106135e0576001810190505b80915050919050565b60605f60028360026135fb91906154c0565b6136059190614709565b67ffffffffffffffff81111561361e5761361d613b4c565b5b6040519080825280601f01601f1916602001820160405280156136505781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f81518110613687576136866149dc565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f7800000000000000000000000000000000000000000000000000000000000000816001815181106136ea576136e96149dc565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f600184600261372891906154c0565b6137329190614709565b90505b60018111156137d1577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110613774576137736149dc565b5b1a60f81b82828151811061378b5761378a6149dc565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c9450806137ca90615d91565b9050613735565b505f8414613814576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161380b90615e02565b60405180910390fd5b8091505092915050565b6040518060e001604052805f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518061012001604052805f15158152602001606081526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b6138bf816138ad565b81146138c9575f80fd5b50565b5f813590506138da816138b6565b92915050565b5f602082840312156138f5576138f46138a5565b5b5f613902848285016138cc565b91505092915050565b5f8115159050919050565b61391f8161390b565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61396782613925565b613971818561392f565b935061398181856020860161393f565b61398a8161394d565b840191505092915050565b61399e816138ad565b82525050565b5f610120820190506139b85f83018c613916565b81810360208301526139ca818b61395d565b90506139d9604083018a613995565b6139e66060830189613995565b6139f36080830188613995565b613a0060a0830187613995565b613a0d60c0830186613995565b613a1a60e0830185613995565b613a28610100830184613995565b9a9950505050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a5f82613a36565b9050919050565b613a6f81613a55565b8114613a79575f80fd5b50565b5f81359050613a8a81613a66565b92915050565b5f8060408385031215613aa657613aa56138a5565b5b5f613ab385828601613a7c565b9250506020613ac4858286016138cc565b9150509250929050565b5f606082019050613ae15f830186613995565b613aee6020830185613995565b613afb6040830184613995565b949350505050565b5f602082019050613b165f830184613995565b92915050565b613b2581613a55565b82525050565b5f602082019050613b3e5f830184613b1c565b92915050565b5f80fd5b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613b828261394d565b810181811067ffffffffffffffff82111715613ba157613ba0613b4c565b5b80604052505050565b5f613bb361389c565b9050613bbf8282613b79565b919050565b5f67ffffffffffffffff821115613bde57613bdd613b4c565b5b613be78261394d565b9050602081019050919050565b828183375f83830152505050565b5f613c14613c0f84613bc4565b613baa565b905082815260208101848484011115613c3057613c2f613b48565b5b613c3b848285613bf4565b509392505050565b5f82601f830112613c5757613c56613b44565b5b8135613c67848260208601613c02565b91505092915050565b5f805f8060808587031215613c8857613c876138a5565b5b5f613c95878288016138cc565b9450506020613ca6878288016138cc565b9350506040613cb7878288016138cc565b925050606085013567ffffffffffffffff811115613cd857613cd76138a9565b5b613ce487828801613c43565b91505092959194509250565b5f60208284031215613d0557613d046138a5565b5b5f613d1284828501613a7c565b91505092915050565b5f67ffffffffffffffff821115613d3557613d34613b4c565b5b602082029050602081019050919050565b5f80fd5b5f613d5c613d5784613d1b565b613baa565b90508083825260208201905060208402830185811115613d7f57613d7e613d46565b5b835b81811015613da85780613d948882613a7c565b845260208401935050602081019050613d81565b5050509392505050565b5f82601f830112613dc657613dc5613b44565b5b8135613dd6848260208601613d4a565b91505092915050565b5f67ffffffffffffffff821115613df957613df8613b4c565b5b602082029050602081019050919050565b5f613e1c613e1784613ddf565b613baa565b90508083825260208201905060208402830185811115613e3f57613e3e613d46565b5b835b81811015613e685780613e5488826138cc565b845260208401935050602081019050613e41565b5050509392505050565b5f82601f830112613e8657613e85613b44565b5b8135613e96848260208601613e0a565b91505092915050565b5f805f805f8060c08789031215613eb957613eb86138a5565b5b5f87013567ffffffffffffffff811115613ed657613ed56138a9565b5b613ee289828a01613db2565b965050602087013567ffffffffffffffff811115613f0357613f026138a9565b5b613f0f89828a01613e72565b955050604087013567ffffffffffffffff811115613f3057613f2f6138a9565b5b613f3c89828a01613e72565b945050606087013567ffffffffffffffff811115613f5d57613f5c6138a9565b5b613f6989828a01613e72565b935050608087013567ffffffffffffffff811115613f8a57613f896138a9565b5b613f9689828a01613e72565b92505060a087013567ffffffffffffffff811115613fb757613fb66138a9565b5b613fc389828a01613e72565b9150509295509295509295565b5f602082019050613fe35f830184613916565b92915050565b5f805f6060848603121561400057613fff6138a5565b5b5f61400d86828701613a7c565b935050602061401e86828701613a7c565b925050604061402f868287016138cc565b9150509250925092565b6140428161390b565b82525050565b614051816138ad565b82525050565b60e082015f82015161406b5f850182614039565b50602082015161407e6020850182614048565b5060408201516140916040850182614048565b5060608201516140a46060850182614048565b5060808201516140b76080850182614048565b5060a08201516140ca60a0850182614048565b5060c08201516140dd60c0850182614048565b50505050565b5f610100820190506140f75f830185614057565b61410460e0830184613995565b9392505050565b5f60e08201905061411e5f830184614057565b92915050565b5f805f6060848603121561413b5761413a6138a5565b5b5f614148868287016138cc565b9350506020614159868287016138cc565b925050604084013567ffffffffffffffff81111561417a576141796138a9565b5b61418686828701613c43565b9150509250925092565b5f80fd5b5f8083601f8401126141a9576141a8613b44565b5b8235905067ffffffffffffffff8111156141c6576141c5614190565b5b6020830191508360018202830111156141e2576141e1613d46565b5b9250929050565b5f805f805f805f805f6101008a8c031215614207576142066138a5565b5b5f8a013567ffffffffffffffff811115614224576142236138a9565b5b6142308c828d01614194565b995099505060206142438c828d016138cc565b97505060406142548c828d016138cc565b96505060606142658c828d016138cc565b95505060806142768c828d016138cc565b94505060a06142878c828d016138cc565b93505060c06142988c828d016138cc565b92505060e06142a98c828d016138cc565b9150509295985092959850929598565b5f6040820190506142cc5f830185613916565b6142d96020830184613995565b9392505050565b5f80604083850312156142f6576142f56138a5565b5b5f614303858286016138cc565b9250506020614314858286016138cc565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f61436182613925565b61436b8185614347565b935061437b81856020860161393f565b6143848161394d565b840191505092915050565b5f61012083015f8301516143a55f860182614039565b50602083015184820360208601526143bd8282614357565b91505060408301516143d26040860182614048565b5060608301516143e56060860182614048565b5060808301516143f86080860182614048565b5060a083015161440b60a0860182614048565b5060c083015161441e60c0860182614048565b5060e083015161443160e0860182614048565b50610100830151614446610100860182614048565b508091505092915050565b5f61445c838361438f565b905092915050565b5f602082019050919050565b5f61447a8261431e565b6144848185614328565b93508360208202850161449685614338565b805f5b858110156144d157848403895281516144b28582614451565b94506144bd83614464565b925060208a01995050600181019050614499565b50829750879550505050505092915050565b5f6020820190508181035f8301526144fb8184614470565b905092915050565b61450c8161390b565b8114614516575f80fd5b50565b5f8135905061452781614503565b92915050565b5f8060408385031215614543576145426138a5565b5b5f614550858286016138cc565b925050602061456185828601614519565b9150509250929050565b5f67ffffffffffffffff82111561458557614584613b4c565b5b61458e8261394d565b9050602081019050919050565b5f6145ad6145a88461456b565b613baa565b9050828152602081018484840111156145c9576145c8613b48565b5b6145d4848285613bf4565b509392505050565b5f82601f8301126145f0576145ef613b44565b5b813561460084826020860161459b565b91505092915050565b5f806040838503121561461f5761461e6138a5565b5b5f83013567ffffffffffffffff81111561463c5761463b6138a9565b5b614648858286016145dc565b925050602083013567ffffffffffffffff811115614669576146686138a9565b5b61467585828601613c43565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806146c357607f821691505b6020821081036146d6576146d561467f565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614713826138ad565b915061471e836138ad565b9250828201905080821115614736576147356146dc565b5b92915050565b7f43616e6e6f742061646420746f6b656e7320746f206120636f6d706c657465645f8201527f207374616b650000000000000000000000000000000000000000000000000000602082015250565b5f61479660268361392f565b91506147a18261473c565b604082019050919050565b5f6020820190508181035f8301526147c38161478a565b9050919050565b5f815190506147d8816138b6565b92915050565b5f602082840312156147f3576147f26138a5565b5b5f614800848285016147ca565b91505092915050565b7f496e73756666696369656e7420546f6b656e2042616c616e63650000000000005f82015250565b5f61483d601a8361392f565b915061484882614809565b602082019050919050565b5f6020820190508181035f83015261486a81614831565b9050919050565b5f6060820190506148845f830186613b1c565b6148916020830185613b1c565b61489e6040830184613995565b949350505050565b5f815190506148b481614503565b92915050565b5f602082840312156148cf576148ce6138a5565b5b5f6148dc848285016148a6565b91505092915050565b7f546f6b656e207472616e73666572206661696c656400000000000000000000005f82015250565b5f61491960158361392f565b9150614924826148e5565b602082019050919050565b5f6020820190508181035f8301526149468161490d565b9050919050565b5f6040820190506149605f830185613b1c565b61496d6020830184613995565b9392505050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6149a860208361392f565b91506149b382614974565b602082019050919050565b5f6020820190508181035f8301526149d58161499c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f614a13826138ad565b9150614a1e836138ad565b9250828203905081811115614a3657614a356146dc565b5b92915050565b7f496e636f727265637420746965724964000000000000000000000000000000005f82015250565b5f614a7060108361392f565b9150614a7b82614a3c565b602082019050919050565b5f6020820190508181035f830152614a9d81614a64565b9050919050565b7f43616e6e6f74207570677261646520746f206c6f7765722074696572496400005f82015250565b5f614ad8601e8361392f565b9150614ae382614aa4565b602082019050919050565b5f6020820190508181035f830152614b0581614acc565b9050919050565b7f5374616b6520616d6f756e74206973206c657373207468616e206d696e206c695f8201527f6d697420666f7220746869732074696572000000000000000000000000000000602082015250565b5f614b6660318361392f565b9150614b7182614b0c565b604082019050919050565b5f6020820190508181035f830152614b9381614b5a565b9050919050565b7f5374616b6520616d6f756e74206973206d6f7265207468616e206d696e206c695f8201527f6d697420666f7220746869732074696572000000000000000000000000000000602082015250565b5f614bf460318361392f565b9150614bff82614b9a565b604082019050919050565b5f6020820190508181035f830152614c2181614be8565b9050919050565b5f606082019050614c3b5f830186613b1c565b614c486020830185613995565b614c556040830184613995565b949350505050565b7f456d657267656e637920746f6b656e207769746864726177616c7320686176655f8201527f206265656e2064697361626c6564000000000000000000000000000000000000602082015250565b5f614cb7602e8361392f565b9150614cc282614c5d565b604082019050919050565b5f6020820190508181035f830152614ce481614cab565b9050919050565b7f5769746864726177616c20616464726573732063616e6e6f74206265207468655f8201527f206275726e206164647265737300000000000000000000000000000000000000602082015250565b5f614d45602d8361392f565b9150614d5082614ceb565b604082019050919050565b5f6020820190508181035f830152614d7281614d39565b9050919050565b7f5769746864726177616c20616d6f756e74206d757374206265206772656174655f8201527f72207468616e2030000000000000000000000000000000000000000000000000602082015250565b5f614dd360288361392f565b9150614dde82614d79565b604082019050919050565b5f6020820190508181035f830152614e0081614dc7565b9050919050565b7f4e6f206368616e676500000000000000000000000000000000000000000000005f82015250565b5f614e3b60098361392f565b9150614e4682614e07565b602082019050919050565b5f6020820190508181035f830152614e6881614e2f565b9050919050565b7f436f6e7472616374206973206e6f74206f7665722079657400000000000000005f82015250565b5f614ea360188361392f565b9150614eae82614e6f565b602082019050919050565b5f6020820190508181035f830152614ed081614e97565b9050919050565b7f61707244656e6f6d696e61746f72206973206e6f74203e2030000000000000005f82015250565b5f614f0b60198361392f565b9150614f1682614ed7565b602082019050919050565b5f6020820190508181035f830152614f3881614eff565b9050919050565b7f6170724e756d657261746f72203c2061707244656e6f6d696e61746f720000005f82015250565b5f614f73601d8361392f565b9150614f7e82614f3f565b602082019050919050565b5f6020820190508181035f830152614fa081614f67565b9050919050565b7f617072426f6e75734e756d657261746f72203c2061707244656e6f6d696e61745f8201527f6f72000000000000000000000000000000000000000000000000000000000000602082015250565b5f61500160228361392f565b915061500c82614fa7565b604082019050919050565b5f6020820190508181035f83015261502e81614ff5565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026150917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615056565b61509b8683615056565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6150d66150d16150cc846138ad565b6150b3565b6138ad565b9050919050565b5f819050919050565b6150ef836150bc565b6151036150fb826150dd565b848454615062565b825550505050565b5f90565b61511761510b565b6151228184846150e6565b505050565b5b818110156151455761513a5f8261510f565b600181019050615128565b5050565b601f82111561518a5761515b81615035565b61516484615047565b81016020851015615173578190505b61518761517f85615047565b830182615127565b50505b505050565b5f82821c905092915050565b5f6151aa5f198460080261518f565b1980831691505092915050565b5f6151c2838361519b565b9150826002028217905092915050565b6151db82613925565b67ffffffffffffffff8111156151f4576151f3613b4c565b5b6151fe82546146ac565b615209828285615149565b5f60209050601f83116001811461523a575f8415615228578287015190505b61523285826151b7565b865550615299565b601f19841661524886615035565b5f5b8281101561526f5784890151825560018201915060208501945060208101905061524a565b8683101561528c5784890151615288601f89168261519b565b8355505b6001600288020188555050505b505050505050565b5f6152ac838561392f565b93506152b9838584613bf4565b6152c28361394d565b840190509392505050565b5f610120820190506152e15f83018d613995565b81810360208301526152f4818b8d6152a1565b9050615303604083018a613995565b6153106060830189613995565b61531d6080830188613995565b61532a60a0830187613995565b61533760c0830186613995565b61534460e0830185613995565b615352610100830184613995565b9b9a5050505050505050505050565b7f74656d706c617465496e646578206f7574206f662072616e67650000000000005f82015250565b5f615395601a8361392f565b91506153a082615361565b602082019050919050565b5f6020820190508181035f8301526153c281615389565b9050919050565b5f6040820190506153dc5f830185613995565b6153e96020830184613916565b9392505050565b7f4e6f207374616b657220636f6e747261637420666f756e6400000000000000005f82015250565b5f61542460188361392f565b915061542f826153f0565b602082019050919050565b5f6020820190508181035f83015261545181615418565b9050919050565b7f496e636f727265637420415052000000000000000000000000000000000000005f82015250565b5f61548c600d8361392f565b915061549782615458565b602082019050919050565b5f6020820190508181035f8301526154b981615480565b9050919050565b5f6154ca826138ad565b91506154d5836138ad565b92508282026154e3816138ad565b915082820484148315176154fa576154f96146dc565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f615538826138ad565b9150615543836138ad565b92508261555357615552615501565b5b828204905092915050565b7f41637469766974792070726f6f6620657870697265642e2054727920616761695f8201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b5f6155b860218361392f565b91506155c38261555e565b604082019050919050565b5f6020820190508181035f8301526155e5816155ac565b9050919050565b5f81905092915050565b5f61560082613925565b61560a81856155ec565b935061561a81856020860161393f565b80840191505092915050565b7f2c000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61565a6001836155ec565b915061566582615626565b600182019050919050565b5f819050919050565b61568a615685826138ad565b615670565b82525050565b5f61569b82866155f6565b91506156a68261564e565b91506156b282856155f6565b91506156bd8261564e565b91506156c98284615679565b602082019150819050949350505050565b7f4e6f206f70656e207374616b6520666f722074686973207573657200000000005f82015250565b5f61570e601b8361392f565b9150615719826156da565b602082019050919050565b5f6020820190508181035f83015261573b81615702565b9050919050565b7f436f6e747261637420697320616c726561647920636c6f7365640000000000005f82015250565b5f615776601a8361392f565b915061578182615742565b602082019050919050565b5f6020820190508181035f8301526157a38161576a565b9050919050565b7f5374616b696e6720546f6b656e206973204e6f7420446566696e6564000000005f82015250565b5f6157de601c8361392f565b91506157e9826157aa565b602082019050919050565b5f6020820190508181035f83015261580b816157d2565b9050919050565b7f496c6c6567616c207469657249640000000000000000000000000000000000005f82015250565b5f615846600e8361392f565b915061585182615812565b602082019050919050565b5f6020820190508181035f8301526158738161583a565b9050919050565b7f54696572206973206e6f742061637469766500000000000000000000000000005f82015250565b5f6158ae60128361392f565b91506158b98261587a565b602082019050919050565b5f6020820190508181035f8301526158db816158a2565b9050919050565b7f5573657220616c7265616479206861732061207374616b6500000000000000005f82015250565b5f61591660188361392f565b9150615921826158e2565b602082019050919050565b5f6020820190508181035f8301526159438161590a565b9050919050565b7f43616e6e6f74207374616b652062656c6f77206d696e206c696d6974000000005f82015250565b5f61597e601c8361392f565b91506159898261594a565b602082019050919050565b5f6020820190508181035f8301526159ab81615972565b9050919050565b7f43616e6e6f74207374616b652061626f7665206d6178206c696d6974000000005f82015250565b5f6159e6601c8361392f565b91506159f1826159b2565b602082019050919050565b5f6020820190508181035f830152615a13816159da565b9050919050565b7f437573746f6d2074696d657374616d702063616e6e6f7420626520696e2074685f8201527f6520706173740000000000000000000000000000000000000000000000000000602082015250565b5f615a7460268361392f565b9150615a7f82615a1a565b604082019050919050565b5f6020820190508181035f830152615aa181615a68565b9050919050565b7f4475726174696f6e2063616e6e6f7420626520300000000000000000000000005f82015250565b5f615adc60148361392f565b9150615ae782615aa8565b602082019050919050565b5f6020820190508181035f830152615b0981615ad0565b9050919050565b7f53746172742074696d657374616d702063616e6e6f74206265203000000000005f82015250565b5f615b44601b8361392f565b9150615b4f82615b10565b602082019050919050565b5f6020820190508181035f830152615b7181615b38565b9050919050565b5f608082019050615b8b5f830187613b1c565b615b986020830186613995565b615ba56040830185613995565b615bb26060830184613995565b95945050505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f615c1560268361392f565b9150615c2082615bbb565b604082019050919050565b5f6020820190508181035f830152615c4281615c09565b9050919050565b7f696e76616c6964207369676e6174757265206c656e67746800000000000000005f82015250565b5f615c7d60188361392f565b9150615c8882615c49565b602082019050919050565b5f6020820190508181035f830152615caa81615c71565b9050919050565b5f615cbb826138ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203615ced57615cec6146dc565b5b600182019050919050565b5f615d0382856155f6565b9150615d0f82846155f6565b91508190509392505050565b5f819050919050565b615d2d81615d1b565b82525050565b5f60ff82169050919050565b615d4881615d33565b82525050565b5f608082019050615d615f830187615d24565b615d6e6020830186615d3f565b615d7b6040830185615d24565b615d886060830184615d24565b95945050505050565b5f615d9b826138ad565b91505f8203615dad57615dac6146dc565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f615dec60208361392f565b9150615df782615db8565b602082019050919050565b5f6020820190508181035f830152615e1981615de0565b905091905056fea264697066735822122085c1df5560cfd4e37e9ddeba977e1357d29e6b419814f7353eb9da37f22e548564736f6c634300081a00330000000000000000000000001e824b4fc5d96c9f16583cbd7eb3e208a6905aef00000000000000000000000011a31b833d43853f8869c9eec17f60e3b4d2a753