1 tx
2 calls
constructor
constructor(address _rolesManager, address _usdcContract, address _nftContract, address _paymentSplitterContract, uint96 _directRewardLVPercentage, address _initialOwner, address _pauser)
functions
amountAutoBoostedByPurchase
viewfunction amountAutoBoostedByPurchase(uint96, uint96) view returns (uint256)
binaryAvailableRewards
viewfunction binaryAvailableRewards() view returns (uint256)
blockchainInfrastructureAvailableRewards
viewfunction blockchainInfrastructureAvailableRewards() view returns (uint256)
CLAIM_FEES
viewfunction CLAIM_FEES() view returns (address)
coreAvailableRewards
viewfunction coreAvailableRewards() view returns (uint256)
directRewardLVPercentage
viewfunction directRewardLVPercentage() view returns (uint96)
EMERGENCY_WITHDRAW
viewfunction EMERGENCY_WITHDRAW() view returns (bool)
getAllDirectBonus
viewfunction getAllDirectBonus(uint96 _nftId) view returns (uint256[])
getAmountAutoBoostedByPurchase
viewfunction getAmountAutoBoostedByPurchase(uint96 _nftId, uint96 _purchaseIndex) view returns (uint256)
getAmountAvailableToClaimByPurchase
viewfunction getAmountAvailableToClaimByPurchase(uint96 _nftId, uint96 _purchaseIndex) view returns (uint256)
getBinaryOrMatchingReward
viewfunction getBinaryOrMatchingReward(uint96 _nftId, uint8 _rewardType) view returns (uint256)
getDirectBonusByProduct
viewfunction getDirectBonusByProduct(uint96 _nftId, uint8 _productType) view returns (tuple)
getRewardByPurchase
viewfunction getRewardByPurchase(uint96 _nftId, uint96 _purchaseIndex) view returns (tuple)
isPaused
viewfunction isPaused() view returns (bool)
isPurchaseAutoBoost
viewfunction isPurchaseAutoBoost(uint96 _nftId, uint96 _purchaseIndex) view returns (bool)
lastAutoBoostToggle
viewfunction lastAutoBoostToggle(uint96, uint96) view returns (uint256)
LP_CONTRACT
viewfunction LP_CONTRACT() view returns (address)
LP_TLV_TOTAL_AMOUNT_OUT
viewfunction LP_TLV_TOTAL_AMOUNT_OUT() view returns (uint256)
matchingAvailableRewards
viewfunction matchingAvailableRewards() view returns (uint256)
NFT_CONTRACT
viewfunction NFT_CONTRACT() view returns (address)
nftBonusPoints
viewfunction nftBonusPoints(uint96) view returns (uint256)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
PAYMENT_SPLITTER_CONTRACT
viewfunction PAYMENT_SPLITTER_CONTRACT() view returns (address)
purchaseIsAutoBoost
viewfunction purchaseIsAutoBoost(uint96, uint96) view returns (bool)
ROLES_MANAGER
viewfunction ROLES_MANAGER() view returns (address)
TREASURY
viewfunction TREASURY() view returns (address)
USDC
viewfunction USDC() view returns (address)
assingAmountAvailables
nonpayablefunction assingAmountAvailables(uint256 _binaryAmount, uint256 _matchingAmount, uint256 _blockchainInfrastructureAmount, uint256 _coreAmount)
assingAutoBoostToUnClaimed
nonpayablefunction assingAutoBoostToUnClaimed(uint96 _nftId, uint96 _purchaseId)
assingLPRewards
nonpayablefunction assingLPRewards(uint96[] _nftIds, uint96[][] _nftPurchases, uint256[][] _purchasesAmounts, bool _isSys)
AssingProfitClaimed
nonpayablefunction AssingProfitClaimed(uint96[] _nftId, uint96[][] _purchaseId, uint256[][] _amountClaimed)
assingRewards
nonpayablefunction assingRewards(uint96[] _nftId, uint256 _points, uint256[] _amount, uint8 _productType, uint8 _rewardType)
autoBoostLP
nonpayablefunction autoBoostLP(uint96 _nftId, uint96 _purchaseId) returns (bool)
boostLP
nonpayablefunction boostLP(uint96 _nftId, uint96 _purchaseId) returns (uint256)
claimBinary
nonpayablefunction claimBinary(uint96 _nftId)
claimCore
nonpayablefunction claimCore(uint8 _claimType)
claimDirect
nonpayablefunction claimDirect(uint96 _nftId, uint8 _productType)
claimLV
nonpayablefunction claimLV(uint96 _nftId, uint96 _purchaseId)
claimMatching
nonpayablefunction claimMatching(uint96 _nftId)
emergencyPause
nonpayablefunction emergencyPause()
emergencyUnpause
nonpayablefunction emergencyUnpause()
emergencyWithdraw
nonpayablefunction emergencyWithdraw(address _address)
renounceOwnership
nonpayablefunction renounceOwnership()
saveBonusDataFromPaymentSplitter
nonpayablefunction saveBonusDataFromPaymentSplitter(uint256 _amount, uint256 binaryPercentage, uint256 matchingPercentage, uint256 blockchainInfrastructurePercentage, uint256 corePercentage, uint8 _productType)
setContractAddress
nonpayablefunction setContractAddress(address _address, uint8 _option)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
DeprecatedFunctionUsed
event DeprecatedFunctionUsed(string functionName, address caller)
DirectClaimed
event DirectClaimed(uint96 indexed nftId, uint256 amount, uint8 indexed productType)
DirectRewardAssigned
event DirectRewardAssigned(uint96 indexed sponsorNFTId, uint256 sponsorPointsEarned, uint256 sponsorAmountEarned)
LVClaimed
event LVClaimed(uint96 indexed nftId, uint96 indexed purchaseIndex, uint256 amountClaimed, uint256 date)
LVRewardAssigned
event LVRewardAssigned(uint96 indexed nftId, uint96 indexed purchaseIndex, uint256 amount)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PointsPrecisionLoss
event PointsPrecisionLoss(uint96 indexed nft, uint256 _points, uint256 pointsToAdd)
RewardAssigned
event RewardAssigned(uint96 indexed nft, uint256 amount, uint8 indexed bonusType)
RewardClaimed
event RewardClaimed(uint96 indexed nftId, uint256 amount, uint8 indexed bonusType)
RewardsAmountsSaved
event RewardsAmountsSaved(uint256 binaryEarn, uint256 matchingEarn, uint256 blockchainInfrastructureEarn, uint256 coreEarn)
TotalRewardAssigned
event TotalRewardAssigned(uint256 totalAmount, uint8 indexed bonusType)
Unpaused
event Unpaused(address account)
errors
AccessDenied
error AccessDenied()
B1
error B1()
B2
error B2()
B3
error B3()
B4
error B4()
B5
error B5()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
T1
error T1()
V1
error V1()
V2
error V2()
V3
error V3()
V4
error V4()
V5
error V5()
creation bytecode
0x608060405234801562000010575f80fd5b50604051620063ac380380620063ac8339818101604052810190620000369190620003ae565b815f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000aa575f6040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000a191906200046d565b60405180910390fd5b620000bb816200024060201b60201c565b506001601681905550865f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508460035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508360025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060135f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082600f5f6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055505050505050505062000488565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f620003328262000307565b9050919050565b620003448162000326565b81146200034f575f80fd5b50565b5f81519050620003628162000339565b92915050565b5f6bffffffffffffffffffffffff82169050919050565b6200038a8162000368565b811462000395575f80fd5b50565b5f81519050620003a8816200037f565b92915050565b5f805f805f805f60e0888a031215620003cc57620003cb62000303565b5b5f620003db8a828b0162000352565b9750506020620003ee8a828b0162000352565b9650506040620004018a828b0162000352565b9550506060620004148a828b0162000352565b9450506080620004278a828b0162000398565b93505060a06200043a8a828b0162000352565b92505060c06200044d8a828b0162000352565b91505092959891949750929550565b620004678162000326565b82525050565b5f602082019050620004825f8301846200045c565b92915050565b615f1680620004965f395ff3fe608060405234801561000f575f80fd5b5060043610610293575f3560e01c8063715018a611610165578063afcdcdb6116100cc578063eb02599f11610085578063eb02599f146107d7578063f165921e14610807578063f2fde38b14610823578063f3c48d031461083f578063f4d334d71461086f578063f94b918c1461088d57610293565b8063afcdcdb6146106ed578063b187bd261461071d578063b98657e71461073b578063c434641214610759578063d2c75abb14610777578063d2f8df6b146107a757610293565b80639ec1b9271161011e5780639ec1b9271461062d578063a0c7864314610649578063a43adb6b14610665578063a57133e714610681578063a99fc5591461069f578063aa3b9c73146106cf57610293565b8063715018a61461057d57806375f64ccc146105875780638690e43b146105b757806389a30271146105d55780638da5cb5b146105f35780639aab1ddd1461061157610293565b80633bc40bab1161020957806351858e27116101c257806351858e27146104cd57806353544aa2146104d7578063593d9cbe146105075780635c975abb146105255780635f768a80146105435780636ff1c9bc1461056157610293565b80633bc40bab1461042157806341954c841461043d578063438e0ce11461045b578063455743e1146104775780634a4e3bd5146104935780634b5b9f381461049d57610293565b80632d2c55651161025b5780632d2c55651461033b578063378604a41461035957806339479da5146103895780633a05e9b8146103b95780633a36c902146103e95780633ba0ad3f1461040557610293565b80630bf7e48c146102975780630c8c85ed146102b35780630dabfcab146102d15780631ee76710146102ed5780631fda9a021461031d575b5f80fd5b6102b160048036038101906102ac9190614bfa565b6108ab565b005b6102bb610e80565b6040516102c89190614c77565b60405180910390f35b6102eb60048036038101906102e69190614cdd565b610ea5565b005b61030760048036038101906103029190614bfa565b61128f565b6040516103149190614d33565b60405180910390f35b6103256112af565b6040516103329190614c77565b60405180910390f35b6103436112d4565b6040516103509190614c77565b60405180910390f35b610373600480360381019061036e9190614bfa565b6112f9565b6040516103809190614d66565b60405180910390f35b6103a3600480360381019061039e9190614bfa565b611323565b6040516103b09190614d33565b60405180910390f35b6103d360048036038101906103ce9190614d7f565b611343565b6040516103e09190614e61565b60405180910390f35b61040360048036038101906103fe9190614eab565b611434565b005b61041f600480360381019061041a9190614f32565b611515565b005b61043b60048036038101906104369190614d7f565b611636565b005b61044561177c565b6040516104529190614d33565b60405180910390f35b61047560048036038101906104709190614bfa565b611782565b005b610491600480360381019061048c9190615068565b6119c3565b005b61049b611c20565b005b6104b760048036038101906104b29190614bfa565b611ce2565b6040516104c4919061517e565b60405180910390f35b6104d5611d86565b005b6104f160048036038101906104ec91906151ba565b611e49565b6040516104fe9190614d33565b60405180910390f35b61050f611f06565b60405161051c9190614c77565b60405180910390f35b61052d611f2b565b60405161053a9190614d66565b60405180910390f35b61054b611f41565b6040516105589190614c77565b60405180910390f35b61057b600480360381019061057691906151f8565b611f66565b005b610585612230565b005b6105a1600480360381019061059c9190614bfa565b612243565b6040516105ae9190614d33565b60405180910390f35b6105bf61225c565b6040516105cc919061527e565b60405180910390f35b6105dd61227f565b6040516105ea9190614c77565b60405180910390f35b6105fb6122a4565b6040516106089190614c77565b60405180910390f35b61062b600480360381019061062691906154c2565b6122cc565b005b61064760048036038101906106429190615571565b6128d5565b005b610663600480360381019061065e9190614d7f565b612b45565b005b61067f600480360381019061067a9190615624565b612c8b565b005b6106896131cc565b60405161069691906156f7565b60405180910390f35b6106b960048036038101906106b49190614bfa565b6131e9565b6040516106c69190614d33565b60405180910390f35b6106d7613426565b6040516106e49190614d33565b60405180910390f35b61070760048036038101906107029190614bfa565b61342c565b6040516107149190614d66565b60405180910390f35b6107256135e9565b6040516107329190614d66565b60405180910390f35b6107436135f7565b6040516107509190614d33565b60405180910390f35b6107616135fd565b60405161076e9190614d33565b60405180910390f35b610791600480360381019061078c9190614d7f565b613603565b60405161079e9190614d33565b60405180910390f35b6107c160048036038101906107bc9190614bfa565b613618565b6040516107ce9190614d66565b60405180910390f35b6107f160048036038101906107ec9190614bfa565b613686565b6040516107fe9190614d33565b60405180910390f35b610821600480360381019061081c9190615710565b6136e8565b005b61083d600480360381019061083891906151f8565b61397b565b005b61085960048036038101906108549190615710565b6139ff565b604051610866919061517e565b60405180910390f35b610877613a9f565b6040516108849190614d33565b60405180910390f35b610895613aa5565b6040516108a29190614d66565b60405180910390f35b816bffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b815260040161092b9190614d33565b602060405180830381865afa158015610946573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061096a9190615762565b73ffffffffffffffffffffffffffffffffffffffff16146109b7576040517f16ce049b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b336109c181613ab8565b6109c9613ac4565b6109d1613b0a565b6109d9613b4b565b5f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16639e1f22e186866040518363ffffffff1660e01b8152600401610a3992919061578d565b5f6040518083038186803b158015610a4f575f80fd5b505afa158015610a61573d5f803e3d5ffd5b505050505f8173ffffffffffffffffffffffffffffffffffffffff1663b14feb6287876040518363ffffffff1660e01b8152600401610aa192919061578d565b61012060405180830381865afa158015610abd573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ae19190615908565b6060015190505f80610af38888613b55565b915091505f8203610b30576040517f18383eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8015610b9f578373ffffffffffffffffffffffffffffffffffffffff1663dbf80a0389896040518363ffffffff1660e01b8152600401610b7192919061578d565b5f604051808303815f87803b158015610b88575f80fd5b505af1158015610b9a573d5f803e3d5ffd5b505050505b5f8290506064603285610bb29190615961565b610bbc91906159cf565b831015610c97575f6064600f5f9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1685610bf99190615961565b610c0391906159cf565b90508084610c1191906159ff565b91505f73ffffffffffffffffffffffffffffffffffffffff1660065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c9557610c943060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16835f613ec4565b5b505b5f60095f8b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20905083815f8b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f01541015610d2f576040517f18383eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f42905084825f8c6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f015f828254610d7091906159ff565b9250508190555084825f8c6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206001015f828254610db59190615a32565b9250508190555080825f8c6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2060030181905550610dfc3033855f613ec4565b8460145f828254610e0d9190615a32565b92505081905550896bffffffffffffffffffffffff168b6bffffffffffffffffffffffff167f19126e7cfd31aeab63ee75323f33586daec83b36c646b0ffc32d2b90debbfe6f8784604051610e63929190615a65565b60405180910390a350505050505050610e7a614227565b50505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250610f065f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383614231565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610f6b576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f73613b4b565b5f6006811115610f8657610f85615a8c565b5b836006811115610f9957610f98615a8c565b5b03610fe257835f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611289565b60016006811115610ff657610ff5615a8c565b5b83600681111561100957611008615a8c565b5b03611053578360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611288565b6002600681111561106757611066615a8c565b5b83600681111561107a57611079615a8c565b5b036110c4578360025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611287565b600360068111156110d8576110d7615a8c565b5b8360068111156110eb576110ea615a8c565b5b03611135578360035f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611286565b6004600681111561114957611148615a8c565b5b83600681111561115c5761115b615a8c565b5b036111a6578360045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611285565b600560068111156111ba576111b9615a8c565b5b8360068111156111cd576111cc615a8c565b5b03611217578360055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611284565b60068081111561122a57611229615a8c565b5b83600681111561123d5761123c615a8c565b5b03611283578360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b5b5b5b5b5b50505050565b6012602052815f5260405f20602052805f5260405f205f91509150505481565b60035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6010602052815f5260405f20602052805f5260405f205f915091509054906101000a900460ff1681565b6011602052815f5260405f20602052805f5260405f205f91509150505481565b60605f600367ffffffffffffffff811115611361576113606152a7565b5b60405190808252806020026020018201604052801561138f5781602001602082028036833780820191505090505b5090505f5b6003816bffffffffffffffffffffffff16101561142a5760075f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f8260ff1660ff1681526020019081526020015f205f015482826bffffffffffffffffffffffff168151811061141157611410615ab9565b5b6020026020010181815250508080600101915050611394565b5080915050919050565b336040518060400160405280600681526020017f53595354454d00000000000000000000000000000000000000000000000000008152506114955f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383614231565b61149d613ac4565b6114a5613b0a565b85600b5f8282546114b69190615a32565b9250508190555084600c5f8282546114ce9190615a32565b9250508190555083600d5f8282546114e69190615a32565b9250508190555082600e5f8282546114fe9190615a32565b9250508190555061150d614227565b505050505050565b336040518060400160405280600481526020017f434f5245000000000000000000000000000000000000000000000000000000008152506115765f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383614231565b3361158081613ab8565b611588613ac4565b611590613b0a565b611598613b4b565b5f8060018111156115ac576115ab615a8c565b5b8560018111156115bf576115be615a8c565b5b036115d557600e5490505f600e819055506115e2565b600d5490505f600d819055505b5f810361161b576040517fdd57a76e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116273033835f613ec4565b50611630614227565b50505050565b806bffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016116b69190614d33565b602060405180830381865afa1580156116d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116f59190615762565b73ffffffffffffffffffffffffffffffffffffffff1614611742576040517f16ce049b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b3361174c81613ab8565b611754613ac4565b61175c613b0a565b611764613b4b565b61176f836001614241565b611777614227565b505050565b600e5481565b3360015f808260ff16146117b75760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166117da565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611841576040517ff6bcc11800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611849613ac4565b611851613b0a565b5f60125f876bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205490505f81036118e6576040517f18383eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060095f886bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f876bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f015f82825461194f9190615a32565b925050819055505f60125f886bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f876bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2081905550506119bc614227565b5050505050565b336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250611a245f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383614231565b611a2c613b0a565b611a34613b4b565b5f5b88889050816bffffffffffffffffffffffff161015611c15575f5b8787836bffffffffffffffffffffffff16818110611a7257611a71615ab9565b5b9050602002810190611a849190615af2565b9050816bffffffffffffffffffffffff161015611c01578585836bffffffffffffffffffffffff16818110611abc57611abb615ab9565b5b9050602002810190611ace9190615b54565b826bffffffffffffffffffffffff16818110611aed57611aec615ab9565b5b9050602002013560095f8c8c866bffffffffffffffffffffffff16818110611b1857611b17615ab9565b5b9050602002016020810190611b2d9190614d7f565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f8a8a866bffffffffffffffffffffffff16818110611b7857611b77615ab9565b5b9050602002810190611b8a9190615af2565b856bffffffffffffffffffffffff16818110611ba957611ba8615ab9565b5b9050602002016020810190611bbe9190614d7f565b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20600101819055508080611bf990615bb6565b915050611a51565b508080611c0d90615bb6565b915050611a36565b505050505050505050565b611c28613b4b565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611cae576040517f16ce049b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611cb6613ac4565b5f601360146101000a81548160ff021916908315150217905550611cd86144b3565b611ce0614227565b565b611cea614b7e565b60095f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f8201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905092915050565b611d8e613b4b565b60135f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e14576040517f16ce049b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611e1c613ac4565b6001601360146101000a81548160ff021916908315150217905550611e3f614515565b611e47614227565b565b5f806002811115611e5d57611e5c615a8c565b5b826002811115611e7057611e6f615a8c565b5b03611ea7576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60085f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836002811115611ee857611ee7615a8c565b5b60ff1660ff1681526020019081526020015f205f0154905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f601560149054906101000a900460ff16905090565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250611fc75f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383614231565b611fcf613ac4565b611fd7613b4b565b601360149054906101000a900460ff1661201d576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061208257505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b156120b9576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8460045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016121519190614c77565b602060405180830381865afa15801561216c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121909190615be9565b6040518363ffffffff1660e01b81526004016121ad929190615c14565b6020604051808303815f875af11580156121c9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906121ed9190615c3b565b612223576040517fa11efef400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61222b614227565b505050565b612238614578565b6122415f6145ff565b565b5f8061224f8484613b55565b5090508091505092915050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518060400160405280600681526020017f53595354454d00000000000000000000000000000000000000000000000000008152508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561238757506123855f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1633836146c2565b155b156123be576040517f16ce049b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6123c6613ac4565b6123ce613b0a565b8451875114612409576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b603287511115612445576040517f96cd25ef00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8084600281111561245a57612459615a8c565b5b90505f5b8951816bffffffffffffffffffffffff16101561288a575f8a826bffffffffffffffffffffffff168151811061249757612496615ab9565b5b602002602001015190505f89836bffffffffffffffffffffffff16815181106124c3576124c2615ab9565b5b602002602001015190506402540be3ff6bffffffffffffffffffffffff16826bffffffffffffffffffffffff161015612875575f600281111561250957612508615a8c565b5b88600281111561251c5761251b615a8c565b5b0361270c575f60075f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2090505f8a600281111561256557612564615a8c565b5b905082825f8360ff1660ff1681526020019081526020015f205f015f82825461258e9190615a32565b9250508190555042825f8360ff1660ff1681526020019081526020015f20600201819055505f8d11156126bd57670de0b6b3a76400008d10156125fd576040517f2fb42d7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f670de0b6b3a76400008e61261291906159cf565b90505f670de0b6b3a76400008f6126299190615c66565b111561267857846bffffffffffffffffffffffff167fa40c56a5fd1e8eb4ed66a8bcaa56b10328137b8e1d8b6dd2d2ac30cdf2d9dc658f8360405161266f929190615a65565b60405180910390a25b80600a5f876bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f8282546126b49190615a32565b92505081905550505b836bffffffffffffffffffffffff167ff051b25e39da97a65275eb304ec1b2f03cd7163e382fda5e4a79b61a8e9528fb8e856040516126fd929190615a65565b60405180910390a25050612866565b600160028111156127205761271f615a8c565b5b88600281111561273357612732615a8c565b5b1480612762575060028081111561274d5761274c615a8c565b5b8860028111156127605761275f615a8c565b5b145b15612833575f60085f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20905081815f8760ff1660ff1681526020019081526020015f205f015f8282546127be9190615a32565b9250508190555042815f8760ff1660ff1681526020019081526020015f20600201819055508460ff16836bffffffffffffffffffffffff167f5ac5177ff34f8f020430e7e23dbc1150f106326e8336d0b2179ce2ca8fa90910846040516128259190614d33565b60405180910390a350612865565b6040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b80856128729190615a32565b94505b5050808061288290615bb6565b91505061245e565b505f600281111561289e5761289d615a8c565b5b8560028111156128b1576128b0615a8c565b5b146128c2576128c182828761470e565b5b50506128cc614227565b50505050505050565b335f805f8260ff16146129095760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661292c565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612993576040517ff6bcc11800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61299b613ac4565b6129a3613b0a565b600160028111156129b7576129b6615a8c565b5b8460028111156129ca576129c9615a8c565b5b03612b32575f8587898b6129de9190615a32565b6129e89190615a32565b6129f29190615a32565b90506064811115612a2f576040517f16ce049b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6064898b612a3d9190615961565b612a4791906159cf565b600b5f828254612a579190615a32565b925050819055506064888b612a6c9190615961565b612a7691906159cf565b600c5f828254612a869190615a32565b925050819055506064878b612a9b9190615961565b612aa591906159cf565b600d5f828254612ab59190615a32565b925050819055506064868b612aca9190615961565b612ad491906159cf565b600e5f828254612ae49190615a32565b925050819055507fd29e2e2256eee4d115eca99db22baba672af7bca24082195a6f99896c864b773600b54600c54600d54600e54604051612b289493929190615c96565b60405180910390a1505b612b3a614227565b505050505050505050565b806bffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b8152600401612bc59190614d33565b602060405180830381865afa158015612be0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612c049190615762565b73ffffffffffffffffffffffffffffffffffffffff1614612c51576040517f16ce049b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b33612c5b81613ab8565b612c63613ac4565b612c6b613b0a565b612c73613b4b565b612c7e836002614241565b612c86614227565b505050565b336040518060400160405280600681526020017f53595354454d0000000000000000000000000000000000000000000000000000815250612cec5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff168383614231565b612cf4613ac4565b612cfc613b0a565b8686905089899050141580612d175750848490508989905014155b15612d4e576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612d56613b4b565b5f805b8a8a9050816bffffffffffffffffffffffff1610156131a4575f8b8b836bffffffffffffffffffffffff16818110612d9457612d93615ab9565b5b9050602002016020810190612da99190614d7f565b90505f8a8a846bffffffffffffffffffffffff16818110612dcd57612dcc615ab9565b5b9050602002810190612ddf9190615af2565b808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f8201169050808301925050505050505090505f8989856bffffffffffffffffffffffff16818110612e4257612e41615ab9565b5b9050602002810190612e549190615b54565b808060200260200160405190810160405280939291908181526020018383602002808284375f81840152601f19601f8201169050808301925050505050505090505f5b8251816bffffffffffffffffffffffff16101561318d575f83826bffffffffffffffffffffffff1681518110612ed057612ecf615ab9565b5b602002602001015190505f83836bffffffffffffffffffffffff1681518110612efc57612efb615ab9565b5b602002602001015190508088612f129190615a32565b97505f60095f886bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639e1f22e188856040518363ffffffff1660e01b8152600401612fa092919061578d565b5f6040518083038186803b158015612fb6575f80fd5b505afa158015612fc8573d5f803e3d5ffd5b5050505060105f886bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156130a9578160125f896bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f82825461309d9190615a32565b92505081905550613122565b81815f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f015f8282546130e69190615a32565b9250508190555042815f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20600201819055505b826bffffffffffffffffffffffff16876bffffffffffffffffffffffff167ffdd3b575047dba8e20225ea71ca0d0957cd0c3abb30a21800f57d6d5d9ed56088460405161316f9190614d33565b60405180910390a3505050808061318590615bb6565b915050612e97565b50505050808061319c90615bb6565b915050612d59565b50836131b8576131b73330836001613ec4565b5b506131c1614227565b505050505050505050565b600f5f9054906101000a90046bffffffffffffffffffffffff1681565b5f3360015f808260ff161461321f5760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613242565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146132a9576040517ff6bcc11800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6132b1613ac4565b6132b9613b0a565b5f6132c48787613b55565b5090505f8103613300576040517fa975d0b200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60095f896bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f20905081815f896bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f01541015613398576040517f18383eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81815f896bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f015f8282546133d591906159ff565b9250508190555042815f896bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2060030181905550819550505061341d614227565b50505092915050565b600c5481565b5f3360015f808260ff16146134625760015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16613485565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146134ec576040517ff6bcc11800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6134f4613ac4565b6134fc613b0a565b5f60105f876bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f876bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161590508060105f896bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f886bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550809450506135e0614227565b50505092915050565b5f6135f2611f2b565b905090565b600d5481565b600b5481565b600a602052805f5260405f205f915090505481565b5f60105f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b5f60125f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b816bffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1660035f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016137689190614d33565b602060405180830381865afa158015613783573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137a79190615762565b73ffffffffffffffffffffffffffffffffffffffff16146137f4576040517f16ce049b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6137fc613ac4565b613804613b0a565b61380c613b4b565b5f8260028111156138205761381f615a8c565b5b90505f60075f866bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2090505f806138ae835f8660ff1660ff1681526020019081526020015f206040518060a00160405290815f82015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250506147c4565b9150915081835f8660ff1660ff1681526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050506139083033835f613ec4565b8060145f8282546139199190615a32565b925050819055508360ff16876bffffffffffffffffffffffff167f89a82e076e649643c1cde69833b2f22d3385f598ffcfb4db3a6c766659304572836040516139629190614d33565b60405180910390a350505050613976614227565b505050565b613983614578565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036139f3575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016139ea9190614c77565b60405180910390fd5b6139fc816145ff565b50565b613a07614b7e565b60075f846bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f836002811115613a4857613a47615a8c565b5b60ff1660ff1681526020019081526020015f206040518060a00160405290815f8201548152602001600182015481526020016002820154815260200160038201548152602001600482015481525050905092915050565b60145481565b601360149054906101000a900460ff1681565b613ac181614807565b50565b600260165403613b00576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601681905550565b613b12611f2b565b15613b49576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b613b5361486f565b565b5f805f60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f8173ffffffffffffffffffffffffffffffffffffffff1663b14feb6287876040518363ffffffff1660e01b8152600401613bb892919061578d565b61012060405180830381865afa158015613bd4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613bf89190615908565b60e0015190505f60125f886bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f876bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205482613c639190615a32565b90505f81838573ffffffffffffffffffffffffffffffffffffffff1663b14feb628b8b6040518363ffffffff1660e01b8152600401613ca392919061578d565b61012060405180830381865afa158015613cbf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ce39190615908565b60600151613cf19190615a32565b613cfb9190615a32565b90505f600282613d0b9190615961565b90505f60095f8b6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f205f8a6bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f206040518060a00160405290815f820154815260200160018201548152602001600282015481526020016003820154815260200160048201548152505090505f8673ffffffffffffffffffffffffffffffffffffffff1663d3b30b756040518163ffffffff1660e01b815260040160a060405180830381865afa158015613dee573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613e129190615d62565b90505f42905082602001518411613e37575f6001995099505050505050505050613ebd565b5f826020015184606001511015613e52578260200151613e58565b83606001515b90505f613e6e846040015183875f015186614907565b90505f80613e8188886020015185614a11565b9150915081875f01511015613eaa57865f0151819d509d50505050505050505050505050613ebd565b81819d509d505050505050505050505050505b9250929050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480613f2957505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b15613f60576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8203613f99576040517fdd57a76e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b8152600401613ff49190614c77565b602060405180830381865afa15801561400f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906140339190615be9565b101561406b576040517f18383eeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8160ff160361414c5760045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016140d1929190615c14565b6020604051808303815f875af11580156140ed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141119190615c3b565b614147576040517fa11efef400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b614221565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd8585856040518463ffffffff1660e01b81526004016141aa93929190615d8d565b6020604051808303815f875af11580156141c6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906141ea9190615c3b565b614220576040517fa11efef400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6001601681905550565b61423c838383614a6c565b505050565b5f600281111561425457614253615a8c565b5b81600281111561426757614266615a8c565b5b0361429e576040517f9c58ee2100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8160028111156142b2576142b1615a8c565b5b90505f60085f856bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020019081526020015f2090505f80614340835f8660ff1660ff1681526020019081526020015f206040518060a00160405290815f82015481526020016001820154815260200160028201548152602001600382015481526020016004820154815250506147c4565b915091505f810361437d576040517fdd57a76e00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6001600281111561439257614391615a8c565b5b8660028111156143a5576143a4615a8c565b5b146143b257600c546143b6565b600b545b9050808211156143f2576040517f0c92ca1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82845f8760ff1660ff1681526020019081526020015f205f820151815f0155602082015181600101556040820151816002015560608201518160030155608082015181600401559050508160145f82825461444d9190615a32565b925050819055506144603033845f613ec4565b8460ff16876bffffffffffffffffffffffff167f6fecf8ce6dabd40d2ecb7b054268fce01bd7a319c37c0dd673410b7989bcd6ca846040516144a29190614d33565b60405180910390a350505050505050565b6144bb614ab2565b5f601560146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6144fe614af2565b60405161450b9190614c77565b60405180910390a1565b61451d613b0a565b6001601560146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258614561614af2565b60405161456e9190614c77565b60405180910390a1565b614580614af2565b73ffffffffffffffffffffffffffffffffffffffff1661459e6122a4565b73ffffffffffffffffffffffffffffffffffffffff16146145fd576145c1614af2565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016145f49190614c77565b60405180910390fd5b565b5f60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f7fa381e04ebab680939155d24deb84d393532b31de755eb4ffc2564a5d5c5adb8d336040516146f29190615e1c565b60405180910390a1614705848484614af9565b90509392505050565b5f6001600281111561472357614722615a8c565b5b82600281111561473657614735615a8c565b5b1461474357600c54614747565b600b545b905080841115614783576040517f0c92ca1100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260ff167f522bb991e510508243ba35979f10973ec1cf2e6ccb116f519429ed0df65ab3c9856040516147b69190614d33565b60405180910390a250505050565b6147cc614b7e565b5f825f015190505f835f01818152505080836020018181516147ee9190615a32565b9150818152505042836060018181525050829150915091565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461486c576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b5f80339050803b91505f8211156148b2576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8173ffffffffffffffffffffffffffffffffffffffff163b1115614903576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b5f84821061491757829050614a09565b838211614926575f9050614a09565b5f848361493391906159ff565b90505f600a8261494391906159cf565b90505f600a878961495491906159ff565b61495e91906159cf565b90505f8203614972575f9350505050614a09565b5f8183886149809190615961565b61498a91906159cf565b90505f6103e890505f821180156149a057508082105b156149d357605a836149b29190615961565b6064856149bf9190615961565b11156149d2578095505050505050614a09565b5b605f836149e09190615961565b6064856149ed9190615961565b1115614a00578795505050505050614a09565b81955050505050505b949350505050565b5f80838511614a26575f600191509150614a64565b5f8484614a339190615a32565b905080861015614a5a575f8587614a4a91906159ff565b9050806001935093505050614a64565b8381871492509250505b935093915050565b614a77838383614af9565b614aad576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b614aba611f2b565b614af0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f33905090565b5f8373ffffffffffffffffffffffffffffffffffffffff16637909185184846040518363ffffffff1660e01b8152600401614b35929190615eb2565b6020604051808303815f875af1158015614b51573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614b759190615c3b565b90509392505050565b6040518060a001604052805f81526020015f81526020015f81526020015f81526020015f81525090565b5f604051905090565b5f80fd5b5f80fd5b5f6bffffffffffffffffffffffff82169050919050565b614bd981614bb9565b8114614be3575f80fd5b50565b5f81359050614bf481614bd0565b92915050565b5f8060408385031215614c1057614c0f614bb1565b5b5f614c1d85828601614be6565b9250506020614c2e85828601614be6565b9150509250929050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f614c6182614c38565b9050919050565b614c7181614c57565b82525050565b5f602082019050614c8a5f830184614c68565b92915050565b614c9981614c57565b8114614ca3575f80fd5b50565b5f81359050614cb481614c90565b92915050565b60078110614cc6575f80fd5b50565b5f81359050614cd781614cba565b92915050565b5f8060408385031215614cf357614cf2614bb1565b5b5f614d0085828601614ca6565b9250506020614d1185828601614cc9565b9150509250929050565b5f819050919050565b614d2d81614d1b565b82525050565b5f602082019050614d465f830184614d24565b92915050565b5f8115159050919050565b614d6081614d4c565b82525050565b5f602082019050614d795f830184614d57565b92915050565b5f60208284031215614d9457614d93614bb1565b5b5f614da184828501614be6565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b614ddc81614d1b565b82525050565b5f614ded8383614dd3565b60208301905092915050565b5f602082019050919050565b5f614e0f82614daa565b614e198185614db4565b9350614e2483614dc4565b805f5b83811015614e54578151614e3b8882614de2565b9750614e4683614df9565b925050600181019050614e27565b5085935050505092915050565b5f6020820190508181035f830152614e798184614e05565b905092915050565b614e8a81614d1b565b8114614e94575f80fd5b50565b5f81359050614ea581614e81565b92915050565b5f805f8060808587031215614ec357614ec2614bb1565b5b5f614ed087828801614e97565b9450506020614ee187828801614e97565b9350506040614ef287828801614e97565b9250506060614f0387828801614e97565b91505092959194509250565b60028110614f1b575f80fd5b50565b5f81359050614f2c81614f0f565b92915050565b5f60208284031215614f4757614f46614bb1565b5b5f614f5484828501614f1e565b91505092915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f840112614f7e57614f7d614f5d565b5b8235905067ffffffffffffffff811115614f9b57614f9a614f61565b5b602083019150836020820283011115614fb757614fb6614f65565b5b9250929050565b5f8083601f840112614fd357614fd2614f5d565b5b8235905067ffffffffffffffff811115614ff057614fef614f61565b5b60208301915083602082028301111561500c5761500b614f65565b5b9250929050565b5f8083601f84011261502857615027614f5d565b5b8235905067ffffffffffffffff81111561504557615044614f61565b5b60208301915083602082028301111561506157615060614f65565b5b9250929050565b5f805f805f806060878903121561508257615081614bb1565b5b5f87013567ffffffffffffffff81111561509f5761509e614bb5565b5b6150ab89828a01614f69565b9650965050602087013567ffffffffffffffff8111156150ce576150cd614bb5565b5b6150da89828a01614fbe565b9450945050604087013567ffffffffffffffff8111156150fd576150fc614bb5565b5b61510989828a01615013565b92509250509295509295509295565b60a082015f82015161512c5f850182614dd3565b50602082015161513f6020850182614dd3565b5060408201516151526040850182614dd3565b5060608201516151656060850182614dd3565b5060808201516151786080850182614dd3565b50505050565b5f60a0820190506151915f830184615118565b92915050565b600381106151a3575f80fd5b50565b5f813590506151b481615197565b92915050565b5f80604083850312156151d0576151cf614bb1565b5b5f6151dd85828601614be6565b92505060206151ee858286016151a6565b9150509250929050565b5f6020828403121561520d5761520c614bb1565b5b5f61521a84828501614ca6565b91505092915050565b5f819050919050565b5f61524661524161523c84614c38565b615223565b614c38565b9050919050565b5f6152578261522c565b9050919050565b5f6152688261524d565b9050919050565b6152788161525e565b82525050565b5f6020820190506152915f83018461526f565b92915050565b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6152dd82615297565b810181811067ffffffffffffffff821117156152fc576152fb6152a7565b5b80604052505050565b5f61530e614ba8565b905061531a82826152d4565b919050565b5f67ffffffffffffffff821115615339576153386152a7565b5b602082029050602081019050919050565b5f61535c6153578461531f565b615305565b9050808382526020820190506020840283018581111561537f5761537e614f65565b5b835b818110156153a857806153948882614be6565b845260208401935050602081019050615381565b5050509392505050565b5f82601f8301126153c6576153c5614f5d565b5b81356153d684826020860161534a565b91505092915050565b5f67ffffffffffffffff8211156153f9576153f86152a7565b5b602082029050602081019050919050565b5f61541c615417846153df565b615305565b9050808382526020820190506020840283018581111561543f5761543e614f65565b5b835b8181101561546857806154548882614e97565b845260208401935050602081019050615441565b5050509392505050565b5f82601f83011261548657615485614f5d565b5b813561549684826020860161540a565b91505092915050565b600381106154ab575f80fd5b50565b5f813590506154bc8161549f565b92915050565b5f805f805f60a086880312156154db576154da614bb1565b5b5f86013567ffffffffffffffff8111156154f8576154f7614bb5565b5b615504888289016153b2565b955050602061551588828901614e97565b945050604086013567ffffffffffffffff81111561553657615535614bb5565b5b61554288828901615472565b9350506060615553888289016154ae565b9250506080615564888289016151a6565b9150509295509295909350565b5f805f805f8060c0878903121561558b5761558a614bb1565b5b5f61559889828a01614e97565b96505060206155a989828a01614e97565b95505060406155ba89828a01614e97565b94505060606155cb89828a01614e97565b93505060806155dc89828a01614e97565b92505060a06155ed89828a016154ae565b9150509295509295509295565b61560381614d4c565b811461560d575f80fd5b50565b5f8135905061561e816155fa565b92915050565b5f805f805f805f6080888a03121561563f5761563e614bb1565b5b5f88013567ffffffffffffffff81111561565c5761565b614bb5565b5b6156688a828b01614f69565b9750975050602088013567ffffffffffffffff81111561568b5761568a614bb5565b5b6156978a828b01614fbe565b9550955050604088013567ffffffffffffffff8111156156ba576156b9614bb5565b5b6156c68a828b01615013565b935093505060606156d98a828b01615610565b91505092959891949750929550565b6156f181614bb9565b82525050565b5f60208201905061570a5f8301846156e8565b92915050565b5f806040838503121561572657615725614bb1565b5b5f61573385828601614be6565b9250506020615744858286016154ae565b9150509250929050565b5f8151905061575c81614c90565b92915050565b5f6020828403121561577757615776614bb1565b5b5f6157848482850161574e565b91505092915050565b5f6040820190506157a05f8301856156e8565b6157ad60208301846156e8565b9392505050565b5f80fd5b5f815190506157c681614bd0565b92915050565b5f61ffff82169050919050565b6157e2816157cc565b81146157ec575f80fd5b50565b5f815190506157fd816157d9565b92915050565b5f8151905061581181614e81565b92915050565b5f81519050615825816155fa565b92915050565b5f6101208284031215615841576158406157b4565b5b61584c610120615305565b90505f61585b848285016157b8565b5f83015250602061586e848285016157ef565b6020830152506040615882848285016157b8565b604083015250606061589684828501615803565b60608301525060806158aa84828501615803565b60808301525060a06158be84828501615803565b60a08301525060c06158d284828501615817565b60c08301525060e06158e684828501615803565b60e0830152506101006158fb84828501615803565b6101008301525092915050565b5f610120828403121561591e5761591d614bb1565b5b5f61592b8482850161582b565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61596b82614d1b565b915061597683614d1b565b925082820261598481614d1b565b9150828204841483151761599b5761599a615934565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6159d982614d1b565b91506159e483614d1b565b9250826159f4576159f36159a2565b5b828204905092915050565b5f615a0982614d1b565b9150615a1483614d1b565b9250828203905081811115615a2c57615a2b615934565b5b92915050565b5f615a3c82614d1b565b9150615a4783614d1b565b9250828201905080821115615a5f57615a5e615934565b5b92915050565b5f604082019050615a785f830185614d24565b615a856020830184614d24565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f80fd5b5f80fd5b5f80fd5b5f8083356001602003843603038112615b0e57615b0d615ae6565b5b80840192508235915067ffffffffffffffff821115615b3057615b2f615aea565b5b602083019250602082023603831315615b4c57615b4b615aee565b5b509250929050565b5f8083356001602003843603038112615b7057615b6f615ae6565b5b80840192508235915067ffffffffffffffff821115615b9257615b91615aea565b5b602083019250602082023603831315615bae57615bad615aee565b5b509250929050565b5f615bc082614bb9565b91506bffffffffffffffffffffffff8203615bde57615bdd615934565b5b600182019050919050565b5f60208284031215615bfe57615bfd614bb1565b5b5f615c0b84828501615803565b91505092915050565b5f604082019050615c275f830185614c68565b615c346020830184614d24565b9392505050565b5f60208284031215615c5057615c4f614bb1565b5b5f615c5d84828501615817565b91505092915050565b5f615c7082614d1b565b9150615c7b83614d1b565b925082615c8b57615c8a6159a2565b5b828206905092915050565b5f608082019050615ca95f830187614d24565b615cb66020830186614d24565b615cc36040830185614d24565b615cd06060830184614d24565b95945050505050565b5f60a08284031215615cee57615ced6157b4565b5b615cf860a0615305565b90505f615d07848285016157b8565b5f830152506020615d1a84828501615803565b6020830152506040615d2e84828501615803565b6040830152506060615d4284828501615803565b6060830152506080615d5684828501615817565b60808301525092915050565b5f60a08284031215615d7757615d76614bb1565b5b5f615d8484828501615cd9565b91505092915050565b5f606082019050615da05f830186614c68565b615dad6020830185614c68565b615dba6040830184614d24565b949350505050565b5f82825260208201905092915050565b7f76616c6964617465526f6c6557697468436f6f6c646f776e00000000000000005f82015250565b5f615e06601883615dc2565b9150615e1182615dd2565b602082019050919050565b5f6040820190508181035f830152615e3381615dfa565b9050615e426020830184614c68565b92915050565b5f81519050919050565b5f5b83811015615e6f578082015181840152602081019050615e54565b5f8484015250505050565b5f615e8482615e48565b615e8e8185615dc2565b9350615e9e818560208601615e52565b615ea781615297565b840191505092915050565b5f604082019050615ec55f830185614c68565b8181036020830152615ed78184615e7a565b9050939250505056fea26469706673582212208020aa6b435e582cec79730fa7072703dcb0ca98df7914e9e87bd2370923a63164736f6c63430008180033000000000000000000000000f79641d66bf22e777f9cf74bdaf535cb253949090000000000000000000000008ac76a51cc950d9822d68b83fe1ad97b32cd580d000000000000000000000000a784aa9d9ca760a1d7973c3ad902c1d0052581dd0000000000000000000000000ac38e7334b0f14053963f4ebe2db463351c96ad000000000000000000000000000000000000000000000000000000000000001e0000000000000000000000001bd41c988fd8807a73e79cfb465df488e73d6c0d0000000000000000000000002ee70f0585d83f523ae876f86b8df2c6c8677a99