0 txs
1.4k calls
constructor
No constructor.
functions
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
changeGenderCost
viewfunction changeGenderCost() view returns (uint72)
changeSpecialMessageCost
viewfunction changeSpecialMessageCost() view returns (uint72)
config
viewfunction config() view returns (address)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getCitizenMigrated
viewfunction getCitizenMigrated(uint256 citizenId) view returns (bool)
getCreationTimeOfTokenId
viewfunction getCreationTimeOfTokenId(uint256 citizenId) view returns (uint256)
getGenderOfTokenId
viewfunction getGenderOfTokenId(uint256 citizenId) view returns (bool)
getHumanRaceOverride
viewfunction getHumanRaceOverride(uint256 citizenId) view returns (uint256)
getIdentityIdOfTokenId
viewfunction getIdentityIdOfTokenId(uint256 citizenId) view returns (uint256)
getItemCacheIdOfTokenId
viewfunction getItemCacheIdOfTokenId(uint256 citizenId) view returns (uint256)
getLandDeedIdOfTokenId
viewfunction getLandDeedIdOfTokenId(uint256 citizenId) view returns (uint256)
getRewardRate
viewfunction getRewardRate(address _user) view returns (uint256)
getRewardRateOfTokenId
viewfunction getRewardRateOfTokenId(uint256 citizenId) view returns (uint256)
getRewardsRateForTokenId
viewfunction getRewardsRateForTokenId(uint256 tokenId) view returns (uint256)
getSpecialMessageOfTokenId
viewfunction getSpecialMessageOfTokenId(uint256 citizenId) view returns (string)
getTransferValidationFunction
viewfunction getTransferValidationFunction() view returns (bytes4 functionSignature, bool isViewFunction)
getTransferValidator
viewfunction getTransferValidator() view returns (address validator)
getVaultIdOfTokenId
viewfunction getVaultIdOfTokenId(uint256 citizenId) view returns (uint256)
humanRaceOverrideCost
viewfunction humanRaceOverrideCost() view returns (uint72)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
name
viewfunction name() view returns (string)
onERC721Received
purefunction onERC721Received(address operator, address from, uint256 tokenId, bytes data) pure returns (bytes4)
operatorFilterRegistry
viewfunction operatorFilterRegistry() view returns (address)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
royaltyInfo
viewfunction royaltyInfo(uint256 tokenId, uint256 salePrice) view returns (address, uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenByIndex
viewfunction tokenByIndex(uint256 index) view returns (uint256)
tokenOfOwnerByIndex
viewfunction tokenOfOwnerByIndex(address owner, uint256 index) view returns (uint256)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
adjustDefaultRoyalty
nonpayablefunction adjustDefaultRoyalty(address _receiver, uint96 _newRoyalty)
adjustSingleTokenRoyalty
nonpayablefunction adjustSingleTokenRoyalty(uint256 _tokenId, address _receiver, uint96 _newRoyalty)
approve
nonpayablefunction approve(address operator, uint256 tokenId)
changeGender
nonpayablefunction changeGender(uint256 tokenId)
changeHumanRace
nonpayablefunction changeHumanRace(uint256 tokenId, uint256 raceOverride)
changeSpecialMessage
nonpayablefunction changeSpecialMessage(uint256 tokenId, string _message)
createCitizen
nonpayablefunction createCitizen(uint256 identityId, uint256 vaultId, uint256 itemCacheId, uint256 landDeedId, bool genderFemale, string specialMessage)
disassembleCitizen
nonpayablefunction disassembleCitizen(uint256 citizenId)
initialize
nonpayablefunction initialize(uint16 currentId_, address config_, address registry, address subscriptionOrRegistrantToCopy)
migrateAsset
nonpayablefunction migrateAsset(address sender, uint256 citizenId)
renounceOwnership
nonpayablefunction renounceOwnership()
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setChangeGenderCost
nonpayablefunction setChangeGenderCost(uint72 _cost)
setChangeMessageCost
nonpayablefunction setChangeMessageCost(uint72 _cost)
setCitizenMintActive
nonpayablefunction setCitizenMintActive()
setConfig
nonpayablefunction setConfig(address config_)
setCurrentId
nonpayablefunction setCurrentId(uint16 currentId_)
setFemaleActive
nonpayablefunction setFemaleActive()
setHumanRaceOverrideCost
nonpayablefunction setHumanRaceOverrideCost(uint72 _cost)
setRaceOverrideActive
nonpayablefunction setRaceOverrideActive()
setTransferValidationFunction
nonpayablefunction setTransferValidationFunction(bytes4 functionSignature)
setTransferValidator
nonpayablefunction setTransferValidator(address validator)
toggleVaultRequired
nonpayablefunction toggleVaultRequired()
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateOperatorFilterRegistryAddress
nonpayablefunction updateOperatorFilterRegistryAddress(address newRegistry)
upgradeTo
nonpayablefunction upgradeTo(address newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminChanged
event AdminChanged(address previousAdmin, address newAdmin)
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BeaconUpgraded
event BeaconUpgraded(address indexed beacon)
Initialized
event Initialized(uint8 version)
OperatorFilterRegistryAddressUpdated
event OperatorFilterRegistryAddressUpdated(address newRegistry)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
TransferValidatorUpdated
event TransferValidatorUpdated(address oldValidator, address newValidator)
Upgraded
event Upgraded(address indexed implementation)
errors
OnlyOwner
error OnlyOwner()
OperatorNotAllowed
error OperatorNotAllowed(address operator)
Unauthorized
error Unauthorized(string reason)
creation bytecode
0x60a080604052346100325730608052615a0b908162000037823960805181818161272a015281816128a60152612f220152f35b5f80fdfe6080806040526004361015610012575f80fd5b5f90813560e01c9081622d2fda146136f35750806301ffc9a71461366c57806302d198f61461363a57806306fdde03146135ad578063081812fc1461358e578063095ea7b31461340f578063098144d4146133e55780630b633c84146133c65780630d68ad5d146133945780630d705df6146133625780630e274d8e14613308578063150b7a02146132b15780631682c3c91461328357806318160ddd1461326457806320e3dbd41461323a578063224b2fe7146131e557806323b872dd146131a15780632a55205a146130e45780632f745c59146130bc5780633659cfe614612efd5780633a6d55e214612ecb5780633ceea4f414612c7d5780633d52022f14612c4a57806342842e0e14612bef578063438ecb3514612bd05780634f0ac26714612af95780634f1ef286146128685780634f6ccce7146127d557806352d1902d14612717578063552cbf33146126e957806355ed458e146126b55780635d5be4fa146126965780635d6a5653146125d95780636352211e146125a8578063652296f11461253957806366ad07521461251a578063695349b8146119205780636d58cb30146118ed5780636ec43ea71461189357806370a082311461186f578063715018a6146118115780637948f749146117d357806379502c55146117a95780638da5cb5b1461177f57806395d89b41146116bb578063a22cb465146115e5578063a960fe5b146115b7578063a9fc664e14611528578063aa54f9b814611509578063b0ccc31e146114dc578063b18953ca146114ab578063b88d4fde14611413578063b8d1e53214611385578063be0e62061461129f578063c87b56dd14611198578063d9e001a914611179578063dddec1ba14611147578063e3df429614611128578063e859965a1461063a578063e985e9c5146105e7578063ea7cbff114610568578063eb4807dc146103ce578063ee312264146103705763f2fde38b146102dd575f80fd5b3461036d57602036600319011261036d576102f6613caa565b6102fe613ec3565b6001600160a01b038116156103195761031690613f1c565b80f35b60405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608490fd5b80fd5b503461036d57602036600319011261036d576004356001600160481b03811681036103ca5761039d613ec3565b6101c780546301000000600160601b03191660189290921b6301000000600160601b031691909117905580f35b5080fd5b503461036d57604036600319011261036d576001600160401b0390600435602435838111610564573660238201121561056457610415903690602481600401359101613e6f565b9061041e614e43565b61043a61042a82614172565b6001600160a01b03163314615301565b6101c7546104539060601c6001600160481b03166153a3565b808352602091610162835260408420908051958611610550576104808661047a8454614194565b84614c8c565b8390601f87116001146104eb5795806104a692879861016198926104e0575b5050614cc6565b90555b83525260408120805460b81c90600282166104c9575b8260016101955580f35b600460ff6104d993161790614e26565b5f806104bf565b015190505f8061049f565b8286528486209190601f198816875b8181106105395750916001939189610161999a9410610521575b505050811b0190556104a9565b01515f1960f88460031b161c191690555f8080610514565b9293876001819287860151815501950193016104fa565b634e487b7160e01b85526041600452602485fd5b8280fd5b503461036d576020908160031936011261036d57610584613caa565b918190815b610592856140b6565b8310156105df576105b9906105a78487614213565b85526101608352604085205490614bce565b915f1981146105cb5760010191610589565b634e487b7160e01b84526011600452602484fd5b604051908152f35b503461036d57604036600319011261036d57610601613caa565b604061060b613c94565b9260018060a01b0380931681526101006020522091165f52602052602060ff60405f2054166040519015158152f35b503461036d5760c036600319011261036d57608435151560843503610bc95760a4356001600160401b0381116103ca57610678903690600401613d06565b610683929192614e43565b6101c75460028116156110f05761015f54604051635683d7d160e11b81525f6004820152600160248201526001600160a01b039091169190602081604481865afa908115610f1d5760249160209187916110d3575b506040516331a9108f60e11b8152600480359082015292839182906001600160a01b03165afa908115610f1d5785916110b4575b50336001600160a01b039091160361107f57604051635683d7d160e11b81526020818061073b6004820161442c565b0381865afa908115610f1d576024916020918791611062575b506040516331a9108f60e11b8152604435600482015292839182906001600160a01b03165afa908115610f1d578591611043575b50336001600160a01b039091160361100c57604051635683d7d160e11b8152602081806107b76004820161443d565b0381865afa908115610f1d576024916020918791610fef575b506040516331a9108f60e11b8152606435600482015292839182906001600160a01b03165afa908115610f1d578591610fd0575b50336001600160a01b0390911603610f995760018116151580610f8f575b610f5857608435610f45575b602435151580928193610e7e575b50610e465761ffff808260081c16146105cb5761ffff8160018261087c9460081c16019062ffff008260081b169062ffff001916176101c7551633614e9a565b61015f54604051635683d7d160e11b81525f60048201526001602482015290602090829060449082906001600160a01b03165afa908115610e18578491610e27575b506001600160a01b0381163b15610e23578360405180926323b872dd60e01b82528183816108f3600435303360048501614de7565b03926001600160a01b03165af18015610e1857908491610e04575b5050610d43575b61015f54604051635683d7d160e11b81529060209082906001600160a01b031681806109436004820161442c565b03915afa908115610bd5578391610d24575b506001600160a01b0316803b15610564578260405180926323b872dd60e01b825281838161098a604435303360048501614de7565b03925af18015610bd557908391610d10575b505061015f54604051635683d7d160e11b81529060209082906001600160a01b031681806109cc6004820161443d565b03915afa908115610bd5578391610ce1575b506001600160a01b0381163b15610564578260405180926323b872dd60e01b8252818381610a13606435303360048501614de7565b03926001600160a01b03165af18015610bd557908391610ccd575b5090608435610cc4575b80610be0575b50819250602060018060a01b0361015f541660446040518095819363938e75e160e01b8352600435600484015260243560248401525af18015610bd5578390610b9d575b610b94925061ffff6101c75460081c168452610160602052604084205560ff60405191610aae83613dc7565b6001600160401b034216835263ffffffff60043516602084015263ffffffff60443516604084015263ffffffff60643516606084015261ffff6024351660808401528460a08401521660c082015261ffff6101c75460081c16835261016160205260ff60c060408520926001600160401b0381511684549063ffffffff60401b602084015160401b1663ffffffff60601b604085015160601b169063ffffffff60801b606086015160801b169261ffff60a01b608087015160a01b169460018060b01b03191617171717178455610b8b8360a08301511685614e09565b01511690614e26565b60016101955580f35b506020823d602011610bcd575b81610bb760209383613e33565b81010312610bc957610b949151610a82565b5f80fd5b3d9150610baa565b6040513d85823e3d90fd5b61ffff6101c75460081c16835261016260205260408320906001600160401b038111610cb057610c148161047a8454614194565b83601f8211600114610c49579080610c359286978792610c3e575050614cc6565b90555b5f610a3e565b013590505f8061049f565b8285526020852090855b601f1984168110610c9857509085968392600194601f19811610610c7f575b505050811b019055610c38565b01355f19600384901b60f8161c191690555f8080610c72565b9091602060018192858b013581550193019101610c53565b634e487b7160e01b84526041600452602484fd5b60019150610a38565b610cd690613d99565b6103ca57815f610a2e565b610d03915060203d602011610d09575b610cfb8183613e33565b8101906143fc565b5f6109de565b503d610cf1565b610d1990613d99565b6103ca57815f61099c565b610d3d915060203d602011610d0957610cfb8183613e33565b5f610955565b61015f54604051635683d7d160e11b81529060209082906001600160a01b03168180610d716004820161441b565b03915afa908115610bd5578391610de5575b506001600160a01b0316803b15610564578260405180926323b872dd60e01b8252818381610db8602435303360048501614de7565b03925af18015610bd557908391610dd1575b5050610915565b610dda90613d99565b6103ca57815f610dca565b610dfe915060203d602011610d0957610cfb8183613e33565b5f610d83565b610e0d90613d99565b61056457825f61090e565b6040513d86823e3d90fd5b8380fd5b610e40915060203d602011610d0957610cfb8183613e33565b5f6108be565b60405163973d02cb60e01b815260206004820152600f60248201526e2737ba103b30bab63a1037bbb732b960891b6044820152606490fd5b604051635683d7d160e11b8152915060209082908180610ea06004820161441b565b03915afa908115610f1d576024916020918791610f28575b506040516331a9108f60e11b81528335600482015292839182906001600160a01b03165afa908115610f1d578591610efe575b506001600160a01b03163314155f61083c565b610f17915060203d602011610d0957610cfb8183613e33565b5f610eeb565b6040513d87823e3d90fd5b610f3f9150823d8411610d0957610cfb8183613e33565b5f610eb8565b610f53600882161515614d9b565b61082e565b60405163973d02cb60e01b815260206004820152600e60248201526d15985d5b1d081c995c5d5a5c995960921b6044820152606490fd5b5060243515610822565b60405163973d02cb60e01b815260206004820152600e60248201526d2737ba103630b7321037bbb732b960911b6044820152606490fd5b610fe9915060203d602011610d0957610cfb8183613e33565b5f610804565b6110069150823d8411610d0957610cfb8183613e33565b5f6107d0565b60405163973d02cb60e01b815260206004820152600e60248201526d2737ba1034ba32b69037bbb732b960911b6044820152606490fd5b61105c915060203d602011610d0957610cfb8183613e33565b5f610788565b6110799150823d8411610d0957610cfb8183613e33565b5f610754565b60405163973d02cb60e01b815260206004820152600c60248201526b2737ba1024a21037bbb732b960a11b6044820152606490fd5b6110cd915060203d602011610d0957610cfb8183613e33565b5f61070c565b6110ea9150823d8411610d0957610cfb8183613e33565b5f6106d8565b60405163973d02cb60e01b815260206004820152600f60248201526e4d696e74206e6f742061637469766560881b6044820152606490fd5b503461036d57602036600319011261036d5760206105df600435614558565b503461036d578060031936011261036d57611160613ec3565b6101c7805460ff600881831618169060ff191617905580f35b503461036d57602036600319011261036d5760206105df60043561444e565b503461036d57602036600319011261036d576004356111b6816141f7565b156112425761015f5460405163db790e0960e01b815260048101929092528290829060249082906001600160a01b03165afa90811561123757826112109392611214575b5050604051918291602083526020830190613ce1565b0390f35b61123092503d8091833e6112288183613e33565b810190614893565b5f806111fa565b6040513d84823e3d90fd5b60405162461bcd60e51b815260206004820152602f60248201527f4552433732314d657461646174613a2055524920717565727920666f72206e6f60448201526e3732bc34b9ba32b73a103a37b5b2b760891b6064820152608490fd5b503461036d576112ae36613d68565b6112b6614e43565b6101c7546010811615611332576112e4906112d361042a85614172565b60a81c6001600160481b03166153a3565b60068111156113145750815261016160205260408120805460ff60b01b1916600360b11b17905560016101955580f35b60ff9061132d9284526101616020521660408320614e09565b610b94565b60405162461bcd60e51b815260206004820152602560248201527f48756d616e2072616365206f76657272696465206973206e6f7420616374697660448201526419481e595d60da1b6064820152608490fd5b503461036d57602036600319011261036d5761139f613caa565b610163546001600160a01b039081163303611401577f9f513fe86dc42fdbac355fa4d9b1d5be7b5e6cd2df67e30db8003766568de476916020916113e1614396565b80546001600160a01b03191691909216908117909155604051908152a180f35b604051635fc483c560e01b8152600490fd5b503461036d57608036600319011261036d5761142d613caa565b611435613c94565b90606435906044356001600160401b0383116114a75761031693611460611494943690600401613ea5565b92336001600160a01b03821603611499575b61148461147f84336155b0565b61554e565b61148f838383615674565b615289565b61512e565b6114a2336154aa565b611472565b8480fd5b503461036d57602036600319011261036d5760ff604060209260043581526101618452205460b01c16604051908152f35b503461036d578060031936011261036d5760206001600160a01b036114ff614396565b5416604051908152f35b503461036d57602036600319011261036d5760206105df600435614b08565b503461036d57602036600319011261036d577fcc5dc080ff977b3c3a211fa63ab74f90f658f5ba9d3236e92c8f59570f442aac611563613caa565b61156b613ec3565b6101c88054600160201b600160c01b03198116602084811b600160201b600160c01b0316919091179092556040519283926115b192901c6001600160a01b031683614cd8565b0390a180f35b503461036d578060031936011261036d576101c75460405160a89190911c6001600160481b03168152602090f35b503461036d57604036600319011261036d576115ff613caa565b60243590811515809203610bc957611616816154aa565b6001600160a01b03169033821461167a5733835261010060205260408320825f5260205260405f2060ff1981541660ff83161790556040519081527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160203392a380f35b60405162461bcd60e51b815260206004820152601960248201527822a9219b99189d1030b8383937bb32903a379031b0b63632b960391b6044820152606490fd5b503461036d578060031936011261036d5760405190808260fc54916116df83614194565b928383526020946001918683821691825f1461175d575050600114611721575b505061170d92500383613e33565b611210604051928284938452830190613ce1565b9085925060fc82528282205b85831061174557505061170d93508201015f806116ff565b8054838901850152879450869390920191810161172d565b925093505061170d94915060ff191682840152151560051b8201015f806116ff565b503461036d578060031936011261036d57610163546040516001600160a01b039091168152602090f35b503461036d578060031936011261036d5761015f546040516001600160a01b039091168152602090f35b503461036d57602036600319011261036d576117ed613c83565b6117f5613ec3565b6101c79062ffff0082549160081b169062ffff00191617905580f35b503461036d578060031936011261036d5761182a613ec3565b61016380546001600160a01b031981169091555f906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b503461036d57602036600319011261036d5760206105df61188e613caa565b6140b6565b503461036d57602036600319011261036d576004356001600160481b03811681036103ca576118c0613ec3565b6101c78054600160a81b600160f01b03191660a89290921b600160a81b600160f01b031691909117905580f35b503461036d57602036600319011261036d576001604060209260043581526101618452205460b81c161515604051908152f35b503461036d576020806003193601126103ca576004359061193f614e43565b611948826141f7565b156124dd5761195682614172565b6001600160a01b03929061196d9084163314615301565b80845261016182526040842054849060b881901c90600282161561218157505061015f8481541690604051635683d7d160e11b808252600560048301526024915f838201528781604481885afa8015612159578989916044938991612164575b501695604051928380928682525f60048301526001888301525afa8015612159578991879161213c575b506040516371efa14b60e11b81526004810189905294911688858581895afa948515611fb957879561210a575b50803b1561210657866040518092818381611a4f630561f99760e51b9b8c835233906004840161538a565b03925af1908115611fb95787916120f2575b505060405163438ecb3560e01b81526004810188905288818581895afa908115611fb95787916120c1575b5080612022575b50888154168860405180928582528180611aaf6004820161442c565b03915afa8015611fb9578a918891612005575b5060405163335683a960e11b8152600481018a90529116898286818a5afa918215611ffa578892611fc8575b50803b15611fc457611b1588929183926040519485809481938c835233906004840161538a565b03925af1918215611fb957878b928b94611f99575b5050546040519384528391168180611b446004820161443d565b03915afa908115610f1d57879189918791611f7c575b501693604051928380926302d8cf2160e21b82528960048301525afa908115610e18578491611f4b575b50823b15610e2357611ba992849283604051809681958294835233906004840161538a565b03925af1801561123757611f37575b50505b611bc481614172565b83811693908415908115611ea9575061012f8054845f5261013086528060405f2055600160401b811015611e9557611c0681611c1e936001889401905561429e565b90919082549060031b91821b915f19901b1916179055565b61012f918254915f1992838101908111611e8157855f52610130808852611c4960405f20549261429e565b90549060031b1c611c5d81611c068561429e565b5f52875260405f2055845f525f60408120558354938415611e6d578389950190611c868261429e565b8682549160031b1b19169055556101c8548281881c169182151580918192611e64575b50611d83575b505050610160955090839291611cc484614172565b84845260ff8752604080852080546001600160a01b03199081169091559290911680855260fe8852818520805490940190935584845260fd87528320805490911690555f805160206159b68339815191528280a461016282528360408120611d2c8154614194565b80611d45575b505052525f604082205560016101955580f35b601f8111600114611d5e57505f9150555b835f80611d32565b90805f918452611d7c601f878620940160051c840160018501614c76565b5555611d56565b611d8e575b80611caf565b5f9395969784939550604051908982019263ffffffff60e01b908b1b168352336024830152604482015283606482015287608482015260848152611dd181613e18565b51915afa611ddd6142ca565b81611e34575b5015611df55783929185915f80611d88565b60405162461bcd60e51b8152600481018590526017602482015276151c985b9cd9995c881b9bdd08185d5d1a1bdc9a5e9959604a1b6044820152606490fd5b80518015925086908315611e4c575b5050505f611de3565b611e5c935082018101910161534b565b5f8581611e43565b9050155f611ca9565b634e487b7160e01b5f52603160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b634e487b7160e01b5f52604160045260245ffd5b611eb2906140b6565b5f198101908111611e8157835f5261012e80865260405f205490828203611efb575b5050835f525f6040812055855f5261012d855260405f20905f5284525f6040812055611c1e565b875f5261012d80885260405f20845f52885260405f205490895f52885260405f20835f5288528060405f20555f52865260405f20555f80611ed4565b611f4090613d99565b610e2357835f611bb8565b809450868092503d8311611f75575b611f648183613e33565b81010312610bc9578692515f611b84565b503d611f5a565b611f939150833d8511610d0957610cfb8183613e33565b5f611b5a565b909250611fa7919350613d99565b611fb557888891875f611b2a565b8580fd5b6040513d89823e3d90fd5b8780fd5b975090508887813d8111611ff3575b611fe18183613e33565b81010312610bc9578a9651905f611aee565b503d611fd7565b6040513d8a823e3d90fd5b61201c91508a3d8c11610d0957610cfb8183613e33565b5f611ac2565b89825416896040518092868252818061203d6004820161441b565b03915afa8015611ffa578b9189916120a4575b5016803b15611fc45761207888929183926040519485809481938c835233906004840161538a565b03925af1908115611fb9578791612090575b50611a93565b61209990613d99565b611fb557855f61208a565b6120bb91508b3d8d11610d0957610cfb8183613e33565b5f612050565b809750898092503d83116120eb575b6120da8183613e33565b81010312610bc9578995515f611a8c565b503d6120d0565b6120fb90613d99565b611fb557855f611a61565b8680fd5b965093508786813d8111612135575b6121238183613e33565b81010312610bc957899551935f611a24565b503d612119565b6121539150893d8b11610d0957610cfb8183613e33565b5f6119f7565b6040513d88823e3d90fd5b61217b9150833d8511610d0957610cfb8183613e33565b5f6119cd565b60446040519261219084613dc7565b6001600160401b038316845260ff8785019163ffffffff8560401c16835263ffffffff8560601c16604087015263ffffffff8560801c1660608701528161ffff95868160a01c16608089015260b01c1660a08701521660c0850152868861015f541660405193848092635683d7d160e11b82525f6004830152600160248301525afa918215610f1d5785926124b8575b505163ffffffff16908781163b156114a75761225885918993836040519586809581946323b872dd60e01b8352333060048501615363565b0393165af1908115610e185784916124a4575b5050806080830151166123ed575b508461015f5416846040518092635683d7d160e11b8252818061229e6004820161442c565b03915afa8015610bd557869184916123d0575b501663ffffffff60408301511690803b15610e23576040516323b872dd60e01b815291849183918290849082906122ed90333060048501615363565b03925af1908115610bd55783916123bc575b50508461015f5416846040518092635683d7d160e11b825281806123256004820161443d565b03915afa8015610bd5578660609163ffffffff93869161239f575b50169201511690803b15610564576040516323b872dd60e01b8152918391839182908490829061237590333060048501615363565b03925af180156112375761238b575b5050611bbb565b61239490613d99565b610e2357835f612384565b6123b69150883d8a11610d0957610cfb8183613e33565b5f612340565b6123c590613d99565b6103ca57815f6122ff565b6123e79150863d8811610d0957610cfb8183613e33565b5f6122b1565b8561015f5416856040518092635683d7d160e11b825281806124116004820161441b565b03915afa8015610e185787918591612487575b501690608083015116813b15610e235783916064839260405194859384926323b872dd60e01b845230600485015233602485015260448401525af1908115610bd5578391612473575b50612279565b61247c90613d99565b6103ca57815f61246d565b61249e9150873d8911610d0957610cfb8183613e33565b5f612424565b6124ad90613d99565b61056457825f61226b565b63ffffffff9192506124d690883d8a11610d0957610cfb8183613e33565b9190612220565b6064906040519062461bcd60e51b82526004820152601660248201527510da5d1a5e995b88191bd95cc81b9bdd08195e1a5cdd60521b6044820152fd5b503461036d57602036600319011261036d5760206105df6004356146fd565b503461036d57602036600319011261036d57600435612556614e43565b6125886101c75461256b600882161515614d9b565b61257761042a84614172565b60181c6001600160481b03166153a3565b8152610161602052610b9460408220600160ff825460b81c161890614e26565b503461036d57602036600319011261036d5760206125c7600435614172565b6040516001600160a01b039091168152f35b503461036d57604036600319011261036d576125f3613caa565b6024356001600160601b03811691828203610bc957612610613ec3565b61261e61271084111561544b565b6001600160a01b031691821561265557602060405161263c81613dac565b848152015260a01b6001600160a01b0319161760c95580f35b60405162461bcd60e51b815260206004820152601960248201527822a921991c9c189d1034b73b30b634b2103932b1b2b4bb32b960391b6044820152606490fd5b503461036d57602036600319011261036d5760206105df600435614bdb565b503461036d57602036600319011261036d576112106126d56004356148f1565b604051918291602083526020830190613ce1565b503461036d578060031936011261036d576101c75460405160189190911c6001600160481b03168152602090f35b503461036d578060031936011261036d577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316300361276f5760206040515f805160206159968339815191528152f35b60405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c6044820152771b1959081d1a1c9bdd59da0819195b1959d85d1958d85b1b60421b6064820152608490fd5b503461036d57602036600319011261036d5760043561012f5481101561280e5761280060209161429e565b90546040519160031b1c8152f35b60405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b6064820152608490fd5b50604036600319011261036d5761287d613caa565b6024356001600160401b0381116105645761289c903690600401613ea5565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000081169291906128d630851415613f65565b6128f25f80516020615996833981519152948286541614613fc6565b6128fa613ec3565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff16156129305750506103169150614027565b82919216604051936352d1902d60e01b85526020948581600481865afa5f9181612aca575b506129b65760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b94939403612a73576129c782614027565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a2825115801590612a6b575b612a01575b50505080f35b5f80612a629460405194612a1486613dfd565b602786527f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c81870152660819985a5b195960ca1b604087015281519101845af4612a5c6142ca565b916142f9565b505f80806129fb565b5060016129f6565b60405162461bcd60e51b815260048101849052602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f786044820152681a58589b195555525160ba1b6064820152608490fd5b90918782813d8311612af2575b612ae18183613e33565b8101031261036d575051905f612955565b503d612ad7565b503461036d57606036600319011261036d57612b13613c94565b6044356001600160601b03811690819003610bc957612b30613ec3565b612b3e61271082111561544b565b6001600160a01b03918216918215612b8d5760405192612b5d84613dac565b83526020808401928352600435855260ca9052604084209251915160a01b6001600160a01b031916911617905580f35b60405162461bcd60e51b815260206004820152601b60248201527a455243323938313a20496e76616c696420706172616d657465727360281b6044820152606490fd5b503461036d57602036600319011261036d5760206105df600435614634565b503461036d57610316611494612c0436613d33565b6001600160a01b0383163314159290919083612c3c575b60405193612c2885613de2565b8785526114995761148461147f84336155b0565b612c45336154aa565b612c1b565b503461036d57602036600319011261036d576002604060209260043581526101618452205460b81c161515604051908152f35b503461036d57604036600319011261036d57612c97613caa565b602435612ca2614e43565b61015f54604051637cd07e4760e01b81526001600160a01b0391602091908316908281600481855afa8015611fb95784918891612eae575b50163303612e6b578160449160405192838092635683d7d160e11b8252600560048301525f60248301525afa80156121595783918791612e4e575b506040516331a9108f60e11b8152600481018690529116928282602481875afa908115611fb957612d53928892612e2f575b50808716911614615301565b813b156114a7576040516323b872dd60e01b81528590818180612d7b88308b60048501614de7565b038183885af1801561123757612e1b575b505080602492604051938480926306d58cb360e41b82528760048301525afa938415610f1d57610b949484610161948892612dea575b50612dcd9192614e9a565b15612de2576003925b85525260408320614e26565b600292612dd6565b612dcd9250612e0e90853d8711612e14575b612e068183613e33565b81019061534b565b91612dc2565b503d612dfc565b612e2490613d99565b6114a757845f612d8c565b612e47919250843d8611610d0957610cfb8183613e33565b905f612d47565b612e659150833d8511610d0957610cfb8183613e33565b5f612d15565b60405162461bcd60e51b815260048101839052601b60248201527a36b9b39739b2b73232b91036bab9ba1031329036b4b3b930ba37b960291b6044820152606490fd5b612ec59150843d8611610d0957610cfb8183613e33565b5f612cda565b503461036d578060031936011261036d57612ee4613ec3565b6101c7805460ff601081831618169060ff191617905580f35b503461036d576020806003193601126103ca57612f18613caa565b6001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116612f4f30821415613f65565b612f6b5f80516020615996833981519152918383541614613fc6565b612f73613ec3565b60405191612f8083613de2565b8583527f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff1615612fba575050506103169150614027565b83929316906040516352d1902d60e01b81528581600481865afa5f918161308d575b5061303d5760405162461bcd60e51b815260048101879052602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201526d6f6e206973206e6f74205555505360901b6064820152608490fd5b94939403612a735761304e82614027565b7fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b5f80a282511580159061308657612a015750505080f35b505f6129f6565b90918782813d83116130b5575b6130a48183613e33565b8101031261036d575051905f612fdc565b503d61309a565b503461036d57604036600319011261036d5760206105df6130db613caa565b60243590614213565b503461036d576130f336613d68565b90825260ca60205260408220916040519261310d84613dac565b546001600160a01b0380821680865260a09290921c60208601529391901561317d575b60208201516001600160601b03168381029380159085049091141715613169575061271092611210915116604051938493049083613d7e565b634e487b7160e01b81526011600452602490fd5b905060405161318b81613dac565b60c954848116825260a01c602082015290613130565b503461036d576103166131b336613d33565b91336001600160a01b038216036131d7575b6131d261147f84336155b0565b615674565b6131e0336154aa565b6131c5565b503461036d57602036600319011261036d576004356001600160e01b0319811681036103ca57613213613ec3565b6101c8805463ffffffff60c01b191660209290921c63ffffffff60c01b1691909117905580f35b503461036d57602036600319011261036d57610316613257613caa565b61325f613ec3565b614cf2565b503461036d578060031936011261036d57602061012f54604051908152f35b503461036d578060031936011261036d576101c75460405160609190911c6001600160481b03168152602090f35b503461036d57608036600319011261036d576132cb613caa565b506132d4613c94565b506064356001600160401b0381116103ca576132f4903690600401613d06565b5050604051630a85bd0160e11b8152602090f35b503461036d57602036600319011261036d576004356001600160481b03811681036103ca57613335613ec3565b6101c78054600160601b600160a81b03191660609290921b600160601b600160a81b031691909117905580f35b503461036d578060031936011261036d5760406101c85481519063ffffffff60e01b9060201b16815260016020820152f35b503461036d578060031936011261036d576133ad613ec3565b6101c7805460ff600281831618169060ff191617905580f35b503461036d57602036600319011261036d5760206105df6004356147c8565b503461036d578060031936011261036d576101c854604051602091821c6001600160a01b03168152f35b503461036d57604036600319011261036d57613429613caa565b60243590613436816154aa565b6001600160a01b03808061344985614172565b1692169180831461353f5780331490811561351d575b50156134b25782845260ff6020526040842080546001600160a01b0319168317905561348a83614172565b167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258480a480f35b60405162461bcd60e51b815260206004820152603d60248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f7420746f60448201527f6b656e206f776e6572206f7220617070726f76656420666f7220616c6c0000006064820152608490fd5b9050845261010060205260408420335f5260205260ff60405f2054165f61345f565b60405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608490fd5b503461036d57602036600319011261036d5760206125c76004356141cc565b503461036d578060031936011261036d5760405190808260fb54916135d183614194565b928383526020946001918683821691825f1461175d5750506001146135fe57505061170d92500383613e33565b9085925060fb82528282205b85831061362257505061170d93508201015f806116ff565b8054838901850152879450869390920191810161360a565b503461036d578060031936011261036d57613653613ec3565b6101c7805460ff600181831618169060ff191617905580f35b503461036d57602036600319011261036d576004356001600160e01b031981168082036105645760209250638c0c8fbb60e01b149081156136e2575b81156136d1575b81156136c1575b506040519015158152f35b6136cb9150614d14565b5f6136b6565b90506136dc81614d6f565b906136af565b90506136ed81614d14565b906136a8565b9050346103ca5760803660031901126103ca5761370e613c83565b613716613c94565b6044356001600160a01b03811681036114a7576064356001600160a01b03811690036114a757845460ff8160081c161594858096613c76575b8015613c5f575b15613c06575060ff198116600117865584613bf5575b5060405161377981613dac565b60148152732732b7902a37b5bcb79021b4ba34bd32b7102b1960611b6020820152604051906137a782613dac565b6006825265272a21aa2d2760d11b60208301526137d360ff885460081c166137ce81614c16565b614c16565b8051906001600160401b038211613be1576137ef60fb54614194565b601f8111613b93575b50602090601f8311600114613b0d5761381a92918991836104e0575050614cc6565b60fb555b8051906001600160401b038211613af95761383a60fc54614194565b601f8111613aa0575b50602090601f8311600114613a1a5761386592918891836104e0575050614cc6565b60fc555b61389a60ff865460081c1661387d81614c16565b61388681614c16565b61388f81614c16565b600161019555614c16565b6138a2614396565b80546001600160a01b0383166001600160a01b0319918216811790925591903b6139bc575b506138dc60ff865460081c166137ce81614c16565b6138e582614cf2565b6138f960ff865460081c166137ce81614c16565b61390233613f1c565b61015f80549091166001600160a01b039092169190911790556101c780546101c8805463ffffffff19164263ffffffff16179055610100600160601b03191660089290921b62ffff0016919091176556bc75e2d631602a1b17600160601b600160f01b0319166e1158e460913d0000001158e460913d60731b1790556139855780f35b61ff001981541681557f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498602060405160018152a180f35b6001600160a01b0381163b15611fb557856040518092633e9f1edf60e11b82528183816139ef6064353060048401614cd8565b03926001600160a01b03165af1801561215957156138c757613a1390959195613d99565b935f6138c7565b60fc88528792917f371f36870d18f32a11fea0f144b021c8b407bb50f8e0267c711123f454b963c0915b601f1984168510613a85576001945083601f19811610613a6d575b505050811b0160fc55613869565b01515f1960f88460031b161c191690555f8080613a5f565b81810151835560209485019460019093019290910190613a44565b60fc8852613ae9907f371f36870d18f32a11fea0f144b021c8b407bb50f8e0267c711123f454b963c0601f850160051c81019160208610613aef575b601f0160051c0190614c76565b5f613843565b9091508190613adc565b634e487b7160e01b87526041600452602487fd5b60fb89528892917f3e7257b7272bb46d49cd6019b04ddee20da7c0cb13f7c1ec3391291b2ccebabc915b601f1984168510613b78576001945083601f19811610613b60575b505050811b0160fb5561381e565b01515f1960f88460031b161c191690555f8080613b52565b81810151835560209485019460019093019290910190613b37565b60fb8952613bdb907f3e7257b7272bb46d49cd6019b04ddee20da7c0cb13f7c1ec3391291b2ccebabc601f850160051c81019160208610613aef57601f0160051c0190614c76565b5f6137f8565b634e487b7160e01b88526041600452602488fd5b61ffff19166101011785555f61376c565b62461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608490fd5b50303b1580156137565750600160ff831614613756565b50600160ff83161061374f565b6004359061ffff82168203610bc957565b602435906001600160a01b0382168203610bc957565b600435906001600160a01b0382168203610bc957565b5f5b838110613cd15750505f910152565b8181015183820152602001613cc2565b90602091613cfa81518092818552858086019101613cc0565b601f01601f1916010190565b9181601f84011215610bc9578235916001600160401b038311610bc95760208381860195010111610bc957565b6060906003190112610bc9576001600160a01b03906004358281168103610bc957916024359081168103610bc9579060443590565b6040906003190112610bc9576004359060243590565b6001600160a01b039091168152602081019190915260400190565b6001600160401b038111611e9557604052565b604081019081106001600160401b03821117611e9557604052565b60e081019081106001600160401b03821117611e9557604052565b602081019081106001600160401b03821117611e9557604052565b606081019081106001600160401b03821117611e9557604052565b60c081019081106001600160401b03821117611e9557604052565b90601f801991011681019081106001600160401b03821117611e9557604052565b6001600160401b038111611e9557601f01601f191660200190565b929192613e7b82613e54565b91613e896040519384613e33565b829481845281830111610bc9578281602093845f960137010152565b9080601f83011215610bc957816020613ec093359101613e6f565b90565b610163546001600160a01b03163303613ed857565b606460405162461bcd60e51b815260206004820152602060248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152fd5b61016380546001600160a01b039283166001600160a01b0319821681179092559091167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3565b15613f6c57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b19195b1959d85d1958d85b1b60a21b6064820152608490fd5b15613fcd57565b60405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201526b6163746976652070726f787960a01b6064820152608490fd5b803b1561405b575f8051602061599683398151915280546001600160a01b0319166001600160a01b03909216919091179055565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b6001600160a01b031680156140d4575f5260fe60205260405f205490565b60405162461bcd60e51b815260206004820152602960248201527f4552433732313a2061646472657373207a65726f206973206e6f7420612076616044820152683634b21037bbb732b960b91b6064820152608490fd5b1561413257565b60405162461bcd60e51b8152602060048201526018602482015277115490cdcc8c4e881a5b9d985b1a59081d1bdad95b88125160421b6044820152606490fd5b5f90815260fd60205260409020546001600160a01b0316613ec081151561412b565b90600182811c921680156141c2575b60208310146141ae57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916141a3565b6141dd6141d8826141f7565b61412b565b5f90815260ff60205260409020546001600160a01b031690565b5f90815260fd60205260409020546001600160a01b0316151590565b61421c816140b6565b8210156142455760018060a01b03165f5261012d60205260405f20905f5260205260405f205490565b60405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b6064820152608490fd5b61012f80548210156142b6575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b3d156142f4573d906142db82613e54565b916142e96040519384613e33565b82523d5f602084013e565b606090565b9192901561435b575081511561430d575090565b3b156143165790565b60405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606490fd5b82519091501561436e5750805190602001fd5b60405162461bcd60e51b815260206004820152908190614392906024830190613ce1565b0390fd5b60366040516143a481613dfd565b8181527561626c652e636f6e7472616374732e73746f7261676560501b604060208301927f557064617461626c654f70657261746f7246696c74657265725570677261646584520152205f198101908111611e815790565b90816020910312610bc957516001600160a01b0381168103610bc95790565b600281526001602082015260400190565b600381526001602082015260400190565b600481526001602082015260400190565b5f818152602091610161835260408220549160028360b81c1661447b5750506001600160401b0391501690565b61015f54604051635683d7d160e11b815260056004820152602481018390526001600160a01b03945091929085908390604490829088165afa918215610bd557908592918492614536575b50602490604051958693849263d9e001a960e01b84526004840152165afa9283156145295781936144f8575b50505090565b9091809350813d8311614522575b6145108183613e33565b8101031261036d5750515f80806144f2565b503d614506565b50604051903d90823e3d90fd5b602491925061455190843d8611610d0957610cfb8183613e33565b91906144c6565b5f908082526020906101618252604092838120549260028460b81c166145865750505063ffffffff911c1690565b90919250604460018060a01b0393828561015f5416875193848092635683d7d160e11b8252600560048301528860248301525afa91821561462a57908392918592614608575b50602490875196879384926371efa14b60e11b84526004840152165afa9384156145fd575081936144f85750505090565b51913d9150823e3d90fd5b602491925061462390843d8611610d0957610cfb8183613e33565b91906145cc565b86513d86823e3d90fd5b5f818152602091610161835260408220549160028360b81c1661465f57505061ffff915060a01c1690565b61015f54604051635683d7d160e11b815260056004820152602481018390526001600160a01b03945091929085908390604490829088165afa918215610bd5579085929184926146db575b50602490604051958693849263438ecb3560e01b84526004840152165afa9283156145295781936144f85750505090565b60249192506146f690843d8611610d0957610cfb8183613e33565b91906146aa565b5f818152602091610161835260408220549160028360b81c1661472a57505063ffffffff915060601c1690565b61015f54604051635683d7d160e11b815260056004820152602481018390526001600160a01b03945091929085908390604490829088165afa918215610bd5579085929184926147a6575b50602490604051958693849263335683a960e11b84526004840152165afa9283156145295781936144f85750505090565b60249192506147c190843d8611610d0957610cfb8183613e33565b9190614775565b5f818152602091610161835260408220549160028360b81c166147f557505063ffffffff915060801c1690565b61015f54604051635683d7d160e11b815260056004820152602481018390526001600160a01b03945091929085908390604490829088165afa918215610bd557908592918492614871575b5060249060405195869384926302d8cf2160e21b84526004840152165afa9283156145295781936144f85750505090565b602491925061488c90843d8611610d0957610cfb8183613e33565b9190614840565b602081830312610bc9578051906001600160401b038211610bc9570181601f82011215610bc95780516148c581613e54565b926148d36040519485613e33565b81845260208284010111610bc957613ec09160208085019101613cc0565b5f9080825260209061016182526040908184205460b81c6004811615155f146149bc57508352610162825280832090519283918181549061493182614194565b80865292600192808416908115614998575060011461495b575b50505050613ec092500382613e33565b815285812095935091905b818310614980575050613ec093508201015f80808061494b565b85548784018501529485019486945091830191614966565b9350505050613ec094925060ff191682840152151560051b8201015f80808061494b565b91939092909160021615614a855761015f548451635683d7d160e11b815260056004820152602481018490526001600160a01b03949183908290604490829089165afa92831561462a5790849392918493614a61575b505060249086519586938492632af6a2c760e11b84526004840152165afa928315614a5757508092614a4357505090565b613ec092503d8091833e6112288183613e33565b51903d90823e3d90fd5b60249293509081614a7d92903d10610d0957610cfb8183613e33565b91905f614a12565b9150916101628252808320905192839181815490614aa282614194565b808652926001928084169081156149985750600114614acb5750505050613ec092500382613e33565b815285812095935091905b818310614af0575050613ec093508201015f80808061494b565b85548784018501529485019486945091830191614ad6565b5f90808252602091610161835260409260028483205460b81c16614b33578192610160925252205490565b61015f548451635683d7d160e11b815260056004820152602481018490526001600160a01b0394909183908390604490829089165afa91821561462a57908392918592614bac575b506024908751968793849263154a9f3760e31b84526004840152165afa9384156145fd575081936144f85750505090565b6024919250614bc790843d8611610d0957610cfb8183613e33565b9190614b7b565b91908201809211611e8157565b80614be557505f90565b805f52610160602052614bfc60405f20549161444e565b420390428211611e81576301e13380613ec0920490614bce565b15614c1d57565b60405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608490fd5b818110614c81575050565b5f8155600101614c76565b9190601f8111614c9b57505050565b614cc4925f5260205f20906020601f840160051c83019310613aef57601f0160051c0190614c76565b565b8160011b915f199060031b1c19161790565b6001600160a01b0391821681529116602082015260400190565b61015f80546001600160a01b0319166001600160a01b03909216919091179055565b6001600160e01b0319811663780e9d6360e01b8114918215614d3557505090565b6380ac58cd60e01b82149250908215614d5e575b508115614d54575090565b613ec09150614d6f565b635b5e139f60e01b1491505f614d49565b63ffffffff60e01b1663152a902d60e11b8114908115614d8d575090565b6301ffc9a760e01b14919050565b15614da257565b60405162461bcd60e51b815260206004820152601e60248201527f46656d616c65732063616e6e6f742062652075706c6f616465642079657400006044820152606490fd5b6001600160a01b03918216815291166020820152604081019190915260600190565b805460ff60b01b191660b09290921b60ff60b01b16919091179055565b805460ff60b81b191660b89290921b60ff60b81b16919091179055565b6101956002815414614e555760029055565b60405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606490fd5b90604091825192614eaa84613de2565b5f8085526001600160a01b038381169290831561509857614ed3614ecd876141f7565b1561514e565b61012f90815487855260209261013084528185872055600160401b82101561508457611c06828a926001614f099501905561429e565b614f12866140b6565b85855261012d83528385208186528352878486205587855261012e8352838520556101c8549081831c169081151580809161507d575b614faa575b50505092614cc496949286949260fd8694614f6d614ecd6114949b6141f7565b84845260fe81528284208054600101905585845252812080546001600160a01b031916831790555f805160206159b68339815191528180a4615199565b614fb5575b80614f4d565b8491829185518581019163ffffffff60e01b90871b1682523360248201528360448201528860648201528a608482015260848152614ff281613e18565b51915afa614ffe6142ca565b8161504d575b5015615011575f80614faf565b606491519062461bcd60e51b825260048201526017602482015276151c985b9cd9995c881b9bdd08185d5d1a1bdc9a5e9959604a1b6044820152fd5b80518015925083908315615065575b5050505f615004565b615075935082018101910161534b565b5f828161505c565b5085614f48565b634e487b7160e01b86526041600452602486fd5b6064825162461bcd60e51b815260206004820152602060248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152fd5b60809060208152603260208201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b60608201520190565b1561513557565b60405162461bcd60e51b815280614392600482016150db565b1561515557565b60405162461bcd60e51b815260206004820152601c60248201527b115490cdcc8c4e881d1bdad95b88185b1c9958591e481b5a5b9d195960221b6044820152606490fd5b909190803b15615281576020604051809281630a85bd0160e11b96878252336004830152816151e15f9889938460248501526044840152608060648401526084830190613ce1565b03926001600160a01b03165af190829082615239575b505061522b576152056142ca565b805190816152265760405162461bcd60e51b815280614392600482016150db565b602001fd5b6001600160e01b0319161490565b909192506020813d8211615279575b8161525560209383613e33565b810103126103ca5751906001600160e01b03198216820361036d5750905f806151f7565b3d9150615248565b505050600190565b9290803b156152f8576152d99160209160018060a01b039460405180958194829389630a85bd0160e11b9b8c86523360048701521660248501526044840152608060648401526084830190613ce1565b03915f968791165af19082908261523957505061522b576152056142ca565b50505050600190565b1561530857565b60405162461bcd60e51b815260206004820152601b60248201527a2cb7ba903237903737ba1037bbb7103a3430ba1031b4ba34bd32b760291b6044820152606490fd5b90816020910312610bc957518015158103610bc95790565b6001600160a01b0391821681529116602082015263ffffffff909116604082015260600190565b9081526001600160a01b03909116602082015260400190565b61015f546040516334541af960e21b81526001600160a01b03916020908290600490829086165afa908115615422575f9161542d575b5016803b15610bc957604051632770a7eb60e21b8152915f918391829084908290615408903360048401613d7e565b03925af18015615422576154195750565b614cc490613d99565b6040513d5f823e3d90fd5b615445915060203d8111610d0957610cfb8183613e33565b5f6153d9565b1561545257565b60405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608490fd5b6001600160a01b03806154bb614396565b541680151580615544575b6154cf57505050565b60206040518092633185c44d60e21b825281806154f0883060048401614cd8565b03915afa908115615422575f91615526575b501561550c575050565b604051633b79c77360e21b81529116600482015260249150fd5b61553e915060203d8111612e1457612e068183613e33565b5f615502565b50803b15156154c6565b1561555557565b60405162461bcd60e51b815260206004820152602d60248201527f4552433732313a2063616c6c6572206973206e6f7420746f6b656e206f776e6560448201526c1c881bdc88185c1c1c9bdd9959609a1b6064820152608490fd5b906001600160a01b0380806155c484614172565b169316918383149384156155f6575b5083156155e05750505090565b6155ec919293506141cc565b16145f80806144f2565b9093505f5261010060205260405f20825f5260205260ff60405f205416925f6155d3565b1561562157565b60405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608490fd5b906156999161568284614172565b6001600160a01b039382851693918516841461561a565b8381169384156159445783801593845f146158a457505061012f91825492875f526101306020528360405f2055600160401b841015611e955787611c06856156e79360018a9801905561429e565b828603615870575b506101c854926020938281861c169182151580918192615867575b5061578b575b5050505f805160206159b683398151915292916157379161573088614172565b161461561a565b5f85815260ff8252604080822080546001600160a01b031990811690915585835260fe845281832080545f190190558683528183208054600101905587835260fd90935281208054909216851790915580a4565b615796575b80615710565b5f9293509082916040518681019163ffffffff60e01b90881b168252336024820152876044820152886064820152896084820152608481526157d781613e18565b51915afa6157e36142ca565b81615837575b50156157f85782905f80615790565b60405162461bcd60e51b8152600481018390526017602482015276151c985b9cd9995c881b9bdd08185d5d1a1bdc9a5e9959604a1b6044820152606490fd5b8051801592508490831561584f575b5050505f6157e9565b61585f935082018101910161534b565b5f8381615846565b9050155f61570a565b615879906140b6565b60405f87815261012d602052818120838252602052888282205588815261012e60205220555f6156ef565b86829492036158b4575b506156e7565b6158bf9193506140b6565b5f19810192908311611e815784925f9088825261012e906020828152604092838520549083820361590d575b50508a8452838381205586845261012d8152828420918452528120555f6158ae565b88865261012d808452858720858852845285872054908a885284528587208388528452808688205586528252838520555f806158eb565b60405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608490fdfe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbcddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa2646970667358221220a451e1a8d04018da0a823f5f5f29b09732d242834bd69dc241666ee06234dac664736f6c63430008150033