0 txs
0 calls
constructor
constructor(uint256 fairxyzMintFee_, address fairxyzReceiver_, address fairxyzSigner_, address fairxyzStagesRegistry_, uint256 maxRecipientsPerAirdrop_, address operatorFilterRegistry_, address operatorFilterSubscription_)
functions
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
DEFAULT_SUBSCRIPTION_ADDRESS
viewfunction DEFAULT_SUBSCRIPTION_ADDRESS() view returns (address)
editionTotalSupply
viewfunction editionTotalSupply(uint256 editionId) view returns (uint256)
getEdition
viewfunction getEdition(uint256 editionId) view returns (tuple)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
isApprovedForAll
viewfunction isApprovedForAll(address account, address operator) view returns (bool)
name
viewfunction name() view returns (string)
operatorFilterDisabled
viewfunction operatorFilterDisabled() view returns (bool)
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
pendingOwner
viewfunction pendingOwner() view returns (address)
REGISTRY_ADDRESS
viewfunction REGISTRY_ADDRESS() view returns (address)
royaltyInfo
viewfunction royaltyInfo(uint256 tokenId, uint256 salePrice) view returns (address receiver, uint256 royaltyAmount)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
totalSupply
viewfunction totalSupply() view returns (uint256 supply)
uri
viewfunction uri(uint256 id) view returns (string)
acceptOwnership
nonpayablefunction acceptOwnership()
airdropEdition
nonpayablefunction airdropEdition(uint256 editionId, uint256 quantity, address[] recipients)
burn
nonpayablefunction burn(address from, uint256 editionId, uint256 amount)
createEditions
nonpayablefunction createEditions(tuple[] editions)
deleteEdition
nonpayablefunction deleteEdition(uint256 editionId)
grantDefaultAdmin
nonpayablefunction grantDefaultAdmin(address admin)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(string name_, string symbol_, address owner_, uint96 defaultRoyalty_, tuple[] editions_, bool operatorFilterEnabled_)
mintEdition
payablefunction mintEdition(uint256 editionId, address recipient, uint256 quantity, uint40 signatureNonce, uint256 signatureMaxMints, bytes signature) payable
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
pause
nonpayablefunction pause()
releaseEditionSignature
nonpayablefunction releaseEditionSignature(uint256 editionId)
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
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)
setDefaultRoyalty
nonpayablefunction setDefaultRoyalty(address receiver, uint96 royaltyFraction)
setEditionBurnable
nonpayablefunction setEditionBurnable(uint256 editionId, bool burnable)
setEditionMaxMintsPerWallet
nonpayablefunction setEditionMaxMintsPerWallet(uint256 editionId, uint40 maxMintsPerWallet)
setEditionMaxSupply
nonpayablefunction setEditionMaxSupply(uint256 editionId, uint40 maxSupply)
setEditionRoyalty
nonpayablefunction setEditionRoyalty(uint256 editionId, address receiver, uint96 royaltyFraction)
setEditionStages
nonpayablefunction setEditionStages(uint256 editionId, uint256 fromIndex, tuple[] stages)
setEditionURI
nonpayablefunction setEditionURI(uint256 editionId, string uri)
setPrimarySaleReceiver
nonpayablefunction setPrimarySaleReceiver(address primarySaleReceiver)
toggleOperatorFilterDisabled
nonpayablefunction toggleOperatorFilterDisabled()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
withdraw
nonpayablefunction withdraw()
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
BatchMetadataUpdate
event BatchMetadataUpdate(uint256 _fromTokenId, uint256 _toTokenId)
DefaultRoyalty
event DefaultRoyalty(address receiver, uint96 royaltyFraction)
EditionAirdrop
event EditionAirdrop(uint256 indexed editionId, uint256 indexed stageIndex, address[] recipients, uint256 quantity, uint256 editionMintedCount)
EditionBurnable
event EditionBurnable(uint256 indexed editionId, bool burnable)
EditionCreated
event EditionCreated(uint256 indexed editionId, uint256 externalId, (uint40 maxMintsPerWallet, uint40 maxSupply, bool burnable, bool signatureReleased, bool soulbound) edition)
EditionDeleted
event EditionDeleted(uint256 indexed editionId)
EditionMaxMintsPerWallet
event EditionMaxMintsPerWallet(uint256 indexed editionId, uint256 maxMintsPerWallet)
EditionMaxSupply
event EditionMaxSupply(uint256 indexed editionId, uint256 maxSupply)
EditionRoyalty
event EditionRoyalty(uint256 indexed editionId, address receiver, uint96 royaltyFraction)
EditionSignatureReleased
event EditionSignatureReleased(uint256 indexed editionId)
EditionStageMint
event EditionStageMint(uint256 indexed editionId, uint256 indexed stageIndex, address indexed recipient, uint256 quantity, uint256 editionMintedCount)
EditionURI
event EditionURI(uint256 indexed editionId, string uri)
Initialized
event Initialized(uint8 version)
MetadataUpdate
event MetadataUpdate(uint256 _tokenId)
OperatorFilterDisabled
event OperatorFilterDisabled(bool disabled)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
PrimarySaleReceiver
event PrimarySaleReceiver(address primarySaleReceiver_)
RoleAdminChanged
event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole)
RoleGranted
event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender)
RoleRevoked
event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender)
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)
Unpaused
event Unpaused(address account)
URI
event URI(string value, uint256 indexed id)
errors
EditionAlreadyMinted
error EditionAlreadyMinted()
EditionDoesNotExist
error EditionDoesNotExist()
EditionSignatureAlreadyReleased
error EditionSignatureAlreadyReleased()
EditionSupplyCanOnlyBeReduced
error EditionSupplyCanOnlyBeReduced()
EditionSupplyLessThanMintedCount
error EditionSupplyLessThanMintedCount()
EditionSupplyLessThanScheduledStagesPhaseLimit
error EditionSupplyLessThanScheduledStagesPhaseLimit()
EditionSupplyTooLarge
error EditionSupplyTooLarge()
IncorrectEthValue
error IncorrectEthValue()
InvalidMintQuantity
error InvalidMintQuantity()
InvalidNumberOfRecipients
error InvalidNumberOfRecipients()
InvalidRoyaltyFraction
error InvalidRoyaltyFraction()
InvalidSignature
error InvalidSignature()
InvalidSignatureNonce
error InvalidSignatureNonce()
InvalidURI
error InvalidURI()
NotApprovedOrOwner
error NotApprovedOrOwner()
NotBurnable
error NotBurnable()
NotEnoughSupplyRemaining
error NotEnoughSupplyRemaining()
NotTransferable
error NotTransferable()
OnlyAdmin
error OnlyAdmin()
RecipientAllowanceUsed
error RecipientAllowanceUsed()
RecipientEditionAllowanceUsed
error RecipientEditionAllowanceUsed()
RecipientStageAllowanceUsed
error RecipientStageAllowanceUsed()
SignatureAlreadyUsed
error SignatureAlreadyUsed()
SignatureExpired
error SignatureExpired()
StageSoldOut
error StageSoldOut()
TokenDoesNotExist
error TokenDoesNotExist()
ZeroAddress
error ZeroAddress()
creation bytecode
0x6101806040523480156200001257600080fd5b506040516200616138038062006161833981016040819052620000359162000187565b6001600160a01b0380831660805280821660a05260c088905280871660e0528086166101005284166101205264ffffffffff61014081905261016084905287908790879087908762000086620000a9565b5050505050506200009c620000a960201b60201c565b505050505050506200020a565b600054610100900460ff1615620001165760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161462000168576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b80516001600160a01b03811681146200018257600080fd5b919050565b600080600080600080600060e0888a031215620001a357600080fd5b87519650620001b5602089016200016a565b9550620001c5604089016200016a565b9450620001d5606089016200016a565b935060808801519250620001ec60a089016200016a565b9150620001fc60c089016200016a565b905092959891949750929550565b60805160a05160c05160e05161010051610120516101405161016051615e81620002e06000396000612332015260008181612cc0015281816131ac01526137a4015260008181610c89015281816111f90152818161128801528181611d200152818161243a015261342401526000612b3a0152600061104e015260008181610d3a01526110700152600081816105a80152818161428601526142d301526000818161086101528181611f6501528181611fc801528181613db101528181613e2d0152818161425201526142fb0152615e816000f3fe60806040526004361061032c5760003560e01c8063715018a6116101a5578063ac9650d8116100ec578063e30c397811610095578063f242432a1161006f578063f242432a14610985578063f2fde38b146109a5578063f4c04ec0146109c5578063f5298aca146109e557600080fd5b8063e30c3978146108fd578063e62f774f1461091c578063e985e9c51461093c57600080fd5b8063d547741f116100c6578063d547741f1461089d578063d675fee7146108bd578063dd6044ee146108dd57600080fd5b8063ac9650d814610822578063bd3bf7f31461084f578063c0dad79b1461088357600080fd5b80639188570b1161014e578063a217fddf11610128578063a217fddf146107c0578063a22cb465146107d5578063a642c032146107f557600080fd5b80639188570b1461074557806391d148541461076557806395d89b41146107ab57600080fd5b80637dbf7ef01161017f5780637dbf7ef0146106f15780638456cb59146107115780638da5cb5b1461072657600080fd5b8063715018a6146106b257806372c06f5a146106c757806379ba5097146106dc57600080fd5b80632eb2c2d61161027457806336568abe1161021d5780634e1273f4116101f75780634e1273f41461062c57806350d331c2146106595780635c975abb1461067957806365a79c8d1461069257600080fd5b806336568abe146105e25780633ccfd60b146106025780633f4ba83a1461061757600080fd5b806331fa47731161024e57806331fa47731461055657806333fd20e01461057657806335c133d11461059657600080fd5b80632eb2c2d6146104f65780632ed1fd80146105165780632f2ff15d1461053657600080fd5b80630e89341c116102d6578063248a9ca3116102b0578063248a9ca3146104675780632a55205a146104975780632c20722c146104d657600080fd5b80630e89341c1461041257806318160ddd1461043257806322aba6701461044757600080fd5b80630690a78d116103075780630690a78d146103bd57806306fdde03146103dd5780630c267ed6146103ff57600080fd5b8062fdd58e1461033857806301ffc9a71461036b57806304634d8d1461039b57600080fd5b3661033357005b600080fd5b34801561034457600080fd5b50610358610353366004614c0c565b610a05565b6040519081526020015b60405180910390f35b34801561037757600080fd5b5061038b610386366004614c4c565b610ab3565b6040519015158152602001610362565b3480156103a757600080fd5b506103bb6103b6366004614c7e565b610ae7565b005b3480156103c957600080fd5b506103bb6103d8366004614cb5565b610aff565b3480156103e957600080fd5b506103f2610bd8565b6040516103629190614d81565b6103bb61040d366004614e84565b610c67565b34801561041e57600080fd5b506103f261042d366004614f00565b6110be565b34801561043e57600080fd5b50610358611180565b34801561045357600080fd5b506103bb610462366004614f19565b6111b0565b34801561047357600080fd5b50610358610482366004614f00565b600090815260c9602052604090206001015490565b3480156104a357600080fd5b506104b76104b2366004614f9c565b611345565b604080516001600160a01b039093168352602083019190915201610362565b3480156104e257600080fd5b506103bb6104f1366004614fbe565b6113f1565b34801561050257600080fd5b506103bb610511366004615078565b611492565b34801561052257600080fd5b506103bb610531366004615122565b61151e565b34801561054257600080fd5b506103bb610551366004615162565b611679565b34801561056257600080fd5b506103bb6105713660046151d3565b6116a3565b34801561058257600080fd5b506103bb610591366004614f00565b6116c4565b3480156105a257600080fd5b506105ca7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b039091168152602001610362565b3480156105ee57600080fd5b506103bb6105fd366004615162565b61178d565b34801561060e57600080fd5b506103bb611815565b34801561062357600080fd5b506103bb611838565b34801561063857600080fd5b5061064c610647366004615282565b61184a565b6040516103629190615317565b34801561066557600080fd5b50610358610674366004614f00565b611988565b34801561068557600080fd5b506101915460ff1661038b565b34801561069e57600080fd5b506103bb6106ad366004615338565b6119ae565b3480156106be57600080fd5b506103bb611b1e565b3480156106d357600080fd5b506103bb611b30565b3480156106e857600080fd5b506103bb611ba1565b3480156106fd57600080fd5b506103bb61070c366004614fbe565b611c30565b34801561071d57600080fd5b506103bb611ec0565b34801561073257600080fd5b5061012d546001600160a01b03166105ca565b34801561075157600080fd5b506103bb610760366004615400565b611ed2565b34801561077157600080fd5b5061038b610780366004615162565b600091825260c9602090815260408084206001600160a01b0393909316845291905290205460ff1690565b3480156107b757600080fd5b506103f2611f52565b3480156107cc57600080fd5b50610358600081565b3480156107e157600080fd5b506103bb6107f036600461541b565b611f60565b34801561080157600080fd5b50610815610810366004614f00565b61203f565b6040516103629190615447565b34801561082e57600080fd5b5061084261083d3660046151d3565b612109565b6040516103629190615491565b34801561085b57600080fd5b506105ca7f000000000000000000000000000000000000000000000000000000000000000081565b34801561088f57600080fd5b5060975461038b9060ff1681565b3480156108a957600080fd5b506103bb6108b8366004615162565b6121fe565b3480156108c957600080fd5b506103bb6108d8366004614f00565b612223565b3480156108e957600080fd5b506103bb6108f83660046154f3565b612298565b34801561090957600080fd5b5061015f546001600160a01b03166105ca565b34801561092857600080fd5b506103bb610937366004615400565b612510565b34801561094857600080fd5b5061038b610957366004615543565b6001600160a01b03918216600090815260666020908152604080832093909416825291909152205460ff1690565b34801561099157600080fd5b506103bb6109a036600461556d565b612523565b3480156109b157600080fd5b506103bb6109c0366004615400565b6125af565b3480156109d157600080fd5b506103bb6109e03660046155d2565b612622565b3480156109f157600080fd5b506103bb610a003660046155f7565b6126c3565b60006001600160a01b038316610a885760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a2061646472657373207a65726f206973206e6f742061207660448201527f616c6964206f776e65720000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b5060008181526065602090815260408083206001600160a01b03861684529091529020545b92915050565b60006001600160e01b03198216637a94c56560e11b1480610ad85750610ad88261278d565b80610aad5750610aad826127dd565b610af1600061281d565b610afb828261283a565b5050565b610b16600080516020615e0583398151915261281d565b82610b2081612926565b610b3d5760405163eb49290360e01b815260040160405180910390fd5b610b7d8484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061296692505050565b600084815261022d602052604090205415610bd257610bd28484848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506129de92505050565b50505050565b6102598054610be69061562a565b80601f0160208091040260200160405190810160405280929190818152602001828054610c129061562a565b8015610c5f5780601f10610c3457610100808354040283529160200191610c5f565b820191906000526020600020905b815481529060010190602001808311610c4257829003601f168201915b505050505081565b610c6f612a0e565b610c848686868664ffffffffff168686612a62565b6000807f00000000000000000000000000000000000000000000000000000000000000006040517fff0784f4000000000000000000000000000000000000000000000000000000008152306004820152602481018a90526001600160a01b03919091169063ff0784f49060440160c060405180830381865afa158015610d0e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d32919061565e565b9150915060007f000000000000000000000000000000000000000000000000000000000000000082608001516001600160601b0316610d719190615712565b9050610d7d8188615725565b3414610d9c5760405163ab0a033b60e01b815260040160405180910390fd5b600061022e60008b815260200190815260200160002060008a6001600160a01b03166001600160a01b031681526020019081526020016000206040518060400160405290816000820160009054906101000a900464ffffffffff1664ffffffffff1664ffffffffff1681526020016000820160059054906101000a900464ffffffffff1664ffffffffff1664ffffffffff16815250509050600061023060008c8152602001908152602001600020600086815260200190815260200160002060008b6001600160a01b03166001600160a01b03168152602001908152602001600020549050600061022d60008d81526020019081526020016000205490506000610eb68b8e8489886000015164ffffffffff16888f612b95565b905060405180604001604052808286600001510164ffffffffff1681526020018b64ffffffffff1681525061022e60008f815260200190815260200160002060008e6001600160a01b03166001600160a01b0316815260200190815260200160002060008201518160000160006101000a81548164ffffffffff021916908364ffffffffff16021790555060208201518160000160056101000a81548164ffffffffff021916908364ffffffffff1602179055509050508061023060008f8152602001908152602001600020600089815260200190815260200160002060008e6001600160a01b03166001600160a01b03168152602001908152602001600020600082825401925050819055508061022d60008f815260200190815260200160002060008282540192505081905550610ff18c8e8385612d28565b8b6001600160a01b0316878e7fe7ffccd3613f31162a107541c97a5e4d366eb71ad77d4a6b41dad5f3538d039884858701604051611039929190918252602082015260400190565b60405180910390a46110966001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000167f00000000000000000000000000000000000000000000000000000000000000008302612d64565b8a8110156110af57808b0385026110ad3382612d64565b505b50505050505050505050505050565b60606110c982612926565b6110e157505060408051602081019091526000815290565b60008281526102316020526040902080546110fb9061562a565b80601f01602080910402602001604051908101604052809291908181526020018280546111279061562a565b80156111745780601f1061114957610100808354040283529160200191611174565b820191906000526020600020905b81548152906001019060200180831161115757829003601f168201915b50505050509050919050565b600060015b6102295481116111ac5761119881611988565b6111a29083615712565b9150600101611185565b5090565b6111c7600080516020615e0583398151915261281d565b836111d181612926565b6111ee5760405163eb49290360e01b815260040160405180910390fd5b6000829003611286577f00000000000000000000000000000000000000000000000000000000000000006040516322a4b15b60e11b815230600482015260248101879052604481018690526001600160a01b03919091169063454962b690606401600060405180830381600087803b15801561126957600080fd5b505af115801561127d573d6000803e3d6000fd5b5050505061133e565b7f0000000000000000000000000000000000000000000000000000000000000000600086815261022d602090815260408083205461022a909252918290205491516322d0be1160e01b81526001600160a01b0393909316926322d0be119261130b9230928b928b928b928b9265010000000000900464ffffffffff16906004016157dc565b600060405180830381600087803b15801561132557600080fd5b505af1158015611339573d6000803e3d6000fd5b505050505b5050505050565b600082815261022f602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b03169282019290925282916113bc575060408051808201909152610228546001600160a01b0381168252600160a01b90046001600160601b031660208201525b80516020820151909350612710906113dd906001600160601b031686615725565b6113e7919061582c565b9150509250929050565b611408600080516020615e0583398151915261281d565b8161141281612926565b61142f5760405163eb49290360e01b815260040160405180910390fd5b600083815261022a6020908152604091829020805464ffffffffff191664ffffffffff8616908117909155915191825284917fd5326a6054dc610ac8935df7ac3f2a773f84d8c60fb33ccf2010f0fef6b4930a91015b60405180910390a2505050565b6001600160a01b0385163314806114ae57506114ae8533610957565b6115115760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610a7f565b61133e8585858585612e7d565b611535600080516020615e0583398151915261281d565b8261153f81612926565b61155c5760405163eb49290360e01b815260040160405180910390fd5b816001600160601b03166127108111156115895760405163d28e6cff60e01b815260040160405180910390fd5b6001600160a01b0384166115ea57600085815261022f6020908152604080832083905580518381529182019290925286917f01f7eea6f4ba148de2d620a5591f54b4d17e63b7d6438a6ed3ab01aae9593eee910160405180910390a261133e565b6040805180820182526001600160a01b038681168083526001600160601b03878116602080860182815260008d815261022f835288902096519051909316600160a01b02929094169190911790935583519081529081019190915286917f01f7eea6f4ba148de2d620a5591f54b4d17e63b7d6438a6ed3ab01aae9593eee910160405180910390a25050505050565b600082815260c960205260409020600101546116948161281d565b61169e83836130f9565b505050565b6116ba600080516020615e0583398151915261281d565b610afb828261319b565b6116db600080516020615e0583398151915261281d565b806116e581612926565b6117025760405163eb49290360e01b815260040160405180910390fd5b600082815261022a6020526040902054600160581b900460ff161561173a57604051631a4ae4f360e21b815260040160405180910390fd5b600082815261022a602052604080822080546bff00000000000000000000001916600160581b1790555183917f677fde77e48b5086920a2acd2f6578cff669f61b52dcf91a3c5e27abd5d1706791a25050565b6001600160a01b038116331461180b5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201527f20726f6c657320666f722073656c6600000000000000000000000000000000006064820152608401610a7f565b610afb82826134f5565b61181f600061281d565b61022754611836906001600160a01b031647612d64565b565b611842600061281d565b611836613578565b606081518351146118c35760405162461bcd60e51b815260206004820152602960248201527f455243313135353a206163636f756e747320616e6420696473206c656e67746860448201527f206d69736d6174636800000000000000000000000000000000000000000000006064820152608401610a7f565b6000835167ffffffffffffffff8111156118df576118df614da7565b604051908082528060200260200182016040528015611908578160200160208202803683370190505b50905060005b84518110156119805761195385828151811061192c5761192c61584e565b60200260200101518583815181106119465761194661584e565b6020026020010151610a05565b8282815181106119655761196561584e565b602090810291909101015261197981615864565b905061190e565b509392505050565b600081815261022c602090815260408083205461022d909252822054610aad919061587d565b600054610100900460ff16158080156119ce5750600054600160ff909116105b806119e85750303b1580156119e8575060005460ff166001145b611a5a5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610a7f565b6000805460ff191660011790558015611a7d576000805461ff0019166101001790555b611a86866135cb565b611a8f8261363f565b611a99848461319b565b6001600160601b03851615611ab257611ab2868661283a565b610259611abf89826158d6565b5061025a611acd88826158d6565b508015611b14576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050505050565b611b266136b3565b611836600061370e565b611b3933613728565b611b5657604051634755657960e01b815260040160405180910390fd5b6097805460ff81161560ff1990911681179091556040518181527fd8c469bcb7a4be6d69103a5fdb65991249a95423350dc583495ccf5e7c28a88d906020015b60405180910390a150565b61015f5433906001600160a01b03168114611c245760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f74207468652060448201527f6e6577206f776e657200000000000000000000000000000000000000000000006064820152608401610a7f565b611c2d8161370e565b50565b611c47600080516020615e0583398151915261281d565b81611c5181612926565b611c6e5760405163eb49290360e01b815260040160405180910390fd5b8164ffffffffff16600003611c96576040516353f9e27b60e01b815260040160405180910390fd5b600083815261022a6020526040902054611cbf9065010000000000900464ffffffffff16613797565b8264ffffffffff1610611ce5576040516353f9e27b60e01b815260040160405180910390fd5b600083815261022d602052604090205464ffffffffff83161015611d1c5760405163531386e160e11b815260040160405180910390fd5b60007f00000000000000000000000000000000000000000000000000000000000000006040516319324e8560e31b8152306004820152602481018690526001600160a01b03919091169063c99274289060440160c060405180830381865afa158015611d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611db0919061565e565b805190925064ffffffffff161580159150611de9575042816020015164ffffffffff16101580611de95750602081015164ffffffffff16155b15611e4d57806060015164ffffffffff16600003611e1a57604051635d3cc31b60e01b815260040160405180910390fd5b806060015164ffffffffff168364ffffffffff161015611e4d57604051635d3cc31b60e01b815260040160405180910390fd5b600084815261022a6020908152604091829020805469ffffffffff000000000019166501000000000064ffffffffff881690810291909117909155915191825285917faec45f6ac9c6eff7c48277895ee5bfcddc83ef921ce67de1131588b3d4595745910160405180910390a250505050565b611eca600061281d565b6118366137d0565b611edc600061281d565b6001600160a01b038116611f035760405163d92e233d60e01b815260040160405180910390fd5b61022780546001600160a01b0319166001600160a01b0383169081179091556040519081527f9e9a2b03c288d52a74c3df0782024fc542900a071656ab80d6a0a9fa7dac4efb90602001611b96565b61025a8054610be69061562a565b8160007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b118015611f9e575060975460ff16155b1561203557604051633185c44d60e21b81523060048201526001600160a01b0382811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063c617113490604401602060405180830381865afa15801561200f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120339190615996565b505b61169e838361380e565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091528161207481612926565b6120915760405163eb49290360e01b815260040160405180910390fd5b600083815261022a6020908152604091829020825160a081018452905464ffffffffff8082168352650100000000008204169282019290925260ff600160501b83048116151593820193909352600160581b8204831615156060820152600160601b9091049091161515608082015291505b50919050565b60608167ffffffffffffffff81111561212457612124614da7565b60405190808252806020026020018201604052801561215757816020015b60608152602001906001900390816121425790505b50905060005b828110156121f7576121c73085858481811061217b5761217b61584e565b905060200281019061218d91906159b3565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061381992505050565b8282815181106121d9576121d961584e565b602002602001018190525080806121ef90615864565b91505061215d565b5092915050565b600082815260c960205260409020600101546122198161281d565b61169e83836134f5565b61223a600080516020615e0583398151915261281d565b8061224481612926565b6122615760405163eb49290360e01b815260040160405180910390fd5b600082815261022d60205260409020541561228f57604051632d1f2ea160e11b815260040160405180910390fd5b610afb82613845565b3360009081527f84b453f120a73c63d7585f415b66c181abba0fec178367e8fe03a594c35cdc5c602052604090205460ff166122f7576122f77fd8d9f31cbc479b1a40a972bfa9e3c5573c1526777b06ee93042d7a96dde464ab61281d565b8261230181612926565b61231e5760405163eb49290360e01b815260040160405180910390fd5b612326612a0e565b815180158061235457507f000000000000000000000000000000000000000000000000000000000000000081115b156123725760405163ce43e37760e01b815260040160405180910390fd5b600061237e8583615725565b600087815261022d602090815260408083205461022a90925290912054919250906123b89065010000000000900464ffffffffff16613797565b6123c28284615712565b11156123e15760405163740f8e6d60e11b815260040160405180910390fd5b6123eb8282615712565b600088815261022d60205260408120919091555b60008682815181106124135761241361584e565b60200260200101519050612429818a8a86612d28565b50908601906001018381106123ff577f000000000000000000000000000000000000000000000000000000000000000060405163169655c960e21b8152306004820152602481018a90526001600160a01b039190911690635a59572490604401602060405180830381865afa1580156124a6573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124ca91906159fa565b887f6b4728fec96e4c21cab0a9cf4686ce08822520c9647e5589e6038ef914e599df888a866040516124fe93929190615a13565b60405180910390a35050505050505050565b6125186136b3565b611c2d6000826130f9565b6001600160a01b03851633148061253f575061253f8533610957565b6125a25760405162461bcd60e51b815260206004820152602e60248201527f455243313135353a2063616c6c6572206973206e6f7420746f6b656e206f776e60448201526d195c881bdc88185c1c1c9bdd995960921b6064820152608401610a7f565b61133e8585858585613889565b6125b76136b3565b61015f80546001600160a01b0383166001600160a01b031990911681179091556125ea61012d546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b612639600080516020615e0583398151915261281d565b8161264381612926565b6126605760405163eb49290360e01b815260040160405180910390fd5b600083815261022a6020526040908190208054841515600160501b026aff00000000000000000000199091161790555183907f0de0a140384f9fa03ed8441d1d4f45373f3bf77da8bb2c593a0a3908043d40339061148590851515815260200190565b336001600160a01b038416811480159061270357506001600160a01b0380851660009081526066602090815260408083209385168352929052205460ff16155b156127215760405163390cdd9b60e21b815260040160405180910390fd5b600083815261022a6020526040902054600160501b900460ff1661275857604051630da38f0160e41b815260040160405180910390fd5b612763848484613a3b565b600083815261022c602052604081208054849290612782908490615712565b909155505050505050565b60006001600160e01b03198216636cdb3d1360e11b14806127be57506001600160e01b031982166303a24d0760e21b145b80610aad57506301ffc9a760e01b6001600160e01b0319831614610aad565b60006001600160e01b0319821663b01039a160e01b148061280e57506001600160e01b0319821663152a902d60e11b145b80610aad5750610aad82613b6d565b61012d546001600160a01b03163314611c2d57611c2d8133613b78565b806001600160601b03166127108111156128675760405163d28e6cff60e01b815260040160405180910390fd5b6001600160a01b0383166128bd5760006102288190556040805182815260208101929092527f378e0d79d5bc01ff46b21ccbdabc124751f2f6880425e873742b04c2e3a65c6c91015b60405180910390a1505050565b6040805180820182526001600160a01b0385168082526001600160601b0385166020928301819052600160a01b81028217610228558351918252918101919091527f378e0d79d5bc01ff46b21ccbdabc124751f2f6880425e873742b04c2e3a65c6c91016128b0565b600081158061293757506102295482115b806129515750600082815261022b602052604090205460ff165b1561295e57506000919050565b506001919050565b805160000361298857604051633ba0191160e01b815260040160405180910390fd5b6000828152610231602052604090206129a182826158d6565b50817f9b769a1125f1947a11ef5a3d43527594ee72858f8c256e64556ab79056b6d315826040516129d29190614d81565b60405180910390a25050565b817f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b826040516129d29190614d81565b6101915460ff16156118365760405162461bcd60e51b815260206004820152601060248201527f5061757361626c653a20706175736564000000000000000000000000000000006044820152606401610a7f565b600086815261022a6020526040902054600160581b900460ff16612b8d5743831115612aa15760405163311a269560e21b815260040160405180910390fd5b43612aad604b85615712565b1015612acc57604051630819bdcd60e01b815260040160405180910390fd5b600086815261022e602090815260408083206001600160a01b038916845290915290205465010000000000900464ffffffffff168311612b1f5760405163900bb2c960e01b815260040160405180910390fd5b6000612b2e8787878787613bed565b90506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016612b648284613c73565b6001600160a01b031614612b8b57604051638baa579f60e01b815260040160405180910390fd5b505b505050505050565b868115612bd857818310612bbc57604051632b2c62f760e21b815260040160405180910390fd5b6000612bc8848461587d565b905080821115612bd6578091505b505b604085015164ffffffffff1615612c3d57846040015164ffffffffff168310612c14576040516301a36a3160e31b815260040160405180910390fd5b600083866040015164ffffffffff16612c2d919061587d565b905080821115612c3b578091505b505b6000612c488861203f565b805190915064ffffffffff1615612ca857805164ffffffffff168510612c8157604051631ba1ee7960e21b815260040160405180910390fd5b8051600090612c9890879064ffffffffff1661587d565b905080831115612ca6578092505b505b606086015164ffffffffff166000819003612ce057507f00000000000000000000000000000000000000000000000000000000000000005b808810612d00576040516345b1552d60e01b815260040160405180910390fd5b6000612d0c898361587d565b905080841115612d1a578093505b505050979650505050505050565b81600003612d495760405163011674e560e71b815260040160405180910390fd5b610bd284848460405180602001604052806000815250613c8f565b80471015612db45760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610a7f565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114612e01576040519150601f19603f3d011682016040523d82523d6000602084013e612e06565b606091505b505090508061169e5760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610a7f565b8151835114612ef45760405162461bcd60e51b815260206004820152602860248201527f455243313135353a2069647320616e6420616d6f756e7473206c656e6774682060448201527f6d69736d617463680000000000000000000000000000000000000000000000006064820152608401610a7f565b6001600160a01b038416612f585760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610a7f565b33612f67818787878787613dab565b60005b8451811015613093576000858281518110612f8757612f8761584e565b602002602001015190506000858381518110612fa557612fa561584e565b60209081029190910181015160008481526065835260408082206001600160a01b038e1683529093529190912054909150818110156130395760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610a7f565b60008381526065602090815260408083206001600160a01b038e8116855292528083208585039055908b16825281208054849290613078908490615712565b925050819055505050508061308c90615864565b9050612f6a565b50846001600160a01b0316866001600160a01b0316826001600160a01b03167f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb87876040516130e3929190615a69565b60405180910390a4612b8d818787878787613f2c565b600082815260c9602090815260408083206001600160a01b038516845290915290205460ff16610afb57600082815260c9602090815260408083206001600160a01b03851684529091529020805460ff191660011790556131573390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6102295460005b828110156134ec577f00000000000000000000000000000000000000000000000000000000000000008484838181106131dd576131dd61584e565b90506020028101906131ef9190615a97565b613200906060810190604001615ab7565b64ffffffffff161115613226576040516374690a7960e01b815260040160405180910390fd5b60019091019060008484838181106132405761324061584e565b90506020028101906132529190615a97565b6020018036038101906132659190615ad4565b600084815261022a6020908152604091829020835181549285015193850151606086015160808701511515600160601b026cff00000000000000000000000019911515600160581b026bff000000000000000000000019931515600160501b02939093166bffff000000000000000000001964ffffffffff988916650100000000000269ffffffffffffffffffff19909816989095169790971795909517929092169490941793909317929092161790559050827faf1874b81c219a8f1fd4020887b21deb5761445c77c2ad850b65c7303885354886868581811061334c5761334c61584e565b905060200281019061335e9190615a97565b60405161336e9135908590615b52565b60405180910390a26133e68386868581811061338c5761338c61584e565b905060200281019061339e9190615a97565b6133ac9060c08101906159b3565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061296692505050565b60008585848181106133fa576133fa61584e565b905060200281019061340c9190615a97565b61341a9060e0810190615ba2565b905011156134e3577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166322d0be11308560008989888181106134675761346761584e565b90506020028101906134799190615a97565b6134879060e0810190615ba2565b600088602001516040518863ffffffff1660e01b81526004016134b097969594939291906157dc565b600060405180830381600087803b1580156134ca57600080fd5b505af11580156134de573d6000803e3d6000fd5b505050505b506001016131a2565b50610229555050565b600082815260c9602090815260408083206001600160a01b038516845290915290205460ff1615610afb57600082815260c9602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6135806140d1565b610191805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b600054610100900460ff166136365760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a7f565b611c2d81614124565b600054610100900460ff166136aa5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a7f565b611c2d816141db565b61012d546001600160a01b031633146118365760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610a7f565b61015f80546001600160a01b0319169055611c2d81614363565b600061373d61012d546001600160a01b031690565b6001600160a01b0316826001600160a01b03161480610aad57506001600160a01b03821660009081527f81fe90a866a48a634a12852c1be675b683a22307409932a7443b8029347be756602052604090205460ff16610aad565b6000816000036137c857507f0000000000000000000000000000000000000000000000000000000000000000919050565b50805b919050565b6137d8612a0e565b610191805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586135ae3390565b610afb3383836143b6565b606061383e8383604051806060016040528060278152602001615e25602791396144aa565b9392505050565b600081815261022b6020526040808220805460ff191660011790555182917fceb5e263cb1044892eb4317ae23f824f0724446b3e2315d6ba5d6a6f203662d891a250565b6001600160a01b0384166138ed5760405162461bcd60e51b815260206004820152602560248201527f455243313135353a207472616e7366657220746f20746865207a65726f206164604482015264647265737360d81b6064820152608401610a7f565b3360006138f985614522565b9050600061390685614522565b9050613916838989858589613dab565b60008681526065602090815260408083206001600160a01b038c1684529091529020548581101561399c5760405162461bcd60e51b815260206004820152602a60248201527f455243313135353a20696e73756666696369656e742062616c616e636520666f60448201526939103a3930b739b332b960b11b6064820152608401610a7f565b60008781526065602090815260408083206001600160a01b038d8116855292528083208985039055908a168252812080548892906139db908490615712565b909155505060408051888152602081018890526001600160a01b03808b16928c821692918816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4611339848a8a8a8a8a61456d565b336000613a4784614522565b90506000613a5484614522565b9050613a7483876000858560405180602001604052806000815250613dab565b60008581526065602090815260408083206001600160a01b038a16845290915290205484811015613af35760405162461bcd60e51b8152602060048201526024808201527f455243313135353a206275726e20616d6f756e7420657863656564732062616c604482015263616e636560e01b6064820152608401610a7f565b60008681526065602090815260408083206001600160a01b038b81168086529184528285208a8703905582518b81529384018a90529092908816917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4604080516020810190915260009052612b8b565b6000610aad82614669565b600082815260c9602090815260408083206001600160a01b038516845290915290205460ff16610afb57613bab8161468e565b613bb68360206146a0565b604051602001613bc7929190615beb565b60408051601f198184030181529082905262461bcd60e51b8252610a7f91600401614d81565b604080517f6333dac33c8797dfc272d5fcb15ebb30435be33c66a3e1fc21076e982ecd97a660208201529081018690526001600160a01b03851660608201526080810184905260a0810183905260c081018290526000908190613c689060e00160405160208183030381529060405280519060200120614849565b979650505050505050565b6000806000613c828585614911565b9150915061198081614956565b6001600160a01b038416613cef5760405162461bcd60e51b815260206004820152602160248201527f455243313135353a206d696e7420746f20746865207a65726f206164647265736044820152607360f81b6064820152608401610a7f565b336000613cfb85614522565b90506000613d0885614522565b9050613d1983600089858589613dab565b60008681526065602090815260408083206001600160a01b038b16845290915281208054879290613d4b908490615712565b909155505060408051878152602081018790526001600160a01b03808a1692600092918716917fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f62910160405180910390a4612b8b8360008989898961456d565b858560007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b118015613dea575060975460ff16155b15613e9a57806001600160a01b0316826001600160a01b031614613e9a57604051633185c44d60e21b81523060048201526001600160a01b0383811660248301527f0000000000000000000000000000000000000000000000000000000000000000169063c617113490604401602060405180830381865afa158015613e74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613e989190615996565b505b6001600160a01b0387161580613eb757506001600160a01b038616155b611b145760005b8551811015611339576000868281518110613edb57613edb61584e565b602090810291909101810151600081815261022a909252604090912054909150600160601b900460ff1615613f235760405163dc8d8db760e01b815260040160405180910390fd5b50600101613ebe565b6001600160a01b0384163b15612b8d5760405163bc197c8160e01b81526001600160a01b0385169063bc197c8190613f709089908990889088908890600401615c6c565b6020604051808303816000875af1925050508015613fab575060408051601f3d908101601f19168201909252613fa891810190615cca565b60015b61406057613fb7615ce7565b806308c379a003613ff05750613fcb615d03565b80613fd65750613ff2565b8060405162461bcd60e51b8152600401610a7f9190614d81565b505b60405162461bcd60e51b815260206004820152603460248201527f455243313135353a207472616e7366657220746f206e6f6e2d4552433131353560448201527f526563656976657220696d706c656d656e7465720000000000000000000000006064820152608401610a7f565b6001600160e01b0319811663bc197c8160e01b14612b8b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610a7f565b6101915460ff166118365760405162461bcd60e51b815260206004820152601460248201527f5061757361626c653a206e6f74207061757365640000000000000000000000006044820152606401610a7f565b600054610100900460ff1661418f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a7f565b6001600160a01b0381166141b65760405163d92e233d60e01b815260040160405180910390fd5b61022780546001600160a01b0319166001600160a01b038316179055611c2d8161370e565b600054610100900460ff166142465760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201526a6e697469616c697a696e6760a81b6064820152608401610a7f565b80801561427d575060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163b115b80156142b157507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615155b1561435357604051633e9f1edf60e11b81523060048201526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660248301527f00000000000000000000000000000000000000000000000000000000000000001690637d3e3dbe90604401600060405180830381600087803b15801561433f57600080fd5b505af115801561133e573d6000803e3d6000fd5b6097805460ff1916600117905550565b61012d80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b816001600160a01b0316836001600160a01b03160361443d5760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c6600000000000000000000000000000000000000000000006064820152608401610a7f565b6001600160a01b03838116600081815260666020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b6060600080856001600160a01b0316856040516144c79190615d8d565b600060405180830381855af49150503d8060008114614502576040519150601f19603f3d011682016040523d82523d6000602084013e614507565b606091505b509150915061451886838387614aa0565b9695505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061455c5761455c61584e565b602090810291909101015292915050565b6001600160a01b0384163b15612b8d5760405163f23a6e6160e01b81526001600160a01b0385169063f23a6e61906145b19089908990889088908890600401615d9f565b6020604051808303816000875af19250505080156145ec575060408051601f3d908101601f191682019092526145e991810190615cca565b60015b6145f857613fb7615ce7565b6001600160e01b0319811663f23a6e6160e01b14612b8b5760405162461bcd60e51b815260206004820152602860248201527f455243313135353a204552433131353552656365697665722072656a656374656044820152676420746f6b656e7360c01b6064820152608401610a7f565b60006001600160e01b03198216637965db0b60e01b1480610aad5750610aad8261278d565b6060610aad6001600160a01b03831660145b606060006146af836002615725565b6146ba906002615712565b67ffffffffffffffff8111156146d2576146d2614da7565b6040519080825280601f01601f1916602001820160405280156146fc576020820181803683370190505b509050600360fc1b816000815181106147175761471761584e565b60200101906001600160f81b031916908160001a905350600f60fb1b816001815181106147465761474661584e565b60200101906001600160f81b031916908160001a905350600061476a846002615725565b614775906001615712565b90505b60018111156147fa577f303132333435363738396162636465660000000000000000000000000000000085600f16601081106147b6576147b661584e565b1a60f81b8282815181106147cc576147cc61584e565b60200101906001600160f81b031916908160001a90535060049490941c936147f381615dd7565b9050614778565b50831561383e5760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610a7f565b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60208201527f36cb08f6aafe2399767bf40e9642429d7535f40e61bd81428cad09095c5d337d918101919091527fb4bcb154e38601c389396fa918314da42d4626f13ef6d0ceb07e5f5d26b2fbc360608201524660808201523060a0820152600090819060c00160405160208183030381529060405280519060200120905061383e818460405161190160f01b8152600281019290925260228201526042902090565b60008082516041036149475760208301516040840151606085015160001a61493b87828585614b21565b9450945050505061494f565b506000905060025b9250929050565b600081600481111561496a5761496a615dee565b036149725750565b600181600481111561498657614986615dee565b036149d35760405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152606401610a7f565b60028160048111156149e7576149e7615dee565b03614a345760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610a7f565b6003816004811115614a4857614a48615dee565b03611c2d5760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610a7f565b60608315614b0f578251600003614b08576001600160a01b0385163b614b085760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610a7f565b5081614b19565b614b198383614be5565b949350505050565b6000807f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0831115614b585750600090506003614bdc565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa158015614bac573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b038116614bd557600060019250925050614bdc565b9150600090505b94509492505050565b815115613fd65781518083602001fd5b80356001600160a01b03811681146137cb57600080fd5b60008060408385031215614c1f57600080fd5b614c2883614bf5565b946020939093013593505050565b6001600160e01b031981168114611c2d57600080fd5b600060208284031215614c5e57600080fd5b813561383e81614c36565b6001600160601b0381168114611c2d57600080fd5b60008060408385031215614c9157600080fd5b614c9a83614bf5565b91506020830135614caa81614c69565b809150509250929050565b600080600060408486031215614cca57600080fd5b83359250602084013567ffffffffffffffff80821115614ce957600080fd5b818601915086601f830112614cfd57600080fd5b813581811115614d0c57600080fd5b876020828501011115614d1e57600080fd5b6020830194508093505050509250925092565b60005b83811015614d4c578181015183820152602001614d34565b50506000910152565b60008151808452614d6d816020860160208601614d31565b601f01601f19169290920160200192915050565b60208152600061383e6020830184614d55565b64ffffffffff81168114611c2d57600080fd5b634e487b7160e01b600052604160045260246000fd5b60a0810181811067ffffffffffffffff82111715614ddd57614ddd614da7565b60405250565b601f8201601f1916810167ffffffffffffffff81118282101715614e0957614e09614da7565b6040525050565b600082601f830112614e2157600080fd5b813567ffffffffffffffff811115614e3b57614e3b614da7565b604051614e52601f8301601f191660200182614de3565b818152846020838601011115614e6757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060008060c08789031215614e9d57600080fd5b86359550614ead60208801614bf5565b9450604087013593506060870135614ec481614d94565b92506080870135915060a087013567ffffffffffffffff811115614ee757600080fd5b614ef389828a01614e10565b9150509295509295509295565b600060208284031215614f1257600080fd5b5035919050565b60008060008060608587031215614f2f57600080fd5b8435935060208501359250604085013567ffffffffffffffff80821115614f5557600080fd5b818701915087601f830112614f6957600080fd5b813581811115614f7857600080fd5b88602060a083028501011115614f8d57600080fd5b95989497505060200194505050565b60008060408385031215614faf57600080fd5b50508035926020909101359150565b60008060408385031215614fd157600080fd5b823591506020830135614caa81614d94565b600067ffffffffffffffff821115614ffd57614ffd614da7565b5060051b60200190565b600082601f83011261501857600080fd5b8135602061502582614fe3565b6040516150328282614de3565b83815260059390931b850182019282810191508684111561505257600080fd5b8286015b8481101561506d5780358352918301918301615056565b509695505050505050565b600080600080600060a0868803121561509057600080fd5b61509986614bf5565b94506150a760208701614bf5565b9350604086013567ffffffffffffffff808211156150c457600080fd5b6150d089838a01615007565b945060608801359150808211156150e657600080fd5b6150f289838a01615007565b9350608088013591508082111561510857600080fd5b5061511588828901614e10565b9150509295509295909350565b60008060006060848603121561513757600080fd5b8335925061514760208501614bf5565b9150604084013561515781614c69565b809150509250925092565b6000806040838503121561517557600080fd5b8235915061518560208401614bf5565b90509250929050565b60008083601f8401126151a057600080fd5b50813567ffffffffffffffff8111156151b857600080fd5b6020830191508360208260051b850101111561494f57600080fd5b600080602083850312156151e657600080fd5b823567ffffffffffffffff8111156151fd57600080fd5b6152098582860161518e565b90969095509350505050565b600082601f83011261522657600080fd5b8135602061523382614fe3565b6040516152408282614de3565b83815260059390931b850182019282810191508684111561526057600080fd5b8286015b8481101561506d5761527581614bf5565b8352918301918301615264565b6000806040838503121561529557600080fd5b823567ffffffffffffffff808211156152ad57600080fd5b6152b986838701615215565b935060208501359150808211156152cf57600080fd5b506113e785828601615007565b600081518084526020808501945080840160005b8381101561530c578151875295820195908201906001016152f0565b509495945050505050565b60208152600061383e60208301846152dc565b8015158114611c2d57600080fd5b600080600080600080600060c0888a03121561535357600080fd5b873567ffffffffffffffff8082111561536b57600080fd5b6153778b838c01614e10565b985060208a013591508082111561538d57600080fd5b6153998b838c01614e10565b97506153a760408b01614bf5565b965060608a013591506153b982614c69565b909450608089013590808211156153cf57600080fd5b506153dc8a828b0161518e565b90945092505060a08801356153f08161532a565b8091505092959891949750929550565b60006020828403121561541257600080fd5b61383e82614bf5565b6000806040838503121561542e57600080fd5b61543783614bf5565b91506020830135614caa8161532a565b60a08101610aad828464ffffffffff808251168352806020830151166020840152506040810151151560408301526060810151151560608301526080810151151560808301525050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156154e657603f198886030184526154d4858351614d55565b945092850192908501906001016154b8565b5092979650505050505050565b60008060006060848603121561550857600080fd5b8335925060208401359150604084013567ffffffffffffffff81111561552d57600080fd5b61553986828701615215565b9150509250925092565b6000806040838503121561555657600080fd5b61555f83614bf5565b915061518560208401614bf5565b600080600080600060a0868803121561558557600080fd5b61558e86614bf5565b945061559c60208701614bf5565b93506040860135925060608601359150608086013567ffffffffffffffff8111156155c657600080fd5b61511588828901614e10565b600080604083850312156155e557600080fd5b823591506020830135614caa8161532a565b60008060006060848603121561560c57600080fd5b61561584614bf5565b95602085013595506040909401359392505050565b600181811c9082168061563e57607f821691505b60208210810361210357634e487b7160e01b600052602260045260246000fd5b60008082840360c081121561567257600080fd5b8351925060a0601f198201121561568857600080fd5b5060405161569581614dbd565b60208401516156a381614d94565b815260408401516156b381614d94565b602082015260608401516156c681614d94565b604082015260808401516156d981614d94565b606082015260a08401516156ec81614c69565b6080820152919491935090915050565b634e487b7160e01b600052601160045260246000fd5b80820180821115610aad57610aad6156fc565b8082028115828204841417610aad57610aad6156fc565b8183526000602080850194508260005b8581101561530c57813561575f81614d94565b64ffffffffff9081168852828401359061577882614d94565b908116888501526040908382013561578f81614d94565b818116838b01525060609150818401356157a881614d94565b16908801526080828101356157bc81614c69565b6001600160601b03169088015260a096870196919091019060010161574c565b6001600160a01b038816815286602082015285604082015260c06060820152600061580b60c08301868861573c565b905083608083015264ffffffffff831660a083015298975050505050505050565b60008261584957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b600060018201615876576158766156fc565b5060010190565b81810381811115610aad57610aad6156fc565b601f82111561169e57600081815260208120601f850160051c810160208610156158b75750805b601f850160051c820191505b81811015612b8d578281556001016158c3565b815167ffffffffffffffff8111156158f0576158f0614da7565b615904816158fe845461562a565b84615890565b602080601f83116001811461593957600084156159215750858301515b600019600386901b1c1916600185901b178555612b8d565b600085815260208120601f198616915b8281101561596857888601518255948401946001909101908401615949565b50858210156159865787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156159a857600080fd5b815161383e8161532a565b6000808335601e198436030181126159ca57600080fd5b83018035915067ffffffffffffffff8211156159e557600080fd5b60200191503681900382131561494f57600080fd5b600060208284031215615a0c57600080fd5b5051919050565b606080825284519082018190526000906020906080840190828801845b82811015615a555781516001600160a01b031684529284019290840190600101615a30565b505050908301949094525060400152919050565b604081526000615a7c60408301856152dc565b8281036020840152615a8e81856152dc565b95945050505050565b6000823560fe19833603018112615aad57600080fd5b9190910192915050565b600060208284031215615ac957600080fd5b813561383e81614d94565b600060a08284031215615ae657600080fd5b604051615af281614dbd565b8235615afd81614d94565b81526020830135615b0d81614d94565b60208201526040830135615b208161532a565b60408201526060830135615b338161532a565b60608201526080830135615b468161532a565b60808201529392505050565b82815260c0810161383e602083018464ffffffffff808251168352806020830151166020840152506040810151151560408301526060810151151560608301526080810151151560808301525050565b6000808335601e19843603018112615bb957600080fd5b83018035915067ffffffffffffffff821115615bd457600080fd5b602001915060a08102360382131561494f57600080fd5b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351615c23816017850160208801614d31565b7f206973206d697373696e6720726f6c65200000000000000000000000000000006017918401918201528351615c60816028840160208801614d31565b01602801949350505050565b60006001600160a01b03808816835280871660208401525060a06040830152615c9860a08301866152dc565b8281036060840152615caa81866152dc565b90508281036080840152615cbe8185614d55565b98975050505050505050565b600060208284031215615cdc57600080fd5b815161383e81614c36565b600060033d1115615d005760046000803e5060005160e01c5b90565b600060443d1015615d115790565b6040516003193d81016004833e81513d67ffffffffffffffff8160248401118184111715615d4157505050505090565b8285019150815181811115615d595750505050505090565b843d8701016020828501011115615d735750505050505090565b615d8260208286010187614de3565b509095945050505050565b60008251615aad818460208701614d31565b60006001600160a01b03808816835280871660208401525084604083015283606083015260a06080830152613c6860a0830184614d55565b600081615de657615de66156fc565b506000190190565b634e487b7160e01b600052602160045260246000fdfe828634d95e775031b9ff576b159a8509d3053581a8c9c4d7d86899e0afcd882f416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212209975d02f51ed737c602c0efc0ccd946497d9c1ecd69e89d76d3d84c308e727d264736f6c6343000813003300000000000000000000000000000000000000000000000022b1c8c1227a00000000000000000000000000008cfe71ab1c55ad27dafa51418c847848c9fc63480000000000000000000000007a6f5866f97034bb7153829bdaac1ffcb8facb71000000000000000000000000e7f1725e7734ce288f8367e1bb143e90bb3f05120000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000aaeb6d7670e522a718067333cd4e0000000000000000000000003cc6cdda760b79bafa08df41ecfa224f810dceb6