0 txs
0 calls
constructor
constructor()
functions
_baseURI
viewfunction _baseURI() view returns (string)
_mintedTokens
viewfunction _mintedTokens() view returns (uint256)
_pathURI
viewfunction _pathURI() view returns (string)
_preRevealURI
viewfunction _preRevealURI() view returns (string)
balanceOf
viewfunction balanceOf(address owner) view returns (uint256)
burnable
viewfunction burnable() view returns (bool)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
getApproved
viewfunction getApproved(uint256 tokenId) view returns (address)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
interfaceAddress
viewfunction interfaceAddress() view returns (address)
isApprovedForAll
viewfunction isApprovedForAll(address owner, address operator) view returns (bool)
isSoulBound
viewfunction isSoulBound() view returns (bool)
lockURI
viewfunction lockURI() view returns (bool)
MINTER_ROLE
viewfunction MINTER_ROLE() view returns (bytes32)
name
viewfunction name() view returns (string)
operatorFilterDisabled
viewfunction operatorFilterDisabled() view returns (bool)
operatorFilterRegistry
viewfunction operatorFilterRegistry() view returns (address)
owner
viewfunction owner() view returns (address)
ownerOf
viewfunction ownerOf(uint256 tokenId) view returns (address)
royaltyInfo
viewfunction royaltyInfo(uint256 _tokenId, uint256 _salePrice) view returns (address, uint256)
SECOND_ADMIN_ROLE
viewfunction SECOND_ADMIN_ROLE() view returns (bytes32)
signatureReleased
viewfunction signatureReleased() view returns (bool)
stageMints
viewfunction stageMints(uint256, address) view returns (uint256)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
symbol
viewfunction symbol() view returns (string)
tokensAvailable
viewfunction tokensAvailable() view returns (uint128 maxTokens, uint128 globalMintsPerWallet)
tokenURI
viewfunction tokenURI(uint256 tokenId) view returns (string)
totalStages
viewfunction totalStages() view returns (uint256)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalWalletMints
viewfunction totalWalletMints(address minterAddress) view returns (uint256)
viewCurrentPrice
viewfunction viewCurrentPrice() view returns (uint256)
viewCurrentStage
viewfunction viewCurrentStage() view returns (uint256)
viewLatestStage
viewfunction viewLatestStage() view returns (uint256)
viewMinted
viewfunction viewMinted() view returns (uint256)
viewStageMap
viewfunction viewStageMap(uint256 stageId) view returns (tuple)
_initialize
nonpayablefunction _initialize(uint128 maxTokens_, string name_, string symbol_, address interfaceAddress_, string[] URIs_, uint96 royaltyPercentage_, uint128 globalMintsPerWallet_, address[] royaltyReceivers, address ownerOfContract, tuple[] stages, bool isSBT)
airdrop
nonpayablefunction airdrop(address[] address_, uint256 tokenCount) returns (uint256)
approve
nonpayablefunction approve(address to, uint256 tokenId)
burn
nonpayablefunction burn(uint256 tokenId) returns (uint256)
changePrimarySaleReceiver
nonpayablefunction changePrimarySaleReceiver(address newPrimarySaleReceiver)
changeSecondaryRoyaltyReceiver
nonpayablefunction changeSecondaryRoyaltyReceiver(address newSecondaryRoyaltyReceiver, uint96 newRoyaltyValue)
changeURI
nonpayablefunction changeURI(bytes signature, string newPathURI, string newURI)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
lockURIforever
nonpayablefunction lockURIforever()
merkleMint
payablefunction merkleMint(bytes32[] _merkleProof, uint256 numberOfTokens, uint256 maxMintsPerWallet, address recipient) payable
mint
payablefunction mint(bytes signature, uint256 nonce, uint256 numberOfTokens, uint256 maxMintsPerWallet, address recipient) payable
multicall
nonpayablefunction multicall(bytes[] data) returns (bytes[] results)
releaseSignature
nonpayablefunction releaseSignature()
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId, bytes _data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 tokenId)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setGlobalMaxMints
nonpayablefunction setGlobalMaxMints(uint128 newGlobalMaxMintsPerWallet)
setStages
nonpayablefunction setStages(tuple[] stages, uint256 startId)
toggleBurnable
nonpayablefunction toggleBurnable()
toggleOperatorFilterDisabled
nonpayablefunction toggleOperatorFilterDisabled() returns (bool)
transferFrom
nonpayablefunction transferFrom(address from, address to, uint256 tokenId)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
updateOperatorFilterRegistry
nonpayablefunction updateOperatorFilterRegistry(address newRegistry, address subscriptionOrRegistrantToCopy, bool subscribe)
updateRegistrySubscription
nonpayablefunction updateRegistrySubscription(address subscriptionOrRegistrantToCopy, bool subscribe, bool copyEntries)
withdraw
payablefunction withdraw() payable
events
Airdrop
event Airdrop(uint256 tokenCount, uint256 newTotal, address[] recipients)
Approval
event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId)
ApprovalForAll
event ApprovalForAll(address indexed owner, address indexed operator, bool approved)
BurnableSet
event BurnableSet(bool burnState)
Initialized
event Initialized(uint8 version)
Mint
event Mint(address minterAddress, uint256 stage, uint256 mintCount)
NewMaxMintsPerWalletSet
event NewMaxMintsPerWalletSet(uint128 newGlobalMintsPerWallet)
NewPathURI
event NewPathURI(string newPathURI)
NewPrimarySaleReceiver
event NewPrimarySaleReceiver(address newPrimaryReceiver)
NewSecondaryRoyalties
event NewSecondaryRoyalties(address newSecondaryReceiver, uint96 newRoyalty)
NewStagesSet
event NewStagesSet((uint40 startTime, uint40 endTime, uint32 mintsPerWallet, uint32 phaseLimit, uint112 price, bytes32 merkleRoot)[] stages, uint256 startIndex)
NewTokenURI
event NewTokenURI(string newTokenURI)
OperatorFilterDisabled
event OperatorFilterDisabled(bool disabled)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
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)
SignatureReleased
event SignatureReleased()
Transfer
event Transfer(address indexed from, address indexed to, uint256 indexed tokenId)
URILocked
event URILocked()
errors
AddressLimitPerTx
error AddressLimitPerTx()
AlreadyLockedURI
error AlreadyLockedURI()
BurnerIsNotApproved
error BurnerIsNotApproved()
BurningOff
error BurningOff()
CannotDeleteOngoingStage
error CannotDeleteOngoingStage()
CannotEditPastStages
error CannotEditPastStages()
EndTimeInThePast
error EndTimeInThePast()
EndTimeLessThanStartTime
error EndTimeLessThanStartTime()
ETHSendFail
error ETHSendFail()
ExceedsMintsPerWallet
error ExceedsMintsPerWallet()
ExceedsNFTsOnSale
error ExceedsNFTsOnSale()
IncorrectIndex
error IncorrectIndex()
InvalidNonce
error InvalidNonce()
InvalidStartTime
error InvalidStartTime()
LessNFTsOnSaleThanBefore
error LessNFTsOnSaleThanBefore()
MerkleProofFail
error MerkleProofFail()
MerkleStage
error MerkleStage()
NotEnoughETH
error NotEnoughETH()
OnlyAdmin
error OnlyAdmin()
OperatorNotAllowed
error OperatorNotAllowed(address operator)
PhaseLimitEnd
error PhaseLimitEnd()
PhaseLimitExceedsTokenCount
error PhaseLimitExceedsTokenCount()
PhaseStartsBeforePriorPhaseEnd
error PhaseStartsBeforePriorPhaseEnd()
PublicStage
error PublicStage()
RegistryInvalid
error RegistryInvalid()
ReusedHash
error ReusedHash()
SaleEnd
error SaleEnd()
SaleNotActive
error SaleNotActive()
StageDoesNotExist
error StageDoesNotExist()
StageLimitPerTx
error StageLimitPerTx()
StartTimeInThePast
error StartTimeInThePast()
TimeLimit
error TimeLimit()
TokenCountExceedsPhaseLimit
error TokenCountExceedsPhaseLimit()
TokenDoesNotExist
error TokenDoesNotExist()
TokenIsSoulBound
error TokenIsSoulBound()
TokenLimitPerTx
error TokenLimitPerTx()
TooManyStagesInTheFuture
error TooManyStagesInTheFuture()
UnauthorisedUser
error UnauthorisedUser()
UnrecognizableHash
error UnrecognizableHash()
ZeroAddress
error ZeroAddress()
creation bytecode
0x60806040523480156200001157600080fd5b506200001c62000022565b620000e4565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff9081161015620000e2576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b615d8080620000f46000396000f3fe6080604052600436106103435760003560e01c8063869d3bde116101b2578063b0fde7fb116100ed578063d539139311610090578063d539139314610a4c578063d547741f14610a80578063d7818e2814610aa0578063dedd76e714610ac0578063e985e9c514610b4c578063effcf2b714610b6c578063f2fde38b14610b81578063f86a352914610ba157600080fd5b8063b0fde7fb1461097b578063b3cc59db14610995578063b88d4fde146109aa578063bdc769eb146109ca578063c0dad79b146109dd578063c204642c146109f7578063c87b56dd14610a17578063ce4c61aa14610a3757600080fd5b806395d89b411161015557806395d89b411461088057806397f5cdcf14610895578063a07c7ce4146108ab578063a217fddf146108cd578063a22cb465146108e2578063aa8a675414610902578063ac9650d814610929578063b0ccc31e1461095657600080fd5b8063869d3bde1461075d5780638c8ea8e6146107725780638cd90c32146107b85780638da5cb5b146107f15780638e021c061461081057806390411aca1461082b57806391d148541461084057806394b08a4b1461086057600080fd5b806342842e0e11610282578063659b8b2a11610225578063659b8b2a146106895780636e49aa0a146106a957806370a08231146106c9578063715018a6146106e957806372c06f5a146106fe578063743976a0146107135780637f1fea5914610728578063804207361461074857600080fd5b806342842e0e1461056857806342966c68146105885780634e0b9df2146105a857806351e85af6146105c8578063548e7682146105dd578063577199fd146105fd57806360659a921461061d5780636352211e1461066957600080fd5b80632955a21d116102ea5780632955a21d146104775780632a55205a1461048a5780632f2ff15d146104c95780633540558a146104e957806336568abe1461050b5780633ccfd60b1461052b5780633f52af3c1461053357806341dfed3a1461055357600080fd5b806301ffc9a7146103485780630293741b1461037d57806306fdde031461039f578063081812fc146103b4578063095ea7b3146103e157806318160ddd1461040357806323b872dd14610426578063248a9ca314610446575b600080fd5b34801561035457600080fd5b50610368610363366004614be2565b610bb8565b60405190151581526020015b60405180910390f35b34801561038957600080fd5b50610392610bc9565b6040516103749190614c4f565b3480156103ab57600080fd5b50610392610c5c565b3480156103c057600080fd5b506103d46103cf366004614c62565b610c6b565b6040516103749190614c7b565b3480156103ed57600080fd5b506104016103fc366004614cab565b610cf8565b005b34801561040f57600080fd5b50610418610ec9565b604051908152602001610374565b34801561043257600080fd5b50610401610441366004614cd5565b610ee0565b34801561045257600080fd5b50610418610461366004614c62565b6000908152610100602052604090206001015490565b610401610485366004614dd4565b611017565b34801561049657600080fd5b506104aa6104a5366004614e3e565b6113e7565b604080516001600160a01b039093168352602083019190915201610374565b3480156104d557600080fd5b506104016104e4366004614e60565b611495565b3480156104f557600080fd5b50610418600080516020615d2b83398151915281565b34801561051757600080fd5b50610401610526366004614e60565b6114c0565b61040161153e565b34801561053f57600080fd5b5061040161054e366004614ea3565b6115be565b34801561055f57600080fd5b5061041861163e565b34801561057457600080fd5b50610401610583366004614cd5565b611681565b34801561059457600080fd5b506104186105a3366004614c62565b611787565b3480156105b457600080fd5b506104016105c3366004614f11565b61182f565b3480156105d457600080fd5b5061040161186f565b3480156105e957600080fd5b506104016105f8366004614f73565b6118f5565b34801561060957600080fd5b50610401610618366004614fa7565b611980565b34801561062957600080fd5b506101c854610649906001600160801b0380821691600160801b90041682565b604080516001600160801b03938416815292909116602083015201610374565b34801561067557600080fd5b506103d4610684366004614c62565b611a7b565b34801561069557600080fd5b506101cd5461036890610100900460ff1681565b3480156106b557600080fd5b506104016106c43660046150fd565b611b3b565b3480156106d557600080fd5b506104186106e436600461525a565b611e63565b3480156106f557600080fd5b50610401611ef3565b34801561070a57600080fd5b50610368611f07565b34801561071f57600080fd5b50610392611f7b565b34801561073457600080fd5b5061040161074336600461525a565b611f8b565b34801561075457600080fd5b50610401612027565b34801561076957600080fd5b506104186120a0565b34801561077e57600080fd5b5061041861078d36600461525a565b6001600160a01b0316600090815260d36020526040902054600160601b90046001600160601b031690565b3480156107c457600080fd5b506104186107d3366004614e60565b6101d060209081526000928352604080842090915290825290205481565b3480156107fd57600080fd5b50610196546001600160a01b03166103d4565b34801561081c57600080fd5b506101cd546103689060ff1681565b34801561083757600080fd5b5060cc54610418565b34801561084c57600080fd5b5061036861085b366004614e60565b61211e565b34801561086c57600080fd5b5061040161087b366004615275565b61214a565b34801561088c57600080fd5b50610392612222565b3480156108a157600080fd5b5061041860cc5481565b3480156108b757600080fd5b506101cd5461036890600160b01b900460ff1681565b3480156108d957600080fd5b50610418600081565b3480156108ee57600080fd5b506104016108fd3660046152a3565b612231565b34801561090e57600080fd5b506101cd546103d4906201000090046001600160a01b031681565b34801561093557600080fd5b5061094961094436600461531e565b6122fc565b604051610374919061535f565b34801561096257600080fd5b506097546103d49061010090046001600160a01b031681565b34801561098757600080fd5b5060d4546103689060ff1681565b3480156109a157600080fd5b506104016123f0565b3480156109b657600080fd5b506104016109c53660046153c1565b61248c565b6104016109d8366004615428565b6125cc565b3480156109e957600080fd5b506097546103689060ff1681565b348015610a0357600080fd5b50610418610a12366004615482565b61275c565b348015610a2357600080fd5b50610392610a32366004614c62565b612918565b348015610a4357600080fd5b506104186129ab565b348015610a5857600080fd5b506104187ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc981565b348015610a8c57600080fd5b50610401610a9b366004614e60565b612a00565b348015610aac57600080fd5b50610401610abb3660046154c6565b612a26565b348015610acc57600080fd5b50610ae0610adb366004614c62565b612b96565b6040516103749190600060c08201905064ffffffffff80845116835280602085015116602084015250604083015163ffffffff808216604085015280606086015116606085015250506001600160701b03608084015116608083015260a083015160a083015292915050565b348015610b5857600080fd5b50610368610b6736600461554d565b612c6a565b348015610b7857600080fd5b50610392612c98565b348015610b8d57600080fd5b50610401610b9c36600461525a565b612d3c565b348015610bad57600080fd5b506104186101d15481565b6000610bc382612db5565b92915050565b60606101cb8054610bd990615577565b80601f0160208091040260200160405190810160405280929190818152602001828054610c0590615577565b8015610c525780601f10610c2757610100808354040283529160200191610c52565b820191906000526020600020905b815481529060010190602001808311610c3557829003601f168201915b5050505050905090565b606060ca8054610bd990615577565b6000610c7682612dda565b610cdc5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b50600090815260d160205260409020546001600160a01b031690565b609754829060ff16158015610d1d575060975461010090046001600160a01b03163b15155b15610db857609754604051633185c44d60e21b81526101009091046001600160a01b03169063c617113490610d5890309085906004016155b1565b602060405180830381865afa158015610d75573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d9991906155cb565b610db85780604051633b79c77360e21b8152600401610cd39190614c7b565b6000610dc383611a7b565b9050806001600160a01b0316846001600160a01b031603610e305760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b6064820152608401610cd3565b336001600160a01b0382161480610e4c5750610e4c8133612c6a565b610eb95760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f776044820152771b995c881b9bdc88185c1c1c9bdd995908199bdc88185b1b60421b6064820152608401610cd3565b610ec38484612e0d565b50505050565b600060cd5460cc54610edb91906155fe565b905090565b609754839060ff16158015610f05575060975461010090046001600160a01b03163b15155b15610fe757336001600160a01b03821603610f5157610f25335b83612e9f565b610f415760405162461bcd60e51b8152600401610cd390615611565b610f4c848484612f69565b610ec3565b609754604051633185c44d60e21b81526101009091046001600160a01b03169063c617113490610f8790309033906004016155b1565b602060405180830381865afa158015610fa4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc891906155cb565b610fe75733604051633b79c77360e21b8152600401610cd39190614c7b565b610ff033610f1f565b61100c5760405162461bcd60e51b8152600401610cd390615611565b610ec3848484612f69565b826000108015611028575060148311155b611045576040516332b4cb2160e21b815260040160405180910390fd5b600061104f6120a0565b60008181526101cf60209081526040808320815160c081018352815464ffffffffff8082168352600160281b82041694820194909452600160501b840463ffffffff90811693820193909352600160701b84049092166060830152600160901b9092046001600160701b03166080820181905260019092015460a08201529293506110e3906722b1c8c1227a000090615662565b90506110ef8682615675565b341461110e57604051632c1d501360e11b815260040160405180910390fd5b8660000361112f57604051633ab3447f60e11b815260040160405180910390fd5b60cc54606083015163ffffffff16811061115b5760405162491a1760e81b815260040160405180910390fd5b60a08301511561117e57604051630268975d60e51b815260040160405180910390fd5b6101cd54610100900460ff1661125957600061119c86898b8a6130fd565b905073c8bdd6b14a51df97802431cc41eda181d58e4db66111bd828c61317f565b6001600160a01b0316146111e4576040516332c3ce2560e11b815260040160405180910390fd5b6001600160a01b038616600090815260d36020526040902054600160c01b90046001600160401b0316891161122c5760405163dc5a682560e01b815260040160405180910390fd5b611237896028615662565b43111561125757604051639e8c142f60e01b815260040160405180910390fd5b505b600061126986868a85888c6131a3565b905061127686828b613338565b6000731075266c86cd9b1b021af63e09102af3d2dcbdb761129f836722b1c8c1227a0000615675565b604051600081818185875af1925050503d80600081146112db576040519150601f19603f3d011682016040523d82523d6000602084013e6112e0565b606091505b505090508061130257604051635579a42f60e11b815260040160405180910390fd5b8882101561139057600084611317848c6155fe565b6113219190615675565b604051909150600090339083908381818185875af1925050503d8060008114611366576040519150601f19603f3d011682016040523d82523d6000602084013e61136b565b606091505b505090508061138d57604051635579a42f60e11b815260040160405180910390fd5b50505b604080516001600160a01b0389168152602081018890529081018390527f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f9060600160405180910390a15050505050505050505050565b60008281526066602090815260408083208151808301909252546001600160a01b038116808352600160a01b9091046001600160601b031692820192909252829161145c5750604080518082019091526065546001600160a01b0381168252600160a01b90046001600160601b031660208201525b60208101516000906127109061147b906001600160601b031687615675565b611485919061568c565b91519350909150505b9250929050565b600082815261010060205260409020600101546114b181613353565b6114bb838361335d565b505050565b6001600160a01b03811633146115305760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610cd3565b61153a82826133e4565b5050565b600061154981613353565b6101ce546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611597576040519150601f19603f3d011682016040523d82523d6000602084013e61159c565b606091505b505090508061153a57604051635579a42f60e11b815260040160405180910390fd5b6115c960003361211e565b6115e657604051634e8df0bf60e01b815260040160405180910390fd5b6115f0828261344c565b604080516001600160a01b03841681526001600160601b03831660208201527fef5955f7902e6696c028804c62be1c24a0f98d9d30de5c31c83fa7f8b5c15c6f910160405180910390a15050565b60006722b1c8c1227a00006101cf60006116566120a0565b8152602081019190915260400160002054610edb9190600160901b90046001600160701b0316615662565b609754839060ff161580156116a6575060975461010090046001600160a01b03163b15155b1561176c57336001600160a01b038216036116d657610f4c8484846040518060200160405280600081525061248c565b609754604051633185c44d60e21b81526101009091046001600160a01b03169063c61711349061170c90309033906004016155b1565b602060405180830381865afa158015611729573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174d91906155cb565b61176c5733604051633b79c77360e21b8152600401610cd39190614c7b565b610ec38484846040518060200160405280600081525061248c565b6101cd54600090600160b01b900460ff166117b55760405163c7c39e4f60e01b815260040160405180910390fd5b6117c76117c183611a7b565b33612c6a565b806117eb57506117d682611a7b565b6001600160a01b0316336001600160a01b0316145b806118065750336117fb83610c6b565b6001600160a01b0316145b6118225760405162ccfedb60e31b815260040160405180910390fd5b61182b82613549565b5090565b611847600080516020615d2b8339815191523361211e565b61186457604051634e8df0bf60e01b815260040160405180910390fd5b610ec383838361365e565b61187a60003361211e565b61189757604051634e8df0bf60e01b815260040160405180910390fd5b6101cd5460ff16156118bc5760405163ddff29e960e01b815260040160405180910390fd5b6101cd805460ff191660011790556040517f31d1c0a3af6e15844ff9c1bf6201a5cf123137eb2fb3eeb96861a436d49cd25f90600090a1565b61190d600080516020615d2b8339815191523361211e565b61192a57604051634e8df0bf60e01b815260040160405180910390fd5b6101c880546001600160801b03908116600160801b918416918202179091556040519081527f8c8298dd23c82a4aa45d27f480c6ce0aa2588e13df0b2fe2c827ca4a6836a5f8906020015b60405180910390a150565b61198933613aed565b6119a657604051634755657960e01b815260040160405180910390fd5b826001600160a01b0381163b6000036119d257604051630458607f60e41b815260040160405180910390fd5b60405163c3c5a54760e01b81526001600160a01b0382169063c3c5a547906119fe903090600401614c7b565b6020604051808303816000875af1158015611a1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4191906155cb565b611a5057611a50818484613af9565b609780546001600160a01b0390921661010002610100600160a81b0319909216919091179055505050565b6000611a8682612dda565b611ae35760405162461bcd60e51b815260206004820152602860248201527f45524337323178797a3a20517565727920666f72206e6f6e206578697374656e6044820152677420746f6b656e2160c01b6064820152608401610cd3565b600082815260ce602052604090205482906001600160a01b031680611b34575b50600081815260cf60205260409020546001600160a01b03168015611b29579392505050565b816001019150611b03565b9392505050565b600054610100900460ff1615808015611b5b5750600054600160ff909116105b80611b755750303b158015611b75575060005460ff166001145b611bd85760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610cd3565b6000805460ff191660011790558015611bfb576000805461ff0019166101001790555b6001600160a01b038a16611c225760405163d92e233d60e01b815260040160405180910390fd5b8851600314611c3057600080fd5b8551600214611c3e57600080fd5b611c488c8c613ca3565b611c50613cd4565b611c58613cd4565b611c866daaeb6d7670e522a718067333cd4e733cc6cdda760b79bafa08df41ecfa224f810dceb66001613cfb565b611c8f85613d3e565b604080518082019091526001600160801b038e81168083529089166020909201829052600160801b909102176101c8556101cd805462010000600160b01b031916620100006001600160a01b038d160217905588518990600090611cf557611cf56156ae565b60200260200101516101cb9081611d0c9190615712565b5088600181518110611d2057611d206156ae565b60200260200101516101c99081611d379190615712565b5088600281518110611d4b57611d4b6156ae565b60200260200101516101ca9081611d629190615712565b5060d4805460ff191683151517905585518690600090611d8457611d846156ae565b60200260200101516101ce60006101000a8154816001600160a01b0302191690836001600160a01b03160217905550611dd786600181518110611dc957611dc96156ae565b60200260200101518961344c565b611de260008661335d565b611dfa600080516020615d2b8339815191528661335d565b8215611e0e57611e0c8484600061365e565b505b8015611e54576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50505050505050505050505050565b60006001600160a01b038216611ece5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b6064820152608401610cd3565b506001600160a01b0316600090815260d360205260409020546001600160601b031690565b611efb613d91565b611f056000613d3e565b565b6000611f1233613aed565b611f2f57604051634755657960e01b815260040160405180910390fd5b6097805460ff81161560ff1990911681179091556040518181527fd8c469bcb7a4be6d69103a5fdb65991249a95423350dc583495ccf5e7c28a88d9060200160405180910390a1905090565b60606101c98054610bd990615577565b611f9660003361211e565b611fb357604051634e8df0bf60e01b815260040160405180910390fd5b6001600160a01b038116611fda5760405163d92e233d60e01b815260040160405180910390fd5b6101ce80546001600160a01b0319166001600160a01b0383169081179091556040517fd45e158b56e768c1167267f8516bcf96348071775faded3c9216b60855d873de9161197591614c7b565b61203260003361211e565b61204f57604051634e8df0bf60e01b815260040160405180910390fd5b6101cd54610100900460ff161561206557600080fd5b6101cd805461ff0019166101001790556040517ffbbcc58867e8fad1d9f72f1b991660f5ec5e4e068374aa442b8604eef182b63990600090a1565b6101d1546000905b8015612104576000190160008181526101cf602052604090205464ffffffffff1642108015906120f5575060008181526101cf6020526040902054600160281b900464ffffffffff164211155b156120ff57919050565b6120a8565b5060405163b7b2409760e01b815260040160405180910390fd5b6000918252610100602090815260408084206001600160a01b0393909316845291905290205460ff1690565b61215333613aed565b61217057604051634755657960e01b815260040160405180910390fd5b60975461010090046001600160a01b0316803b6000036121a357604051630458607f60e41b815260040160405180910390fd5b6001600160a01b0384166122175760405163034a0dc160e41b815230600482015282151560248201526001600160a01b038216906334a0dc1090604401600060405180830381600087803b1580156121fa57600080fd5b505af115801561220e573d6000803e3d6000fd5b50505050610ec3565b610ec3818585613af9565b606060cb8054610bd990615577565b609754829060ff16158015612256575060975461010090046001600160a01b03163b15155b156122f157609754604051633185c44d60e21b81526101009091046001600160a01b03169063c61711349061229190309085906004016155b1565b602060405180830381865afa1580156122ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d291906155cb565b6122f15780604051633b79c77360e21b8152600401610cd39190614c7b565b6114bb338484613dec565b6060816001600160401b0381111561231657612316614d11565b60405190808252806020026020018201604052801561234957816020015b60608152602001906001900390816123345790505b50905060005b828110156123e9576123b93085858481811061236d5761236d6156ae565b905060200281019061237f91906157d1565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250613eba92505050565b8282815181106123cb576123cb6156ae565b602002602001018190525080806123e190615817565b91505061234f565b5092915050565b612408600080516020615d2b8339815191523361211e565b61242557604051634e8df0bf60e01b815260040160405180910390fd5b6101cd805460ff600160b01b808304821615810260ff60b01b1990931692909217928390556040517f6ae3331a8bd1998bb8fd9d3d02b720f4862fb43e7586d302ba44e3923cea922d936124829390049091161515815260200190565b60405180910390a1565b609754849060ff161580156124b1575060975461010090046001600160a01b03163b15155b1561259457336001600160a01b038216036124fe576124d1335b84612e9f565b6124ed5760405162461bcd60e51b8152600401610cd390615611565b6124f985858585613fae565b6125c5565b609754604051633185c44d60e21b81526101009091046001600160a01b03169063c61711349061253490309033906004016155b1565b602060405180830381865afa158015612551573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061257591906155cb565b6125945733604051633b79c77360e21b8152600401610cd39190614c7b565b61259d336124cb565b6125b95760405162461bcd60e51b8152600401610cd390615611565b6125c585858585613fae565b5050505050565b8260001080156125dd575060148311155b6125fa576040516332b4cb2160e21b815260040160405180910390fd5b60006126046120a0565b60008181526101cf60209081526040808320815160c081018352815464ffffffffff8082168352600160281b82041694820194909452600160501b840463ffffffff90811693820193909352600160701b84049092166060830152600160901b9092046001600160701b03166080820181905260019092015460a0820152929350612698906722b1c8c1227a000090615662565b90506126a48682615675565b34146126c357604051632c1d501360e11b815260040160405180910390fd5b60a08201516126e557604051637904b60360e11b815260040160405180910390fd5b60cc54606083015163ffffffff1681106127115760405162491a1760e81b815260040160405180910390fd5b61272289898560a00151888a613fe1565b61273f576040516334ce9a3d60e11b815260040160405180910390fd5b600061274f86868a85888c6131a3565b9050611276868243613338565b60006014821115612780576040516332b4cb2160e21b815260040160405180910390fd5b816000036127a1576040516332b4cb2160e21b815260040160405180910390fd5b6014835111156127c4576040516349a3ec1560e11b815260040160405180910390fd5b82516000036127e6576040516349a3ec1560e11b815260040160405180910390fd5b6127fe600080516020615d2b8339815191523361211e565b15801561283257506128307ff0887ba65ee2024ea881d91b74c2450ef19e1557f03bed3ea9f16b037cbe2dc93361211e565b155b1561285057604051634e8df0bf60e01b815260040160405180910390fd5b600082845161285f9190615675565b60cc5461286c9190615662565b6101c8549091506001600160801b031681111561289c5760405163a67c036160e01b815260040160405180910390fd5b60005b84518110156128d5576128cd8582815181106128bd576128bd6156ae565b6020026020010151856000613338565b60010161289f565b507f74074e463a8efcb02859ade8892e3934bd28eb75c9d1e6085a40c474088e2bfe83828660405161290993929190615830565b60405180910390a19392505050565b606061292382612dda565b6129405760405163677510db60e11b815260040160405180910390fd5b600061294a612c98565b90506000612956611f7b565b90506000612962610bc9565b9050825160000361297557949350505050565b828261298087614058565b6040516020016129929392919061588e565b6040516020818303038152906040529350505050919050565b6101d1546000905b80156129f8576000190160008181526101cf6020526040902054600160281b900464ffffffffff164211156129f3576129ed816001615662565b91505090565b6129b3565b506000905090565b60008281526101006020526040902060010154612a1c81613353565b6114bb83836133e4565b612a3e600080516020615d2b8339815191523361211e565b612a5b57604051634e8df0bf60e01b815260040160405180910390fd5b6101cd5460ff1615612a805760405163ddff29e960e01b815260040160405180910390fd5b6000612a8d3384846140ea565b905073c8bdd6b14a51df97802431cc41eda181d58e4db6612aae828661317f565b6001600160a01b031614612ad5576040516332c3ce2560e11b815260040160405180910390fd5b825115612b24576101ca612ae98482615712565b507ff5e721c51327df71720f204c71b46bc26bcafb44db5012739c85814c7862f6c06101ca604051612b1b91906158d1565b60405180910390a15b815115610ec3576101cc612b388382615712565b506040805160208101909152600081526101c990612b569082615712565b507f8eca6ea708f9bc34439b72366aa672afc86bb8b1294f1ba9637945c5dab8ea746101cc604051612b8891906158d1565b60405180910390a150505050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526101d1548210612beb576040516327e7ab7d60e11b815260040160405180910390fd5b5060009081526101cf6020908152604091829020825160c081018452815464ffffffffff8082168352600160281b82041693820193909352600160501b830463ffffffff90811694820194909452600160701b83049093166060840152600160901b9091046001600160701b031660808301526001015460a082015290565b6001600160a01b03918216600090815260d26020908152604080832093909416825291909152205460ff1690565b60606101cc8054612ca890615577565b9050600003612d2e576101cd5460405163511113e560e01b8152620100009091046001600160a01b03169063511113e590612ce9906101ca906004016158d1565b600060405180830381865afa158015612d06573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610edb919081019061595c565b6101cc8054610bd990615577565b612d44613d91565b6001600160a01b038116612da95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610cd3565b612db281613d3e565b50565b60006001600160e01b03198216637965db0b60e01b1480610bc35750610bc382614154565b600081815260d0602052604081205460ff1615612df957506000919050565b816000108015610bc357505060cc54101590565b600081815260d160205260409020546001600160a01b0390811690831681146114bb57600082815260d16020526040902080546001600160a01b0319166001600160a01b0385169081179091558290612e6582611a7b565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000612eaa82612dda565b612f0b5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b6064820152608401610cd3565b6000612f1683611a7b565b9050806001600160a01b0316846001600160a01b03161480612f515750836001600160a01b0316612f4684610c6b565b6001600160a01b0316145b80612f615750612f618185612c6a565b949350505050565b826001600160a01b0316612f7c82611a7b565b6001600160a01b031614612fe05760405162461bcd60e51b815260206004820152602560248201527f4552433732313a207472616e736665722066726f6d20696e636f72726563742060448201526437bbb732b960d91b6064820152608401610cd3565b6001600160a01b0382166130425760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b6064820152608401610cd3565b61304d8383836141af565b613058600082612e0d565b6001600160a01b03838116600081815260d36020908152604080832080546001600160601b03198082166001600160601b039283166000190183161790925595881680855282852080549283169288166001019097169190911790955585835260ce90915280822080546001600160a01b0319168517905551849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b604080517f5b174e00b853ebb074ee5cb5d23ca67a264896e5670f923ac103fccad5232b5560208201526001600160a01b03861691810191909152606081018490526080810183905260a0810182905260009081906131759060c0015b604051602081830303815290604052805190602001206141f8565b9695505050505050565b600080600061318e85856142d3565b9150915061319b81614315565b509392505050565b6001600160a01b038616600081815260d360209081526040808320548984526101d083528184209484529390915280822054908501519192600160601b90046001600160601b03169163ffffffff161561324557846040015163ffffffff16811061322157604051632f18066d60e01b815260040160405180910390fd5b846040015163ffffffff1687820111156132455780856040015163ffffffff160396505b6101c854600160801b90046001600160801b0316801561328f5780831061327f57604051632f18066d60e01b815260040160405180910390fd5b80888401111561328f5782810397505b856060015163ffffffff1688880111156132b35786866060015163ffffffff160397505b6000851180156132cc57506101cd54610100900460ff16155b15613301578482106132f157604051632f18066d60e01b815260040160405180910390fd5b8488830111156133015781850397505b5060008881526101d0602090815260408083206001600160a01b038d16845290915290209087019055508490509695505050505050565b6114bb8383604051806020016040528060008152508461445a565b612db28133614474565b613367828261211e565b61153a576000828152610100602090815260408083206001600160a01b03851684529091529020805460ff191660011790556133a03390565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6133ee828261211e565b1561153a576000828152610100602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6127106001600160601b03821611156134ba5760405162461bcd60e51b815260206004820152602a60248201527f455243323938313a20726f79616c7479206665652077696c6c206578636565646044820152692073616c65507269636560b01b6064820152608401610cd3565b6001600160a01b0382166135105760405162461bcd60e51b815260206004820152601960248201527f455243323938313a20696e76616c6964207265636569766572000000000000006044820152606401610cd3565b604080518082019091526001600160a01b039092168083526001600160601b039091166020909201829052600160a01b90910217606555565b61355281612dda565b6135ae5760405162461bcd60e51b815260206004820152602760248201527f45524337323178797a3a20517565727920666f72206e6f6e6578697374656e7460448201526620746f6b656e2160c81b6064820152608401610cd3565b60006135b982611a7b565b90506135c7816000846141af565b6135d2600083612e0d565b6001600160a01b038116600081815260d36020908152604080832080546001600160601b031981166001600160601b039182166000190190911617905585835260d0909152808220805460ff1916600190811790915560cd80549091019055518492907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908390a45050565b6000828161366a6129ab565b9050601482111561368e576040516373c2b52560e11b815260040160405180910390fd5b6101d15480158015906136a057508185105b156136be576040516344ca163560e11b815260040160405180910390fd5b808511156136df576040516307cc4d8f60e01b815260040160405180910390fd5b6136ea601483615662565b6136f48487615662565b11156137135760405163c1eae7bb60e01b815260040160405180910390fd5b60008581526101cf602052604081205464ffffffffff16908490036137a0574281116137525760405163bf4a806960e01b815260040160405180910390fd5b6101d18690556040517f842cd1905522b3731a39e0d2fb9d3757bc29b4e57e9253b230d437bf10505e9b9061378c908a908a908a90615a09565b60405180910390a185945050505050611b34565b6000888860008181106137b5576137b56156ae565b905060c002018036038101906137cb9190615ac4565b905060cc54816060015163ffffffff1610156137fa57604051630e93fda160e21b815260040160405180910390fd5b42821115801561380957508115155b801561381757506101d15487105b1561387457805164ffffffffff16821461384457604051632ca4094f60e21b815260040160405180910390fd5b42816020015164ffffffffff161161386f5760405163804491f960e01b815260040160405180910390fd5b61389f565b42816000015164ffffffffff161161389f5760405163667e606760e11b815260040160405180910390fd5b868581015b8882146138d8578a8a8a84038181106138bf576138bf6156ae565b905060c002018036038101906138d59190615ac4565b92505b6101c85460608401516001600160801b0390911663ffffffff90911611156139135760405163bccc7e2360e01b815260040160405180910390fd5b826000015164ffffffffff16836020015164ffffffffff161161394957604051631131dc6b60e11b815260040160405180910390fd5b81156139d957600019820160009081526101cf6020526040902054606084015164ffffffffff600160281b8304169163ffffffff600160701b9091048116911610156139af574281106139af576040516357be1d0d60e01b815260040160405180910390fd5b835164ffffffffff1681106139d75760405163064f2b0760e31b815260040160405180910390fd5b505b60008281526101cf60209081526040918290208551815492870151938701516060880151608089015164ffffffffff93841669ffffffffffffffffffff1990961695909517600160281b93909616929092029490941767ffffffffffffffff60501b1916600160501b63ffffffff9586160263ffffffff60701b191617600160701b9490911693909302929092176001600160901b0316600160901b6001600160701b039092169190910217815560a0840151600191820155909101908082106138a4576101d18190556040517f842cd1905522b3731a39e0d2fb9d3757bc29b4e57e9253b230d437bf10505e9b90613ad7908d908d908d90615a09565b60405180910390a19a9950505050505050505050565b6000610bc3818361211e565b60405163c3c5a54760e01b81526001600160a01b0384169063c3c5a54790613b25903090600401614c7b565b6020604051808303816000875af1158015613b44573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613b6891906155cb565b15613c06578015613bd857604051632cc5350560e21b81526001600160a01b0384169063b314d41490613ba190309086906004016155b1565b600060405180830381600087803b158015613bbb57600080fd5b505af1158015613bcf573d6000803e3d6000fd5b50505050505050565b604051630781ad2d60e21b81526001600160a01b03841690631e06b4b490613ba190309086906004016155b1565b8015613c3a57604051633e9f1edf60e11b81526001600160a01b03841690637d3e3dbe90613ba190309086906004016155b1565b6001600160a01b03821615613c775760405163a0af290360e01b81526001600160a01b0384169063a0af290390613ba190309086906004016155b1565b604051632210724360e11b81526001600160a01b03841690634420e48690613ba1903090600401614c7b565b600054610100900460ff16613cca5760405162461bcd60e51b8152600401610cd390615b5e565b61153a82826144cd565b600054610100900460ff16611f055760405162461bcd60e51b8152600401610cd390615b5e565b600054610100900460ff16613d225760405162461bcd60e51b8152600401610cd390615b5e565b6001600160a01b0383163b156114bb5782611a50818484613af9565b61019680546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b610196546001600160a01b03163314611f055760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610cd3565b816001600160a01b0316836001600160a01b031603613e4d5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c6572000000000000006044820152606401610cd3565b6001600160a01b03838116600081815260d26020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b60606001600160a01b0383163b613f225760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b6064820152608401610cd3565b600080846001600160a01b031684604051613f3d9190615ba9565b600060405180830381855af49150503d8060008114613f78576040519150601f19603f3d011682016040523d82523d6000602084013e613f7d565b606091505b5091509150613fa58282604051806060016040528060278152602001615d046027913961450d565b95945050505050565b613fb9848484612f69565b613fc584848484614526565b610ec35760405162461bcd60e51b8152600401610cd390615bc5565b6000613175868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250506040516001600160601b0319606089901b16602082015260348101879052889250605401905060405160208183030381529060405280519060200120614624565b606060006140658361463a565b60010190506000816001600160401b0381111561408457614084614d11565b6040519080825280601f01601f1916602001820160405280156140ae576020820181803683370190505b5090508181016020015b600019016f181899199a1a9b1b9c1cb0b131b232b360811b600a86061a8153600a85049450846140b857509392505050565b600080613fa57f35fa4dcabfcae3f1b6e0c4c1ac43df02ba9cb39e2dcdc3d3f1b92a38118e3354868680519060200120868051906020012060405160200161315a94939291909384526001600160a01b039290921660208401526040830152606082015260800190565b60006001600160e01b0319821663152a902d60e11b148061418557506001600160e01b031982166380ac58cd60e01b145b806141a057506001600160e01b03198216635b5e139f60e01b145b80610bc35750610bc382614712565b6001600160a01b038316158015906141cf57506001600160a01b03821615155b156114bb5760d45460ff16156114bb576040516328f11eb160e21b815260040160405180910390fd5b604080517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f6020808301919091527f36cb08f6aafe2399767bf40e9642429d7535f40e61bd81428cad09095c5d337d828401527f06c015bd22b4c69690933c1058878ebdfef31f9aaae40bbe86d8a09fe1b2972c60608301524660808301523060a0808401919091528351808403909101815260c08301845280519082012061190160f01b60e084015260e2830181905261010280840186905284518085039091018152610122909301909352815191012060009190611b34565b60008082516041036143095760208301516040840151606085015160001a6142fd87828585614747565b9450945050505061148e565b5060009050600261148e565b600081600481111561432957614329615c17565b036143315750565b600181600481111561434557614345615c17565b0361438d5760405162461bcd60e51b815260206004820152601860248201527745434453413a20696e76616c6964207369676e617475726560401b6044820152606401610cd3565b60028160048111156143a1576143a1615c17565b036143ee5760405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152606401610cd3565b600381600481111561440257614402615c17565b03612db25760405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c604482015261756560f01b6064820152608401610cd3565b614465848483614801565b613fc560008560cc5485614526565b61447e828261211e565b61153a5761448b81614981565b614496836020614993565b6040516020016144a7929190615c2d565b60408051601f198184030181529082905262461bcd60e51b8252610cd391600401614c4f565b600054610100900460ff166144f45760405162461bcd60e51b8152600401610cd390615b5e565b60ca6145008382615712565b5060cb6114bb8282615712565b6060831561451c575081611b34565b611b348383614b2e565b60006001600160a01b0384163b1561461c57604051630a85bd0160e11b81526001600160a01b0385169063150b7a029061456a903390899088908890600401615c9c565b6020604051808303816000875af19250505080156145a5575060408051601f3d908101601f191682019092526145a291810190615ccf565b60015b614602573d8080156145d3576040519150601f19603f3d011682016040523d82523d6000602084013e6145d8565b606091505b5080516000036145fa5760405162461bcd60e51b8152600401610cd390615bc5565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050612f61565b506001612f61565b6000826146318584614b58565b14949350505050565b60008072184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b83106146795772184f03e93ff9f4daa797ed6e38ed64bf6a1f0160401b830492506040015b6d04ee2d6d415b85acef810000000083106146a5576d04ee2d6d415b85acef8100000000830492506020015b662386f26fc1000083106146c357662386f26fc10000830492506010015b6305f5e10083106146db576305f5e100830492506008015b61271083106146ef57612710830492506004015b60648310614701576064830492506002015b600a8310610bc35760010192915050565b60006001600160e01b0319821663152a902d60e11b1480610bc357506301ffc9a760e01b6001600160e01b0319831614610bc3565b6000806fa2a8918ca85bafe22016d0b997e4df60600160ff1b0383111561477457506000905060036147f8565b6040805160008082526020820180845289905260ff881692820192909252606081018690526080810185905260019060a0016020604051602081039080840390855afa1580156147c8573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381166147f1576000600192509250506147f8565b9150600090505b94509492505050565b6001600160a01b0383166148575760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f20616464726573736044820152606401610cd3565b61486560008460cc546141af565b60cc8054838101918290556001600160a01b038516600090815260d36020526040902080546001600160601b038082168701166001600160601b0319909116179055908215614904576001600160a01b038516600090815260d36020526040902080546001600160601b03808216600160601b92839004821688019091169091026001600160c01b031617600160c01b6001600160401b038616021790555b600081815260cf6020526040902080546001600160a01b0319166001600160a01b03871617905560018281019082015b60405182906001600160a01b038916906000907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a481600101915080821061493457505050610ec3565b6060610bc36001600160a01b03831660145b606060006149a2836002615675565b6149ad906002615662565b6001600160401b038111156149c4576149c4614d11565b6040519080825280601f01601f1916602001820160405280156149ee576020820181803683370190505b509050600360fc1b81600081518110614a0957614a096156ae565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110614a3857614a386156ae565b60200101906001600160f81b031916908160001a9053506000614a5c846002615675565b614a67906001615662565b90505b6001811115614adf576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110614a9b57614a9b6156ae565b1a60f81b828281518110614ab157614ab16156ae565b60200101906001600160f81b031916908160001a90535060049490941c93614ad881615cec565b9050614a6a565b508315611b345760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610cd3565b815115614b3e5781518083602001fd5b8060405162461bcd60e51b8152600401610cd39190614c4f565b600081815b845181101561319b57614b8982868381518110614b7c57614b7c6156ae565b6020026020010151614b9d565b915080614b9581615817565b915050614b5d565b6000818310614bb9576000828152602084905260409020611b34565b6000838152602083905260409020611b34565b6001600160e01b031981168114612db257600080fd5b600060208284031215614bf457600080fd5b8135611b3481614bcc565b60005b83811015614c1a578181015183820152602001614c02565b50506000910152565b60008151808452614c3b816020860160208601614bff565b601f01601f19169290920160200192915050565b602081526000611b346020830184614c23565b600060208284031215614c7457600080fd5b5035919050565b6001600160a01b0391909116815260200190565b80356001600160a01b0381168114614ca657600080fd5b919050565b60008060408385031215614cbe57600080fd5b614cc783614c8f565b946020939093013593505050565b600080600060608486031215614cea57600080fd5b614cf384614c8f565b9250614d0160208501614c8f565b9150604084013590509250925092565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f191681016001600160401b0381118282101715614d4f57614d4f614d11565b604052919050565b60006001600160401b03821115614d7057614d70614d11565b50601f01601f191660200190565b600082601f830112614d8f57600080fd5b8135614da2614d9d82614d57565b614d27565b818152846020838601011115614db757600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215614dec57600080fd5b85356001600160401b03811115614e0257600080fd5b614e0e88828901614d7e565b955050602086013593506040860135925060608601359150614e3260808701614c8f565b90509295509295909350565b60008060408385031215614e5157600080fd5b50508035926020909101359150565b60008060408385031215614e7357600080fd5b82359150614e8360208401614c8f565b90509250929050565b80356001600160601b0381168114614ca657600080fd5b60008060408385031215614eb657600080fd5b614ebf83614c8f565b9150614e8360208401614e8c565b60008083601f840112614edf57600080fd5b5081356001600160401b03811115614ef657600080fd5b60208301915083602060c08302850101111561148e57600080fd5b600080600060408486031215614f2657600080fd5b83356001600160401b03811115614f3c57600080fd5b614f4886828701614ecd565b909790965060209590950135949350505050565b80356001600160801b0381168114614ca657600080fd5b600060208284031215614f8557600080fd5b611b3482614f5c565b8015158114612db257600080fd5b8035614ca681614f8e565b600080600060608486031215614fbc57600080fd5b614fc584614c8f565b9250614fd360208501614c8f565b91506040840135614fe381614f8e565b809150509250925092565b60006001600160401b0382111561500757615007614d11565b5060051b60200190565b600082601f83011261502257600080fd5b81356020615032614d9d83614fee565b82815260059290921b8401810191818101908684111561505157600080fd5b8286015b848110156150905780356001600160401b038111156150745760008081fd5b6150828986838b0101614d7e565b845250918301918301615055565b509695505050505050565b600082601f8301126150ac57600080fd5b813560206150bc614d9d83614fee565b82815260059290921b840181019181810190868411156150db57600080fd5b8286015b84811015615090576150f081614c8f565b83529183019183016150df565b6000806000806000806000806000806000806101608d8f03121561512057600080fd5b6151298d614f5c565b9b506001600160401b0360208e0135111561514357600080fd5b6151538e60208f01358f01614d7e565b9a506001600160401b0360408e0135111561516d57600080fd5b61517d8e60408f01358f01614d7e565b995061518b60608e01614c8f565b98506001600160401b0360808e013511156151a557600080fd5b6151b58e60808f01358f01615011565b97506151c360a08e01614e8c565b96506151d160c08e01614f5c565b95506001600160401b0360e08e013511156151eb57600080fd5b6151fb8e60e08f01358f0161509b565b945061520a6101008e01614c8f565b93506001600160401b036101208e0135111561522557600080fd5b6152368e6101208f01358f01614ecd565b90935091506152486101408e01614f9c565b90509295989b509295989b509295989b565b60006020828403121561526c57600080fd5b611b3482614c8f565b60008060006060848603121561528a57600080fd5b61529384614c8f565b92506020840135614fd381614f8e565b600080604083850312156152b657600080fd5b6152bf83614c8f565b915060208301356152cf81614f8e565b809150509250929050565b60008083601f8401126152ec57600080fd5b5081356001600160401b0381111561530357600080fd5b6020830191508360208260051b850101111561148e57600080fd5b6000806020838503121561533157600080fd5b82356001600160401b0381111561534757600080fd5b615353858286016152da565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156153b457603f198886030184526153a2858351614c23565b94509285019290850190600101615386565b5092979650505050505050565b600080600080608085870312156153d757600080fd5b6153e085614c8f565b93506153ee60208601614c8f565b92506040850135915060608501356001600160401b0381111561541057600080fd5b61541c87828801614d7e565b91505092959194509250565b60008060008060006080868803121561544057600080fd5b85356001600160401b0381111561545657600080fd5b615462888289016152da565b9096509450506020860135925060408601359150614e3260608701614c8f565b6000806040838503121561549557600080fd5b82356001600160401b038111156154ab57600080fd5b6154b78582860161509b565b95602094909401359450505050565b6000806000606084860312156154db57600080fd5b83356001600160401b03808211156154f257600080fd5b6154fe87838801614d7e565b9450602086013591508082111561551457600080fd5b61552087838801614d7e565b9350604086013591508082111561553657600080fd5b5061554386828701614d7e565b9150509250925092565b6000806040838503121561556057600080fd5b61556983614c8f565b9150614e8360208401614c8f565b600181811c9082168061558b57607f821691505b6020821081036155ab57634e487b7160e01b600052602260045260246000fd5b50919050565b6001600160a01b0392831681529116602082015260400190565b6000602082840312156155dd57600080fd5b8151611b3481614f8e565b634e487b7160e01b600052601160045260246000fd5b81810381811115610bc357610bc36155e8565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b80820180821115610bc357610bc36155e8565b8082028115828204841417610bc357610bc36155e8565b6000826156a957634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b601f8211156114bb57600081815260208120601f850160051c810160208610156156eb5750805b601f850160051c820191505b8181101561570a578281556001016156f7565b505050505050565b81516001600160401b0381111561572b5761572b614d11565b61573f816157398454615577565b846156c4565b602080601f831160018114615774576000841561575c5750858301515b600019600386901b1c1916600185901b17855561570a565b600085815260208120601f198616915b828110156157a357888601518255948401946001909101908401615784565b50858210156157c15787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000808335601e198436030181126157e857600080fd5b8301803591506001600160401b0382111561580257600080fd5b60200191503681900382131561148e57600080fd5b600060018201615829576158296155e8565b5060010190565b6000606082018583526020858185015260606040850152818551808452608086019150828701935060005b818110156158805784516001600160a01b03168352938301939183019160010161585b565b509098975050505050505050565b600084516158a0818460208901614bff565b8451908301906158b4818360208901614bff565b84519101906158c7818360208801614bff565b0195945050505050565b60006020808352600084546158e581615577565b8084870152604060018084166000811461590657600181146159205761594e565b60ff1985168984015283151560051b89018301955061594e565b896000528660002060005b858110156159465781548b820186015290830190880161592b565b8a0184019650505b509398975050505050505050565b60006020828403121561596e57600080fd5b81516001600160401b0381111561598457600080fd5b8201601f8101841361599557600080fd5b80516159a3614d9d82614d57565b8181528560208385010111156159b857600080fd5b613fa5826020830160208601614bff565b803564ffffffffff81168114614ca657600080fd5b803563ffffffff81168114614ca657600080fd5b80356001600160701b0381168114614ca657600080fd5b6040808252818101849052600090606080840187845b88811015615aae5764ffffffffff80615a37846159c9565b168452602081615a488286016159c9565b169085015250615a598286016159de565b63ffffffff8082168786015280615a718786016159de565b1686860152505060806001600160701b03615a8d8285016159f2565b169084015260a0828101359084015260c09283019290910190600101615a1f565b5050809350505050826020830152949350505050565b600060c08284031215615ad657600080fd5b60405160c081018181106001600160401b0382111715615af857615af8614d11565b604052615b04836159c9565b8152615b12602084016159c9565b6020820152615b23604084016159de565b6040820152615b34606084016159de565b6060820152615b45608084016159f2565b608082015260a083013560a08201528091505092915050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60008251615bbb818460208701614bff565b9190910192915050565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b634e487b7160e01b600052602160045260246000fd5b76020b1b1b2b9b9a1b7b73a3937b61d1030b1b1b7bab73a1604d1b815260008351615c5f816017850160208801614bff565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351615c90816028840160208801614bff565b01602801949350505050565b6001600160a01b038581168252841660208201526040810183905260806060820181905260009061317590830184614c23565b600060208284031215615ce157600080fd5b8151611b3481614bcc565b600081615cfb57615cfb6155e8565b50600019019056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564fd63b67fde00b77f1f54f050135a475665b815acd10a8e7fd785ba074846734aa2646970667358221220a7ecf8127c45c1a63269425f858b4a7d22956d10320c6e498709a396c645a32864736f6c63430008110033