0 txs
58.6k calls
constructor
No constructor.
functions
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
contractURI
viewfunction contractURI() view returns (string)
defaultManager
viewfunction defaultManager() view returns (address)
editionSupply
viewfunction editionSupply(uint256) view returns (uint128 currentSupply, uint128 maxSupply)
editionURI
viewfunction editionURI(uint256 editionId) view returns (string)
getEditionDetails
viewfunction getEditionDetails(uint256 editionId) view returns (tuple)
getEditionId
viewfunction getEditionId(uint256 tokenId) view returns (uint256)
getEditionsDetailsAndUri
viewfunction getEditionsDetailsAndUri(uint256[] editionIds) view returns (tuple[], string[])
highlightContractStandardHash
viewfunction highlightContractStandardHash() view returns (bytes32)
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
isTrustedForwarder
viewfunction isTrustedForwarder(address forwarder) view returns (bool)
minters
viewfunction minters() view returns (address[])
name
viewfunction name() view returns (string)
nextTokenId
viewfunction nextTokenId() view returns (uint256)
observability
viewfunction observability() view returns (address)
owner
viewfunction owner() view returns (address)
royaltyInfo
viewfunction royaltyInfo(uint256 _tokenId, uint256 _salePrice) view returns (address receiver, uint256 royaltyAmount)
royaltyManager
viewfunction royaltyManager() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokenManager
viewfunction tokenManager(uint256 id) view returns (address manager)
tokenManagerByTokenId
viewfunction tokenManagerByTokenId(uint256 tokenId) view returns (address)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256)
uri
viewfunction uri(uint256 tokenId) view returns (string)
burn
nonpayablefunction burn(address from, uint256 tokenId, uint256 amount)
createEdition
nonpayablefunction createEdition(string _editionUri, uint256 _editionSize, address _editionTokenManager, tuple editionRoyalty, bytes mintVectorData) returns (uint256)
createEditionWithMechanicVector
nonpayablefunction createEditionWithMechanicVector(string _editionUri, uint256 _editionSize, address _editionTokenManager, tuple editionRoyalty, bytes mechanicVectorData) returns (uint256)
createEditionWithMechanicVectorAndPublicFixedPriceVector
nonpayablefunction createEditionWithMechanicVectorAndPublicFixedPriceVector(string _editionUri, uint256 _editionSize, address _editionTokenManager, tuple editionRoyalty, bytes mintVectorData, bytes mechanicVectorData) returns (uint256)
freezeMints
nonpayablefunction freezeMints()
initialize
nonpayablefunction initialize(address creator, bytes data)
mintAmountToRecipient
nonpayablefunction mintAmountToRecipient(uint256 editionId, address recipient, uint256 amount) returns (uint256)
mintAmountToRecipients
nonpayablefunction mintAmountToRecipients(uint256 editionId, address[] recipients, uint256 amount) returns (uint256)
mintOneToRecipient
nonpayablefunction mintOneToRecipient(uint256 editionId, address recipient) returns (uint256)
mintOneToRecipients
nonpayablefunction mintOneToRecipients(uint256 editionId, address[] recipients) returns (uint256)
registerMinter
nonpayablefunction registerMinter(address minter)
removeDefaultTokenManager
nonpayablefunction removeDefaultTokenManager()
removeGranularTokenManagers
nonpayablefunction removeGranularTokenManagers(uint256[] _ids)
removeRoyaltyManager
nonpayablefunction removeRoyaltyManager()
renounceOwnership
nonpayablefunction renounceOwnership()
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] amounts, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes data)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setContractMetadata
nonpayablefunction setContractMetadata(string newName, string newSymbol, string newContractUri)
setDefaultRoyalty
nonpayablefunction setDefaultRoyalty(tuple _royalty)
setDefaultTokenManager
nonpayablefunction setDefaultTokenManager(address _defaultTokenManager)
setEditionSize
nonpayablefunction setEditionSize(uint256 editionId, uint128 newSize)
setEditionURI
nonpayablefunction setEditionURI(uint256 editionId, string _uri)
setGranularRoyalties
nonpayablefunction setGranularRoyalties(uint256[] ids, tuple[] _newRoyalties)
setGranularTokenManagers
nonpayablefunction setGranularTokenManagers(uint256[] _ids, address[] _tokenManagers)
setRoyaltyManager
nonpayablefunction setRoyaltyManager(address _royaltyManager)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unregisterMinter
nonpayablefunction unregisterMinter(address minter)
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
DefaultRoyaltySet
event DefaultRoyaltySet(address indexed recipientAddress, uint16 indexed royaltyPercentageBPS)
DefaultTokenManagerChanged
event DefaultTokenManagerChanged(address indexed newDefaultTokenManager)
EditionCreated
event EditionCreated(uint256 indexed editionId, uint256 indexed size, address indexed editionTokenManager)
GranularRoyaltiesSet
event GranularRoyaltiesSet(uint256[] ids, (address recipientAddress, uint16 royaltyPercentageBPS)[] _newRoyalties)
GranularTokenManagersRemoved
event GranularTokenManagersRemoved(uint256[] _ids)
GranularTokenManagersSet
event GranularTokenManagersSet(uint256[] _ids, address[] _tokenManagers)
HighlightUpdated1155EditionSize
event HighlightUpdated1155EditionSize(uint256 indexed editionId, uint128 oldSize, uint128 newSize)
Initialized
event Initialized(uint8 version)
MinterRegistrationChanged
event MinterRegistrationChanged(address indexed minter, bool indexed registered)
MintsFrozen
event MintsFrozen()
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
RoyaltyManagerChanged
event RoyaltyManagerChanged(address indexed newRoyaltyManager)
TransferBatch
event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values)
TransferSingle
event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value)
URI
event URI(string value, uint256 indexed id)
errors
EditionDoesNotExist
error EditionDoesNotExist()
InsufficientBalance
error InsufficientBalance()
InvalidBurn
error InvalidBurn()
InvalidEditionSizeUpdate
error InvalidEditionSizeUpdate()
InvalidInput
error InvalidInput()
InvalidManager
error InvalidManager()
InvalidOperator
error InvalidOperator()
InvalidOwner
error InvalidOwner()
InvalidSize
error InvalidSize()
ManagerDoesNotExist
error ManagerDoesNotExist()
ManagerRemoveBlocked
error ManagerRemoveBlocked()
ManagerSwapBlocked
error ManagerSwapBlocked()
MetadataUpdateBlocked
error MetadataUpdateBlocked()
MinterRegistrationInvalid
error MinterRegistrationInvalid()
MintFrozen
error MintFrozen()
NotMinter
error NotMinter()
NotTokenOwnerOrApproved
error NotTokenOwnerOrApproved()
ReceiverNonImplementer
error ReceiverNonImplementer()
ReceiverRejectedTokens
error ReceiverRejectedTokens()
RoyaltyBPSInvalid
error RoyaltyBPSInvalid()
RoyaltySetBlocked
error RoyaltySetBlocked()
SoldOut
error SoldOut()
TokenDoesNotExist
error TokenDoesNotExist()
TransferFromZeroAddress
error TransferFromZeroAddress()
TransferToZeroAddress
error TransferToZeroAddress()
Unauthorized
error Unauthorized()
creation bytecode
0x608060405234801561001057600080fd5b50615ea380620000216000396000f3fe608060405234801561001057600080fd5b50600436106102715760003560e01c8062fdd58e1461027657806301ffc9a71461029c578063063a7502146102bf5780630690a78d146102c957806306fdde03146102dc5780630e89341c146102f157806317360d341461030457806318160ddd1461032557806318bae6c81461032d5780631b30808d1461034d5780632a55205a146103605780632a5ac764146103815780632eb2c2d614610394578063336211bf146103a7578063377e5e27146103ba57806346134b50146103cd57806347230dcb146103e05780634e1273f4146103f35780634f58122a1461041357806350cf5a3114610426578063572b6c05146104395780636502abea1461044c578063662fff381461045f5780636b15fd4514610472578063715018a61461048557806375794a3c1461048d578063834a20df146104975780638da5cb5b146104aa57806391d0049e146104b257806392172704146104c557806395d89b41146104d8578063a22cb465146104e0578063a305f5b2146104f3578063b1b00d0e14610506578063b5c5801e14610519578063b859c93514610521578063bfb2995c14610534578063c2f5070114610547578063c87b56dd1461054f578063cbab0bd314610562578063d1f5789414610588578063ddf990f91461059b578063e8a3d485146105bb578063e985e9c5146105c3578063eb872150146105d6578063ee295d62146105e9578063eeab0589146105fc578063ef60ceaf1461060f578063f242432a14610622578063f2fde38b14610635578063f5298aca14610648578063f775baac1461065b578063f83e6ed81461066e578063f97b57ec146106b1575b600080fd5b6102896102843660046145d4565b6106c6565b6040519081526020015b60405180910390f35b6102af6102aa366004614616565b610712565b6040519015158152602001610293565b6102c761071d565b005b6102c76102d7366004614674565b6107dd565b6102e4610a18565b6040516102939190614717565b6102e46102ff36600461472a565b610aa7565b610317610312366004614787565b610ab2565b60405161029392919061485c565b610289610c05565b60cb54610340906001600160a01b031681565b60405161029391906148df565b61028961035b3660046148f3565b610c1c565b61037361036e36600461492b565b610cb0565b60405161029392919061494d565b6102c761038f366004614966565b610cc8565b6102c76103a2366004614b58565b610dc5565b6102896103b536600461472a565b610e1b565b6102e46103c836600461472a565b610e41565b6103406103db36600461472a565b610f02565b6102c76103ee366004614c05565b610f0d565b610406610401366004614c91565b610fba565b6040516102939190614d25565b6102c7610421366004614787565b611099565b6102c7610434366004614c05565b6112bb565b6102af610447366004614c05565b61145e565b61034061045a36600461472a565b611472565b61028961046d366004614d38565b6114a1565b610289610480366004614df9565b61151a565b6102c76117c4565b6102896101375481565b6102c76104a5366004614c05565b6117d6565b610340611854565b6102896104c0366004614ebd565b611863565b6102896104d3366004614f38565b611a46565b6102e4611acc565b6102c76104ee366004614f82565b611ada565b6102c7610501366004614c05565b611aec565b6102c7610514366004614fbb565b611c50565b6102c7611d7b565b61028961052f366004614fec565b611ecf565b6102c7610542366004615011565b611f49565b6102c761226f565b6102e461055d36600461472a565b612380565b7f3a9654d81ac4dafbb9a2fb1cd3efa3de2783ae40b06b17a456bf5922ed02a3a7610289565b6102c76105963660046150aa565b6123a2565b6105ae6105a936600461472a565b612529565b60405161029391906150ef565b6102e461255a565b6102af6105d1366004615102565b612568565b60d054610340906001600160a01b031681565b60cf54610340906001600160a01b031681565b6102c761060a366004615130565b612597565b6102c761061d36600461519b565b612861565b6102c76106303660046151ad565b612a6f565b6102c7610643366004614c05565b612abe565b6102c7610656366004615215565b612b34565b610289610669366004614ebd565b612d73565b6106a361067c36600461472a565b610138602052600090815260409020546001600160801b0380821691600160801b90041682565b60405161029392919061524a565b6106b9612eb0565b6040516102939190615264565b60006001600160a01b0383166106e6576106e66349e27cff60e01b612ebc565b506000818152610103602090815260408083206001600160a01b03861684529091529020545b92915050565b600061070c82612ec5565b610725612f15565b61072d612f84565b60cf805460ff60a01b1916600160a01b1790556040517f9d4b38394dff663b46f53f52ced584161b5021180321b381f6104325eecebf4990600090a160d060009054906101000a90046001600160a01b03166001600160a01b031663fd120bd26040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156107b957600080fd5b505af11580156107cd573d6000803e3d6000fd5b505050506107db6001609755565b565b60006107e884611472565b905060006107f4612fe5565b90506001600160a01b03821661083e57600061080e611854565b9050806001600160a01b0316826001600160a01b031614610838576108386282b42960e81b612ebc565b506108cc565b604051634e9173c760e11b81526001600160a01b03831690639d22e78e9061087590309085908a908a908a906006906004016152da565b6020604051808303816000875af1158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b8919061534f565b6108cc576108cc631b04458960e01b612ebc565b6000858152610139602052604090206108e690858561448e565b5060408051600180825281830190925260009160208083019080368337019050509050858160008151811061091d5761091d61536c565b6020908102919091010152604080516001808252818301909252600091816020015b606081526020019060019003908161093f57905050905085858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201829052508551869450909250151590506109a0576109a061536c565b602090810291909101015260d0546040516374c1ace160e01b81526001600160a01b03909116906374c1ace1906109dd9085908590600401615382565b600060405180830381600087803b1580156109f757600080fd5b505af1158015610a0b573d6000803e3d6000fd5b5050505050505050505050565b6101358054610a26906153a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610a52906153a7565b8015610a9f5780601f10610a7457610100808354040283529160200191610a9f565b820191906000526020600020905b815481529060010190602001808311610a8257829003601f168201915b505050505081565b606061070c82612380565b606080826000816001600160401b03811115610ad057610ad06149ff565b604051908082528060200260200182016040528015610b0957816020015b610af661450e565b815260200190600190039081610aee5790505b5090506000826001600160401b03811115610b2657610b266149ff565b604051908082528060200260200182016040528015610b5957816020015b6060815260200190600190039081610b445790505b50905060005b83811015610bf657610b88888883818110610b7c57610b7c61536c565b90506020020135610e41565b828281518110610b9a57610b9a61536c565b6020026020010181905250610bc6888883818110610bba57610bba61536c565b90506020020135612fef565b838281518110610bd857610bd861536c565b60200260200101819052508080610bee906153f2565b915050610b5f565b509093509150505b9250929050565b6000600161013754610c17919061540d565b905090565b6000610c31610c29612fe5565b60c99061304b565b610c4557610c45633e34a41b60e21b612ebc565b610c4d612f84565b60cf54600160a01b900460ff1660011415610c7257610c726345a9661760e01b612ebc565b610c7e84610137541190565b610c9257610c9263eb49290360e01b612ebc565b610c9d848484613060565b9050610ca96001609755565b9392505050565b600080610cbd8484613134565b915091509250929050565b610cd0612f15565b610d4386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8a0181900481028201810190925288815292508891508790819084018382808284376000920191909152506131cf92505050565b610d50610134838361448e565b5060d054604051635bf57bc360e01b81526001600160a01b0390911690635bf57bc390610d8b90899089908990899089908990600401615424565b600060405180830381600087803b158015610da557600080fd5b505af1158015610db9573d6000803e3d6000fd5b50505050505050505050565b610dcd612fe5565b6001600160a01b0316856001600160a01b03161480610df35750610df3856105d1612fe5565b610e0757610e07634cd9539b60e11b612ebc565b610e1485858585856131f8565b5050505050565b6000610e2982610137541190565b610e3d57610e3d63677510db60e11b612ebc565b5090565b6060610e4f82610137541190565b610e6357610e6363eb49290360e01b612ebc565b6000828152610139602052604090208054610e7d906153a7565b80601f0160208091040260200160405190810160405280929190818152602001828054610ea9906153a7565b8015610ef65780601f10610ecb57610100808354040283529160200191610ef6565b820191906000526020600020905b815481529060010190602001808311610ed957829003601f168201915b50505050509050919050565b600061070c82611472565b610f15612f15565b610f2060c98261339a565b610f3457610f3463ea6eb5c360e01b612ebc565b6040516001906001600160a01b03831690600080516020615e5783398151915290600090a360d05460405163a9292a6f60e01b81526001600160a01b039091169063a9292a6f90610f8c90849060019060040161546d565b600060405180830381600087803b158015610fa657600080fd5b505af1158015610e14573d6000803e3d6000fd5b60608151835114610fd557610fd563b4fa3fb360e01b612ebc565b600083516001600160401b03811115610ff057610ff06149ff565b604051908082528060200260200182016040528015611019578160200160208202803683370190505b50905060005b84518110156110915761106485828151811061103d5761103d61536c565b60200260200101518583815181106110575761105761536c565b60200260200101516106c6565b8282815181106110765761107661536c565b602090810291909101015261108a816153f2565b905061101f565b509392505050565b6110a1612f84565b60006110ab612fe5565b90508160005b8181101561120d57600060cc60008787858181106110d1576110d161536c565b60209081029290920135835250810191909152604001600020546001600160a01b031690508061110b5761110b635f98be1560e11b612ebc565b806001600160a01b031663ce2003a58588888681811061112d5761112d61536c565b905060200201356040518363ffffffff1660e01b815260040161115192919061494d565b6020604051808303816000875af1158015611170573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611194919061534f565b6111a8576111a863251c48e160e11b612ebc565b600060cc60008888868181106111c0576111c061536c565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b03160217905550508080611205906153f2565b9150506110b1565b507f4d30c2588339a383e2c3092b5383924cf202ae9c377b76c5fe5208cd41d8d2aa848460405161123f9291906154be565b60405180910390a160d0546040516320364dcd60e21b81526001600160a01b03909116906380d937349061127990879087906004016154be565b600060405180830381600087803b15801561129357600080fd5b505af11580156112a7573d6000803e3d6000fd5b5050505050506112b76001609755565b5050565b6112c3612f84565b6112cc816133af565b6112e0576112e0631a7387bd60e11b612ebc565b60006112ea612fe5565b60cf549091506001600160a01b03168061133257611306611854565b6001600160a01b0316826001600160a01b03161461132d5761132d6282b42960e81b612ebc565b6113b8565b60405163bcdbc94760e01b81526001600160a01b038481166004830152838116602483015282169063bcdbc94790604401602060405180830381865afa158015611380573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113a4919061534f565b6113b8576113b863e10a050560e01b612ebc565b60cf80546001600160a01b0319166001600160a01b038516908117909155604051600080516020615e7783398151915290600090a260d05460405163755d5a1160e11b81526001600160a01b039091169063eabab4229061141d9086906004016148df565b600060405180830381600087803b15801561143757600080fd5b505af115801561144b573d6000803e3d6000fd5b50505050505061145b6001609755565b50565b6065546001600160a01b0391821691161490565b60cb54600082815260cc60205260409020546001600160a01b039182169116801561149b578091505b50919050565b60006114ae610c29612fe5565b6114c2576114c2633e34a41b60e21b612ebc565b6114ca612f84565b60cf54600160a01b900460ff16600114156114ef576114ef6345a9661760e01b612ebc565b6114fb84610137541190565b61150f5761150f63eb49290360e01b612ebc565b610c9d8484846133cb565b6000611524612f15565b61152c612f84565b60006115398a8a8a6134ed565b87519091506001600160a01b03161561158e57600081815260ce6020908152604090912088518154928a015161ffff16600160a01b026001600160b01b03199093166001600160a01b03909116179190911790555b84156116ee5760008060008060008060008060008e8e8101906115b191906154f0565b985098509850985098509850985098509850886001600160a01b03166377a856ea604051806101c00160405280306001600160a01b031681526020018a65ffffffffffff1681526020018965ffffffffffff1681526020018b6001600160a01b031681526020018665ffffffffffff168152602001600065ffffffffffff168152602001846001600160a01b031681526020018765ffffffffffff1681526020018565ffffffffffff168152602001886001600160c01b031681526020018d65ffffffffffff1681526020016001151581526020016000151581526020016000801b8152506040518263ffffffff1660e01b81526004016116b291906155ba565b600060405180830381600087803b1580156116cc57600080fd5b505af11580156116e0573d6000803e3d6000fd5b505050505050505050505050505b82156117ac576000808080611705878901896156bd565b6040805160c0810182523081526001600160601b038b1660208201526001600160a01b03808616828401526001606083015260006080830181905260a083015291516338a2f85160e21b8152959950939750919550935084169163e28be14491611775918890869060040161573d565b600060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b50505050505050505b90506117b86001609755565b98975050505050505050565b6117cc612f15565b6107db60006135ef565b6117de612f15565b6117e960c982613641565b6117fd576117fd63ea6eb5c360e01b612ebc565b6040516000906001600160a01b03831690600080516020615e57833981519152908390a360d05460405163a9292a6f60e01b81526001600160a01b039091169063a9292a6f90610f8c90849060009060040161546d565b6033546001600160a01b031690565b600061186d612f15565b611875612f84565b60006118828888886134ed565b85519091506001600160a01b0316156118d757600081815260ce60209081526040909120865181549288015161ffff16600160a01b026001600160b01b03199093166001600160a01b03909116179190911790555b8215611a3057600080808080808080806118f38c8e018e6154f0565b985098509850985098509850985098509850886001600160a01b03166377a856ea604051806101c00160405280306001600160a01b031681526020018a65ffffffffffff1681526020018965ffffffffffff1681526020018b6001600160a01b031681526020018665ffffffffffff168152602001600065ffffffffffff168152602001846001600160a01b031681526020018765ffffffffffff1681526020018565ffffffffffff168152602001886001600160c01b031681526020018d65ffffffffffff1681526020016001151581526020016000151581526020016000801b8152506040518263ffffffff1660e01b81526004016119f491906155ba565b600060405180830381600087803b158015611a0e57600080fd5b505af1158015611a22573d6000803e3d6000fd5b505050505050505050505050505b9050611a3c6001609755565b9695505050505050565b6000611a53610c29612fe5565b611a6757611a67633e34a41b60e21b612ebc565b611a6f612f84565b60cf54600160a01b900460ff1660011415611a9457611a946345a9661760e01b612ebc565b611aa083610137541190565b611ab457611ab463eb49290360e01b612ebc565b611ac0838360016133cb565b905061070c6001609755565b6101368054610a26906153a7565b6112b7611ae5612fe5565b8383613656565b611af4612f84565b611afd816136ee565b611b1157611b11631a7387bd60e11b612ebc565b6000611b1b612fe5565b60cb549091506001600160a01b031680611b6357611b37611854565b6001600160a01b0316826001600160a01b031614611b5e57611b5e6282b42960e81b612ebc565b611beb565b6040516342f19adb60e11b81526001600160a01b038216906385e335b690611b9490859060009088906004016157bc565b6020604051808303816000875af1158015611bb3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bd7919061534f565b611beb57611beb63e10a050560e01b612ebc565b60cb80546001600160a01b0319166001600160a01b038516908117909155604051600080516020615e3783398151915290600090a260d0546040516316365cdd60e01b81526001600160a01b03909116906316365cdd9061141d9086906004016148df565b611c58612f15565b611c6482610137541190565b611c7857611c7863eb49290360e01b612ebc565b600082815261013860209081526040918290208251808401909352546001600160801b038082168452600160801b909104169082018190521580611cda575060208101516001600160801b031615801590611cda57506001600160801b038216155b80611cfa575080600001516001600160801b0316826001600160801b0316105b15611d0f57611d0f6352d7c80b60e11b612ebc565b827f3c2d7b840f03bc7a1e02b5faf6a89bb740590f5871b876deae799c89188634d1826020015184604051611d4592919061524a565b60405180910390a2506000918252610138602052604090912080546001600160801b03928316600160801b029216919091179055565b611d83612f84565b6000611d8d612fe5565b60cb549091506001600160a01b031680611db157611db1635f98be1560e11b612ebc565b60405163ce2003a560e01b81526001600160a01b0382169063ce2003a590611de090859060009060040161494d565b6020604051808303816000875af1158015611dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e23919061534f565b611e3757611e3763251c48e160e11b612ebc565b60cb80546001600160a01b0319169055604051600090600080516020615e37833981519152908290a260d0546040516316365cdd60e01b81526001600160a01b03909116906316365cdd90611e91906000906004016148df565b600060405180830381600087803b158015611eab57600080fd5b505af1158015611ebf573d6000803e3d6000fd5b5050505050506107db6001609755565b6000611edc610c29612fe5565b611ef057611ef0633e34a41b60e21b612ebc565b611ef8612f84565b60cf54600160a01b900460ff1660011415611f1d57611f1d6345a9661760e01b612ebc565b611f2983610137541190565b611f3d57611f3d63eb49290360e01b612ebc565b611ac083836001613060565b611f51612f84565b6000611f5b612fe5565b90506000611f67611854565b60cf549091506001600160a01b0316858161206857826001600160a01b0316846001600160a01b031614611fa457611fa46282b42960e81b612ebc565b60005b8181101561206257611fea878783818110611fc457611fc461536c565b9050604002016020016020810190611fdc91906157df565b61271061ffff909116111590565b611ffe57611ffe633daf741f60e21b612ebc565b8686828181106120105761201061536c565b90506040020160ce60008b8b8581811061202c5761202c61536c565b905060200201358152602001908152602001600020818161204d91906157fc565b5081905061205a816153f2565b915050611fa7565b506121b6565b60005b818110156121b457612088878783818110611fc457611fc461536c565b61209c5761209c633daf741f60e21b612ebc565b826001600160a01b031663ad6e40c78a8a848181106120bd576120bd61536c565b905060200201358989858181106120d6576120d661536c565b905060400201886040518463ffffffff1660e01b81526004016120fb93929190615889565b602060405180830381865afa158015612118573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061213c919061534f565b6121505761215063270e710760e21b612ebc565b8686828181106121625761216261536c565b90506040020160ce60008b8b8581811061217e5761217e61536c565b905060200201358152602001908152602001600020818161219f91906157fc565b508190506121ac816153f2565b91505061206b565b505b7feaf422d1ab2d8f38856ab6be8378c08d2886463a33667e896ba3a6ebf2c6260c888888886040516121eb94939291906158b6565b60405180910390a160d054604051632be18fef60e11b81526001600160a01b03909116906357c31fde90612229908b908b908b908b906004016158b6565b600060405180830381600087803b15801561224357600080fd5b505af1158015612257573d6000803e3d6000fd5b50505050505050506122696001609755565b50505050565b612277612f84565b6000612281612fe5565b60cf549091506001600160a01b0316806122a5576122a5635f98be1560e11b612ebc565b60405163680c607d60e11b81526001600160a01b0382169063d018c0fa906122d19085906004016148df565b602060405180830381865afa1580156122ee573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612312919061534f565b6123265761232663251c48e160e11b612ebc565b60cf80546001600160a01b0319169055604051600090600080516020615e77833981519152908290a260d05460405163755d5a1160e11b81526001600160a01b039091169063eabab42290611e91906000906004016148df565b606061238e82610137541190565b610e6357610e6363677510db60e11b612ebc565b600054610100900460ff16158080156123c25750600054600160ff909116105b806123e357506123d13061370a565b1580156123e3575060005460ff166001145b61244b5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b6000805460ff19166001179055801561246e576000805461ff0019166101001790555b60008060008060008060008880602001905181019061248d91906159d7565b96509650965096509650965096506000604051806040016040528060006001600160a01b03168152602001600061ffff1681525090506124d68b8260008b8b8b8b8b8b8b613719565b50505050505050508015612524576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b505050565b61253161450e565b61253d82610137541190565b6125515761255163eb49290360e01b612ebc565b61070c82612fef565b6101348054610a26906153a7565b6001600160a01b0391821660009081526101046020908152604080832093909416825291909152205460ff1690565b61259f612f84565b60006125a9612fe5565b905060006125b5611854565b90508460005b818110156127ae576125f28686838181106125d8576125d861536c565b90506020020160208101906125ed9190614c05565b6136ee565b61260657612606631a7387bd60e11b612ebc565b600061262989898481811061261d5761261d61536c565b90506020020135611472565b90506001600160a01b03811661266657836001600160a01b0316856001600160a01b031614612661576126616282b42960e81b612ebc565b612724565b806001600160a01b03166385e335b6868b8b868181106126885761268861536c565b600088815260cc60209081526040918290205491516001600160e01b031960e089901b1681526126cd969591909302013592506001600160a01b0316906004016157bc565b6020604051808303816000875af11580156126ec573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612710919061534f565b6127245761272463e10a050560e01b612ebc565b8686838181106127365761273661536c565b905060200201602081019061274b9190614c05565b60cc60008b8b868181106127615761276161536c565b90506020020135815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055505080806127a6906153f2565b9150506125bb565b507facc0f6922d8ccd133dbdaee1908d4d734f25a540223d55145e9fad2898471a4e878787876040516127e49493929190615ab5565b60405180910390a160d0546040516315bd85bf60e01b81526001600160a01b03909116906315bd85bf90612822908a908a908a908a90600401615ab5565b600060405180830381600087803b15801561283c57600080fd5b505af1158015612850573d6000803e3d6000fd5b505050505050506122696001609755565b612869612f84565b61287960408201602083016157df565b61271061ffff8216111561289757612897633daf741f60e21b612ebc565b60006128a1612fe5565b60cf549091506001600160a01b0316806128e9576128bd611854565b6001600160a01b0316826001600160a01b0316146128e4576128e46282b42960e81b612ebc565b61296c565b60405163049a5c0f60e41b81526001600160a01b038216906349a5c0f0906129179087908690600401615b0d565b602060405180830381865afa158015612934573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612958919061534f565b61296c5761296c63270e710760e21b612ebc565b8360cd61297982826157fc565b5061298c905060408501602086016157df565b61ffff1661299d6020860186614c05565b6001600160a01b03167f2c5ea6e4103e78cb101e796fb2dace540362fc542cbff5145eaa24af7dd8fe4160405160405180910390a360d0546001600160a01b031663d10072c06129f06020870187614c05565b612a0060408801602089016157df565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015261ffff166024820152604401600060405180830381600087803b158015612a4a57600080fd5b505af1158015612a5e573d6000803e3d6000fd5b5050505050505061145b6001609755565b612a77612fe5565b6001600160a01b0316856001600160a01b03161480612a9d5750612a9d856105d1612fe5565b612ab157612ab1634cd9539b60e11b612ebc565b610e14858585858561382b565b612ac6612f15565b6001600160a01b038116612b2b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401612442565b61145b816135ef565b612b3c612f84565b6000612b4783611472565b90506000612b53612fe5565b600085815261013860205260409020549091506001600160801b031680841115612b8757612b8763eeddf6ab60e01b612ebc565b6001600160a01b03831615801590612c0e57506040516301ffc9a760e01b81526001600160a01b038416906301ffc9a790612bcd9063129dae8b60e01b90600401615b33565b602060405180830381865afa158015612bea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c0e919061534f565b15612c825760405163129dae8b60e01b81526001600160a01b03838116600483015287811660248301526044820187905284169063129dae8b90606401600060405180830381600087803b158015612c6557600080fd5b505af1158015612c79573d6000803e3d6000fd5b50505050612cbb565b612c8c8683612568565b80612ca85750856001600160a01b0316826001600160a01b0316145b612cbb57612cbb6282b42960e81b612ebc565b612cc6868686613953565b612cd08482615b48565b6000868152610138602052604080822080546001600160801b0319166001600160801b03949094169390931790925560d054915163205b13af60e01b81526001600160a01b039092169163205b13af91612d349186918b918b908b90600401615b70565b600060405180830381600087803b158015612d4e57600080fd5b505af1158015612d62573d6000803e3d6000fd5b505050505050506125246001609755565b6000612d7d612f15565b612d85612f84565b6000612d928888886134ed565b85519091506001600160a01b031615612de757600081815260ce60209081526040909120865181549288015161ffff16600160a01b026001600160b01b03199093166001600160a01b03909116179190911790555b8215611a30576000808080612dfe878901896156bd565b6040805160c0810182523081526001600160601b038b1660208201526001600160a01b03808616828401526001606083015260006080830181905260a083015291516338a2f85160e21b8152959950939750919550935084169163e28be14491612e6e918890869060040161573d565b600060405180830381600087803b158015612e8857600080fd5b505af1158015612e9c573d6000803e3d6000fd5b50505050505050509050611a3c6001609755565b6060610c1760c9613a50565b61145b81613a5d565b60006001600160e01b03198216636cdb3d1360e11b1480612ef657506001600160e01b031982166303a24d0760e21b145b8061070c57506301ffc9a760e01b6001600160e01b031983161461070c565b612f1d612fe5565b6001600160a01b0316612f2e611854565b6001600160a01b0316146107db5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401612442565b60026097541415612fd75760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152606401612442565b6002609755565b6001609755565b6000610c17613a67565b612ff761450e565b506040805160a08101825260006080820181815282528381526101386020818152848320546001600160801b03600160801b8204811683870152938790529190521691810191909152606081019190915290565b6000610ca9836001600160a01b038416613a8c565b6000838152610138602090815260408083208151808301909252546001600160801b03808216808452600160801b90920416928201929092529082906130a7908590615ba4565b9050600082602001516001600160801b03161180156130d2575081602001516001600160801b031681115b156130e7576130e76352df9fe560e01b612ebc565b61310285878660405180602001604052806000815250613aa4565b6000958652610138602052604090952080546001600160801b0319166001600160801b03871617905550929392505050565b600082815260ce602090815260408083208151808301909252546001600160a01b038116808352600160a01b90910461ffff1692820192909252829161319f57506040805180820190915260cd546001600160a01b0381168252600160a01b900461ffff1660208201525b80516020820151909350612710906131bb9061ffff1686615bbc565b6131c59190615bdb565b9150509250929050565b81516131e390610135906020850190614536565b50805161252490610136906020840190614536565b81518351146132115761321163b4fa3fb360e01b612ebc565b6001600160a01b03841661322f5761322f633a954ecd60e21b612ebc565b6000613239612fe5565b905060005b845181101561331e57600085828151811061325b5761325b61536c565b6020026020010151905060008583815181106132795761327961536c565b6020908102919091018101516000848152610103835260408082206001600160a01b038e1683529093529190912054909150818110156132c3576132c3631e9acf1760e31b612ebc565b6000838152610103602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290613303908490615ba4565b9250508190555050505080613317906153f2565b905061323e565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb878760405161336e929190615bfd565b60405180910390a4613384818787878787613b7b565b613392818787878787613e22565b505050505050565b6000610ca9836001600160a01b038416613f2d565b600061070c6001600160a01b03831663440444c560e11b613f77565b81516000848152610138602090815260408083208151808301909252546001600160801b038082168352600160801b9091041691810191909152909190826134138584615bbc565b825161342891906001600160801b0316615ba4565b9050600082602001516001600160801b0316118015613453575081602001516001600160801b031681115b15613468576134686352df9fe560e01b612ebc565b60005b838110156134b9576134a78782815181106134885761348861536c565b6020026020010151898860405180602001604052806000815250613aa4565b806134b1816153f2565b91505061346b565b506000968752610138602052604090962080546001600160801b0319166001600160801b0388161790555093949350505050565b610137546000906134ff816001615ba4565b6101375560408051808201825260008082526001600160801b0387811660208085019182528684526101388152858420945191518316600160801b029190921617909255610139825291909120865161355a92880190614536565b506001600160a01b038316156135af57613573836136ee565b61358757613587631a7387bd60e11b612ebc565b600081815260cc6020526040902080546001600160a01b0319166001600160a01b0385161790555b826001600160a01b031684827f7fe7f72f14a53255f3c9e225ab1d40fdb21335b87a7912726a196fb816866ae060405160405180910390a4949350505050565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000610ca9836001600160a01b038416613f93565b816001600160a01b0316836001600160a01b031614156136805761368063ccea9e6f60e01b612ebc565b6001600160a01b0383811660008181526101046020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600061070c6001600160a01b038316633b209e2f60e11b613f77565b6001600160a01b03163b151590565b6137248a8a8a614086565b61372e86866131cf565b61373784614162565b825160005b81811015613784576137718582815181106137595761375961536c565b602002602001015160c961339a90919063ffffffff16565b508061377c816153f2565b91505061373c565b50600161013755875161379f906101349060208b0190614536565b506040516316550d7160e11b81526001600160a01b03831690632caa1ae2906137cc9030906004016148df565b600060405180830381600087803b1580156137e657600080fd5b505af11580156137fa573d6000803e3d6000fd5b505060d080546001600160a01b0319166001600160a01b039590951694909417909355505050505050505050505050565b6001600160a01b03841661384957613849633a954ecd60e21b612ebc565b6000613853612fe5565b90506000613860856141ab565b9050600061386d856141ab565b6000878152610103602090815260408083206001600160a01b038d168452909152902054909150858110156138ac576138ac631e9acf1760e31b612ebc565b6000878152610103602090815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906138ec908490615ba4565b909155505060408051888152602081018890526001600160a01b03808b16928c82169291881691600080516020615e17833981519152910160405180910390a461393a848a8a86868a613b7b565b613948848a8a8a8a8a6141f6565b505050505050505050565b6001600160a01b03831661397157613971630b07e54560e11b612ebc565b600061397b612fe5565b90506000613988846141ab565b90506000613995846141ab565b6000868152610103602090815260408083206001600160a01b038b168452909152902054909150848110156139d4576139d4631e9acf1760e31b612ebc565b6000868152610103602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a9052909290881691600080516020615e17833981519152910160405180910390a4613a4784886000868660405180602001604052806000815250613b7b565b50505050505050565b60606000610ca9836142b0565b8060005260046000fd5b6000613a723361145e565b15613a84575060131936013560601c90565b503390565b90565b60009081526001919091016020526040902054151590565b6001600160a01b038416613ac257613ac2633a954ecd60e21b612ebc565b6000613acc612fe5565b90506000613ad9856141ab565b90506000613ae6856141ab565b6000878152610103602090815260408083206001600160a01b038c168452909152812080549293508792909190613b1e908490615ba4565b909155505060408051878152602081018790526001600160a01b03808a169260009291871691600080516020615e17833981519152910160405180910390a4613b6c83600089858589613b7b565b613a47836000898989896141f6565b8251869060005b81811015613cef576000613bae878381518110613ba157613ba161536c565b6020026020010151610f02565b90506001600160a01b03811615801590613c3757506040516301ffc9a760e01b81526001600160a01b038216906301ffc9a790613bf690637af46b4f60e11b90600401615b33565b602060405180830381865afa158015613c13573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613c37919061534f565b15613cdc57806001600160a01b0316637f1eaf85858b8b8b8781518110613c6057613c6061536c565b60209081029190910101516040516001600160e01b031960e087901b1681526001600160a01b0394851660048201529284166024840152921660448201526064810191909152608401600060405180830381600087803b158015613cc357600080fd5b505af1158015613cd7573d6000803e3d6000fd5b505050505b5080613ce7816153f2565b915050613b82565b508060011415613dad5760d060009054906101000a90046001600160a01b03166001600160a01b031663205b13af83898989600081518110613d3357613d3361536c565b602002602001015189600081518110613d4e57613d4e61536c565b60200260200101516040518663ffffffff1660e01b8152600401613d76959493929190615b70565b600060405180830381600087803b158015613d9057600080fd5b505af1158015613da4573d6000803e3d6000fd5b50505050613e18565b60d05460405163bcee357960e01b81526001600160a01b039091169063bcee357990613de59085908b908b908b908b90600401615c22565b600060405180830381600087803b158015613dff57600080fd5b505af1158015613e13573d6000803e3d6000fd5b505050505b5050505050505050565b613e34846001600160a01b031661370a565b156133925760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190613e6d9089908990889088908890600401615c68565b6020604051808303816000875af1925050508015613ea8575060408051601f3d908101601f19168201909252613ea591810190615cba565b60015b613f0557613eb4615cd7565b806308c379a01415613eee5750613ec9615cf2565b80613ed45750613ef0565b8060405162461bcd60e51b81526004016124429190614717565b505b613f00637e1e096960e11b612ebc565b613392565b6001600160e01b0319811663bc197c8160e01b14613a4757613a4763c6017f5f60e01b612ebc565b6000613f398383613a8c565b613f6f5750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561070c565b50600061070c565b6000613f828361430b565b8015610ca95750610ca9838361433e565b6000818152600183016020526040812054801561407c576000613fb760018361540d565b8554909150600090613fcb9060019061540d565b9050818114614030576000866000018281548110613feb57613feb61536c565b906000526020600020015490508087600001848154811061400e5761400e61536c565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061404157614041615d7b565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061070c565b600091505061070c565b600054610100900460ff166140ad5760405162461bcd60e51b815260040161244290615d91565b602082015161271061ffff821611156140d0576140d0633daf741f60e21b612ebc565b6140d86143d2565b6140e0614401565b6140e9846135ef565b82516001600160a01b03161561413057825160cd8054602086015161ffff16600160a01b026001600160b01b03199091166001600160a01b03909316929092179190911790555b6001600160a01b038216156122695760cb80546001600160a01b0384166001600160a01b031990911617905550505050565b600054610100900460ff166141895760405162461bcd60e51b815260040161244290615d91565b606580546001600160a01b0319166001600160a01b0392909216919091179055565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106141e5576141e561536c565b602090810291909101015292915050565b614208846001600160a01b031661370a565b156133925760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906142419089908990889088908890600401615ddc565b6020604051808303816000875af192505050801561427c575060408051601f3d908101601f1916820190925261427991810190615cba565b60015b61428857613eb4615cd7565b6001600160e01b0319811663f23a6e6160e01b14613a4757613a4763c6017f5f60e01b612ebc565b606081600001805480602002602001604051908101604052809291908181526020018280548015610ef657602002820191906000526020600020905b8154815260200190600101908083116142ec5750505050509050919050565b600061431e826301ffc9a760e01b61433e565b801561070c5750614337826001600160e01b031961433e565b1592915050565b6000806301ffc9a760e01b8360405160240161435a9190615b33565b604051602081830303815290604052906001600160e01b0319166020820180516001600160e01b03838183161783525050505090506000806000602060008551602087018a617530fa92503d915060005190508280156143bb575060208210155b80156143c75750600081115b979650505050505050565b600054610100900460ff166143f95760405162461bcd60e51b815260040161244290615d91565b6107db614430565b600054610100900460ff166144285760405162461bcd60e51b815260040161244290615d91565b6107db614467565b600054610100900460ff166144575760405162461bcd60e51b815260040161244290615d91565b6107db614462612fe5565b6135ef565b600054610100900460ff16612fde5760405162461bcd60e51b815260040161244290615d91565b82805461449a906153a7565b90600052602060002090601f0160209004810192826144bc5760008555614502565b82601f106144d55782800160ff19823516178555614502565b82800160010185558215614502579182015b828111156145025782358255916020019190600101906144e7565b50610e3d9291506145aa565b6040518060800160405280606081526020016000815260200160008152602001600081525090565b828054614542906153a7565b90600052602060002090601f0160209004810192826145645760008555614502565b82601f1061457d57805160ff1916838001178555614502565b82800160010185558215614502579182015b8281111561450257825182559160200191906001019061458f565b5b80821115610e3d57600081556001016145ab565b6001600160a01b038116811461145b57600080fd5b600080604083850312156145e757600080fd5b82356145f2816145bf565b946020939093013593505050565b6001600160e01b03198116811461145b57600080fd5b60006020828403121561462857600080fd5b8135610ca981614600565b60008083601f84011261464557600080fd5b5081356001600160401b0381111561465c57600080fd5b602083019150836020828501011115610bfe57600080fd5b60008060006040848603121561468957600080fd5b8335925060208401356001600160401b038111156146a657600080fd5b6146b286828701614633565b9497909650939450505050565b60005b838110156146da5781810151838201526020016146c2565b838111156122695750506000910152565b600081518084526147038160208601602086016146bf565b601f01601f19169290920160200192915050565b602081526000610ca960208301846146eb565b60006020828403121561473c57600080fd5b5035919050565b60008083601f84011261475557600080fd5b5081356001600160401b0381111561476c57600080fd5b6020830191508360208260051b8501011115610bfe57600080fd5b6000806020838503121561479a57600080fd5b82356001600160401b038111156147b057600080fd5b6147bc85828601614743565b90969095509350505050565b60008151608084526147dd60808501826146eb565b90506020830151602085015260408301516040850152606083015160608501528091505092915050565b600081518084526020808501808196508360051b8101915082860160005b8581101561484f57828403895261483d8483516146eb565b98850198935090840190600101614825565b5091979650505050505050565b6000604082016040835280855180835260608501915060608160051b8601019250602080880160005b838110156148b357605f198887030185526148a18683516147c8565b95509382019390820190600101614885565b5050858403818701525050506148c98185614807565b95945050505050565b6001600160a01b03169052565b6001600160a01b0391909116815260200190565b60008060006060848603121561490857600080fd5b83359250602084013561491a816145bf565b929592945050506040919091013590565b6000806040838503121561493e57600080fd5b50508035926020909101359150565b6001600160a01b03929092168252602082015260400190565b6000806000806000806060878903121561497f57600080fd5b86356001600160401b038082111561499657600080fd5b6149a28a838b01614633565b909850965060208901359150808211156149bb57600080fd5b6149c78a838b01614633565b909650945060408901359150808211156149e057600080fd5b506149ed89828a01614633565b979a9699509497509295939492505050565b634e487b7160e01b600052604160045260246000fd5b601f8201601f191681016001600160401b0381118282101715614a3a57614a3a6149ff565b6040525050565b60006001600160401b03821115614a5a57614a5a6149ff565b5060051b60200190565b600082601f830112614a7557600080fd5b81356020614a8282614a41565b604051614a8f8282614a15565b83815260059390931b8501820192828101915086841115614aaf57600080fd5b8286015b84811015614aca5780358352918301918301614ab3565b509695505050505050565b60006001600160401b03821115614aee57614aee6149ff565b50601f01601f191660200190565b600082601f830112614b0d57600080fd5b8135614b1881614ad5565b604051614b258282614a15565b828152856020848701011115614b3a57600080fd5b82602086016020830137600092810160200192909252509392505050565b600080600080600060a08688031215614b7057600080fd5b8535614b7b816145bf565b94506020860135614b8b816145bf565b935060408601356001600160401b0380821115614ba757600080fd5b614bb389838a01614a64565b94506060880135915080821115614bc957600080fd5b614bd589838a01614a64565b93506080880135915080821115614beb57600080fd5b50614bf888828901614afc565b9150509295509295909350565b600060208284031215614c1757600080fd5b8135610ca9816145bf565b600082601f830112614c3357600080fd5b81356020614c4082614a41565b604051614c4d8282614a15565b83815260059390931b8501820192828101915086841115614c6d57600080fd5b8286015b84811015614aca578035614c84816145bf565b8352918301918301614c71565b60008060408385031215614ca457600080fd5b82356001600160401b0380821115614cbb57600080fd5b614cc786838701614c22565b93506020850135915080821115614cdd57600080fd5b506131c585828601614a64565b600081518084526020808501945080840160005b83811015614d1a57815187529582019590820190600101614cfe565b509495945050505050565b602081526000610ca96020830184614cea565b600080600060608486031215614d4d57600080fd5b8335925060208401356001600160401b03811115614d6a57600080fd5b614d7686828701614c22565b925050604084013590509250925092565b61ffff8116811461145b57600080fd5b600060408284031215614da957600080fd5b604080519081016001600160401b0381118282101715614dcb57614dcb6149ff565b6040529050808235614ddc816145bf565b81526020830135614dec81614d87565b6020919091015292915050565b60008060008060008060008060e0898b031215614e1557600080fd5b88356001600160401b0380821115614e2c57600080fd5b614e388c838d01614afc565b995060208b0135985060408b01359150614e51826145bf565b819750614e618c60608d01614d97565b965060a08b0135915080821115614e7757600080fd5b614e838c838d01614633565b909650945060c08b0135915080821115614e9c57600080fd5b50614ea98b828c01614633565b999c989b5096995094979396929594505050565b60008060008060008060c08789031215614ed657600080fd5b86356001600160401b0380821115614eed57600080fd5b614ef98a838b01614afc565b97506020890135965060408901359150614f12826145bf565b819550614f228a60608b01614d97565b945060a08901359150808211156149e057600080fd5b60008060408385031215614f4b57600080fd5b8235915060208301356001600160401b03811115614f6857600080fd5b6131c585828601614c22565b801515811461145b57600080fd5b60008060408385031215614f9557600080fd5b8235614fa0816145bf565b91506020830135614fb081614f74565b809150509250929050565b60008060408385031215614fce57600080fd5b8235915060208301356001600160801b0381168114614fb057600080fd5b60008060408385031215614fff57600080fd5b823591506020830135614fb0816145bf565b6000806000806040858703121561502757600080fd5b84356001600160401b038082111561503e57600080fd5b61504a88838901614743565b9096509450602087013591508082111561506357600080fd5b818701915087601f83011261507757600080fd5b81358181111561508657600080fd5b8860208260061b850101111561509b57600080fd5b95989497505060200194505050565b600080604083850312156150bd57600080fd5b82356150c8816145bf565b915060208301356001600160401b038111156150e357600080fd5b6131c585828601614afc565b602081526000610ca960208301846147c8565b6000806040838503121561511557600080fd5b8235615120816145bf565b91506020830135614fb0816145bf565b6000806000806040858703121561514657600080fd5b84356001600160401b038082111561515d57600080fd5b61516988838901614743565b9096509450602087013591508082111561518257600080fd5b5061518f87828801614743565b95989497509550505050565b60006040828403121561149b57600080fd5b600080600080600060a086880312156151c557600080fd5b85356151d0816145bf565b945060208601356151e0816145bf565b9350604086013592506060860135915060808601356001600160401b0381111561520957600080fd5b614bf888828901614afc565b60008060006060848603121561522a57600080fd5b8335615235816145bf565b95602085013595506040909401359392505050565b6001600160801b0392831681529116602082015260400190565b6020808252825182820181905260009190848201906040850190845b818110156152a55783516001600160a01b031683529284019291840191600101615280565b50909695505050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b6001600160a01b038781168252861660208201526040810185905260a06060820181905260009061530e90830185876152b1565b90506007831061532e57634e487b7160e01b600052602160045260246000fd5b826080830152979650505050505050565b805161534a81614f74565b919050565b60006020828403121561536157600080fd5b8151610ca981614f74565b634e487b7160e01b600052603260045260246000fd5b6040815260006153956040830185614cea565b82810360208401526148c98185614807565b600181811c908216806153bb57607f821691505b6020821081141561149b57634e487b7160e01b600052602260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000600019821415615406576154066153dc565b5060010190565b60008282101561541f5761541f6153dc565b500390565b60608152600061543860608301888a6152b1565b828103602084015261544b8187896152b1565b905082810360408401526154608185876152b1565b9998505050505050505050565b6001600160a01b039290921682521515602082015260400190565b81835260006001600160fb1b038311156154a157600080fd5b8260051b8083602087013760009401602001938452509192915050565b6020815260006154d2602083018486615488565b949350505050565b803565ffffffffffff8116811461534a57600080fd5b60008060008060008060008060006101208a8c03121561550f57600080fd5b893561551a816145bf565b985060208a013561552a816145bf565b975061553860408b016154da565b965061554660608b016154da565b955060808a01356001600160c01b038116811461556257600080fd5b945061557060a08b016154da565b935061557e60c08b016154da565b925061558c60e08b016154da565b91506101008a013561559d816145bf565b809150509295985092959850929598565b65ffffffffffff169052565b60006101c0820190506155ce8284516148d2565b60208301516155e060208401826155ae565b5060408301516155f360408401826155ae565b50606083015161560660608401826148d2565b50608083015161561960808401826155ae565b5060a083015161562c60a08401826155ae565b5060c083015161563f60c08401826148d2565b5060e083015161565260e08401826155ae565b5061010080840151615666828501826155ae565b5050610120838101516001600160c01b0316908301526101408084015161568f828501826155ae565b505061016083810151151590830152610180808401511515908301526101a092830151929091019190915290565b600080600080608085870312156156d357600080fd5b84356001600160601b03811681146156ea57600080fd5b935060208501356156fa816145bf565b9250604085013561570a816145bf565b915060608501356001600160401b0381111561572557600080fd5b61573187828801614afc565b91505092959194509250565b83516001600160a01b0390811682526020808601516001600160601b0316908301526040808601519091169082015260608085015115159082015260808085015115159082015260a08481015115159082015260006101006157aa60c08401866001600160601b03169052565b8060e0840152611a3c818401856146eb565b6001600160a01b0393841681526020810192909252909116604082015260600190565b6000602082840312156157f157600080fd5b8135610ca981614d87565b8135615807816145bf565b81546001600160a01b031981166001600160a01b03929092169182178355602084013561583381614d87565b6001600160b01b03199190911690911760a09190911b61ffff60a01b1617905550565b8035615861816145bf565b6001600160a01b03168252602081013561587a81614d87565b61ffff81166020840152505050565b8381526080810161589d6020830185615856565b6001600160a01b03929092166060919091015292915050565b600060408083526158ca8184018789615488565b83810360208086019190915285825286910160005b86811015615901576158f18284615856565b91830191908301906001016158df565b5098975050505050505050565b600082601f83011261591f57600080fd5b815161592a81614ad5565b6040516159378282614a15565b82815285602084870101111561594c57600080fd5b6148c98360208301602088016146bf565b805161534a816145bf565b600082601f83011261597957600080fd5b8151602061598682614a41565b6040516159938282614a15565b83815260059390931b85018201928281019150868411156159b357600080fd5b8286015b84811015614aca5780516159ca816145bf565b83529183019183016159b7565b600080600080600080600060e0888a0312156159f257600080fd5b87516001600160401b0380821115615a0957600080fd5b615a158b838c0161590e565b985060208a0151915080821115615a2b57600080fd5b615a378b838c0161590e565b975060408a0151915080821115615a4d57600080fd5b615a598b838c0161590e565b9650615a6760608b0161595d565b955060808a0151915080821115615a7d57600080fd5b50615a8a8a828b01615968565b935050615a9960a0890161533f565b9150615aa760c0890161595d565b905092959891949750929550565b604081526000615ac9604083018688615488565b8281036020848101919091528482528591810160005b86811015615901578335615af2816145bf565b6001600160a01b031682529282019290820190600101615adf565b60608101615b1b8285615856565b6001600160a01b039290921660409190910152919050565b6001600160e01b031991909116815260200190565b60006001600160801b0383811690831681811015615b6857615b686153dc565b039392505050565b6001600160a01b03958616815293851660208501529190931660408301526060820192909252608081019190915260a00190565b60008219821115615bb757615bb76153dc565b500190565b6000816000190483118215151615615bd657615bd66153dc565b500290565b600082615bf857634e487b7160e01b600052601260045260246000fd5b500490565b604081526000615c106040830185614cea565b82810360208401526148c98185614cea565b6001600160a01b03868116825285811660208301528416604082015260a060608201819052600090615c5690830185614cea565b82810360808401526117b88185614cea565b6001600160a01b0386811682528516602082015260a060408201819052600090615c9490830186614cea565b8281036060840152615ca68186614cea565b905082810360808401526117b881856146eb565b600060208284031215615ccc57600080fd5b8151610ca981614600565b600060033d1115613a895760046000803e5060005160e01c90565b600060443d1015615d005790565b6040516003193d81016004833e81513d6001600160401b038083116024840183101715615d2f57505050505090565b8285019150815181811115615d475750505050505090565b843d8701016020828501011115615d615750505050505090565b615d7060208286010187614a15565b509095945050505050565b634e487b7160e01b600052603160045260246000fd5b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b6001600160a01b03868116825285166020820152604081018490526060810183905260a0608082018190526000906143c7908301846146eb56fec3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62c407dfe559ca4a63d7cf8439b9fce2965d7a4c8c92eb5d5047f53bb9eec295fd73e05f4c0a27cbf60841afa4a2f8577f5e99db3e3e9c293800d6e6b1f7b8a7abe236d251e7da4ac8a3c275f80aebc9b74cbf356425fa04864da5043511a81219a164736f6c634300080a000a