9 txs
22 calls
constructor
constructor(address _proofSigner, address _LPTokenAddress, 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)
LPOracleAddress
viewfunction LPOracleAddress() view returns (address)
LPTokenAddress
viewfunction LPTokenAddress() view returns (address)
owner
viewfunction owner() view returns (address)
readPrincipalInterest
viewfunction readPrincipalInterest(address staker, uint256 activityCount) view returns (uint256 principal, uint256 interest)
readStake
viewfunction readStake(address staker, uint256 _stakeId) view returns (tuple stake)
readStakes
viewfunction readStakes(address staker, uint256 activityCount) view returns (tuple[] stakes, uint256[] interest)
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 stakeDuration)
totalInvestment
viewfunction totalInvestment(uint256) view returns (uint256)
verifyMessage
purefunction verifyMessage(string message, bytes signature) pure returns (address signer)
closeAll
nonpayablefunction closeAll(uint256 points, uint256 expiresAt, bytes activityProof)
closeStake
nonpayablefunction closeStake(uint256 points, uint256 expiresAt, uint256 stakeId, bytes activityProof)
createStake
nonpayablefunction createStake(uint256 tierId, uint256 LPTokenAmount) returns (uint256 completionTimestamp)
createStakeTier
nonpayablefunction createStakeTier(string name, uint256 aprNumerator, uint256 aprBonusNumerator, uint256 aprDenominator, uint256 requiredActivities, uint256 stakeDuration) returns (uint256 index)
disableEmergencyTokenWithdrawals
nonpayablefunction disableEmergencyTokenWithdrawals()
importStakes
nonpayablefunction importStakes(address[] _stakers, uint256[] _tierIds, uint256[] _LPTokenAmounts, uint256[] _customTimestamps, uint256[] _customStartTimestamps) returns (bool)
renounceOwnership
nonpayablefunction renounceOwnership()
setActive
nonpayablefunction setActive(uint256 tierIndex, bool newState)
setLPOracle
nonpayablefunction setLPOracle(address _LPOracle)
setProofSigner
nonpayablefunction setProofSigner(address _proofSigner)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
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 stakeDuration)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SetActive
event SetActive(uint256 tierId, bool isActive)
SetLPOracle
event SetLPOracle(address LPOracle)
SetProofSigner
event SetProofSigner(address proofSigner)
errors
No errors.
creation bytecode
0x608060405234801561000f575f80fd5b506040516162f63803806162f683398181016040528101906100319190610299565b5f61004061023460201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361014a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161014190610343565b60405180910390fd5b6001600b8190555082600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160085f6101000a81548160ff0219169083151502179055508160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050610361565b5f33905090565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6102688261023f565b9050919050565b6102788161025e565b8114610282575f80fd5b50565b5f815190506102938161026f565b92915050565b5f805f606084860312156102b0576102af61023b565b5b5f6102bd86828701610285565b93505060206102ce86828701610285565b92505060406102df86828701610285565b9150509250925092565b5f82825260208201905092915050565b7f496e76616c69642070726f6f66207369676e65720000000000000000000000005f82015250565b5f61032d6014836102e9565b9150610338826102f9565b602082019050919050565b5f6020820190508181035f83015261035a81610321565b9050919050565b615f888061036e5f395ff3fe608060405234801561000f575f80fd5b50600436106101cd575f3560e01c806391c6c0fe11610102578063d7fa023d116100a0578063f2fde38b1161006f578063f2fde38b14610524578063f962a22a14610540578063fd5e6dd114610570578063ff6ed9bb146105a0576101cd565b8063d7fa023d1461049c578063de170570146104cc578063e60a955d146104ea578063ec7f982814610506576101cd565b8063a23789bd116100dc578063a23789bd146103ff578063a2c0074a1461041d578063c3828bf01461044d578063c8ae0d7d1461046b576101cd565b806391c6c0fe146103a857806392b6a078146103c457806394d856e5146103ce576101cd565b80635e35359e1161016f578063715018a611610149578063715018a61461034657806383b49138146103505780638da5cb5b1461036c5780638f32d59b1461038a576101cd565b80635e35359e146102f057806364bf4b121461030c57806367184e2814610328576101cd565b806317d7f795116101ab57806317d7f7951461025657806332a6437014610274578063352379e9146102a457806349fbf4ea146102d4576101cd565b8063039af9eb146101d15780630ebe0e18146102075780631319649d14610238575b5f80fd5b6101eb60048036038101906101e69190613c72565b6105d0565b6040516101fe9796959493929190613d36565b60405180910390f35b610221600480360381019061021c9190613e04565b6106af565b60405161022f929190613e42565b60405180910390f35b6102406107f2565b60405161024d9190613e69565b60405180910390f35b61025e6107fe565b60405161026b9190613e91565b60405180910390f35b61028e60048036038101906102899190613c72565b610823565b60405161029b9190613e69565b60405180910390f35b6102be60048036038101906102b991906140aa565b610838565b6040516102cb91906141ad565b60405180910390f35b6102ee60048036038101906102e99190614276565b610a57565b005b61030a600480360381019061030591906142f6565b610d80565b005b61032660048036038101906103219190614346565b610f4b565b005b61033061131c565b60405161033d9190613e69565b60405180910390f35b61034e611328565b005b61036a600480360381019061036591906143b2565b611429565b005b610374611579565b6040516103819190613e91565b60405180910390f35b6103926115a0565b60405161039f91906141ad565b60405180910390f35b6103c260048036038101906103bd91906143b2565b6115fc565b005b6103cc61174c565b005b6103e860048036038101906103e39190613e04565b6117c5565b6040516103f69291906145ec565b60405180910390f35b610407611a10565b6040516104149190613e91565b60405180910390f35b6104376004803603810190610432919061467a565b611a35565b6040516104449190613e69565b60405180910390f35b610455611cc0565b6040516104629190613e91565b60405180910390f35b610485600480360381019061048091906143b2565b611ce5565b604051610493929190614724565b60405180910390f35b6104b660048036038101906104b1919061474b565b611d11565b6040516104c39190613e69565b60405180910390f35b6104d4611fb1565b6040516104e19190614925565b60405180910390f35b61050460048036038101906104ff919061496f565b612157565b005b61050e612260565b60405161051b91906141ad565b60405180910390f35b61053e600480360381019061053991906143b2565b612272565b005b61055a60048036038101906105559190614a4b565b6122c5565b6040516105679190613e91565b60405180910390f35b61058a60048036038101906105859190613c72565b6122ef565b6040516105979190613e91565b60405180910390f35b6105ba60048036038101906105b59190613e04565b61232a565b6040516105c79190614b61565b60405180910390f35b600481815481106105df575f80fd5b905f5260205f2090600702015f91509050805f015f9054906101000a900460ff169080600101805461061090614ba8565b80601f016020809104026020016040519081016040528092919081815260200182805461063c90614ba8565b80156106875780601f1061065e57610100808354040283529160200191610687565b820191905f5260205f20905b81548152906001019060200180831161066a57829003601f168201915b5050505050908060020154908060030154908060040154908060050154908060060154905087565b5f805f5b60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548110156107ea575f60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505090508060600151846107c29190614c05565b93506107cf8683876123f1565b836107da9190614c05565b92505080806001019150506106b3565b509250929050565b5f600980549050905090565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6005602052805f5260405f205f915090505481565b5f6108416115a0565b610880576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087790614c82565b60405180910390fd5b5f5b8651811015610a49575f600a5f8984815181106108a2576108a1614ca0565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff166109a957600988838151811061090e5761090d614ca0565b5b6020026020010151908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060016009805490506109859190614ccd565b81600101819055506001815f015f6101000a81548160ff0219169083151502179055505b610a3a8883815181106109bf576109be614ca0565b5b60200260200101518884815181106109da576109d9614ca0565b5b60200260200101518885815181106109f5576109f4614ca0565b5b6020026020010151888681518110610a1057610a0f614ca0565b5b60200260200101516001898881518110610a2d57610a2c614ca0565b5b60200260200101516126fa565b50508080600101915050610882565b506001905095945050505050565b6001600b5f828254610a699190614c05565b925050819055505f600b5490505f610a82868685612d7b565b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8881526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505090508060a00151421015610bcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc690614d4a565b60405180910390fd5b5f80610bdc338a88612e90565b915091505f821115610ca3578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401610c23929190614d68565b6020604051808303815f875af1158015610c3f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c639190614da3565b610ca2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9990614e18565b60405180910390fd5b5b5f811115610d66578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610ce6929190614d68565b6020604051808303815f875af1158015610d02573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d269190614da3565b610d65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5c90614e18565b60405180910390fd5b5b505050505050600b548114610d79575f80fd5b5050505050565b610d886115a0565b610dc7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbe90614c82565b60405180910390fd5b60085f9054906101000a900460ff16610e15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0c90614e80565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e7a90614ee8565b60405180910390fd5b5f8111610ec5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ebc90614f50565b60405180910390fd5b5f8390508073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401610f04929190614d68565b6020604051808303815f875af1158015610f20573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f449190614da3565b5050505050565b6001600b5f828254610f5d9190614c05565b925050819055505f600b5490505f610f76858585612d7b565b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f805f805b60075f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205481101561113a575f60065f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff161515151581526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050805f015180156110da5750428160a0015111155b80156110e957505f8160e00151145b1561112c575f806110fb33858c612e90565b91509150818661110b9190614c05565b955080856111199190614c05565b9450868061112690614f6e565b97505050505b508080600101915050610fc7565b505f831161117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117490614fff565b60405180910390fd5b5f821115611240578473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b81526004016111c0929190614d68565b6020604051808303815f875af11580156111dc573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112009190614da3565b61123f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123690614e18565b60405180910390fd5b5b5f811115611303578373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611283929190614d68565b6020604051808303815f875af115801561129f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112c39190614da3565b611302576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112f990614e18565b60405180910390fd5b5b505050505050600b548114611316575f80fd5b50505050565b5f600480549050905090565b6113306115a0565b61136f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136690614c82565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6114316115a0565b611470576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146790614c82565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036114ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f690615067565b60405180910390fd5b8060035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f387745e2e36a22bf96f545b5203906c8af975d318aa04cef413f699e7811aedc8160405161156e9190613e91565b60405180910390a150565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166115e0613041565b73ffffffffffffffffffffffffffffffffffffffff1614905090565b6116046115a0565b611643576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161163a90614c82565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16036116d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116c990615067565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f944bcc95fa327acc87ec57ceaf15c73ecc170d87f40de1f822c14570285f78e9816040516117419190613e91565b60405180910390a150565b6117546115a0565b611793576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178a90614c82565b60405180910390fd5b60085f9054906101000a900460ff166117aa575f80fd5b5f60085f6101000a81548160ff021916908315150217905550565b6060805f60075f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f8167ffffffffffffffff81111561182457611823613eae565b5b60405190808252806020026020018201604052801561185d57816020015b61184a613bb6565b8152602001906001900390816118425790505b5090505f8267ffffffffffffffff81111561187b5761187a613eae565b5b6040519080825280602002602001820160405280156118a95781602001602082028036833780820191505090505b5090505f5b60075f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20548110156119ff5760065f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8281526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff161515151581526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250508382815181106119bd576119bc614ca0565b5b60200260200101819052506119d38882896123f1565b8282815181106119e6576119e5614ca0565b5b60200260200101818152505080806001019150506118ae565b508181945094505050509250929050565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611a3e6115a0565b611a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7490614c82565b60405180910390fd5b5f8411611abf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ab6906150cf565b60405180910390fd5b83861015611b02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af990615137565b60405180910390fd5b83851015611b45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b3c90615137565b60405180910390fd5b5f6040518060e001604052806001151581526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f81840152601f19601f82011690508083019250505050505050815260200185815260200188815260200187815260200186815260200184815250905060048054905091505f60055f8481526020019081526020015f2081905550600481908060018154018082558091505060019003905f5260205f2090600702015f909190919091505f820151815f015f6101000a81548160ff0219169083151502179055506020820151816001019081611c3a91906152f2565b5060408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015550507f431a018ee4fc0b7b5a7d5e3bbf7c4da4045dfd7e52b33502c8c52e67b3044455828a8a8a8a8a8a8a604051611cac9897969594939291906153ed565b60405180910390a150979650505050505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a602052805f5260405f205f91509050805f015f9054906101000a900460ff16908060010154905082565b5f8060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401611d719190613e91565b602060405180830381865afa158015611d8c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611db09190615477565b905083811015611df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dec906154ec565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166323b872dd3330876040518463ffffffff1660e01b8152600401611e329392919061550a565b6020604051808303815f875af1158015611e4e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e729190614da3565b611eb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea890614e18565b60405180910390fd5b5f600a5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209050805f015f9054906101000a900460ff16611f9b57600933908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600980549050611f779190614ccd565b81600101819055506001815f015f6101000a81548160ff0219169083151502179055505b611fa6338787613048565b935050505092915050565b60605f60048054905090505f8167ffffffffffffffff811115611fd757611fd6613eae565b5b60405190808252806020026020018201604052801561201057816020015b611ffd613bf5565b815260200190600190039081611ff55790505b5090505f5b8281101561214e576004818154811061203157612030614ca0565b5b905f5260205f2090600702016040518060e00160405290815f82015f9054906101000a900460ff1615151515815260200160018201805461207190614ba8565b80601f016020809104026020016040519081016040528092919081815260200182805461209d90614ba8565b80156120e85780601f106120bf576101008083540402835291602001916120e8565b820191905f5260205f20905b8154815290600101906020018083116120cb57829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152505082828151811061213657612135614ca0565b5b60200260200101819052508080600101915050612015565b50809250505090565b61215f6115a0565b61219e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161219590614c82565b60405180910390fd5b60048054905082106121e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121dc90615589565b60405180910390fd5b5f600483815481106121fa576121f9614ca0565b5b905f5260205f209060070201905081815f015f6101000a81548160ff0219169083151502179055507fb43464c32a3cc15ea31c3e13db7db00e57c742ba81008d107550cc22b2f53d3083836040516122539291906155a7565b60405180910390a1505050565b60085f9054906101000a900460ff1681565b61227a6115a0565b6122b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122b090614c82565b60405180910390fd5b6122c281613060565b50565b5f805f806122d285613189565b9250925092506122e4868285856131ee565b935050505092915050565b600981815481106122fe575f80fd5b905f5260205f20015f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b612332613bb6565b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff16151515158152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481525050905092915050565b5f8060065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8581526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff1615151515815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505090505f60048260200151815481106124c5576124c4614ca0565b5b905f5260205f2090600702016040518060e00160405290815f82015f9054906101000a900460ff1615151515815260200160018201805461250590614ba8565b80601f016020809104026020016040519081016040528092919081815260200182805461253190614ba8565b801561257c5780601f106125535761010080835404028352916020019161257c565b820191905f5260205f20905b81548152906001019060200180831161255f57829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050815f01516125fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125f390615618565b60405180910390fd5b5f8260a00151421161260e5742612614565b8260a001515b90505f6301e1338090505f83604001518710612636578360800151905061263e565b836060015190505b8360a00151811015612685576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161267c90615680565b60405180910390fd5b5f828560a001518660a001518461269c9190614ccd565b88606001518960800151886126b19190614ccd565b6126bb919061569e565b6126c5919061569e565b6126cf919061570c565b6126d9919061570c565b90508560c00151816126eb9190614ccd565b96505050505050509392505050565b5f8073ffffffffffffffffffffffffffffffffffffffff1660025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361278a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161278190615786565b60405180910390fd5b60048054905086106127d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127c8906157ee565b60405180910390fd5b5f600487815481106127e6576127e5614ca0565b5b905f5260205f2090600702016040518060e00160405290815f82015f9054906101000a900460ff1615151515815260200160018201805461282690614ba8565b80601f016020809104026020016040519081016040528092919081815260200182805461285290614ba8565b801561289d5780601f106128745761010080835404028352916020019161289d565b820191905f5260205f20905b81548152906001019060200180831161288057829003601f168201915b50505050508152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815250509050805f015161291d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161291490615856565b60405180910390fd5b5f60075f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60065f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20604051806101000160405290815f82015f9054906101000a900460ff161515151581526020016001820154815260200160028201548152602001600382015481526020016004820154815260200160058201548152602001600682015481526020016007820154815250509050805f015115612a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a53906158be565b60405180910390fd5b60075f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190612aa990614f6e565b91905055505f871115612b085742871180612ac15750855b612b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612af790615926565b60405180910390fd5b869350612b62565b5f8360c0015190505f8111612b52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b499061598e565b60405180910390fd5b8042612b5e9190614c05565b9450505b5f4290508615612bb2575f8611612bae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ba5906159f6565b60405180910390fd5b8590505b5f612bbc8a61338d565b90505f8111612c00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612bf790615a5e565b60405180910390fd5b5f6040518061010001604052806001151581526020018d81526020018c81526020018381526020018481526020018881526020015f81526020015f81525090508060065f8f73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8781526020019081526020015f205f820151815f015f6101000a81548160ff0219169083151502179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e082015181600701559050508160055f8e81526020019081526020015f2054612d109190614c05565b60055f8e81526020019081526020015f20819055507f7cc860bef2fa56b3d46227731e60b3b6ce0af9627bfdfbeca273f9ea5dae8a188d838e8a604051612d5a9493929190615a7c565b60405180910390a1612d6a613621565b505050505050509695505050505050565b5f824210612dbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612db590615b09565b60405180910390fd5b5f90505f841480612dce57505f83145b80612dd957505f8251145b612e89575f612de785613739565b90505f612df385613739565b90505f612dff33613803565b8383604051602001612e1393929190615bab565b6040516020818303038152906040529050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612e6682876122c5565b73ffffffffffffffffffffffffffffffffffffffff1603612e85578693505b5050505b9392505050565b5f805f60065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8681526020019081526020015f209050805f015f9054906101000a900460ff16612f30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f2790615c3b565b60405180910390fd5b5f816007015414612f76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f6d90615ca3565b60405180910390fd5b5f612f828787876123f1565b905042826007018190555080826006015f828254612fa09190614c05565b92505081905550816003015460055f846001015481526020019081526020015f2054612fcc9190614ccd565b60055f846001015481526020019081526020015f20819055507f7712eab9bace2a6db4db50e391a24280d3a83952dfa3067d0f5894a1acead3728783600201548360405161301c93929190615cc1565b60405180910390a161302c613621565b50816002015481935093505050935093915050565b5f33905090565b5f6130578484845f805f6126fa565b90509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036130ce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016130c590615d66565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f60418451146131d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131c790615dce565b60405180910390fd5b602084015192506040840151915060608401515f1a90509193909250565b5f806040518060400160405280602081526020017f19457468657265756d205369676e6564204d6573736167653a0a30303030303081525090505f8087519050603983019150620f423f811115613243575f80fd5b5f80620186a090505b5f81146132e2575f8184613260919061570c565b90505f8103613286575f830361328557600a8261327d919061570c565b91505061324c565b5b828061329190614f6e565b93505081816132a0919061569e565b846132ab9190614ccd565b9350600a826132ba919061570c565b91506030816132c99190614c05565b905084806132d690614f6e565b9550508085535061324c565b5f82036132f257601b9150613302565b601a826132ff9190614c05565b91505b8185525f858b604051602001613319929190615dec565b6040516020818303038152906040528051906020012090506001818b8b8b6040515f81526020016040526040516133539493929190615e42565b6020604051602081039080840390855afa158015613373573d5f803e3d5ffd5b505050602060405103519650505050505050949350505050565b5f805f73ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff160361355d575f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a0823160025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161345f9190613e91565b602060405180830381865afa15801561347a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061349e9190615477565b90505f60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561350b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061352f9190615477565b90508085600284613540919061569e565b61354a919061569e565b613554919061570c565b92505050613618565b5f8060035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637eeda7036040518163ffffffff1660e01b81526004016040805180830381865afa1580156135c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135ec9190615e85565b9150915080856002846135ff919061569e565b613609919061569e565b613613919061570c565b925050505b80915050919050565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639b7365176040518163ffffffff1660e01b8152600401602060405180830381865afa15801561368c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906136b09190614da3565b156137325760035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a2e620456040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561371b575f80fd5b505af115801561372d573d5f803e3d5ffd5b505050505b6001905090565b60605f600161374784613830565b0190505f8167ffffffffffffffff81111561376557613764613eae565b5b6040519080825280601f01601f1916602001820160405280156137975781602001600182028036833780820191505090505b5090505f82602001820190505b6001156137f8578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816137ed576137ec6156df565b5b0494505f85036137a4575b819350505050919050565b60606138298273ffffffffffffffffffffffffffffffffffffffff16601460ff16613981565b9050919050565b5f805f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000831061388c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381613882576138816156df565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106138c9576d04ee2d6d415b85acef810000000083816138bf576138be6156df565b5b0492506020810190505b662386f26fc1000083106138f857662386f26fc1000083816138ee576138ed6156df565b5b0492506010810190505b6305f5e1008310613921576305f5e1008381613917576139166156df565b5b0492506008810190505b612710831061394657612710838161393c5761393b6156df565b5b0492506004810190505b60648310613969576064838161395f5761395e6156df565b5b0492506002810190505b600a8310613978576001810190505b80915050919050565b60605f6002836002613993919061569e565b61399d9190614c05565b67ffffffffffffffff8111156139b6576139b5613eae565b5b6040519080825280601f01601f1916602001820160405280156139e85781602001600182028036833780820191505090505b5090507f3000000000000000000000000000000000000000000000000000000000000000815f81518110613a1f57613a1e614ca0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053507f780000000000000000000000000000000000000000000000000000000000000081600181518110613a8257613a81614ca0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a9053505f6001846002613ac0919061569e565b613aca9190614c05565b90505b6001811115613b69577f3031323334353637383961626364656600000000000000000000000000000000600f861660108110613b0c57613b0b614ca0565b5b1a60f81b828281518110613b2357613b22614ca0565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600485901c945080613b6290615ec3565b9050613acd565b505f8414613bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613ba390615f34565b60405180910390fd5b8091505092915050565b6040518061010001604052805f151581526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81526020015f81525090565b6040518060e001604052805f15158152602001606081526020015f81526020015f81526020015f81526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f819050919050565b613c5181613c3f565b8114613c5b575f80fd5b50565b5f81359050613c6c81613c48565b92915050565b5f60208284031215613c8757613c86613c37565b5b5f613c9484828501613c5e565b91505092915050565b5f8115159050919050565b613cb181613c9d565b82525050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f613cf982613cb7565b613d038185613cc1565b9350613d13818560208601613cd1565b613d1c81613cdf565b840191505092915050565b613d3081613c3f565b82525050565b5f60e082019050613d495f83018a613ca8565b8181036020830152613d5b8189613cef565b9050613d6a6040830188613d27565b613d776060830187613d27565b613d846080830186613d27565b613d9160a0830185613d27565b613d9e60c0830184613d27565b98975050505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613dd382613daa565b9050919050565b613de381613dc9565b8114613ded575f80fd5b50565b5f81359050613dfe81613dda565b92915050565b5f8060408385031215613e1a57613e19613c37565b5b5f613e2785828601613df0565b9250506020613e3885828601613c5e565b9150509250929050565b5f604082019050613e555f830185613d27565b613e626020830184613d27565b9392505050565b5f602082019050613e7c5f830184613d27565b92915050565b613e8b81613dc9565b82525050565b5f602082019050613ea45f830184613e82565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613ee482613cdf565b810181811067ffffffffffffffff82111715613f0357613f02613eae565b5b80604052505050565b5f613f15613c2e565b9050613f218282613edb565b919050565b5f67ffffffffffffffff821115613f4057613f3f613eae565b5b602082029050602081019050919050565b5f80fd5b5f613f67613f6284613f26565b613f0c565b90508083825260208201905060208402830185811115613f8a57613f89613f51565b5b835b81811015613fb35780613f9f8882613df0565b845260208401935050602081019050613f8c565b5050509392505050565b5f82601f830112613fd157613fd0613eaa565b5b8135613fe1848260208601613f55565b91505092915050565b5f67ffffffffffffffff82111561400457614003613eae565b5b602082029050602081019050919050565b5f61402761402284613fea565b613f0c565b9050808382526020820190506020840283018581111561404a57614049613f51565b5b835b81811015614073578061405f8882613c5e565b84526020840193505060208101905061404c565b5050509392505050565b5f82601f83011261409157614090613eaa565b5b81356140a1848260208601614015565b91505092915050565b5f805f805f60a086880312156140c3576140c2613c37565b5b5f86013567ffffffffffffffff8111156140e0576140df613c3b565b5b6140ec88828901613fbd565b955050602086013567ffffffffffffffff81111561410d5761410c613c3b565b5b6141198882890161407d565b945050604086013567ffffffffffffffff81111561413a57614139613c3b565b5b6141468882890161407d565b935050606086013567ffffffffffffffff81111561416757614166613c3b565b5b6141738882890161407d565b925050608086013567ffffffffffffffff81111561419457614193613c3b565b5b6141a08882890161407d565b9150509295509295909350565b5f6020820190506141c05f830184613ca8565b92915050565b5f80fd5b5f67ffffffffffffffff8211156141e4576141e3613eae565b5b6141ed82613cdf565b9050602081019050919050565b828183375f83830152505050565b5f61421a614215846141ca565b613f0c565b905082815260208101848484011115614236576142356141c6565b5b6142418482856141fa565b509392505050565b5f82601f83011261425d5761425c613eaa565b5b813561426d848260208601614208565b91505092915050565b5f805f806080858703121561428e5761428d613c37565b5b5f61429b87828801613c5e565b94505060206142ac87828801613c5e565b93505060406142bd87828801613c5e565b925050606085013567ffffffffffffffff8111156142de576142dd613c3b565b5b6142ea87828801614249565b91505092959194509250565b5f805f6060848603121561430d5761430c613c37565b5b5f61431a86828701613df0565b935050602061432b86828701613df0565b925050604061433c86828701613c5e565b9150509250925092565b5f805f6060848603121561435d5761435c613c37565b5b5f61436a86828701613c5e565b935050602061437b86828701613c5e565b925050604084013567ffffffffffffffff81111561439c5761439b613c3b565b5b6143a886828701614249565b9150509250925092565b5f602082840312156143c7576143c6613c37565b5b5f6143d484828501613df0565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61440f81613c9d565b82525050565b61441e81613c3f565b82525050565b61010082015f8201516144395f850182614406565b50602082015161444c6020850182614415565b50604082015161445f6040850182614415565b5060608201516144726060850182614415565b5060808201516144856080850182614415565b5060a082015161449860a0850182614415565b5060c08201516144ab60c0850182614415565b5060e08201516144be60e0850182614415565b50505050565b5f6144cf8383614424565b6101008301905092915050565b5f602082019050919050565b5f6144f2826143dd565b6144fc81856143e7565b9350614507836143f7565b805f5b8381101561453757815161451e88826144c4565b9750614529836144dc565b92505060018101905061450a565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6145788383614415565b60208301905092915050565b5f602082019050919050565b5f61459a82614544565b6145a4818561454e565b93506145af8361455e565b805f5b838110156145df5781516145c6888261456d565b97506145d183614584565b9250506001810190506145b2565b5085935050505092915050565b5f6040820190508181035f83015261460481856144e8565b905081810360208301526146188184614590565b90509392505050565b5f80fd5b5f8083601f84011261463a57614639613eaa565b5b8235905067ffffffffffffffff81111561465757614656614621565b5b60208301915083600182028301111561467357614672613f51565b5b9250929050565b5f805f805f805f60c0888a03121561469557614694613c37565b5b5f88013567ffffffffffffffff8111156146b2576146b1613c3b565b5b6146be8a828b01614625565b975097505060206146d18a828b01613c5e565b95505060406146e28a828b01613c5e565b94505060606146f38a828b01613c5e565b93505060806147048a828b01613c5e565b92505060a06147158a828b01613c5e565b91505092959891949750929550565b5f6040820190506147375f830185613ca8565b6147446020830184613d27565b9392505050565b5f806040838503121561476157614760613c37565b5b5f61476e85828601613c5e565b925050602061477f85828601613c5e565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f82825260208201905092915050565b5f6147cc82613cb7565b6147d681856147b2565b93506147e6818560208601613cd1565b6147ef81613cdf565b840191505092915050565b5f60e083015f83015161480f5f860182614406565b506020830151848203602086015261482782826147c2565b915050604083015161483c6040860182614415565b50606083015161484f6060860182614415565b5060808301516148626080860182614415565b5060a083015161487560a0860182614415565b5060c083015161488860c0860182614415565b508091505092915050565b5f61489e83836147fa565b905092915050565b5f602082019050919050565b5f6148bc82614789565b6148c68185614793565b9350836020820285016148d8856147a3565b805f5b8581101561491357848403895281516148f48582614893565b94506148ff836148a6565b925060208a019950506001810190506148db565b50829750879550505050505092915050565b5f6020820190508181035f83015261493d81846148b2565b905092915050565b61494e81613c9d565b8114614958575f80fd5b50565b5f8135905061496981614945565b92915050565b5f806040838503121561498557614984613c37565b5b5f61499285828601613c5e565b92505060206149a38582860161495b565b9150509250929050565b5f67ffffffffffffffff8211156149c7576149c6613eae565b5b6149d082613cdf565b9050602081019050919050565b5f6149ef6149ea846149ad565b613f0c565b905082815260208101848484011115614a0b57614a0a6141c6565b5b614a168482856141fa565b509392505050565b5f82601f830112614a3257614a31613eaa565b5b8135614a428482602086016149dd565b91505092915050565b5f8060408385031215614a6157614a60613c37565b5b5f83013567ffffffffffffffff811115614a7e57614a7d613c3b565b5b614a8a85828601614a1e565b925050602083013567ffffffffffffffff811115614aab57614aaa613c3b565b5b614ab785828601614249565b9150509250929050565b61010082015f820151614ad65f850182614406565b506020820151614ae96020850182614415565b506040820151614afc6040850182614415565b506060820151614b0f6060850182614415565b506080820151614b226080850182614415565b5060a0820151614b3560a0850182614415565b5060c0820151614b4860c0850182614415565b5060e0820151614b5b60e0850182614415565b50505050565b5f61010082019050614b755f830184614ac1565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614bbf57607f821691505b602082108103614bd257614bd1614b7b565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f614c0f82613c3f565b9150614c1a83613c3f565b9250828201905080821115614c3257614c31614bd8565b5b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f614c6c602083613cc1565b9150614c7782614c38565b602082019050919050565b5f6020820190508181035f830152614c9981614c60565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f614cd782613c3f565b9150614ce283613c3f565b9250828203905081811115614cfa57614cf9614bd8565b5b92915050565b7f436f6e7472616374206973206e6f74206f7665722079657400000000000000005f82015250565b5f614d34601883613cc1565b9150614d3f82614d00565b602082019050919050565b5f6020820190508181035f830152614d6181614d28565b9050919050565b5f604082019050614d7b5f830185613e82565b614d886020830184613d27565b9392505050565b5f81519050614d9d81614945565b92915050565b5f60208284031215614db857614db7613c37565b5b5f614dc584828501614d8f565b91505092915050565b7f546f6b656e207472616e73666572206661696c656400000000000000000000005f82015250565b5f614e02601583613cc1565b9150614e0d82614dce565b602082019050919050565b5f6020820190508181035f830152614e2f81614df6565b9050919050565b7f456d657267656e6379207769746864726177616c732064697361626c656400005f82015250565b5f614e6a601e83613cc1565b9150614e7582614e36565b602082019050919050565b5f6020820190508181035f830152614e9781614e5e565b9050919050565b7f4275726e2061646472657373206973206e6f7420616c6c6f77656400000000005f82015250565b5f614ed2601b83613cc1565b9150614edd82614e9e565b602082019050919050565b5f6020820190508181035f830152614eff81614ec6565b9050919050565b7f416d6f756e742063616e6e6f74206265203000000000000000000000000000005f82015250565b5f614f3a601283613cc1565b9150614f4582614f06565b602082019050919050565b5f6020820190508181035f830152614f6781614f2e565b9050919050565b5f614f7882613c3f565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203614faa57614fa9614bd8565b5b600182019050919050565b7f4e6f20636f6e74726163747320726561647920746f20636c6f7365206e6f77005f82015250565b5f614fe9601f83613cc1565b9150614ff482614fb5565b602082019050919050565b5f6020820190508181035f83015261501681614fdd565b9050919050565b7f4e6f206368616e676500000000000000000000000000000000000000000000005f82015250565b5f615051600983613cc1565b915061505c8261501d565b602082019050919050565b5f6020820190508181035f83015261507e81615045565b9050919050565b7f61707244656e6f6d696e61746f72206973206e6f74203e2030000000000000005f82015250565b5f6150b9601983613cc1565b91506150c482615085565b602082019050919050565b5f6020820190508181035f8301526150e6816150ad565b9050919050565b7f6e756d657261746f72203c2064656e6f6d696e61746f720000000000000000005f82015250565b5f615121601783613cc1565b915061512c826150ed565b602082019050919050565b5f6020820190508181035f83015261514e81615115565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026151b17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82615176565b6151bb8683615176565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6151f66151f16151ec84613c3f565b6151d3565b613c3f565b9050919050565b5f819050919050565b61520f836151dc565b61522361521b826151fd565b848454615182565b825550505050565b5f90565b61523761522b565b615242818484615206565b505050565b5b818110156152655761525a5f8261522f565b600181019050615248565b5050565b601f8211156152aa5761527b81615155565b61528484615167565b81016020851015615293578190505b6152a761529f85615167565b830182615247565b50505b505050565b5f82821c905092915050565b5f6152ca5f19846008026152af565b1980831691505092915050565b5f6152e283836152bb565b9150826002028217905092915050565b6152fb82613cb7565b67ffffffffffffffff81111561531457615313613eae565b5b61531e8254614ba8565b615329828285615269565b5f60209050601f83116001811461535a575f8415615348578287015190505b61535285826152d7565b8655506153b9565b601f19841661536886615155565b5f5b8281101561538f5784890151825560018201915060208501945060208101905061536a565b868310156153ac57848901516153a8601f8916826152bb565b8355505b6001600288020188555050505b505050505050565b5f6153cc8385613cc1565b93506153d98385846141fa565b6153e283613cdf565b840190509392505050565b5f60e0820190506154005f83018b613d27565b818103602083015261541381898b6153c1565b90506154226040830188613d27565b61542f6060830187613d27565b61543c6080830186613d27565b61544960a0830185613d27565b61545660c0830184613d27565b9998505050505050505050565b5f8151905061547181613c48565b92915050565b5f6020828403121561548c5761548b613c37565b5b5f61549984828501615463565b91505092915050565b7f496e73756666696369656e7420546f6b656e2042616c616e63650000000000005f82015250565b5f6154d6601a83613cc1565b91506154e1826154a2565b602082019050919050565b5f6020820190508181035f830152615503816154ca565b9050919050565b5f60608201905061551d5f830186613e82565b61552a6020830185613e82565b6155376040830184613d27565b949350505050565b7f74696572496e646578206f7574206f662072616e6765000000000000000000005f82015250565b5f615573601683613cc1565b915061557e8261553f565b602082019050919050565b5f6020820190508181035f8301526155a081615567565b9050919050565b5f6040820190506155ba5f830185613d27565b6155c76020830184613ca8565b9392505050565b7f4e6f207374616b657220636f6e747261637420666f756e6400000000000000005f82015250565b5f615602601883613cc1565b915061560d826155ce565b602082019050919050565b5f6020820190508181035f83015261562f816155f6565b9050919050565b7f496e636f727265637420415052000000000000000000000000000000000000005f82015250565b5f61566a600d83613cc1565b915061567582615636565b602082019050919050565b5f6020820190508181035f8301526156978161565e565b9050919050565b5f6156a882613c3f565b91506156b383613c3f565b92508282026156c181613c3f565b915082820484148315176156d8576156d7614bd8565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61571682613c3f565b915061572183613c3f565b925082615731576157306156df565b5b828204905092915050565b7f5374616b696e6720546f6b656e206973204e6f7420446566696e6564000000005f82015250565b5f615770601c83613cc1565b915061577b8261573c565b602082019050919050565b5f6020820190508181035f83015261579d81615764565b9050919050565b7f496c6c6567616c207469657249640000000000000000000000000000000000005f82015250565b5f6157d8600e83613cc1565b91506157e3826157a4565b602082019050919050565b5f6020820190508181035f830152615805816157cc565b9050919050565b7f54696572206973206e6f742061637469766500000000000000000000000000005f82015250565b5f615840601283613cc1565b915061584b8261580c565b602082019050919050565b5f6020820190508181035f83015261586d81615834565b9050919050565b7f43616e6e6f74206f76657277726974652061207374616b6500000000000000005f82015250565b5f6158a8601883613cc1565b91506158b382615874565b602082019050919050565b5f6020820190508181035f8301526158d58161589c565b9050919050565b7f54696d657374616d70206d75737420626520696e2074686520667574757265005f82015250565b5f615910601f83613cc1565b915061591b826158dc565b602082019050919050565b5f6020820190508181035f83015261593d81615904565b9050919050565b7f4475726174696f6e2063616e6e6f7420626520300000000000000000000000005f82015250565b5f615978601483613cc1565b915061598382615944565b602082019050919050565b5f6020820190508181035f8301526159a58161596c565b9050919050565b7f53746172742074696d657374616d702063616e6e6f74206265203000000000005f82015250565b5f6159e0601b83613cc1565b91506159eb826159ac565b602082019050919050565b5f6020820190508181035f830152615a0d816159d4565b9050919050565b7f43616e6e6f74207374616b65207a65726f2d76616c756520616d6f756e7400005f82015250565b5f615a48601e83613cc1565b9150615a5382615a14565b602082019050919050565b5f6020820190508181035f830152615a7581615a3c565b9050919050565b5f608082019050615a8f5f830187613e82565b615a9c6020830186613d27565b615aa96040830185613d27565b615ab66060830184613d27565b95945050505050565b7f41637469766974792070726f6f662065787069726564000000000000000000005f82015250565b5f615af3601683613cc1565b9150615afe82615abf565b602082019050919050565b5f6020820190508181035f830152615b2081615ae7565b9050919050565b5f81905092915050565b5f615b3b82613cb7565b615b458185615b27565b9350615b55818560208601613cd1565b80840191505092915050565b7f2c000000000000000000000000000000000000000000000000000000000000005f82015250565b5f615b95600183615b27565b9150615ba082615b61565b600182019050919050565b5f615bb68286615b31565b9150615bc182615b89565b9150615bcd8285615b31565b9150615bd882615b89565b9150615be48284615b31565b9150819050949350505050565b7f54686973207374616b6520646f6573206e6f74206578697374000000000000005f82015250565b5f615c25601983613cc1565b9150615c3082615bf1565b602082019050919050565b5f6020820190508181035f830152615c5281615c19565b9050919050565b7f436f6e747261637420697320616c726561647920636c6f7365640000000000005f82015250565b5f615c8d601a83613cc1565b9150615c9882615c59565b602082019050919050565b5f6020820190508181035f830152615cba81615c81565b9050919050565b5f606082019050615cd45f830186613e82565b615ce16020830185613d27565b615cee6040830184613d27565b949350505050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f615d50602683613cc1565b9150615d5b82615cf6565b604082019050919050565b5f6020820190508181035f830152615d7d81615d44565b9050919050565b7f696e76616c6964207369676e6174757265206c656e67746800000000000000005f82015250565b5f615db8601883613cc1565b9150615dc382615d84565b602082019050919050565b5f6020820190508181035f830152615de581615dac565b9050919050565b5f615df78285615b31565b9150615e038284615b31565b91508190509392505050565b5f819050919050565b615e2181615e0f565b82525050565b5f60ff82169050919050565b615e3c81615e27565b82525050565b5f608082019050615e555f830187615e18565b615e626020830186615e33565b615e6f6040830185615e18565b615e7c6060830184615e18565b95945050505050565b5f8060408385031215615e9b57615e9a613c37565b5b5f615ea885828601615463565b9250506020615eb985828601615463565b9150509250929050565b5f615ecd82613c3f565b91505f8203615edf57615ede614bd8565b5b600182039050919050565b7f537472696e67733a20686578206c656e67746820696e73756666696369656e745f82015250565b5f615f1e602083613cc1565b9150615f2982615eea565b602082019050919050565b5f6020820190508181035f830152615f4b81615f12565b905091905056fea2646970667358221220801c07e396ba35b830ba4e1d7276ea63d06aa1c49d0dad262e065982da0006b664736f6c634300081a00330000000000000000000000001e824b4fc5d96c9f16583cbd7eb3e208a6905aef00000000000000000000000058a50fc3bc271ccd5a078fab8222b2e021b9f4df00000000000000000000000011a31b833d43853f8869c9eec17f60e3b4d2a753