0 txs
1 call
constructor
constructor(address _rolesManager, address _storageAdministrator, address _initialOwner, address _pauser)
functions
addressRefToLink
viewfunction addressRefToLink(address) view returns (string)
getIPFSLink
viewfunction getIPFSLink(uint96 _nftId) view returns (string)
getMyDirectSponsorAddress
viewfunction getMyDirectSponsorAddress(address _address) view returns (address)
getMyNFTIds
viewfunction getMyNFTIds(address _address) view returns (uint96[])
getMySponsorNFTId
viewfunction getMySponsorNFTId(uint96 _nftId) view returns (uint96)
getMySponsorRefLinkFromMyAddress
viewfunction getMySponsorRefLinkFromMyAddress(address _address) view returns (string)
getNFTAccountById
viewfunction getNFTAccountById(uint96 _id) view returns (tuple)
getNFTidFromARefLink
viewfunction getNFTidFromARefLink(string _link) view returns (uint96)
getSponsorAddressByReferralLink
viewfunction getSponsorAddressByReferralLink(string _link) view returns (address)
getSponsorDataByAddress
viewfunction getSponsorDataByAddress(address _address) view returns (address[])
getUsersRegisteredBulk
viewfunction getUsersRegisteredBulk(uint96 _fromIndex, uint96 _limit) view returns (address[] users)
isAnSponsor
viewfunction isAnSponsor(address) view returns (bool)
isImageIdSelected
viewfunction isImageIdSelected(uint96) view returns (bool)
isPaused
viewfunction isPaused() view returns (bool)
LAST_IMG_USED
viewfunction LAST_IMG_USED() view returns (uint96)
nftIPFSLink
viewfunction nftIPFSLink(uint96) view returns (string)
nftReferrentToAnIndex
viewfunction nftReferrentToAnIndex(uint96) view returns (uint96)
nftRegistered
viewfunction nftRegistered(uint96) view returns (bool)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
ROLES_MANAGER
viewfunction ROLES_MANAGER() view returns (address)
sponsorDirectReferral
viewfunction sponsorDirectReferral(uint96) view returns (address)
sponsorDirectReferralCount
viewfunction sponsorDirectReferralCount(address) view returns (uint96)
sponsorNftIDFromANFT
viewfunction sponsorNftIDFromANFT(uint96) view returns (uint96)
STORAGE_ADMINISTRATOR
viewfunction STORAGE_ADMINISTRATOR() view returns (address)
totalUsersRegistered
viewfunction totalUsersRegistered() view returns (uint96)
userHasNFT
viewfunction userHasNFT(address, uint96) view returns (bool)
userNFTAccount
viewfunction userNFTAccount(uint96) view returns (string name, uint96 nftImgId, uint96 NFT_COLLECTION_ID, uint96 tokenId, address ownerAddress, string referralsLink, uint96 planId, uint256 createdAt, uint256 membershipPlanBoughtDate)
userNFTIds
viewfunction userNFTIds(address, uint256) view returns (uint96)
emergencyPause
nonpayablefunction emergencyPause()
emergencyUnpause
nonpayablefunction emergencyUnpause()
renounceOwnership
nonpayablefunction renounceOwnership()
saveNFTAccount
nonpayablefunction saveNFTAccount(tuple _data, address _sponsorAddress, uint96 _sponsorNFTId, string _referralLink, uint8 _side, string _ipfsLink)
setContractsAddress
nonpayablefunction setContractsAddress(address _address, uint8 _contract)
transferNFT
nonpayablefunction transferNFT(address _oldOwner, address _newOwner, uint96 _tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
events
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
Unpaused
event Unpaused(address account)
errors
AccessDenied
error AccessDenied()
EnforcedPause
error EnforcedPause()
ExpectedPause
error ExpectedPause()
N1
error N1()
N2
error N2()
N3
error N3()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
ReentrancyGuardReentrantCall
error ReentrancyGuardReentrantCall()
V1
error V1()
V3
error V3()
V4
error V4()
creation bytecode
0x60806040523480156200001157600080fd5b5060405162004f3038038062004f308339818101604052810190620000379190620002c4565b816001601781905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620000b55760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401620000ac919062000347565b60405180910390fd5b620000c6816200019460201b60201c565b5083601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050505062000364565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200028c826200025f565b9050919050565b6200029e816200027f565b8114620002aa57600080fd5b50565b600081519050620002be8162000293565b92915050565b60008060008060808587031215620002e157620002e06200025a565b5b6000620002f187828801620002ad565b94505060206200030487828801620002ad565b93505060406200031787828801620002ad565b92505060606200032a87828801620002ad565b91505092959194509250565b62000341816200027f565b82525050565b60006020820190506200035e600083018462000336565b92915050565b614bbc80620003746000396000f3fe608060405234801561001057600080fd5b506004361061021c5760003560e01c806371b0859b11610125578063b187bd26116100ad578063e14a39101161007c578063e14a3910146106d9578063e550a51e146106f5578063efb8d49d14610725578063f2fde38b14610755578063ff51ea6a146107715761021c565b8063b187bd261461062b578063c0a5a8cd14610649578063cb47066414610679578063d5463067146106a95761021c565b80638a6be067116100f45780638a6be0671461054d5780638bf7e6c71461057d5780638da5cb5b146105ad578063927ae7c5146105cb578063a457fd0d146105fb5761021c565b806371b0859b146104b357806376a6bf2c146104e3578063858ce6bb146104ff5780638690e43b1461052f5761021c565b806351858e27116101a85780635e3355aa116101775780635e3355aa146103e95780635e3cafb91461041957806367eb8560146104495780636bf59f5c14610479578063715018a6146104a95761021c565b806351858e271461037357806359c606131461037d5780635ae461d21461039b5780635c975abb146103cb5761021c565b8063243717e0116101ef578063243717e0146102a95780632ab1c188146102d957806343441837146103095780634a4e3bd5146103395780634fffd0b9146103435761021c565b8063085a512f146102215780630a2dd68d146102515780630d82cfa11461026f5780630eea54d61461028d575b600080fd5b61023b6004803603810190610236919061380e565b6107a9565b60405161024891906138f9565b60405180910390f35b610259610815565b604051610266919061392a565b60405180910390f35b61027761083b565b604051610284919061396c565b60405180910390f35b6102a760048036038101906102a291906139b3565b610857565b005b6102c360048036038101906102be9190613a06565b610c7b565b6040516102d09190613c9e565b60405180910390f35b6102f360048036038101906102ee9190613a06565b611073565b604051610300919061396c565b60405180910390f35b610323600480360381019061031e9190613a06565b611085565b6040516103309190613cdb565b60405180910390f35b6103416110a5565b005b61035d6004803603810190610358919061380e565b61114e565b60405161036a9190613d65565b60405180910390f35b61037b611221565b005b6103856112ca565b604051610392919061396c565b60405180910390f35b6103b560048036038101906103b09190613db3565b6112e8565b6040516103c2919061396c565b60405180910390f35b6103d3611339565b6040516103e09190613cdb565b60405180910390f35b61040360048036038101906103fe9190613df3565b611350565b6040516104109190613cdb565b60405180910390f35b610433600480360381019061042e919061380e565b61137f565b604051610440919061396c565b60405180910390f35b610463600480360381019061045e919061380e565b6113aa565b604051610470919061392a565b60405180910390f35b610493600480360381019061048e9190613a06565b611413565b6040516104a0919061392a565b60405180910390f35b6104b1611446565b005b6104cd60048036038101906104c89190613a06565b61145a565b6040516104da919061396c565b60405180910390f35b6104fd60048036038101906104f89190613e58565b611485565b005b61051960048036038101906105149190613a06565b61156c565b6040516105269190613ee2565b60405180910390f35b61053761160c565b604051610544919061392a565b60405180910390f35b6105676004803603810190610562919061380e565b611632565b6040516105749190613ee2565b60405180910390f35b61059760048036038101906105929190613f69565b611703565b6040516105a4919061396c565b60405180910390f35b6105b5611786565b6040516105c2919061392a565b60405180910390f35b6105e560048036038101906105e09190613a06565b6117b0565b6040516105f29190613ee2565b60405180910390f35b61061560048036038101906106109190613a06565b611871565b604051610622919061396c565b60405180910390f35b61063361189c565b6040516106409190613cdb565b60405180910390f35b610663600480360381019061065e919061380e565b6118ab565b6040516106709190613ee2565b60405180910390f35b610693600480360381019061068e9190613a06565b61194b565b6040516106a09190613cdb565b60405180910390f35b6106c360048036038101906106be9190613f69565b61196b565b6040516106d0919061392a565b60405180910390f35b6106f360048036038101906106ee9190614368565b611a3f565b005b61070f600480360381019061070a919061380e565b6126a4565b60405161071c9190613cdb565b60405180910390f35b61073f600480360381019061073a919061444f565b6126c4565b60405161074c91906138f9565b60405180910390f35b61076f600480360381019061076a919061380e565b6126f4565b005b61078b60048036038101906107869190613a06565b61277a565b6040516107a09998979695949392919061449e565b60405180910390f35b606061080e600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166129586129b1565b9050919050565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008054906101000a90046bffffffffffffffffffffffff1681565b61085f612ab5565b61088a601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612af6565b600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1661093a576040517fc71326c800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160036000836bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020600201600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550610b03600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015610af857602002820191906000526020600020906000905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411610aab5790505b505050505082612b5e565b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209080519060200190610b5592919061360f565b506001600a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050600190039060005260206000209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505050565b610c836136d7565b60036000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060405180610160016040529081600082018054610cce90614568565b80601f0160208091040260200160405190810160405280929190818152602001828054610cfa90614568565b8015610d475780601f10610d1c57610100808354040283529160200191610d47565b820191906000526020600020905b815481529060010190602001808311610d2a57829003601f168201915b505050505081526020016001820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160018201600c9054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff1681526020016002820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200160028201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600382018054610e7090614568565b80601f0160208091040260200160405190810160405280929190818152602001828054610e9c90614568565b8015610ee95780601f10610ebe57610100808354040283529160200191610ee9565b820191906000526020600020905b815481529060010190602001808311610ecc57829003601f168201915b5050505050815260200160048201805480602002602001604051908101604052809291908181526020018280548015610f7d57602002820191906000526020600020906000905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411610f305790505b505050505081526020016005820180548060200260200160405190810160405280929190818152602001828054801561101157602002820191906000526020600020906000905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411610fc45790505b505050505081526020016006820160009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001600782015481526020016008820154815250509050919050565b600061107e82612cc6565b9050919050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6110ad612d8a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611134576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61113c612d94565b611144612dda565b61114c612e3d565b565b6060600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080548060200260200160405190810160405280929190818152602001828054801561121557602002820191906000526020600020906000905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b010492830192600103820291508084116111c85790505b50505050509050919050565b611229612d8a565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112b0576040517f3ee569bf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6112b8612d94565b6112c0612e47565b6112c8612e3d565b565b601060009054906101000a90046bffffffffffffffffffffffff1681565b6002602052816000526040600020818154811061130457600080fd5b9060005260206000209060029182820401919006600c02915091509054906101000a90046bffffffffffffffffffffffff1681565b6000601860149054906101000a900460ff16905090565b600a6020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60076020528060005260406000206000915054906101000a90046bffffffffffffffffffffffff1681565b6000600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60096020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61144e612eaa565b6114586000612f31565b565b60136020528060005260406000206000915054906101000a90046bffffffffffffffffffffffff1681565b6114e7601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16336040518060400160405280600a81526020017f535550455241444d494e00000000000000000000000000000000000000000000815250612ff7565b6114ef612d94565b6114f7612d8a565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361155d576040517f2fb42d7000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818155611568612e3d565b5050565b6004602052806000526040600020600091509050805461158b90614568565b80601f01602080910402602001604051908101604052809291908181526020018280546115b790614568565b80156116045780601f106115d957610100808354040283529160200191611604565b820191906000526020600020905b8154815290600101906020018083116115e757829003601f168201915b505050505081565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805461167e90614568565b80601f01602080910402602001604051908101604052809291908181526020018280546116aa90614568565b80156116f75780601f106116cc576101008083540402835291602001916116f7565b820191906000526020600020905b8154815290600101906020018083116116da57829003601f168201915b50505050509050919050565b6000600f83836040516117179291906145c9565b908152602001604051809103902060009054906101000a900460ff16611744576402540be3ff9050611780565b600583836040516117569291906145c9565b908152602001604051809103902060009054906101000a90046bffffffffffffffffffffffff1690505b92915050565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060046000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002080546117ec90614568565b80601f016020809104026020016040519081016040528092919081815260200182805461181890614568565b80156118655780601f1061183a57610100808354040283529160200191611865565b820191906000526020600020905b81548152906001019060200180831161184857829003601f168201915b50505050509050919050565b60116020528060005260406000206000915054906101000a90046bffffffffffffffffffffffff1681565b60006118a6611339565b905090565b600660205280600052604060002060009150905080546118ca90614568565b80601f01602080910402602001604051908101604052809291908181526020018280546118f690614568565b80156119435780601f1061191857610100808354040283529160200191611943565b820191906000526020600020905b81548152906001019060200180831161192657829003601f168201915b505050505081565b600e6020528060005260406000206000915054906101000a900460ff1681565b600080600f84846040516119809291906145c9565b908152602001604051809103902060009054906101000a900460ff169050806119aa576000611a36565b60036000600586866040516119c09291906145c9565b908152602001604051809103902060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020600201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b91505092915050565b611a47612ab5565b611a72601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16612af6565b600e600088602001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615611aea576040517fbc7ce92300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1614611eaa57600b60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611bc8576001600b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b600c6000886080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16611d7d57866080015160096000600760008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081819054906101000a90046bffffffffffffffffffffffff1680929190611d4d90614611565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505b600060036000876bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002090506000611e63896060015160008660ff1614611dce5783600501611dd3565b836004015b805480602002602001604051908101604052809291908181526020018280548015611e5957602002820191906000526020600020906000905b82829054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190600c0190602082600b01049283019260010382029150808411611e0c5790505b5050505050613007565b905060008460ff1614611e8d5780826005019080519060200190611e8892919061360f565b611ea6565b80826004019080519060200190611ea592919061360f565b5b5050505b600c6000886080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611f395750600073ffffffffffffffffffffffffffffffffffffffff16876080015173ffffffffffffffffffffffffffffffffffffffff1614155b15612026578660800151600160008060009054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c6000896080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b846011600089606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060008081819054906101000a90046bffffffffffffffffffffffff16809291906120b190614611565b91906101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550506001600d600089602001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508560086000896080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550866060015160058860a001516040516121c79190614676565b908152602001604051809103902060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506001600f8860a001516040516122199190614676565b908152602001604051809103902060006101000a81548160ff0219169083151502179055508383600660008a6080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209182612290929190614844565b506001600e600089602001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600a6000896080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600089606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060026000886080015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002087606001519080600181540180825580915050600190039060005260206000209060029182820401919006600c029091909190916101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055508660200151601060006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550866003600089606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff168152602001908152602001600020600082015181600001908161248b9190614914565b5060208201518160010160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550604082015181600101600c6101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff16021790555060608201518160020160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550608082015181600201600c6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a082015181600301908161258d9190614914565b5060c08201518160040190805190602001906125aa92919061360f565b5060e08201518160050190805190602001906125c792919061360f565b506101008201518160060160006101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055506101208201518160070155610140820151816008015590505060008151111561266957806004600089606001516bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002090816126639190614914565b5061269b565b6040517f16ce049b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050505050565b600b6020528060005260406000206000915054906101000a900460ff1681565b60606126ec838360008054906101000a90046bffffffffffffffffffffffff1661314e6131a7565b905092915050565b6126fc612eaa565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361276e5760006040517f1e4fbdf7000000000000000000000000000000000000000000000000000000008152600401612765919061392a565b60405180910390fd5b61277781612f31565b50565b600360205280600052604060002060009150905080600001805461279d90614568565b80601f01602080910402602001604051908101604052809291908181526020018280546127c990614568565b80156128165780601f106127eb57610100808354040283529160200191612816565b820191906000526020600020905b8154815290600101906020018083116127f957829003601f168201915b5050505050908060010160009054906101000a90046bffffffffffffffffffffffff169080600101600c9054906101000a90046bffffffffffffffffffffffff16908060020160009054906101000a90046bffffffffffffffffffffffff169080600201600c9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060030180546128ab90614568565b80601f01602080910402602001604051908101604052809291908181526020018280546128d790614568565b80156129245780601f106128f957610100808354040283529160200191612924565b820191906000526020600020905b81548152906001019060200180831161290757829003601f168201915b5050505050908060060160009054906101000a90046bffffffffffffffffffffffff16908060070154908060080154905089565b600060096000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60606000836bffffffffffffffffffffffff1667ffffffffffffffff8111156129dd576129dc613fbb565b5b604051908082528060200260200182016040528015612a0b5781602001602082028036833780820191505090505b50905060005b846bffffffffffffffffffffffff16816bffffffffffffffffffffffff161015612aaa57612a42818563ffffffff16565b82826bffffffffffffffffffffffff1681518110612a6357612a626149e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508080600101915050612a11565b508091505092915050565b612abd611339565b15612af4576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b8073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612b5b576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b6060600060018451612b709190614a15565b67ffffffffffffffff811115612b8957612b88613fbb565b5b604051908082528060200260200182016040528015612bb75781602001602082028036833780820191505090505b509050600080600090505b8551816bffffffffffffffffffffffff161015612cba57846bffffffffffffffffffffffff1686826bffffffffffffffffffffffff1681518110612c0957612c086149e6565b5b60200260200101516bffffffffffffffffffffffff1614612ca75785816bffffffffffffffffffffffff1681518110612c4557612c446149e6565b5b602002602001015183836bffffffffffffffffffffffff1681518110612c6e57612c6d6149e6565b5b60200260200101906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff16815250508180612ca390614611565b9250505b8080612cb290614611565b915050612bc2565b50819250505092915050565b6000600d6000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16612d3b576040517fcb76ae1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60116000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90046bffffffffffffffffffffffff169050919050565b612d926133be565b565b600260175403612dd0576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002601781905550565b612de2613459565b6000601860146101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612e26613499565b604051612e33919061392a565b60405180910390a1565b6001601781905550565b612e4f612ab5565b6001601860146101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258612e93613499565b604051612ea0919061392a565b60405180910390a1565b612eb2613499565b73ffffffffffffffffffffffffffffffffffffffff16612ed0611786565b73ffffffffffffffffffffffffffffffffffffffff1614612f2f57612ef3613499565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401612f26919061392a565b60405180910390fd5b565b6000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6130028383836134a1565b505050565b60606000600183516130199190614a49565b67ffffffffffffffff81111561303257613031613fbb565b5b6040519080825280602002602001820160405280156130605781602001602082028036833780820191505090505b50905060005b8351816bffffffffffffffffffffffff1610156131045783816bffffffffffffffffffffffff168151811061309e5761309d6149e6565b5b602002602001015182826bffffffffffffffffffffffff16815181106130c7576130c66149e6565b5b60200260200101906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff168152505080806130fc90614611565b915050613066565b50838184518151811061311a576131196149e6565b5b60200260200101906bffffffffffffffffffffffff1690816bffffffffffffffffffffffff16815250508091505092915050565b600060016000836bffffffffffffffffffffffff166bffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6060826bffffffffffffffffffffffff16856bffffffffffffffffffffffff161061321d57600067ffffffffffffffff8111156131e7576131e6613fbb565b5b6040519080825280602002602001820160405280156132155781602001602082028036833780820191505090505b5090506133b6565b6000848661322b9190614a7d565b9050836bffffffffffffffffffffffff16816bffffffffffffffffffffffff161115613255578390505b60006132628783866134e7565b905086816132709190614abd565b6bffffffffffffffffffffffff1667ffffffffffffffff81111561329757613296613fbb565b5b6040519080825280602002602001820160405280156132c55781602001602082028036833780820191505090505b5092506000808890505b836bffffffffffffffffffffffff16816bffffffffffffffffffffffff1610156133b1576000613302828863ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146133a3578086846bffffffffffffffffffffffff168151811061335a576133596149e6565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050828061339f90614611565b9350505b5080806001019150506132cf565b505050505b949350505050565b600080339050803b91506000821115613403576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff163b1115613455576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b613461611339565b613497576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b600033905090565b6134ac838383613586565b6134e2576040517f4ca8886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b505050565b6000806000905060008590505b846bffffffffffffffffffffffff16816bffffffffffffffffffffffff16101561357a576000613527828663ffffffff16565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461356c57828061356890614611565b9350505b5080806001019150506134f4565b50809150509392505050565b60008373ffffffffffffffffffffffffffffffffffffffff16637909185184846040518363ffffffff1660e01b81526004016135c3929190614afd565b6020604051808303816000875af11580156135e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906136069190614b59565b90509392505050565b828054828255906000526020600020906001016002900481019282156136c65791602002820160005b8382111561368c57835183826101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff1602179055509260200192600c01602081600b01049283019260010302613638565b80156136c45782816101000a8154906bffffffffffffffffffffffff0219169055600c01602081600b0104928301926001030261368c565b505b5090506136d3919061377f565b5090565b6040518061016001604052806060815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff16815260200160006bffffffffffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff16815260200160608152602001606081526020016060815260200160006bffffffffffffffffffffffff16815260200160008152602001600081525090565b5b80821115613798576000816000905550600101613780565b5090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006137db826137b0565b9050919050565b6137eb816137d0565b81146137f657600080fd5b50565b600081359050613808816137e2565b92915050565b600060208284031215613824576138236137a6565b5b6000613832848285016137f9565b91505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613870816137d0565b82525050565b60006138828383613867565b60208301905092915050565b6000602082019050919050565b60006138a68261383b565b6138b08185613846565b93506138bb83613857565b8060005b838110156138ec5781516138d38882613876565b97506138de8361388e565b9250506001810190506138bf565b5085935050505092915050565b60006020820190508181036000830152613913818461389b565b905092915050565b613924816137d0565b82525050565b600060208201905061393f600083018461391b565b92915050565b60006bffffffffffffffffffffffff82169050919050565b61396681613945565b82525050565b6000602082019050613981600083018461395d565b92915050565b61399081613945565b811461399b57600080fd5b50565b6000813590506139ad81613987565b92915050565b6000806000606084860312156139cc576139cb6137a6565b5b60006139da868287016137f9565b93505060206139eb868287016137f9565b92505060406139fc8682870161399e565b9150509250925092565b600060208284031215613a1c57613a1b6137a6565b5b6000613a2a8482850161399e565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015613a6d578082015181840152602081019050613a52565b60008484015250505050565b6000601f19601f8301169050919050565b6000613a9582613a33565b613a9f8185613a3e565b9350613aaf818560208601613a4f565b613ab881613a79565b840191505092915050565b613acc81613945565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b6000613b0a8383613ac3565b60208301905092915050565b6000602082019050919050565b6000613b2e82613ad2565b613b388185613add565b9350613b4383613aee565b8060005b83811015613b74578151613b5b8882613afe565b9750613b6683613b16565b925050600181019050613b47565b5085935050505092915050565b6000819050919050565b613b9481613b81565b82525050565b6000610160830160008301518482036000860152613bb88282613a8a565b9150506020830151613bcd6020860182613ac3565b506040830151613be06040860182613ac3565b506060830151613bf36060860182613ac3565b506080830151613c066080860182613867565b5060a083015184820360a0860152613c1e8282613a8a565b91505060c083015184820360c0860152613c388282613b23565b91505060e083015184820360e0860152613c528282613b23565b915050610100830151613c69610100860182613ac3565b50610120830151613c7e610120860182613b8b565b50610140830151613c93610140860182613b8b565b508091505092915050565b60006020820190508181036000830152613cb88184613b9a565b905092915050565b60008115159050919050565b613cd581613cc0565b82525050565b6000602082019050613cf06000830184613ccc565b92915050565b600082825260208201905092915050565b6000613d1282613ad2565b613d1c8185613cf6565b9350613d2783613aee565b8060005b83811015613d58578151613d3f8882613afe565b9750613d4a83613b16565b925050600181019050613d2b565b5085935050505092915050565b60006020820190508181036000830152613d7f8184613d07565b905092915050565b613d9081613b81565b8114613d9b57600080fd5b50565b600081359050613dad81613d87565b92915050565b60008060408385031215613dca57613dc96137a6565b5b6000613dd8858286016137f9565b9250506020613de985828601613d9e565b9150509250929050565b60008060408385031215613e0a57613e096137a6565b5b6000613e18858286016137f9565b9250506020613e298582860161399e565b9150509250929050565b60028110613e4057600080fd5b50565b600081359050613e5281613e33565b92915050565b60008060408385031215613e6f57613e6e6137a6565b5b6000613e7d858286016137f9565b9250506020613e8e85828601613e43565b9150509250929050565b600082825260208201905092915050565b6000613eb482613a33565b613ebe8185613e98565b9350613ece818560208601613a4f565b613ed781613a79565b840191505092915050565b60006020820190508181036000830152613efc8184613ea9565b905092915050565b600080fd5b600080fd5b600080fd5b60008083601f840112613f2957613f28613f04565b5b8235905067ffffffffffffffff811115613f4657613f45613f09565b5b602083019150836001820283011115613f6257613f61613f0e565b5b9250929050565b60008060208385031215613f8057613f7f6137a6565b5b600083013567ffffffffffffffff811115613f9e57613f9d6137ab565b5b613faa85828601613f13565b92509250509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b613ff382613a79565b810181811067ffffffffffffffff8211171561401257614011613fbb565b5b80604052505050565b600061402561379c565b90506140318282613fea565b919050565b600080fd5b600080fd5b600067ffffffffffffffff82111561405b5761405a613fbb565b5b61406482613a79565b9050602081019050919050565b82818337600083830152505050565b600061409361408e84614040565b61401b565b9050828152602081018484840111156140af576140ae61403b565b5b6140ba848285614071565b509392505050565b600082601f8301126140d7576140d6613f04565b5b81356140e7848260208601614080565b91505092915050565b600067ffffffffffffffff82111561410b5761410a613fbb565b5b602082029050602081019050919050565b600061412f61412a846140f0565b61401b565b9050808382526020820190506020840283018581111561415257614151613f0e565b5b835b8181101561417b5780614167888261399e565b845260208401935050602081019050614154565b5050509392505050565b600082601f83011261419a57614199613f04565b5b81356141aa84826020860161411c565b91505092915050565b600061016082840312156141ca576141c9613fb6565b5b6141d561016061401b565b9050600082013567ffffffffffffffff8111156141f5576141f4614036565b5b614201848285016140c2565b60008301525060206142158482850161399e565b60208301525060406142298482850161399e565b604083015250606061423d8482850161399e565b6060830152506080614251848285016137f9565b60808301525060a082013567ffffffffffffffff81111561427557614274614036565b5b614281848285016140c2565b60a08301525060c082013567ffffffffffffffff8111156142a5576142a4614036565b5b6142b184828501614185565b60c08301525060e082013567ffffffffffffffff8111156142d5576142d4614036565b5b6142e184828501614185565b60e0830152506101006142f68482850161399e565b6101008301525061012061430c84828501613d9e565b6101208301525061014061432284828501613d9e565b6101408301525092915050565b600060ff82169050919050565b6143458161432f565b811461435057600080fd5b50565b6000813590506143628161433c565b92915050565b600080600080600080600060c0888a031215614387576143866137a6565b5b600088013567ffffffffffffffff8111156143a5576143a46137ab565b5b6143b18a828b016141b3565b97505060206143c28a828b016137f9565b96505060406143d38a828b0161399e565b955050606088013567ffffffffffffffff8111156143f4576143f36137ab565b5b6144008a828b01613f13565b945094505060806144138a828b01614353565b92505060a088013567ffffffffffffffff811115614434576144336137ab565b5b6144408a828b016140c2565b91505092959891949750929550565b60008060408385031215614466576144656137a6565b5b60006144748582860161399e565b92505060206144858582860161399e565b9150509250929050565b61449881613b81565b82525050565b60006101208201905081810360008301526144b9818c613ea9565b90506144c8602083018b61395d565b6144d5604083018a61395d565b6144e2606083018961395d565b6144ef608083018861391b565b81810360a08301526145018187613ea9565b905061451060c083018661395d565b61451d60e083018561448f565b61452b61010083018461448f565b9a9950505050505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061458057607f821691505b60208210810361459357614592614539565b5b50919050565b600081905092915050565b60006145b08385614599565b93506145bd838584614071565b82840190509392505050565b60006145d68284866145a4565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061461c82613945565b91506bffffffffffffffffffffffff820361463a576146396145e2565b5b600182019050919050565b600061465082613a33565b61465a8185614599565b935061466a818560208601613a4f565b80840191505092915050565b60006146828284614645565b915081905092915050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026146fa7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826146bd565b61470486836146bd565b95508019841693508086168417925050509392505050565b6000819050919050565b600061474161473c61473784613b81565b61471c565b613b81565b9050919050565b6000819050919050565b61475b83614726565b61476f61476782614748565b8484546146ca565b825550505050565b600090565b614784614777565b61478f818484614752565b505050565b5b818110156147b3576147a860008261477c565b600181019050614795565b5050565b601f8211156147f8576147c981614698565b6147d2846146ad565b810160208510156147e1578190505b6147f56147ed856146ad565b830182614794565b50505b505050565b600082821c905092915050565b600061481b600019846008026147fd565b1980831691505092915050565b6000614834838361480a565b9150826002028217905092915050565b61484e838361468d565b67ffffffffffffffff81111561486757614866613fbb565b5b6148718254614568565b61487c8282856147b7565b6000601f8311600181146148ab5760008415614899578287013590505b6148a38582614828565b86555061490b565b601f1984166148b986614698565b60005b828110156148e1578489013582556001820191506020850194506020810190506148bc565b868310156148fe57848901356148fa601f89168261480a565b8355505b6001600288020188555050505b50505050505050565b61491d82613a33565b67ffffffffffffffff81111561493657614935613fbb565b5b6149408254614568565b61494b8282856147b7565b600060209050601f83116001811461497e576000841561496c578287015190505b6149768582614828565b8655506149de565b601f19841661498c86614698565b60005b828110156149b45784890151825560018201915060208501945060208101905061498f565b868310156149d157848901516149cd601f89168261480a565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000614a2082613b81565b9150614a2b83613b81565b9250828203905081811115614a4357614a426145e2565b5b92915050565b6000614a5482613b81565b9150614a5f83613b81565b9250828201905080821115614a7757614a766145e2565b5b92915050565b6000614a8882613945565b9150614a9383613945565b925082820190506bffffffffffffffffffffffff811115614ab757614ab66145e2565b5b92915050565b6000614ac882613945565b9150614ad383613945565b925082820390506bffffffffffffffffffffffff811115614af757614af66145e2565b5b92915050565b6000604082019050614b12600083018561391b565b8181036020830152614b248184613ea9565b90509392505050565b614b3681613cc0565b8114614b4157600080fd5b50565b600081519050614b5381614b2d565b92915050565b600060208284031215614b6f57614b6e6137a6565b5b6000614b7d84828501614b44565b9150509291505056fea2646970667358221220c81139c1c9b9c0033d705f3f87f91054b332f82c4630200c94198105b61c82b764736f6c63430008180033000000000000000000000000ed39ca015de48eaff48c091d70728bce7893eafd000000000000000000000000247769adaed73ea4907ca86c8bc5f1a983aa13700000000000000000000000001bd41c988fd8807a73e79cfb465df488e73d6c0d0000000000000000000000002ee70f0585d83f523ae876f86b8df2c6c8677a99