28 txs
1.2k calls
constructor
constructor(address _rolesManager, address _nftContract, address _paymentSplitter, address _storageAdministrator, address _bonusAndReward, address _usdcContract, address _initialOwner, address _pauser)
functions
BONUS_AND_REWARD
viewfunction BONUS_AND_REWARD() view returns (address)
cancelLPFees
viewfunction cancelLPFees() view returns (uint256)
getAllPools
viewfunction getAllPools() view returns (tuple[])
getClosedSeason
viewfunction getClosedSeason() view returns (tuple)
getCurrentSeason
viewfunction getCurrentSeason() view returns (tuple)
getMyPurchases
viewfunction getMyPurchases(uint96 _nftId) view returns (tuple[])
getMyPurchasesIds
viewfunction getMyPurchasesIds(uint96 _nftId) view returns (uint96[])
getPoolById
viewfunction getPoolById(uint16 poolId) view returns (tuple)
getPurchaseById
viewfunction getPurchaseById(uint96 _nftId, uint96 _purchaseId) view returns (tuple)
getSeasonbyId
viewfunction getSeasonbyId(uint96 _id) view returns (tuple)
isPaused
viewfunction isPaused() view returns (bool)
isPurchaseActive
viewfunction isPurchaseActive(uint96 _nftId, uint96 _purchaseId) view
LP_TOTAL_AMOUNT_INVESTED
viewfunction LP_TOTAL_AMOUNT_INVESTED() view returns (uint256)
lpPurchasesCount
viewfunction lpPurchasesCount() view returns (uint96)
NFT
viewfunction NFT() view returns (address)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
PAYMENT_SPLITTER
viewfunction PAYMENT_SPLITTER() view returns (address)
poolsCounter
viewfunction poolsCounter() view returns (uint16)
ROLES_MANAGER
viewfunction ROLES_MANAGER() view returns (address)
seasonsClosedCount
viewfunction seasonsClosedCount() view returns (uint96)
seasonsCount
viewfunction seasonsCount() view returns (uint96)
STORAGE_ADMINISTRATOR
viewfunction STORAGE_ADMINISTRATOR() view returns (address)
USDC
viewfunction USDC() view returns (address)
autoBoostLP
nonpayablefunction autoBoostLP(uint96 _nftId, uint96 _purchaseId)
boostLP
nonpayablefunction boostLP(uint96 _nftId, uint96 _purchaseId)
buyLP
nonpayablefunction buyLP(uint96 _nftId, uint16 _poolId)
cancelSubscription
nonpayablefunction cancelSubscription(uint96 _nftId, uint96 _purchaseId)
closeSeason
nonpayablefunction closeSeason(uint256 _totalAmountCollected)
createPool
nonpayablefunction createPool(string _name, uint256 _price, uint256 _feePercentage)
emergencyPause
nonpayablefunction emergencyPause()
emergencyUnpause
nonpayablefunction emergencyUnpause()
InitSeasons
nonpayablefunction InitSeasons()
migrateNftsLPpurchase
nonpayablefunction migrateNftsLPpurchase(uint96[] _nftIds, uint16[] _poolIds, uint96[] _purchaseIds, uint256[] _timeStamps, uint256[] _boostedAmounts)
migrateSeason
nonpayablefunction migrateSeason(tuple[] _data)
purchaseEnded
nonpayablefunction purchaseEnded(uint96 _nftId, uint96 _purchaseId)
renounceOwnership
nonpayablefunction renounceOwnership()
setCancelLPFees
nonpayablefunction setCancelLPFees(uint256 _cancelLPFees)
setContracts
nonpayablefunction setContracts(address _address, uint8 _contractOption)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updatePool
nonpayablefunction updatePool(uint16 _poolId, string _name, uint256 _price, uint256 _feePercentage, bool _isActive)
events
AutoBoostToggled
event AutoBoostToggled(uint96 indexed purchaseId, bool newState, uint256 timestamp)
LPBoosted
event LPBoosted(uint96 indexed _nftId, uint96 indexed _purchaseId, uint256 amountToBoost, uint256 timestamp)
MigrateLpPurchases
event MigrateLpPurchases(uint96 nftQuantity)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PoolCreated
event PoolCreated(uint96 indexed poolId, string name, uint256 price, uint256 feePercentage)
PoolPurchased
event PoolPurchased(address indexed buyer, uint96 nftId, uint96 nftSponsorId, uint96 purchaseId, uint16 poolId, uint96 seasonId, uint256 timestamp)
PoolPurchased
event PoolPurchased(address indexed signer, uint96 indexed nftId, uint96 nftSponsorId, uint96 indexed purchaseId, uint16 poolId)
SeasonClosed
event SeasonClosed(uint96 indexed seasonId, uint256 totalProfit)
SeasonOpened
event SeasonOpened(uint96 indexed seasonId, uint256 startTime, uint256 endTime)
Unpaused
event Unpaused(address account)
errors
AccessDenied
error AccessDenied()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
P2
error P2(uint96 _purchaseId)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
S2
error S2()
S4
error S4()
S5
error S5()
V1
error V1()
V2
error V2()
V3
error V3()
V5
error V5()
V6
error V6()
V8
error V8()
creation bytecode
0x608060405234801561000f575f5ffd5b5060405161583b38038061583b8339818101604052810190610031919061023f565b815f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100a2575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161009991906102ff565b60405180910390fd5b6100b18161011e60201b60201c565b506001601081905550875f55866001558560025584600355836004558260055580600e5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505050505050610318565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61020e826101e5565b9050919050565b61021e81610204565b8114610228575f5ffd5b50565b5f8151905061023981610215565b92915050565b5f5f5f5f5f5f5f5f610100898b03121561025c5761025b6101e1565b5b5f6102698b828c0161022b565b985050602061027a8b828c0161022b565b975050604061028b8b828c0161022b565b965050606061029c8b828c0161022b565b95505060806102ad8b828c0161022b565b94505060a06102be8b828c0161022b565b93505060c06102cf8b828c0161022b565b92505060e06102e08b828c0161022b565b9150509295985092959890939650565b6102f981610204565b82525050565b5f6020820190506103125f8301846102f0565b92915050565b615516806103255f395ff3fe608060405234801561000f575f5ffd5b5060043610610251575f3560e01c806389a3027111610144578063b187bd26116100c1578063d3b30b7511610085578063d3b30b7514610661578063d88ff1f41461067f578063dbf80a031461069d578063df7049e6146106b9578063f1ad7055146106d7578063f2fde38b146106f557610251565b8063b187bd26146105bd578063b29a1575146105db578063c34a2987146105f9578063cc8dfc7914610629578063cf7e80371461064557610251565b80639e1f22e1116101085780639e1f22e11461051b578063a5f0292b14610537578063a99fc55914610555578063afcdcdb614610571578063b14feb621461058d57610251565b806389a30271146104775780638afbe183146104955780638da5cb5b146104c5578063969a56a0146104e35780639b6c5283146104ff57610251565b80634f60e6c1116101d2578063715018a611610196578063715018a6146103e35780637c0b8de2146103ed578063821ba66d1461040b5780638690e43b1461043b5780638999dd6a1461045957610251565b80634f60e6c11461036557806351858e27146103815780635c975abb1461038b5780635d0aeec1146103a95780635d0eb31a146103c557610251565b80631f9b054d116102195780631f9b054d146102d357806344443064146102f157806345cd36f9146103215780634a4e3bd51461033f5780634df931fb1461034957610251565b8063018950261461025557806301afd56e14610271578063074383a71461027b5780630a2dd68d1461029957806319d3da97146102b7575b5f5ffd5b61026f600480360381019061026a91906139d0565b610711565b005b6102796107ba565b005b61028361088b565b6040516102909190613ab0565b60405180910390f35b6102a16109c9565b6040516102ae9190613b43565b60405180910390f35b6102d160048036038101906102cc91906139d0565b6109ee565b005b6102db610c35565b6040516102e89190613b6b565b60405180910390f35b61030b60048036038101906103069190613bae565b610c52565b6040516103189190613ab0565b60405180910390f35b610329610d0d565b6040516103369190613b6b565b60405180910390f35b610347610d2b565b005b610363600480360381019061035e9190613d76565b610dd3565b005b61037f600480360381019061037a9190613f10565b610f9b565b005b6103896111ed565b005b610393611295565b6040516103a09190614036565b60405180910390f35b6103c360048036038101906103be919061404f565b6112ab565b005b6103cd61140c565b6040516103da919061409c565b60405180910390f35b6103eb61141f565b005b6103f5611432565b60405161040291906140d5565b60405180910390f35b61042560048036038101906104209190613bae565b611457565b604051610432919061425b565b60405180910390f35b6104436115d7565b60405161045091906140d5565b60405180910390f35b6104616115fb565b60405161046e9190613b6b565b60405180910390f35b61047f611619565b60405161048c91906140d5565b60405180910390f35b6104af60048036038101906104aa9190613bae565b61163e565b6040516104bc9190614323565b60405180910390f35b6104cd6116fc565b6040516104da91906140d5565b60405180910390f35b6104fd60048036038101906104f89190614343565b611724565b005b61051960048036038101906105149190614381565b611add565b005b6105356004803603810190610530919061404f565b611ce2565b005b61053f611d0c565b60405161054c919061440d565b60405180910390f35b61056f600480360381019061056a919061404f565b611d31565b005b61058b6004803603810190610586919061404f565b611fbe565b005b6105a760048036038101906105a2919061404f565b612258565b6040516105b491906144db565b60405180910390f35b6105c56123b0565b6040516105d29190614036565b60405180910390f35b6105e36123be565b6040516105f09190614504565b60405180910390f35b610613600480360381019061060e919061451d565b6123c4565b604051610620919061461b565b60405180910390f35b610643600480360381019061063e9190614688565b6124d3565b005b61065f600480360381019061065a919061471b565b612844565b005b610669612a7e565b6040516106769190613ab0565b60405180910390f35b610687612b5d565b6040516106949190614894565b60405180910390f35b6106b760048036038101906106b2919061404f565b612b7f565b005b6106c1612c29565b6040516106ce91906148d4565b60405180910390f35b6106df612c4e565b6040516106ec9190614504565b60405180910390f35b61070f600480360381019061070a91906148ed565b612c54565b005b336040518060400160405280600a81526020017f535550455241444d494e000000000000000000000000000000000000000000008152506107735f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cd8565b60648311156107ae576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82600d81905550505050565b336040518060400160405280600681526020017f53595354454d000000000000000000000000000000000000000000000000000081525061081c5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cd8565b5f600a600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16111561087e576040517f3a347c7600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6108875f612ce8565b5050565b6108936138bc565b5f600b5f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16036108f3576040517fd819ab6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60095f6001600b5f9054906101000a90046bffffffffffffffffffffffff1661091c9190614945565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581525050905090565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b336040518060400160405280600681526020017f53595354454d0000000000000000000000000000000000000000000000000000815250610a505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cd8565b610a58612e85565b610a60612ec6565b5f600a600e9054906101000a90046bffffffffffffffffffffffff1690505f816bffffffffffffffffffffffff1603610ac5576040517fd819ab6300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600182610ad39190614945565b90505f60095f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f209050806004015f9054906101000a900460ff1615610b4d576040517f6558179300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8581600301819055506001816004015f6101000a81548160ff021916908315150217905550600b5f81819054906101000a90046bffffffffffffffffffffffff1680929190610b9b90614984565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050816bffffffffffffffffffffffff167fbd4185a09dd89c1703a5e891dcf85f1e0b7b0c1f32fad28b60570c0bb8d5948587604051610c089190614504565b60405180910390a2610c25600183610c2091906149b7565b612ce8565b505050610c30612f0c565b505050565b600b5f9054906101000a90046bffffffffffffffffffffffff1681565b610c5a6138bc565b60095f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815250509050919050565b600a60029054906101000a90046bffffffffffffffffffffffff1681565b610d33612f16565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610db9576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610dc1612ec6565b610dc9612f20565b610dd1612f0c565b565b336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250610e355f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cd8565b610e3d612ec6565b610e45612e85565b610e4d612f16565b600a5f9054906101000a900461ffff1661ffff168761ffff1610610e9d576040517f2fb42d7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064841115610ed8576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040518060a001604052808861ffff16815260200187815260200186815260200185815260200184151581525060065f8961ffff1661ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151816001019081610f539190614bea565b5060408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050610f92612f0c565b50505050505050565b336040518060400160405280600681526020017f53595354454d0000000000000000000000000000000000000000000000000000815250610ffd5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cd8565b611005612e85565b61100d612f16565b5f8c8c905090505f8114806110225750603281115b15611059576040517fdb34179500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f5f90505b8e8e9050816bffffffffffffffffffffffff1610156111c4575f8f8f836bffffffffffffffffffffffff1681811061109a57611099614cb9565b5b90506020020160208101906110af9190613bae565b90505f8e8e846bffffffffffffffffffffffff168181106110d3576110d2614cb9565b5b90506020020160208101906110e8919061451d565b90505f8b8b856bffffffffffffffffffffffff1681811061110c5761110b614cb9565b5b9050602002013590505f8a8a866bffffffffffffffffffffffff1681811061113757611136614cb9565b5b9050602002013590505f8f8f876bffffffffffffffffffffffff1681811061116257611161614cb9565b5b90506020020160208101906111779190613bae565b90505f61118986868686866001612f82565b9150505f60028261119a9190614d13565b905080896111a89190614d43565b98505050505050505080806111bc90614984565b91505061105f565b5080600c5f8282546111d69190614d43565b925050819055505050505050505050505050505050565b6111f5612f16565b600e5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461127b576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611283612ec6565b61128b613380565b611293612f0c565b565b5f600f60149054906101000a900460ff16905090565b336040518060400160405280600581526020017f41444d494e00000000000000000000000000000000000000000000000000000081525061130d5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cd8565b611315612e85565b61131d612ec6565b611325612f16565b5f60075f866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f209050806004015f9054906101000a900460ff1615806113a057505f8160030154145b156113e257836040517fe6ba0f3f0000000000000000000000000000000000000000000000000000000081526004016113d99190613b6b565b60405180910390fd5b5f816004015f6101000a81548160ff02191690831515021790555050611406612f0c565b50505050565b600a5f9054906101000a900461ffff1681565b6114276133e3565b6114305f61346a565b565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60605f60085f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2090505f818054905090505f81036114f5575f67ffffffffffffffff8111156114b2576114b1613c28565b5b6040519080825280602002602001820160405280156114eb57816020015b6114d86138f6565b8152602001906001900390816114d05790505b50925050506115d2565b5f8167ffffffffffffffff8111156115105761150f613c28565b5b60405190808252806020026020018201604052801561154957816020015b6115366138f6565b81526020019060019003908161152e5790505b5090505f5f90505b828110156115ca576115a1868583815481106115705761156f614cb9565b5b905f5260205f209060029182820401919006600c029054906101000a90046bffffffffffffffffffffffff16612258565b8282815181106115b4576115b3614cb9565b5b6020026020010181905250806001019050611551565b508093505050505b919050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600a600e9054906101000a90046bffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060085f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f208054806020026020016040519081016040528092919081815260200182805480156116f057602002820191905f5260205f20905f905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b010492830192600103820291508084116116a35790505b50505050509050919050565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016117969190614da6565b602060405180830381865afa1580156117b1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117d59190614dd3565b73ffffffffffffffffffffffffffffffffffffffff1614611822576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61182a612ec6565b611832612e85565b61183a612f16565b5f60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632ab1c188856040518263ffffffff1660e01b81526004016118959190613b6b565b602060405180830381865afa1580156118b0573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906118d49190614e12565b90505f5f6118e68686425f5f5f612f82565b915091508060055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161194591906140d5565b602060405180830381865afa158015611960573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119849190614e51565b10156119bc576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636dec04e9335f868560015f5f6040518863ffffffff1660e01b8152600401611a239796959493929190614f35565b5f604051808303815f87803b158015611a3a575f5ffd5b505af1158015611a4c573d5f5f3e3d5ffd5b5050505080600c5f8282540192505081905550816bffffffffffffffffffffffff16866bffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f27309e519004512d0fb9fbcdc060e3690e558c9bd68e064df57f1bfcee44f8ed8689604051611ac5929190614fa2565b60405180910390a4505050611ad8612f0c565b505050565b336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250611b3f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cd8565b611b47612ec6565b611b4f612e85565b611b57612f16565b6064831115611b92576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600a5f9054906101000a900461ffff1690506040518060a001604052808261ffff1681526020018781526020018681526020018581526020016001151581525060065f8361ffff1661ffff1681526020019081526020015f205f820151815f015f6101000a81548161ffff021916908361ffff1602179055506020820151816001019081611c219190614bea565b5060408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050600a5f81819054906101000a900461ffff1680929190611c7790614fc9565b91906101000a81548161ffff021916908361ffff160217905550508061ffff167f202127a3b621c057f83d5f6394c98a33490b6d93f38e17d6ef33cabe43d3d218878787604051611cca9392919061503a565b60405180910390a250611cdb612f0c565b5050505050565b611d0882823073ffffffffffffffffffffffffffffffffffffffff1663b14feb6261352d565b5050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401611da39190614da6565b602060405180830381865afa158015611dbe573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611de29190614dd3565b73ffffffffffffffffffffffffffffffffffffffff1614611e2f576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e37612e85565b611e3f612ec6565b611e498383611ce2565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a99fc55985856040518363ffffffff1660e01b8152600401611ea6929190615076565b6020604051808303815f875af1158015611ec2573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ee69190614e51565b90508060075f866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206005015f828254611f529190614d43565b92505081905550826bffffffffffffffffffffffff16846bffffffffffffffffffffffff167fee345a8d877e3f266620b91711eaa4125404bcf2a352ca8369c0e4abc5be8f858342604051611fa892919061509d565b60405180910390a350611fb9612f0c565b505050565b813373ffffffffffffffffffffffffffffffffffffffff1660015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016120309190614da6565b602060405180830381865afa15801561204b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061206f9190614dd3565b73ffffffffffffffffffffffffffffffffffffffff16146120bc576040517f84806c3300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6120c4612e85565b6120cc612ec6565b6120d68383611ce2565b5f60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663163af7aa846040518263ffffffff1660e01b81526004016121319190613b6b565b6020604051808303815f875af115801561214d573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061217191906150d8565b9050806122025760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663438e0ce185856040518363ffffffff1660e01b81526004016121d4929190615076565b5f604051808303815f87803b1580156121eb575f5ffd5b505af11580156121fd573d5f5f3e3d5ffd5b505050505b826bffffffffffffffffffffffff167f2b11a5aeebe95d970d0d3a523b0f4d6bf3ae63cff2226c9aa50dc522920701768242604051612242929190615103565b60405180910390a250612253612f0c565b505050565b6122606138f6565b60075f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20604051806101200160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020015f8201600c9054906101000a900461ffff1661ffff1661ffff1681526020015f8201600e9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815260200160058201548152602001600682015481525050905092915050565b5f6123b9611295565b905090565b600c5481565b6123cc61395b565b60065f8361ffff1661ffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff16815260200160018201805461241e90614a23565b80601f016020809104026020016040519081016040528092919081815260200182805461244a90614a23565b80156124955780601f1061246c57610100808354040283529160200191612495565b820191905f5260205f20905b81548152906001019060200180831161247857829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff1615151515815250509050919050565b336040518060400160405280600a81526020017f535550455241444d494e000000000000000000000000000000000000000000008152506125355f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cd8565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361259a576040517f96cd25ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60058111156125ad576125ac614e7c565b5b8360058111156125c0576125bf614e7c565b5b0361260957835f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061283e565b6001600581111561261d5761261c614e7c565b5b8360058111156126305761262f614e7c565b5b0361267a578360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061283d565b6002600581111561268e5761268d614e7c565b5b8360058111156126a1576126a0614e7c565b5b036126eb578360025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061283c565b600360058111156126ff576126fe614e7c565b5b83600581111561271257612711614e7c565b5b0361275c578360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061283b565b600460058111156127705761276f614e7c565b5b83600581111561278357612782614e7c565b5b036127cd578360045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061283a565b6005808111156127e0576127df614e7c565b5b8360058111156127f3576127f2614e7c565b5b03612839578360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b5b5b50505050565b336040518060400160405280600681526020017f53595354454d00000000000000000000000000000000000000000000000000008152506128a65f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383612cd8565b6128ae612e85565b6128b6612ec6565b5f84849050036128f2576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f90505b84849050811015612a6f5784848281811061291557612914614cb9565b5b905060a0020160095f87878581811061293157612930614cb9565b5b905060a002015f0160208101906129489190613bae565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20818161297d9190615358565b905050600a600e81819054906101000a90046bffffffffffffffffffffffff16809291906129aa90614984565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550508484828181106129ec576129eb614cb9565b5b905060a002016080016020810190612a049190615366565b15612a6257600b5f81819054906101000a90046bffffffffffffffffffffffff1680929190612a3290614984565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b80806001019150506128f7565b50612a78612f0c565b50505050565b612a866138bc565b60095f6001600a600e9054906101000a90046bffffffffffffffffffffffff16612ab09190614945565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600182015481526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff161515151581525050905090565b6060612b7a600a5f9054906101000a900461ffff166123c46135ee565b905090565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612baa816136aa565b612bb2612e85565b5f60075f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206004015f6101000a81548160ff021916908315150217905550505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b612c5c6133e3565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612ccc575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612cc391906140d5565b60405180910390fd5b612cd58161346a565b50565b612ce3838383613712565b505050565b5f4290506040518060a00160405280836bffffffffffffffffffffffff16815260200182815260200162093a8083612d209190614d43565b81526020015f81526020015f151581525060095f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015f6101000a81548160ff021916908315150217905550905050600a600e81819054906101000a90046bffffffffffffffffffffffff1680929190612dfc90614984565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555050816bffffffffffffffffffffffff167fbbc94c2557f1a2c3d21f45c50ef2d72721a9a84973f1d9d529f8edbc0cfdea838262093a8084612e6b9190614d43565b604051612e7992919061509d565b60405180910390a25050565b612e8d611295565b15612ec4576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600260105403612f02576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601081905550565b6001601081905550565b612f1e613758565b565b612f286137f0565b5f600f60146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612f6b613830565b604051612f7891906140d5565b60405180910390a1565b5f5f5f60065f8961ffff1661ffff1681526020019081526020015f206040518060a00160405290815f82015f9054906101000a900461ffff1661ffff1661ffff168152602001600182018054612fd790614a23565b80601f016020809104026020016040519081016040528092919081815260200182805461300390614a23565b801561304e5780601f106130255761010080835404028352916020019161304e565b820191905f5260205f20905b81548152906001019060200180831161303157829003601f168201915b505050505081526020016002820154815260200160038201548152602001600482015f9054906101000a900460ff16151515158152505090505f600a600e9054906101000a90046bffffffffffffffffffffffff1690505f856130cb57600a60029054906101000a90046bffffffffffffffffffffffff166130cd565b865b9050604051806101200160405280826bffffffffffffffffffffffff168152602001845f015161ffff168152602001836bffffffffffffffffffffffff168152602001846040015181526020015f81526020018a81526020016001151581526020018981526020015f81525060075f8d6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f820151815f015f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506020820151815f01600c6101000a81548161ffff021916908361ffff1602179055506040820151815f01600e6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550606082015181600101556080820151816002015560a0820151816003015560c0820151816004015f6101000a81548160ff02191690831515021790555060e082015181600501556101008201518160060155905050856132a3576001600a60029054906101000a90046bffffffffffffffffffffffff1661329e91906149b7565b6132b1565b6001876132b091906149b7565b5b600a60026101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060085f8c6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2081908060018154018082558091505060019003905f5260205f209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555080836040015194509450505050965096945050505050565b613388612e85565b6001600f60146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586133cc613830565b6040516133d991906140d5565b60405180910390a1565b6133eb613830565b73ffffffffffffffffffffffffffffffffffffffff166134096116fc565b73ffffffffffffffffffffffffffffffffffffffff16146134685761342c613830565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161345f91906140d5565b60405180910390fd5b565b5f600f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f828286866040518363ffffffff1660e01b815260040161354f929190615076565b61012060405180830381865afa15801561356b573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061358f9190615486565b90508060c0015115806135a557505f8160a00151145b156135e757836040517fe6ba0f3f0000000000000000000000000000000000000000000000000000000081526004016135de9190613b6b565b60405180910390fd5b5050505050565b60605f8361ffff1667ffffffffffffffff81111561360f5761360e613c28565b5b60405190808252806020026020018201604052801561364857816020015b61363561395b565b81526020019060019003908161362d5790505b5090505f5f90505b81518161ffff16101561369f5761366a818563ffffffff16565b828261ffff168151811061368157613680614cb9565b5b6020026020010181905250808061369790614fc9565b915050613650565b508091505092915050565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461370f576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b61371d838383613837565b613753576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b5f5f339050803b91505f82111561379b576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff163b11156137ec576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b6137f8611295565b61382e576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f33905090565b5f8373ffffffffffffffffffffffffffffffffffffffff16637909185184846040518363ffffffff1660e01b81526004016138739291906154b2565b6020604051808303815f875af115801561388f573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138b391906150d8565b90509392505050565b6040518060a001604052805f6bffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f151581525090565b6040518061012001604052805f6bffffffffffffffffffffffff1681526020015f61ffff1681526020015f6bffffffffffffffffffffffff1681526020015f81526020015f81526020015f81526020015f151581526020015f81526020015f81525090565b6040518060a001604052805f61ffff168152602001606081526020015f81526020015f81526020015f151581525090565b5f604051905090565b5f5ffd5b5f5ffd5b5f819050919050565b6139af8161399d565b81146139b9575f5ffd5b50565b5f813590506139ca816139a6565b92915050565b5f602082840312156139e5576139e4613995565b5b5f6139f2848285016139bc565b91505092915050565b5f6bffffffffffffffffffffffff82169050919050565b613a1b816139fb565b82525050565b613a2a8161399d565b82525050565b5f8115159050919050565b613a4481613a30565b82525050565b60a082015f820151613a5e5f850182613a12565b506020820151613a716020850182613a21565b506040820151613a846040850182613a21565b506060820151613a976060850182613a21565b506080820151613aaa6080850182613a3b565b50505050565b5f60a082019050613ac35f830184613a4a565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f613b0b613b06613b0184613ac9565b613ae8565b613ac9565b9050919050565b5f613b1c82613af1565b9050919050565b5f613b2d82613b12565b9050919050565b613b3d81613b23565b82525050565b5f602082019050613b565f830184613b34565b92915050565b613b65816139fb565b82525050565b5f602082019050613b7e5f830184613b5c565b92915050565b613b8d816139fb565b8114613b97575f5ffd5b50565b5f81359050613ba881613b84565b92915050565b5f60208284031215613bc357613bc2613995565b5b5f613bd084828501613b9a565b91505092915050565b5f61ffff82169050919050565b613bef81613bd9565b8114613bf9575f5ffd5b50565b5f81359050613c0a81613be6565b92915050565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613c5e82613c18565b810181811067ffffffffffffffff82111715613c7d57613c7c613c28565b5b80604052505050565b5f613c8f61398c565b9050613c9b8282613c55565b919050565b5f67ffffffffffffffff821115613cba57613cb9613c28565b5b613cc382613c18565b9050602081019050919050565b828183375f83830152505050565b5f613cf0613ceb84613ca0565b613c86565b905082815260208101848484011115613d0c57613d0b613c14565b5b613d17848285613cd0565b509392505050565b5f82601f830112613d3357613d32613c10565b5b8135613d43848260208601613cde565b91505092915050565b613d5581613a30565b8114613d5f575f5ffd5b50565b5f81359050613d7081613d4c565b92915050565b5f5f5f5f5f60a08688031215613d8f57613d8e613995565b5b5f613d9c88828901613bfc565b955050602086013567ffffffffffffffff811115613dbd57613dbc613999565b5b613dc988828901613d1f565b9450506040613dda888289016139bc565b9350506060613deb888289016139bc565b9250506080613dfc88828901613d62565b9150509295509295909350565b5f5ffd5b5f5ffd5b5f5f83601f840112613e2657613e25613c10565b5b8235905067ffffffffffffffff811115613e4357613e42613e09565b5b602083019150836020820283011115613e5f57613e5e613e0d565b5b9250929050565b5f5f83601f840112613e7b57613e7a613c10565b5b8235905067ffffffffffffffff811115613e9857613e97613e09565b5b602083019150836020820283011115613eb457613eb3613e0d565b5b9250929050565b5f5f83601f840112613ed057613ecf613c10565b5b8235905067ffffffffffffffff811115613eed57613eec613e09565b5b602083019150836020820283011115613f0957613f08613e0d565b5b9250929050565b5f5f5f5f5f5f5f5f5f5f60a08b8d031215613f2e57613f2d613995565b5b5f8b013567ffffffffffffffff811115613f4b57613f4a613999565b5b613f578d828e01613e11565b9a509a505060208b013567ffffffffffffffff811115613f7a57613f79613999565b5b613f868d828e01613e66565b985098505060408b013567ffffffffffffffff811115613fa957613fa8613999565b5b613fb58d828e01613e11565b965096505060608b013567ffffffffffffffff811115613fd857613fd7613999565b5b613fe48d828e01613ebb565b945094505060808b013567ffffffffffffffff81111561400757614006613999565b5b6140138d828e01613ebb565b92509250509295989b9194979a5092959850565b61403081613a30565b82525050565b5f6020820190506140495f830184614027565b92915050565b5f5f6040838503121561406557614064613995565b5b5f61407285828601613b9a565b925050602061408385828601613b9a565b9150509250929050565b61409681613bd9565b82525050565b5f6020820190506140af5f83018461408d565b92915050565b5f6140bf82613ac9565b9050919050565b6140cf816140b5565b82525050565b5f6020820190506140e85f8301846140c6565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61412081613bd9565b82525050565b61012082015f82015161413b5f850182613a12565b50602082015161414e6020850182614117565b5060408201516141616040850182613a12565b5060608201516141746060850182613a21565b5060808201516141876080850182613a21565b5060a082015161419a60a0850182613a21565b5060c08201516141ad60c0850182613a3b565b5060e08201516141c060e0850182613a21565b506101008201516141d5610100850182613a21565b50505050565b5f6141e68383614126565b6101208301905092915050565b5f602082019050919050565b5f614209826140ee565b61421381856140f8565b935061421e83614108565b805f5b8381101561424e57815161423588826141db565b9750614240836141f3565b925050600181019050614221565b5085935050505092915050565b5f6020820190508181035f83015261427381846141ff565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6142af8383613a12565b60208301905092915050565b5f602082019050919050565b5f6142d18261427b565b6142db8185614285565b93506142e683614295565b805f5b838110156143165781516142fd88826142a4565b9750614308836142bb565b9250506001810190506142e9565b5085935050505092915050565b5f6020820190508181035f83015261433b81846142c7565b905092915050565b5f5f6040838503121561435957614358613995565b5b5f61436685828601613b9a565b925050602061437785828601613bfc565b9150509250929050565b5f5f5f6060848603121561439857614397613995565b5b5f84013567ffffffffffffffff8111156143b5576143b4613999565b5b6143c186828701613d1f565b93505060206143d2868287016139bc565b92505060406143e3868287016139bc565b9150509250925092565b5f6143f782613b12565b9050919050565b614407816143ed565b82525050565b5f6020820190506144205f8301846143fe565b92915050565b61012082015f82015161443b5f850182613a12565b50602082015161444e6020850182614117565b5060408201516144616040850182613a12565b5060608201516144746060850182613a21565b5060808201516144876080850182613a21565b5060a082015161449a60a0850182613a21565b5060c08201516144ad60c0850182613a3b565b5060e08201516144c060e0850182613a21565b506101008201516144d5610100850182613a21565b50505050565b5f610120820190506144ef5f830184614426565b92915050565b6144fe8161399d565b82525050565b5f6020820190506145175f8301846144f5565b92915050565b5f6020828403121561453257614531613995565b5b5f61453f84828501613bfc565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f61457a82614548565b6145848185614552565b9350614594818560208601614562565b61459d81613c18565b840191505092915050565b5f60a083015f8301516145bd5f860182614117565b50602083015184820360208601526145d58282614570565b91505060408301516145ea6040860182613a21565b5060608301516145fd6060860182613a21565b5060808301516146106080860182613a3b565b508091505092915050565b5f6020820190508181035f83015261463381846145a8565b905092915050565b614644816140b5565b811461464e575f5ffd5b50565b5f8135905061465f8161463b565b92915050565b60068110614671575f5ffd5b50565b5f8135905061468281614665565b92915050565b5f5f6040838503121561469e5761469d613995565b5b5f6146ab85828601614651565b92505060206146bc85828601614674565b9150509250929050565b5f5f83601f8401126146db576146da613c10565b5b8235905067ffffffffffffffff8111156146f8576146f7613e09565b5b6020830191508360a082028301111561471457614713613e0d565b5b9250929050565b5f5f6020838503121561473157614730613995565b5b5f83013567ffffffffffffffff81111561474e5761474d613999565b5b61475a858286016146c6565b92509250509250929050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f60a083015f8301516147a45f860182614117565b50602083015184820360208601526147bc8282614570565b91505060408301516147d16040860182613a21565b5060608301516147e46060860182613a21565b5060808301516147f76080860182613a3b565b508091505092915050565b5f61480d838361478f565b905092915050565b5f602082019050919050565b5f61482b82614766565b6148358185614770565b93508360208202850161484785614780565b805f5b8581101561488257848403895281516148638582614802565b945061486e83614815565b925060208a0199505060018101905061484a565b50829750879550505050505092915050565b5f6020820190508181035f8301526148ac8184614821565b905092915050565b5f6148be82613b12565b9050919050565b6148ce816148b4565b82525050565b5f6020820190506148e75f8301846148c5565b92915050565b5f6020828403121561490257614901613995565b5b5f61490f84828501614651565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61494f826139fb565b915061495a836139fb565b925082820390506bffffffffffffffffffffffff81111561497e5761497d614918565b5b92915050565b5f61498e826139fb565b91506bffffffffffffffffffffffff82036149ac576149ab614918565b5b600182019050919050565b5f6149c1826139fb565b91506149cc836139fb565b925082820190506bffffffffffffffffffffffff8111156149f0576149ef614918565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680614a3a57607f821691505b602082108103614a4d57614a4c6149f6565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302614aaf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82614a74565b614ab98683614a74565b95508019841693508086168417925050509392505050565b5f614aeb614ae6614ae18461399d565b613ae8565b61399d565b9050919050565b5f819050919050565b614b0483614ad1565b614b18614b1082614af2565b848454614a80565b825550505050565b5f5f905090565b614b2f614b20565b614b3a818484614afb565b505050565b5b81811015614b5d57614b525f82614b27565b600181019050614b40565b5050565b601f821115614ba257614b7381614a53565b614b7c84614a65565b81016020851015614b8b578190505b614b9f614b9785614a65565b830182614b3f565b50505b505050565b5f82821c905092915050565b5f614bc25f1984600802614ba7565b1980831691505092915050565b5f614bda8383614bb3565b9150826002028217905092915050565b614bf382614548565b67ffffffffffffffff811115614c0c57614c0b613c28565b5b614c168254614a23565b614c21828285614b61565b5f60209050601f831160018114614c52575f8415614c40578287015190505b614c4a8582614bcf565b865550614cb1565b601f198416614c6086614a53565b5f5b82811015614c8757848901518255600182019150602085019450602081019050614c62565b86831015614ca45784890151614ca0601f891682614bb3565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f614d1d8261399d565b9150614d288361399d565b925082614d3857614d37614ce6565b5b828204905092915050565b5f614d4d8261399d565b9150614d588361399d565b9250828201905080821115614d7057614d6f614918565b5b92915050565b5f614d90614d8b614d86846139fb565b613ae8565b61399d565b9050919050565b614da081614d76565b82525050565b5f602082019050614db95f830184614d97565b92915050565b5f81519050614dcd8161463b565b92915050565b5f60208284031215614de857614de7613995565b5b5f614df584828501614dbf565b91505092915050565b5f81519050614e0c81613b84565b92915050565b5f60208284031215614e2757614e26613995565b5b5f614e3484828501614dfe565b91505092915050565b5f81519050614e4b816139a6565b92915050565b5f60208284031215614e6657614e65613995565b5b5f614e7384828501614e3d565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b60038110614eba57614eb9614e7c565b5b50565b5f819050614eca82614ea9565b919050565b5f614ed982614ebd565b9050919050565b614ee981614ecf565b82525050565b60038110614f0057614eff614e7c565b5b50565b5f819050614f1082614eef565b919050565b5f614f1f82614f03565b9050919050565b614f2f81614f15565b82525050565b5f60e082019050614f485f83018a6140c6565b614f5560208301896140c6565b614f626040830188613b5c565b614f6f60608301876144f5565b614f7c6080830186614ee0565b614f8960a0830185614f26565b614f9660c0830184614027565b98975050505050505050565b5f604082019050614fb55f830185613b5c565b614fc2602083018461408d565b9392505050565b5f614fd382613bd9565b915061ffff8203614fe757614fe6614918565b5b600182019050919050565b5f82825260208201905092915050565b5f61500c82614548565b6150168185614ff2565b9350615026818560208601614562565b61502f81613c18565b840191505092915050565b5f6060820190508181035f8301526150528186615002565b905061506160208301856144f5565b61506e60408301846144f5565b949350505050565b5f6040820190506150895f830185613b5c565b6150966020830184613b5c565b9392505050565b5f6040820190506150b05f8301856144f5565b6150bd60208301846144f5565b9392505050565b5f815190506150d281613d4c565b92915050565b5f602082840312156150ed576150ec613995565b5b5f6150fa848285016150c4565b91505092915050565b5f6040820190506151165f830185614027565b61512360208301846144f5565b9392505050565b5f813561513681613b84565b80915050919050565b5f815f1b9050919050565b5f6bffffffffffffffffffffffff6151618461513f565b9350801983169250808416831791505092915050565b5f61519161518c615187846139fb565b613ae8565b6139fb565b9050919050565b5f819050919050565b6151aa82615177565b6151bd6151b682615198565b835461514a565b8255505050565b5f81356151d0816139a6565b80915050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6152048461513f565b9350801983169250808416831791505092915050565b61522382614ad1565b61523661522f82614af2565b83546151d9565b8255505050565b5f813561524981613d4c565b80915050919050565b5f60ff61525e8461513f565b9350801983169250808416831791505092915050565b5f61527e82613a30565b9050919050565b5f819050919050565b61529782615274565b6152aa6152a382615285565b8354615252565b8255505050565b5f81015f8301806152c18161512a565b90506152cd81846151a1565b5050506001810160208301806152e2816151c4565b90506152ee818461521a565b505050600281016040830180615303816151c4565b905061530f818461521a565b505050600381016060830180615324816151c4565b9050615330818461521a565b5050506004810160808301806153458161523d565b9050615351818461528e565b5050505050565b61536282826152b1565b5050565b5f6020828403121561537b5761537a613995565b5b5f61538884828501613d62565b91505092915050565b5f5ffd5b5f815190506153a381613be6565b92915050565b5f61012082840312156153bf576153be615391565b5b6153ca610120613c86565b90505f6153d984828501614dfe565b5f8301525060206153ec84828501615395565b602083015250604061540084828501614dfe565b604083015250606061541484828501614e3d565b606083015250608061542884828501614e3d565b60808301525060a061543c84828501614e3d565b60a08301525060c0615450848285016150c4565b60c08301525060e061546484828501614e3d565b60e08301525061010061547984828501614e3d565b6101008301525092915050565b5f610120828403121561549c5761549b613995565b5b5f6154a9848285016153a9565b91505092915050565b5f6040820190506154c55f8301856140c6565b81810360208301526154d78184615002565b9050939250505056fea26469706673582212204935cfcf1ebe68e9afb927467094073cf4a142f69fcaed5106f5a76355cbc5fe64736f6c634300081e0033000000000000000000000000f79641d66bf22e777f9cf74bdaf535cb25394909000000000000000000000000a784aa9d9ca760a1d7973c3ad902c1d0052581dd0000000000000000000000000ac38e7334b0f14053963f4ebe2db463351c96ad000000000000000000000000eeef0f55712c709cbaf17f98df88aeba7a3c298c0000000000000000000000006827881f9fff0f4b48a26c104f6596e29322012a0000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d0000000000000000000000001bd41c988fd8807a73e79cfb465df488e73d6c0d0000000000000000000000002ee70f0585d83f523ae876f86b8df2c6c8677a99