0 txs
0 calls
constructor
No constructor.
functions
balanceOf
viewfunction balanceOf(address account, uint256 id) view returns (uint256)
balanceOfBatch
viewfunction balanceOfBatch(address[] accounts, uint256[] ids) view returns (uint256[])
claimNonces
viewfunction claimNonces(address receiver) view returns (uint256 nonce)
composeNextClaimAllowanceDigest
viewfunction composeNextClaimAllowanceDigest(address _receiver, uint256 _tokenId) view returns (bytes32 digest)
composeNextUpdateUriAllowanceDigest
viewfunction composeNextUpdateUriAllowanceDigest(uint256 _tokenId, string _uri) view returns (bytes32 digest)
customPrices
viewfunction customPrices(uint256 tokenId) view returns (uint248 price, bool isSet)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
defaultMintPrice
viewfunction defaultMintPrice() view returns (uint256)
eip712Domain
viewfunction eip712Domain() view returns (bytes1 fields, string name, string version, uint256 chainId, address verifyingContract, bytes32 salt, uint256[] extensions)
exists
viewfunction exists(uint256 id) view returns (bool)
getPrice
viewfunction getPrice(uint256 _tokenId) view returns (uint256)
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)
mintControl
viewfunction mintControl(address user, uint256 tokenId) view returns (bool isMinted)
MINTER_ROLE
viewfunction MINTER_ROLE() view returns (bytes32)
name
viewfunction name() view returns (string)
OPERATOR_ROLE
viewfunction OPERATOR_ROLE() view returns (bytes32)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
supportsInterface
viewfunction supportsInterface(bytes4 _interfaceId) view returns (bool)
totalSupply
viewfunction totalSupply() view returns (uint256)
totalSupply
viewfunction totalSupply(uint256 id) view returns (uint256)
updateUriNonces
viewfunction updateUriNonces(uint256 tokenId) view returns (uint256 nonce)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
uri
viewfunction uri(uint256 tokenId) view returns (string)
claim
payablefunction claim(address _receiver, uint256 _tokenId, bytes _signature) payable
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(uint256 _mintPrice, string _baseUri, address _admin, address _operator, address _minter)
lazyClaim
payablefunction lazyClaim(address _receiver, uint256 _tokenId, string _uri, bytes _claimSignature, bytes _updateUriSignature) payable
mintGem
payablefunction mintGem(address _receiver, uint256 _tokenId, bytes _signature) payable
mintGem
payablefunction mintGem(address _receiver, uint256 _tokenId, string _uri, bytes _claimSignature, bytes _updateUriSignature) payable
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
safeBatchTransferFrom
nonpayablefunction safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] values, bytes data)
safeTransferFrom
nonpayablefunction safeTransferFrom(address from, address to, uint256 id, uint256 value, bytes data)
setApprovalForAll
nonpayablefunction setApprovalForAll(address operator, bool approved)
setBaseURI
nonpayablefunction setBaseURI(string _uri)
setCustomMintPrice
nonpayablefunction setCustomMintPrice(uint256 _tokenId, uint248 _newPrice)
setDefaultMintPrice
nonpayablefunction setDefaultMintPrice(uint256 _newMintPrice)
setTokenURI
nonpayablefunction setTokenURI(uint256 _tokenId, string _uri, bytes _signature)
unsetCustomMintPrice
nonpayablefunction unsetCustomMintPrice(uint256 _tokenId)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
withdraw
nonpayablefunction withdraw(address _receiver, tuple _asset)
events
ApprovalForAll
event ApprovalForAll(address indexed account, address indexed operator, bool approved)
BaseUriChanged
event BaseUriChanged(string newUri)
ClaimNonceUpdated
event ClaimNonceUpdated(address indexed receiver, uint256 updatedNonce)
CustomMintPriceSet
event CustomMintPriceSet(uint256 tokenId, uint256 newPrice)
CustomMintPriceUnset
event CustomMintPriceUnset(uint256 tokenId)
DefaultMintPriceChanged
event DefaultMintPriceChanged(uint256 newPrice)
EIP712DomainChanged
event EIP712DomainChanged()
GemMinted
event GemMinted(address receiver, uint256 tokenId)
Initialized
event Initialized(uint64 version)
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)
UpdateUriNonceUpdated
event UpdateUriNonceUpdated(uint256 indexed tokenId, uint256 updatedNonce)
Upgraded
event Upgraded(address indexed implementation)
URI
event URI(string value, uint256 indexed id)
Withdrawn
event Withdrawn(address indexed receiver, address indexed asset, uint256 amount)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AlreadyOwned
error AlreadyOwned(address receiver, uint256 tokenId)
ECDSAInvalidSignature
error ECDSAInvalidSignature()
ECDSAInvalidSignatureLength
error ECDSAInvalidSignatureLength(uint256 length)
ECDSAInvalidSignatureS
error ECDSAInvalidSignatureS(bytes32 s)
ERC1155InsufficientBalance
error ERC1155InsufficientBalance(address sender, uint256 balance, uint256 needed, uint256 tokenId)
ERC1155InvalidApprover
error ERC1155InvalidApprover(address approver)
ERC1155InvalidArrayLength
error ERC1155InvalidArrayLength(uint256 idsLength, uint256 valuesLength)
ERC1155InvalidOperator
error ERC1155InvalidOperator(address operator)
ERC1155InvalidReceiver
error ERC1155InvalidReceiver(address receiver)
ERC1155InvalidSender
error ERC1155InvalidSender(address sender)
ERC1155MissingApprovalForAll
error ERC1155MissingApprovalForAll(address operator, address owner)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotEnoughPayment
error NotEnoughPayment(uint256 received, uint256 expected)
NotInitializing
error NotInitializing()
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523461003e5761001161004d565b610019610043565b6159936100a882396080518181816139090152818161396e0152613b33015261599390f35b610049565b60405190565b5f80fd5b610055610099565b565b60018060a01b031690565b90565b61007961007461007e92610057565b610062565b610057565b90565b61008a90610065565b90565b61009690610081565b90565b6100a23061008d565b60805256fe60806040526004361015610013575b611b1f565b61001d5f356102cb565b8062fdd58e146102c657806301ffc9a7146102c157806306fdde03146102bc5780630e89341c146102b757806318160ddd146102b257806318c0bbe5146102ad5780631bbd18cf146102a8578063248a9ca3146102a35780632eb2c2d61461029e5780632f2ff15d1461029957806336568abe146102945780633ea02d0f1461028f578063453007ed1461028a5780634d86ee7d146102855780634e1273f4146102805780634f1ef2861461027b5780634f558e791461027657806352d1902d1461027157806355f804b31461026c5780637954a7d41461026757806381e721c31461026257806384b0196e1461025d5780638bb02492146102585780638f0bc1521461025357806391d148541461024e5780639a1c73c614610249578063a094af2714610244578063a217fddf1461023f578063a22cb4651461023a578063ab7e6f3214610235578063ad3cb1cc14610230578063b758cbff1461022b578063bd85b03914610226578063d11a3b4f14610221578063d53913931461021c578063d547741f14610217578063db6c7d3e14610212578063e6f4c3121461020d578063e757223014610208578063e985e9c514610203578063f242432a146101fe578063f5b541a6146101f95763f8d2bd710361000e57611ae9565b611ab4565b611a4e565b6119a9565b611947565b611914565b6118df565b61185f565b61182a565b6117ce565b611799565b611762565b611666565b6115d0565b61156d565b6114e8565b611479565b6113f3565b611377565b61134a565b6112c2565b6111b8565b6110ed565b611016565b610faa565b610f3f565b610f0a565b610ee0565b610e65565b610c9b565b610b7b565b610b48565b610b14565b610ae0565b610a7c565b61087e565b6107e2565b6106de565b610660565b61062b565b6105d8565b61043c565b610392565b60e01c90565b60405190565b5f80fd5b5f80fd5b5f80fd5b60018060a01b031690565b6102f7906102e3565b90565b610303816102ee565b0361030a57565b5f80fd5b9050359061031b826102fa565b565b90565b6103298161031d565b0361033057565b5f80fd5b9050359061034182610320565b565b919060408382031261036b578061035f610368925f860161030e565b93602001610334565b90565b6102db565b6103799061031d565b9052565b9190610390905f60208501940190610370565b565b346103c3576103bf6103ae6103a8366004610343565b90611b5e565b6103b66102d1565b9182918261037d565b0390f35b6102d7565b63ffffffff60e01b1690565b6103dd816103c8565b036103e457565b5f80fd5b905035906103f5826103d4565b565b906020828203126104105761040d915f016103e8565b90565b6102db565b151590565b61042390610415565b9052565b919061043a905f6020850194019061041a565b565b3461046c576104686104576104523660046103f7565b611b92565b61045f6102d1565b91829182610427565b0390f35b6102d7565b5f91031261047b57565b6102db565b601f801991011690565b634e487b7160e01b5f52604160045260245ffd5b906104a890610480565b810190811067ffffffffffffffff8211176104c257604052565b61048a565b906104da6104d36102d1565b928361049e565b565b67ffffffffffffffff81116104fa576104f6602091610480565b0190565b61048a565b9061051161050c836104dc565b6104c7565b918252565b5f7f51756573744d652047454d000000000000000000000000000000000000000000910152565b610547600b6104ff565b9061055460208301610516565b565b61055e61053d565b90565b610569610556565b90565b610574610561565b90565b5190565b60209181520190565b90825f9392825e0152565b6105ae6105b76020936105bc936105a581610577565b9384809361057b565b95869101610584565b610480565b0190565b6105d59160208201915f81840391015261058f565b90565b34610608576105e8366004610471565b6106046105f361056c565b6105fb6102d1565b918291826105c0565b0390f35b6102d7565b9060208282031261062657610623915f01610334565b90565b6102db565b3461065b5761065761064661064136600461060d565b611bc5565b61064e6102d1565b918291826105c0565b0390f35b6102d7565b3461069057610670366004610471565b61068c61067b611bda565b6106836102d1565b9182918261037d565b0390f35b6102d7565b5f80fd5b908160409103126106a75790565b610695565b91906060838203126106d457806106c86106d1925f860161030e565b93602001610699565b90565b6102db565b5f0190565b3461070d576106f76106f13660046106ac565b90611c9c565b6106ff6102d1565b80610709816106d9565b0390f35b6102d7565b90565b61072961072461072e926102e3565b610712565b6102e3565b90565b61073a90610715565b90565b61074690610731565b90565b906107539061073d565b5f5260205260405f2090565b61077361076e6107789261031d565b610712565b61031d565b90565b906107859061075f565b5f5260205260405f2090565b1c90565b60ff1690565b6107ab9060086107b09302610791565b610795565b90565b906107be915461079b565b90565b6107da6107df926107d56004935f94610749565b61077b565b6107b3565b90565b346108135761080f6107fe6107f8366004610343565b906107c1565b6108066102d1565b91829182610427565b0390f35b6102d7565b90565b61082481610818565b0361082b57565b5f80fd5b9050359061083c8261081b565b565b9060208282031261085757610854915f0161082f565b90565b6102db565b61086590610818565b9052565b919061087c905f6020850194019061085c565b565b346108ae576108aa61089961089436600461083e565b611cf2565b6108a16102d1565b91829182610869565b0390f35b6102d7565b5f80fd5b67ffffffffffffffff81116108cf5760208091020190565b61048a565b5f80fd5b909291926108ed6108e8826108b7565b6104c7565b938185526020808601920283019281841161092a57915b8383106109115750505050565b6020809161091f8486610334565b815201920191610904565b6108d4565b9080601f8301121561094d5781602061094a933591016108d8565b90565b6108b3565b5f80fd5b67ffffffffffffffff811161097457610970602091610480565b0190565b61048a565b90825f939282370152565b9092919261099961099482610956565b6104c7565b938185526020850190828401116109b5576109b392610979565b565b610952565b9080601f830112156109d8578160206109d593359101610984565b90565b6108b3565b91909160a081840312610a77576109f6835f830161030e565b92610a04816020840161030e565b92604083013567ffffffffffffffff8111610a725782610a2591850161092f565b92606081013567ffffffffffffffff8111610a6d5783610a4691830161092f565b92608082013567ffffffffffffffff8111610a6857610a6592016109ba565b90565b6102df565b6102df565b6102df565b6102db565b34610aae57610a98610a8f3660046109dd565b93929092611d3f565b610aa06102d1565b80610aaa816106d9565b0390f35b6102d7565b9190604083820312610adb5780610acf610ad8925f860161082f565b9360200161030e565b90565b6102db565b34610b0f57610af9610af3366004610ab3565b90611de2565b610b016102d1565b80610b0b816106d9565b0390f35b6102d7565b34610b4357610b2d610b27366004610ab3565b90611dee565b610b356102d1565b80610b3f816106d9565b0390f35b6102d7565b34610b7657610b60610b5b36600461060d565b611e5c565b610b686102d1565b80610b72816106d9565b0390f35b6102d7565b34610ba957610b93610b8e36600461060d565b611f22565b610b9b6102d1565b80610ba5816106d9565b0390f35b6102d7565b5f80fd5b909182601f83011215610bec5781359167ffffffffffffffff8311610be7576020019260018302840111610be257565b6108d4565b610bae565b6108b3565b909182601f83011215610c2b5781359167ffffffffffffffff8311610c26576020019260018302840111610c2157565b6108d4565b610bae565b6108b3565b606081830312610c9657610c46825f8301610334565b92602082013567ffffffffffffffff8111610c915783610c67918401610bb2565b929093604082013567ffffffffffffffff8111610c8c57610c889201610bf1565b9091565b6102df565b6102df565b6102db565b34610ccd57610cb7610cae366004610c30565b93929092611f3b565b610cbf6102d1565b80610cc9816106d9565b0390f35b6102d7565b67ffffffffffffffff8111610cea5760208091020190565b61048a565b90929192610d04610cff82610cd2565b6104c7565b9381855260208086019202830192818411610d4157915b838310610d285750505050565b60208091610d36848661030e565b815201920191610d1b565b6108d4565b9080601f83011215610d6457816020610d6193359101610cef565b90565b6108b3565b919091604081840312610dc1575f81013567ffffffffffffffff8111610dbc5783610d95918301610d46565b92602082013567ffffffffffffffff8111610db757610db4920161092f565b90565b6102df565b6102df565b6102db565b5190565b60209181520190565b60200190565b610de29061031d565b9052565b90610df381602093610dd9565b0190565b60200190565b90610e1a610e14610e0d84610dc6565b8093610dca565b92610dd3565b905f5b818110610e2a5750505090565b909192610e43610e3d6001928651610de6565b94610df7565b9101919091610e1d565b610e629160208201915f818403910152610dfd565b90565b34610e9657610e92610e81610e7b366004610d69565b90612059565b610e896102d1565b91829182610e4d565b0390f35b6102d7565b919091604081840312610edb57610eb4835f830161030e565b92602082013567ffffffffffffffff8111610ed657610ed392016109ba565b90565b6102df565b6102db565b610ef4610eee366004610e9b565b9061216a565b610efc6102d1565b80610f06816106d9565b0390f35b34610f3a57610f36610f25610f2036600461060d565b612176565b610f2d6102d1565b91829182610427565b0390f35b6102d7565b34610f6f57610f4f366004610471565b610f6b610f5a612209565b610f626102d1565b91829182610869565b0390f35b6102d7565b90602082820312610fa5575f82013567ffffffffffffffff8111610fa057610f9c9201610bb2565b9091565b6102df565b6102db565b34610fd957610fc3610fbd366004610f74565b906122c4565b610fcb6102d1565b80610fd5816106d9565b0390f35b6102d7565b90565b610ff1906008610ff69302610791565b610fde565b90565b906110049154610fe1565b90565b61101360025f90610ff9565b90565b3461104657611026366004610471565b611042611031611007565b6110396102d1565b9182918261037d565b0390f35b6102d7565b9160a0838303126110e857611062825f850161030e565b926110708360208301610334565b92604082013567ffffffffffffffff81116110e35781611091918401610bb2565b929093606082013567ffffffffffffffff81116110de57836110b4918401610bf1565b929093608082013567ffffffffffffffff81116110d9576110d59201610bf1565b9091565b6102df565b6102df565b6102df565b6102db565b61110a6110fb36600461104b565b969590959491949392936122d0565b6111126102d1565b8061111c816106d9565b0390f35b60ff60f81b1690565b61113290611120565b9052565b61113f906102ee565b9052565b939591946111946111896111a89561117b61119e956111b59c9a61116e60e08c01925f8d0190611129565b8a820360208c015261058f565b9088820360408a015261058f565b976060870190610370565b6080850190611136565b60a083019061085c565b60c0818403910152610dfd565b90565b346111ef576111c8366004610471565b6111eb6111d3612388565b936111e29795979391936102d1565b97889788611143565b0390f35b6102d7565b906111fe9061075f565b5f5260205260405f2090565b5f1c90565b60018060f81b031690565b61122661122b9161120a565b61120f565b90565b611238905461121a565b90565b60f81c90565b61124d6112529161123b565b610795565b90565b61125f9054611241565b90565b61126d9060036111f4565b906112845f61127d81850161122e565b9301611255565b90565b60018060f81b031690565b61129b90611287565b9052565b9160206112c09294936112b960408201965f830190611292565b019061041a565b565b346112f3576112da6112d536600461060d565b611262565b906112ef6112e66102d1565b9283928361129f565b0390f35b6102d7565b916060838303126113455761130f825f850161030e565b9261131d8360208301610334565b92604082013567ffffffffffffffff81116113405761133c9201610bf1565b9091565b6102df565b6102db565b6113616113583660046112f8565b929190916124fd565b6113696102d1565b80611373816106d9565b0390f35b346113a8576113a461139361138d366004610ab3565b9061261c565b61139b6102d1565b91829182610427565b0390f35b6102d7565b9190916040818403126113ee576113c6835f8301610334565b92602082013567ffffffffffffffff81116113e9576113e59201610bb2565b9091565b6102df565b6102db565b346114245761142061140f6114093660046113ad565b9161264e565b6114176102d1565b91829182610869565b0390f35b6102d7565b61143281611287565b0361143957565b5f80fd5b9050359061144a82611429565b565b91906040838203126114745780611468611471925f8601610334565b9360200161143d565b90565b6102db565b346114a85761149261148c36600461144c565b90612875565b61149a6102d1565b806114a4816106d9565b0390f35b6102d7565b90565b5f1b90565b6114c96114c46114ce926114ad565b6114b0565b610818565b90565b6114da5f6114b5565b90565b6114e56114d1565b90565b34611518576114f8366004610471565b6115146115036114dd565b61150b6102d1565b91829182610869565b0390f35b6102d7565b61152681610415565b0361152d57565b5f80fd5b9050359061153e8261151d565b565b9190604083820312611568578061155c611565925f860161030e565b93602001611531565b90565b6102db565b3461159c57611586611580366004611540565b90612881565b61158e6102d1565b80611598816106d9565b0390f35b6102d7565b906115ab9061075f565b5f5260205260405f2090565b6115cd906115c86001915f926115a1565b610ff9565b90565b34611600576115fc6115eb6115e636600461060d565b6115b7565b6115f36102d1565b9182918261037d565b0390f35b6102d7565b5f7f352e302e30000000000000000000000000000000000000000000000000000000910152565b61163660056104ff565b9061164360208301611605565b565b61164d61162c565b90565b611658611645565b90565b611663611650565b90565b3461169657611676366004610471565b61169261168161165b565b6116896102d1565b918291826105c0565b0390f35b6102d7565b909291926116b06116ab826104dc565b6104c7565b938185526020850190828401116116cc576116ca92610979565b565b610952565b9080601f830112156116ef578160206116ec9335910161169b565b90565b6108b3565b919060a08382031261175d5761170c815f8501610334565b92602081013567ffffffffffffffff8111611758578261172d9183016116d1565b9261175561173e846040850161030e565b9361174c816060860161030e565b9360800161030e565b90565b6102df565b6102db565b346117945761177e6117753660046116f4565b93929092612bd3565b6117866102d1565b80611790816106d9565b0390f35b6102d7565b346117c9576117c56117b46117af36600461060d565b612be2565b6117bc6102d1565b9182918261037d565b0390f35b6102d7565b6117e56117dc3660046112f8565b92919091612c09565b6117ed6102d1565b806117f7816106d9565b0390f35b7f9f2df0fed2c77648de5860a4cc508cd0818c85b8b8a1ab4ceeef8d981c8956a690565b6118276117fb565b90565b3461185a5761183a366004610471565b61185661184561181f565b61184d6102d1565b91829182610869565b0390f35b6102d7565b3461188e57611878611872366004610ab3565b90612c43565b6118806102d1565b8061188a816106d9565b0390f35b6102d7565b906020828203126118ac576118a9915f0161030e565b90565b6102db565b906118bb9061073d565b5f5260205260405f2090565b6118dc906118d75f915f926118b1565b610ff9565b90565b3461190f5761190b6118fa6118f5366004611893565b6118c7565b6119026102d1565b9182918261037d565b0390f35b6102d7565b61193161192236600461104b565b96959095949194939293612c4f565b6119396102d1565b80611943816106d9565b0390f35b346119775761197361196261195d36600461060d565b612cae565b61196a6102d1565b9182918261037d565b0390f35b6102d7565b91906040838203126119a457806119986119a1925f860161030e565b9360200161030e565b90565b6102db565b346119da576119d66119c56119bf36600461197c565b90612d14565b6119cd6102d1565b91829182610427565b0390f35b6102d7565b91909160a081840312611a49576119f8835f830161030e565b92611a06816020840161030e565b92611a148260408501610334565b92611a228360608301610334565b92608082013567ffffffffffffffff8111611a4457611a4192016109ba565b90565b6102df565b6102db565b34611a8057611a6a611a613660046119df565b93929092612d45565b611a726102d1565b80611a7c816106d9565b0390f35b6102d7565b7f97667070c54ef182b0f5858b034beac1b6f3089aa2d3188bb1e8929f4fa9b92990565b611ab1611a85565b90565b34611ae457611ac4366004610471565b611ae0611acf611aa9565b611ad76102d1565b91829182610869565b0390f35b6102d7565b34611b1a57611b16611b05611aff366004610343565b90612dbe565b611b0d6102d1565b91829182610869565b0390f35b6102d7565b5f80fd5b5f90565b90611b319061075f565b5f5260205260405f2090565b611b49611b4e9161120a565b610fde565b90565b611b5b9054611b3d565b90565b611b8690611b81611b8b93611b71611b23565b505f611b7b612de0565b01611b27565b6118b1565b611b51565b90565b5f90565b611b9a611b8e565b50611ba481612e04565b908115611bb0575b5090565b611bba9150612e44565b5f611bac565b606090565b611bd790611bd1611bc0565b506130d8565b90565b611be2611b23565b50611bf66001611bf061314c565b01611b51565b90565b90611c1391611c0e611c096114d1565b613170565b611c7e565b565b611c1e90610715565b90565b611c2a90611c15565b90565b5f80fd5b9190604083820312611c6b57611c6490611c4b60406104c7565b93611c58825f830161030e565b5f860152602001610334565b6020830152565b611c2d565b611c7b903690611c31565b90565b90611c94611c8e611c9a93611c21565b91611c70565b906131d2565b565b90611ca691611bf9565b565b5f90565b611cb590610818565b90565b90611cc290611cac565b5f5260205260405f2090565b90565b611cdd611ce29161120a565b611cce565b90565b611cef9054611cd1565b90565b6001611d13611d1992611d03611ca8565b505f611d0d6132ab565b01611cb8565b01611ce5565b90565b916020611d3d929493611d3660408201965f830190611136565b0190611136565b565b949391929092611d4d6132cf565b86611d60611d5a836102ee565b916102ee565b141580611d9e575b611d7e5750611d7c949593909192936132f1565b565b8690611d9a5f92839263711bec9160e11b845260048401611d1c565b0390fd5b50611db3611dad888390612d14565b15610415565b611d68565b90611dd391611dce611dc982611cf2565b613170565b611dd5565b565b90611ddf91613393565b50565b90611dec91611db8565b565b9080611e09611e03611dfe6132cf565b6102ee565b916102ee565b03611e1a57611e179161344a565b50565b5f63334bd91960e11b815280611e32600482016106d9565b0390fd5b611e4f90611e4a611e456114d1565b613170565b611e51565b565b611e5a90613530565b565b611e6590611e36565b565b611e8090611e7b611e766114d1565b613170565b611ed0565b565b60f81b90565b90611e9760ff60f81b91611e82565b9181191691161790565b611eaa90610415565b90565b90565b90611ec5611ec0611ecc92611ea1565b611ead565b8254611e88565b9055565b611ee75f5f611ee1600385906111f4565b01611eb0565b611f1d7f48f6ccf92616e94bb81f523144b250609b68be3db3a9fe9b7f2403bf4b7d354691611f146102d1565b9182918261037d565b0390a1565b611f2b90611e67565b565b611f3891369161169b565b90565b611f66611f7b95611f60611f75959496611f53611a85565b9285918988919293613584565b906135d4565b611f6f8161360f565b92611f2d565b90613853565b565b606090565b5190565b916020611fa7929493611fa060408201965f830190610370565b0190610370565b565b90611fbb611fb6836108b7565b6104c7565b918252565b369037565b90611fea611fd283611fa9565b92602080611fe086936108b7565b9201910390611fc0565b565b612000611ffb612005926114ad565b610712565b61031d565b90565b6001612014910161031d565b90565b634e487b7160e01b5f52603260045260245ffd5b9061203582610dc6565b811015612046576020809102010190565b612017565b906120559061031d565b9052565b90612062611f7d565b5061206c82611f82565b61208661208061207b84610dc6565b61031d565b9161031d565b036121105761209c61209783611f82565b611fc5565b916120a65f611fec565b5b806120c26120bc6120b785611f82565b61031d565b9161031d565b101561210a57612105906121006120ee6120dd8584906138c0565b6120e88785906138d6565b90611b5e565b6120fb879184909261202b565b61204b565b612008565b6120a7565b50505090565b61211c61212291610dc6565b91611f82565b9061213d5f928392635b05999160e01b845260048401611f86565b0390fd5b906121539161214e6138f8565b612155565b565b9061216891612163816139b2565b613a24565b565b9061217491612141565b565b61218890612182611b8e565b50612be2565b61219a6121945f611fec565b9161031d565b1190565b6121af906121aa613b22565b6121fd565b90565b90565b6121c96121c46121ce926121b2565b6114b0565b610818565b90565b6121fa7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc6121b5565b90565b506122066121d1565b90565b612219612214611ca8565b61219e565b90565b906122369161223161222c611a85565b613170565b612275565b565b91906122528161224b816122579561057b565b8095610979565b610480565b0190565b90916122729260208301925f818503910152612238565b90565b612288612283828490611f2d565b613b80565b907f87cdeaffd8e70903d6ce7cc983fac3b09ca79e83818124c98e47a1d70f8027d6916122bf6122b66102d1565b9283928361225b565b0390a1565b906122ce9161221c565b565b916122e8979593919694929690919293949596612c4f565b565b5f90565b5f90565b5f7f4549503731323a20556e696e697469616c697a65640000000000000000000000910152565b612326601560209261057b565b61232f816122f2565b0190565b6123489060208101905f818303910152612319565b90565b1561235257565b61235a6102d1565b62461bcd60e51b81528061237060048201612333565b0390fd5b61237d90610731565b90565b600f60f81b90565b6123906122ea565b50612399611bc0565b506123a2611bc0565b506123ab611b23565b506123b46122ee565b506123bd611ca8565b506123c6611f7d565b506123fd6123d2613b95565b6123dd5f8201611ce5565b6123ef6123e95f6114b5565b91610818565b149081612448575b5061234b565b612405613bb9565b9061240e613bd8565b90469061241a30612374565b906124245f6114b5565b906124366124315f611fec565b611fc5565b9061243f612380565b96959493929190565b6124559150600101611ce5565b6124676124615f6114b5565b91610818565b145f6123f7565b90565b61248561248061248a9261246e565b610712565b61031d565b90565b6124965f6104ff565b90565b6124a161248d565b90565b906124b060ff916114b0565b9181191691161790565b906124cf6124ca6124d692611ea1565b611ead565b82546124a4565b9055565b9160206124fb9294936124f460408201965f830190611136565b0190610370565b565b919261251b612521929461250f6117fb565b92859187909192613bf7565b906135d4565b61252a81613c20565b61253382612cae565b346125466125408361031d565b9161031d565b106125c6575061256a818361255b6001612471565b90612564612499565b92613c82565b61258a600161258561257e60048590610749565b859061077b565b6124ba565b907fbcb9d53d4007cc91738f23b3cc444ef3b64b31f574e49135e28c4f3ba4f23ed7916125c16125b86102d1565b928392836124da565b0390a1565b346125e15f9283926311a47aaf60e11b845260048401611f86565b0390fd5b906125ef9061073d565b5f5260205260405f2090565b61260761260c9161120a565b610795565b90565b61261990546125fb565b90565b61264b915f61264061264693612630611b8e565b508261263a6132ab565b01611cb8565b016125e5565b61260f565b90565b61266d9261265a611ca8565b5061266782939192613d28565b92613dc8565b90565b9061268a916126856126806114d1565b613170565b6127f7565b565b9061269690611287565b9052565b906126a490610415565b9052565b6126b260406104c7565b90565b906126eb6126e25f6126c56126a8565b946126dc6126d483830161122e565b83880161268c565b01611255565b6020840161269a565b565b6126f6906126b5565b90565b6127039051611287565b90565b9061271760018060f81b03916114b0565b9181191691161790565b61273561273061273a92611287565b610712565b611287565b90565b90565b9061275561275061275c92612721565b61273d565b8254612706565b9055565b61276a9051610415565b90565b9061279760205f61279d9461278f8282016127898488016126f9565b90612740565b019201612760565b90611eb0565b565b906127a99161276d565b565b6127bf6127ba6127c492611287565b610712565b61031d565b90565b6127d0906127ab565b9052565b9160206127f59294936127ee60408201965f830190610370565b01906127c7565b565b61283961280e612809600384906111f4565b6126ed565b61281a845f830161268c565b61282860016020830161269a565b612834600384906111f4565b61279f565b907f8990d689e9f2dc46dee3f9d59b0018f7912f9a012648afa9e7ef0f32df8d730c916128706128676102d1565b928392836127d4565b0390a1565b9061287f91612670565b565b6128959161288d6132cf565b919091613e28565b565b60401c90565b6128a96128ae91612897565b610795565b90565b6128bb905461289d565b90565b67ffffffffffffffff1690565b6128d76128dc9161120a565b6128be565b90565b6128e990546128cb565b90565b67ffffffffffffffff1690565b61290d612908612912926114ad565b610712565b6128ec565b90565b61292961292461292e9261246e565b610712565b6128ec565b90565b61293a90610731565b90565b9061295067ffffffffffffffff916114b0565b9181191691161790565b61296e612969612973926128ec565b610712565b6128ec565b90565b90565b9061298e6129896129959261295a565b612976565b825461293d565b9055565b60401b90565b906129b368ff000000000000000091612999565b9181191691161790565b906129d26129cd6129d992611ea1565b611ead565b825461299f565b9055565b6129e690612915565b9052565b91906129fd905f602085019401906129dd565b565b91939092612a0b613eeb565b94612a20612a1a5f88016128b1565b15610415565b94612a2c5f88016128df565b80612a3f612a395f6128f9565b916128ec565b1480612b59575b90612a5a612a546001612915565b916128ec565b1480612b31575b612a6c909115610415565b9081612b20575b50612b0457612a9c94612a91612a896001612915565b5f8a01612979565b86612af2575b612b60565b612aa4575b50565b612ab1905f8091016129bd565b6001612ae97fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d291612ae06102d1565b918291826129ea565b0390a15f612aa1565b612aff60015f8a016129bd565b612a97565b5f63f92ee8a960e01b815280612b1c600482016106d9565b0390fd5b612b2b915015610415565b5f612a73565b50612a6c612b3e30612931565b3b612b51612b4b5f611fec565b9161031d565b149050612a61565b5086612a46565b9092612bd194612bb8612bc692612baa612bcc96612b7c613f00565b612b8589613f28565b612b8d613f3d565b612b95613f63565b612b9d613f77565b612ba56114d1565b613393565b50612bb3611a85565b613393565b50612bc16117fb565b613393565b50613530565b613b80565b565b90612be0949392916129ff565b565b612c01612c0691612bf1611b23565b505f612bfb61314c565b016115a1565b611b51565b90565b91612c1793919091926124fd565b565b90612c3491612c2f612c2a82611cf2565b613170565b612c36565b565b90612c409161344a565b50565b90612c4d91612c19565b565b94612c6392969491979591889091926124fd565b612c77612c72600187906115a1565b611b51565b612c89612c835f611fec565b9161031d565b14612c96575b5050505050565b612ca4949390919293611f3b565b5f80808080612c8f565b612cc5612cca91612cbd611b23565b5060036111f4565b6126ed565b612cd660208201612760565b612ce85750612ce56002611b51565b90565b612cf65f612cfb92016126f9565b6127ab565b90565b90612d089061073d565b5f5260205260405f2090565b612d4291612d38612d3d92612d27611b8e565b506001612d32612de0565b01612cfe565b6125e5565b61260f565b90565b949391929092612d536132cf565b86612d66612d60836102ee565b916102ee565b141580612da4575b612d845750612d8294959390919293613f81565b565b8690612da05f92839263711bec9160e11b845260048401611d1c565b0390fd5b50612db9612db3888390612d14565b15610415565b612d6e565b90612ddd91612dcb611ca8565b50612dd781929161402c565b916140bf565b90565b7f88be536d5240c274a3b1d3a1be54482fd9caa294f08c62a7cde569f49a3c450090565b612e0c611b8e565b5080612e27612e21637965db0b60e01b6103c8565b916103c8565b14908115612e34575b5090565b612e3e9150612e44565b5f612e30565b612e4c611b8e565b5080612e67612e61636cdb3d1360e11b6103c8565b916103c8565b148015612e8b575b908115612e7b575b5090565b612e85915061411b565b5f612e77565b5080612ea6612ea06303a24d0760e21b6103c8565b916103c8565b14612e6f565b90612eb69061075f565b5f5260205260405f2090565b634e487b7160e01b5f52602260045260245ffd5b9060016002830492168015612ef6575b6020831014612ef157565b612ec2565b91607f1691612ee6565b60209181520190565b5f5260205f2090565b905f9291805490612f2c612f2583612ed6565b8094612f00565b916001811690815f14612f835750600114612f47575b505050565b612f549192939450612f09565b915f925b818410612f6b57505001905f8080612f42565b60018160209295939554848601520191019290612f58565b92949550505060ff19168252151560200201905f8080612f42565b90612fa891612f12565b90565b90612fcb612fc492612fbb6102d1565b93848092612f9e565b038361049e565b565b612fd690612fab565b90565b90565b5190565b905090565b905f9291805490612fff612ff883612ed6565b8094612fe0565b916001811690815f14613051575060011461301a575b505050565b6130279192939450612f09565b5f905b83821061303d57505001905f8080613015565b60018160209254848601520191019061302a565b92949550505060ff191682528015150201905f8080613015565b6130906130879260209261307e81610577565b94858093612fe0565b93849101610584565b0190565b6130a2906130a89392612fe5565b9061306b565b90565b6130ca92916130d6916130bc6102d1565b948592602084019283613094565b9081038252038361049e565b565b6130e0611bc0565b506130e9614141565b906131006130fb600184018390612eac565b612fcd565b9061311261310d83612fd9565b612fdc565b61312461311e5f611fec565b9161031d565b115f1461313b57505f61313792016130ab565b5b90565b90506131479150614165565b613138565b7f4a593662ee04d27b6a00ebb31be7fe0c102c2ade82a7c5d764f2df05dc4e280090565b6131829061317c6132cf565b906135d4565b565b61318e90516102ee565b90565b6131a56131a06131aa926114ad565b610712565b6102e3565b90565b6131b690613191565b90565b6131c3905161031d565b90565b6131cf90610731565b90565b6131dd5f8301613184565b6131f76131f16131ec5f6131ad565b6102ee565b916102ee565b145f1461327b576132148161320e602085016131b9565b9061429b565b5b9061322d60206132265f8401613184565b92016131b9565b9161327661326461325e7fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb936131c6565b9361073d565b9361326d6102d1565b9182918261037d565b0390a3565b6132a66132895f8401613184565b82906132a061329a602087016131b9565b926131c6565b9061419d565b613215565b7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b62680090565b6132d76122ee565b503390565b91906132ef905f60208501940190611136565b565b93919290928361331161330b6133065f6131ad565b6102ee565b916102ee565b1461336c578461333161332b6133265f6131ad565b6102ee565b916102ee565b14613346576133449493909192936142d2565b565b6133686133525f6131ad565b5f918291626a0d4560e21b8352600483016132dc565b0390fd5b61338f6133785f6131ad565b5f918291632bfa23e760e11b8352600483016132dc565b0390fd5b61339b611b8e565b506133a46132ab565b6133b86133b283859061261c565b15610415565b5f14613443576133e2906133dd5f6133d581600194018690611cb8565b0185906125e5565b6124ba565b906133eb6132cf565b9061342861342261341c7f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d95611cac565b9261073d565b9261073d565b926134316102d1565b8061343b816106d9565b0390a4600190565b5050505f90565b613452611b8e565b5061345b6132ab565b61346682849061261c565b5f146134f05761348f9061348a5f613482818094018690611cb8565b0185906125e5565b6124ba565b906134986132cf565b906134d56134cf6134c97ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b95611cac565b9261073d565b9261073d565b926134de6102d1565b806134e8816106d9565b0390a4600190565b5050505f90565b906135035f19916114b0565b9181191691161790565b90565b9061352561352061352c9261075f565b61350d565b82546134f7565b9055565b61353b816002613510565b6135717fc7e175b6f7ba96e4a4b06a5db8f138cac51e6ead054cc38fe93ff2bc5c5b8bc5916135686102d1565b9182918261037d565b0390a1565b613581913691610984565b90565b6135ae94916135a8936135a2926135996122ee565b5091909161264e565b92613576565b9061438e565b90565b9160206135d29294936135cb60408201965f830190611136565b019061085c565b565b906135e96135e383839061261c565b15610415565b6135f1575050565b61360b5f92839263e2517d3f60e01b8452600484016135b1565b0390fd5b61361881613d28565b9061362e82613629600184906115a1565b613510565b61366d61365b7f9da1d699cb24824eb197f26964f80303156b6c16d9df802eca79b210c3f2d4009261075f565b926136646102d1565b9182918261037d565b0390a2565b601f602091010490565b1b90565b9190600861369b9102916136955f198461367c565b9261367c565b9181191691161790565b91906136bb6136b66136c39361075f565b61350d565b908354613680565b9055565b6136d9916136d3611b23565b916136a5565b565b5b8181106136e7575050565b806136f45f6001936136c7565b016136dc565b9190601f811161370a575b505050565b61371661373b93612f09565b90602061372284613672565b83019310613743575b61373490613672565b01906136db565b5f8080613705565b91506137348192905061372b565b90613761905f1990600802610791565b191690565b8161377091613751565b906002021790565b9061378281610577565b9067ffffffffffffffff8211613842576137a6826137a08554612ed6565b856136fa565b602090601f83116001146137da579180916137c9935f926137ce575b5050613766565b90555b565b90915001515f806137c2565b601f198316916137e985612f09565b925f5b81811061382a57509160029391856001969410613810575b505050020190556137cc565b613820910151601f841690613751565b90555f8080613804565b919360206001819287870151815501950192016137ec565b61048a565b9061385191613778565b565b906138729061386d6001613865614141565b018490612eac565b613847565b61387b81611bc5565b906138bb6138a97f6bb7ff708619ba0610cba295a58592e0451dee2622938c8755667688daf3529b9261075f565b926138b26102d1565b918291826105c0565b0390a2565b90602080916138cd6122ee565b50029101015190565b90602080916138e3611b23565b50029101015190565b6138f590610731565b90565b613901306138ec565b61393361392d7f00000000000000000000000000000000000000000000000000000000000000006102ee565b916102ee565b14801561395d575b61394157565b5f63703e46dd60e11b815280613959600482016106d9565b0390fd5b506139666143dc565b6139986139927f00000000000000000000000000000000000000000000000000000000000000006102ee565b916102ee565b141561393b565b506139b06139ab611a85565b613170565b565b6139bb9061399f565b565b6139c690610715565b90565b6139d2906139bd565b90565b6139de90610731565b90565b60e01b90565b905051906139f48261081b565b565b90602082820312613a0f57613a0c915f016139e7565b90565b6102db565b613a1c6102d1565b3d5f823e3d90fd5b9190613a526020613a3c613a37866139c9565b6139d5565b6352d1902d90613a4a6102d1565b9384926139e1565b82528180613a62600482016106d9565b03915afa80915f92613af2575b50155f14613aa3575050906001613a8457505b565b613a9f905f918291634c9c8ce360e01b8352600483016132dc565b0390fd5b9283613abe613ab8613ab36121d1565b610818565b91610818565b03613ad357613ace929350614402565b613a82565b613aee845f918291632a87526960e21b835260048301610869565b0390fd5b613b1491925060203d8111613b1b575b613b0c818361049e565b8101906139f6565b905f613a6f565b503d613b02565b613b2b306138ec565b613b5d613b577f00000000000000000000000000000000000000000000000000000000000000006102ee565b916102ee565b03613b6457565b5f63703e46dd60e11b815280613b7c600482016106d9565b0390fd5b613b93905f613b8d614141565b01613847565b565b7fa16a46d94261c7517cc8ff89f61c0ce93598e3c849801011dee649a6a557d10090565b613bc1611bc0565b50613bd56002613bcf613b95565b01612fcd565b90565b613be0611bc0565b50613bf46003613bee613b95565b01612fcd565b90565b92613c11613c1792613c1d95613c0b6122ee565b50612dbe565b92613576565b9061438e565b90565b613c298161402c565b90613c3e82613c395f84906118b1565b613510565b613c7d613c6b7fb2d20fffbf83980b3fba9f4ecc6407abea9d9b23a1e1c74ba6826ec8260474c69261073d565b92613c746102d1565b9182918261037d565b0390a2565b91929082613ca0613c9a613c955f6131ad565b6102ee565b916102ee565b14613cc857613cc693613cb29161448b565b90613cbc5f6131ad565b93909192936142d2565b565b613ceb613cd45f6131ad565b5f918291632bfa23e760e11b8352600483016132dc565b0390fd5b634e487b7160e01b5f52601160045260245ffd5b613d12613d189193929361031d565b9261031d565b8201809211613d2357565b613cef565b613d47613d42613d5792613d3a611b23565b5060016115a1565b611b51565b613d516001612471565b90613d03565b90565b7f35361b0debaaf5e1b2966aac8284c7d62e548c3122634d5d2e18839f9734293990565b95949290613dc094613db892613dab606095613da160808c01955f8d019061085c565b60208b0190610370565b88830360408a0152612238565b940190610370565b565b60200190565b613dfe613e0d9293613e2595613ddc611ca8565b50613de5613d5a565b9395919091613df26102d1565b96879560208701613d7e565b6020820181038252038261049e565b613e1f613e1982612fdc565b91613dc2565b206144c2565b90565b919091613e33612de0565b83613e4e613e48613e435f6131ad565b6102ee565b916102ee565b14613ec557613e7590613e70613e6960018693018590612cfe565b86906125e5565b6124ba565b919091613ec0613eae613ea87f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c319361073d565b9361073d565b93613eb76102d1565b91829182610427565b0390a3565b613ee7613ed15f6131ad565b5f91829162ced3e160e81b8352600483016132dc565b0390fd5b613ef361452a565b90565b613efe61453e565b565b613f08613ef6565b565b613f1b90613f1661453e565b613f1d565b565b613f269061458f565b565b613f3190613f0a565b565b613f3b61453e565b565b613f45613f33565b565b613f4f61453e565b613f57613f59565b565b613f61614646565b565b613f6b613f47565b565b613f7561453e565b565b613f7f613f6d565b565b9092939183613fa0613f9a613f955f6131ad565b6102ee565b916102ee565b146140055781613fc0613fba613fb55f6131ad565b6102ee565b916102ee565b14613fdf57613fdd94613fd29161448b565b9193909192936142d2565b565b614001613feb5f6131ad565b5f918291626a0d4560e21b8352600483016132dc565b0390fd5b6140286140115f6131ad565b5f918291632bfa23e760e11b8352600483016132dc565b0390fd5b61404a61404561405a9261403e611b23565b505f6118b1565b611b51565b6140546001612471565b90613d03565b90565b7f4ebf019b5150ea909181dd93000106dcc03981bb8976fd6286dc5dfaa931b76090565b6140b66140bd946140ac6060949897956140a2608086019a5f87019061085c565b6020850190611136565b6040830190610370565b0190610370565b565b614100906140f1614118946140d2611ca8565b506140db61405d565b92946140e56102d1565b95869460208601614081565b6020820181038252038261049e565b61411261410c82612fdc565b91613dc2565b206144c2565b90565b614123611b8e565b5061413d6141376301ffc9a760e01b6103c8565b916103c8565b1490565b7f89fc852226e759c7c636cf34d732f0198fc56a54876b2374a52beb7b0c55860090565b5061416e611bc0565b50614182600261417c612de0565b01612fcd565b90565b61418e90610715565b90565b61419a90614185565b90565b916141aa6141b293614191565b919091614681565b565b905090565b6141c45f80926141b4565b0190565b6141d1906141b9565b90565b906141e66141e183610956565b6104c7565b918252565b606090565b3d5f1461420b576142003d6141d4565b903d5f602084013e5b565b6142136141eb565b90614209565b5f7f4661696c656420746f2073656e64204574686572000000000000000000000000910152565b61424d601460209261057b565b61425681614219565b0190565b61426f9060208101905f818303910152614240565b90565b1561427957565b6142816102d1565b62461bcd60e51b8152806142976004820161425a565b0390fd5b5f6142d0926142aa82936131c6565b906142b36102d1565b90816142be816141c8565b03925af16142ca6141f0565b50614272565b565b929391936142e48483879084926146cf565b816142ff6142f96142f45f6131ad565b6102ee565b916102ee565b0361430c575b5050505050565b6143146132cf565b9161431e86610dc6565b61433161432b6001612471565b9161031d565b145f146143785761436161435161436d9761434b5f611fec565b906138d6565b9261435b5f611fec565b906138d6565b92949091929394614a1a565b5b5f80808080614305565b61438995919294909192939461486a565b61436e565b6143ad916143a49161439e6122ee565b50614bbc565b90929192614ca4565b90565b60018060a01b031690565b6143c76143cc9161120a565b6143b0565b90565b6143d990546143bb565b90565b6143e46122ee565b506143ff5f6143f96143f46121d1565b614d75565b016143cf565b90565b9061440c82614db6565b816144377fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b9161073d565b906144406102d1565b8061444a816106d9565b0390a261445681612fdc565b6144686144625f611fec565b9161031d565b115f1461447c5761447891614e41565b505b565b5050614486614e0b565b61447a565b91614494611f7d565b5061449d611f7d565b5060405192600184526020840152604083019160018352602083015260408201604052565b6144dc906144ce611ca8565b506144d7614e70565b614e84565b90565b90565b6144f66144f16144fb926144df565b6114b0565b610818565b90565b6145277ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a006144e2565b90565b614532611ca8565b5061453b6144fe565b90565b61454f614549614ec5565b15610415565b61455557565b5f631afcd79f60e31b81528061456d600482016106d9565b0390fd5b6145829061457d61453e565b614584565b565b61458d90614ee3565b565b61459890614571565b565b6145a261453e565b6145aa614632565b565b5f5260205f2090565b9190601f81116145c5575b505050565b6145d16145f6936145ac565b9060206145dd84613672565b830193106145fe575b6145ef90613672565b01906136db565b5f80806145c0565b91506145ef819290506145e6565b6146205f61461a8354612ed6565b836145b5565b5f80019055565b6146309061460c565b565b6146445f61463e614141565b01614627565b565b61464e61459a565b565b61465990610731565b90565b63ffffffff1690565b61467961467461467e9261465c565b6139e1565b6103c8565b90565b906146c86146cd936146b9600494936146a063a9059cbb919391614665565b926146a96102d1565b96879460208601908152016124da565b6020820181038252038361049e565b614ef9565b565b92939091936146dd5f611fec565b5b806146f96146f36146ee89610dc6565b61031d565b9161031d565b10156147745761471c8461471661471189859061202b565b6131b9565b90611b5e565b61472e6147285f611fec565b9161031d565b116147415761473c90612008565b6146de565b6147556147508792869361202b565b6131b9565b906147705f92839263ff207e2360e01b8452600484016124da565b0390fd5b5090936147849392909192614fc9565b565b61478f90610715565b90565b61479b90614786565b90565b6147a790610731565b90565b905051906147b7826103d4565b565b906020828203126147d2576147cf915f016147aa565b90565b6102db565b60209181520190565b6147ff61480860209361480d936147f681612fdc565b938480936147d7565b95869101610584565b610480565b0190565b939061484b90614867969461483e6148599561483460a08a01945f8b0190611136565b6020890190611136565b8682036040880152610dfd565b908482036060860152610dfd565b9160808184039101526147e0565b90565b94909194939293853b61488561487f5f611fec565b9161031d565b11614893575b505050505050565b5f6148cf916148da6020966148af6148aa8b614792565b61479e565b9563bc197c819397999190916148c36102d1565b9a8b998a9889976139e1565b875260048701614811565b03925af180915f92614999575b50155f146149565750600161490357505b5f808080808061488b565b61490b6141f0565b9061491582612fdc565b6149276149215f611fec565b9161031d565b145f1461494d57614949905f918291632bfa23e760e11b8352600483016132dc565b0390fd5b50805190602001fd5b61496f61496963bc197c8160e01b6103c8565b916103c8565b0361497a57506148f8565b614995905f918291632bfa23e760e11b8352600483016132dc565b0390fd5b6149bb91925060203d81116149c2575b6149b3818361049e565b8101906147b9565b905f6148e7565b503d6149a9565b9193614a00614a1796946149f6614a0a94976149ec60a08801995f890190611136565b6020870190611136565b6040850190610370565b6060830190610370565b60808184039101526147e0565b90565b94909194939293853b614a35614a2f5f611fec565b9161031d565b11614a43575b505050505050565b5f614a7f91614a8a602096614a5f614a5a8b614792565b61479e565b9563f23a6e61939799919091614a736102d1565b9a8b998a9889976139e1565b8752600487016149c9565b03925af180915f92614b49575b50155f14614b0657506001614ab357505b5f8080808080614a3b565b614abb6141f0565b90614ac582612fdc565b614ad7614ad15f611fec565b9161031d565b145f14614afd57614af9905f918291632bfa23e760e11b8352600483016132dc565b0390fd5b50805190602001fd5b614b1f614b1963f23a6e6160e01b6103c8565b916103c8565b03614b2a5750614aa8565b614b45905f918291632bfa23e760e11b8352600483016132dc565b0390fd5b614b6b91925060203d8111614b72575b614b63818361049e565b8101906147b9565b905f614a97565b503d614b59565b5f90565b90565b614b94614b8f614b9992614b7d565b610712565b61031d565b90565b614bb0614bab614bb59261031d565b6114b0565b610818565b90565b5f90565b919091614bc76122ee565b50614bd0614b79565b50614bd9611ca8565b50614be383612fdc565b614bf6614bf06041614b80565b9161031d565b145f14614c3d57614c369192614c0a611ca8565b50614c13611ca8565b50614c1c614bb8565b506020810151606060408301519201515f1a90919261520a565b9192909190565b50614c475f6131ad565b90614c5b614c56600294612fdc565b614b9c565b91929190565b634e487b7160e01b5f52602160045260245ffd5b60041115614c7f57565b614c61565b90614c8e82614c75565b565b614c9c614ca19161120a565b61075f565b90565b80614cb7614cb15f614c84565b91614c84565b145f14614cc2575050565b80614cd6614cd06001614c84565b91614c84565b145f14614cf9575f63f645eedf60e01b815280614cf5600482016106d9565b0390fd5b80614d0d614d076002614c84565b91614c84565b145f14614d3b57614d37614d2083614c90565b5f91829163fce698f760e01b83526004830161037d565b0390fd5b614d4e614d486003614c84565b91614c84565b14614d565750565b614d71905f9182916335e2f38360e21b835260048301610869565b0390fd5b90565b90614d8960018060a01b03916114b0565b9181191691161790565b90565b90614dab614da6614db29261073d565b614d93565b8254614d78565b9055565b803b614dca614dc45f611fec565b9161031d565b14614dec57614dea905f614de4614ddf6121d1565b614d75565b01614d96565b565b614e07905f918291634c9c8ce360e01b8352600483016132dc565b0390fd5b34614e1e614e185f611fec565b9161031d565b11614e2557565b5f63b398979f60e01b815280614e3d600482016106d9565b0390fd5b5f80614e6d93614e4f6141eb565b508390602081019051915af490614e646141f0565b90919091615306565b90565b614e78611ca8565b50614e816153fb565b90565b604291614e8f611ca8565b50604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b614ecd611b8e565b50614ee05f614eda613eeb565b016128b1565b90565b614ef7906002614ef1612de0565b01613847565b565b905f602091614f06611b23565b50614f0f611b23565b50828151910182855af115614fa2573d5f5190614f34614f2e5f611fec565b9161031d565b145f14614f885750614f4581614650565b3b614f58614f525f611fec565b9161031d565b145b614f615750565b614f6d614f8491614650565b5f918291635274afe760e01b8352600483016132dc565b0390fd5b614f9b614f956001612471565b9161031d565b1415614f5a565b6040513d5f823e3d90fd5b90614fb8910361031d565b90565b90614fc6910161031d565b90565b90614fd261314c565b91614fe18183869088926154d0565b614ffb614ff5614ff05f6131ad565b6102ee565b916102ee565b146150e0575b61501b6150156150105f6131ad565b6102ee565b916102ee565b14615026575b505050565b61502f5f611fec565b926150395f611fec565b935b8461505661505061504b87610dc6565b61031d565b9161031d565b10156150b2576150a66150ac9161506e8488906138d6565b6150a08161509a61508b5f8a016150858d8d6138d6565b906115a1565b9161509583611b51565b614fad565b90613510565b90614fbb565b94612008565b9361503b565b6150d894506150d2929350600191509201916150cd83611b51565b614fad565b90613510565b5f8080615021565b926150ea5f611fec565b946150f45f611fec565b955b8661511161510b61510688610dc6565b61031d565b9161031d565b10156151705761516461516a918861515e876151586151498b6151436151388c88906138d6565b965f889601926138d6565b906115a1565b9161515383611b51565b613d03565b90613510565b90613d03565b96612008565b956150f6565b61519591965094919461518f600185019161518a83611b51565b613d03565b90613510565b615001565b90565b6151b16151ac6151b69261519a565b610712565b61031d565b90565b60ff1690565b6151c8906151b9565b9052565b615201615208946151f76060949897956151ed608086019a5f87019061085c565b60208501906151bf565b604083019061085c565b019061085c565b565b9392936152156122ee565b5061521e614b79565b50615227611ca8565b5061523185614c90565b61526361525d7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a061519d565b9161031d565b116152f05790615286602094955f9493929361527d6102d1565b948594856151cc565b838052039060015afa156152eb5761529e5f516114b0565b806152b96152b36152ae5f6131ad565b6102ee565b916102ee565b146152cf575f916152c95f6114b5565b91929190565b506152d95f6131ad565b6001916152e55f6114b5565b91929190565b613a14565b5050506152fc5f6131ad565b9060039291929190565b9061531a906153136141eb565b5015610415565b5f1461532657506157b2565b61532f82612fdc565b61534161533b5f611fec565b9161031d565b148061536f575b615350575090565b61536b905f918291639996b31560e01b8352600483016132dc565b0390fd5b50803b61538461537e5f611fec565b9161031d565b14615348565b7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90565b909594926153f9946153e86153f2926153de6080966153d460a088019c5f89019061085c565b602087019061085c565b604085019061085c565b6060830190610370565b0190611136565b565b615403611ca8565b5061540c61538a565b6154516154176157f8565b916154426154236158aa565b4661542d30612374565b916154366102d1565b968795602087016153ae565b6020820181038252038261049e565b61546361545d82612fdc565b91613dc2565b2090565b61549c6154a394615492606094989795615488608086019a5f870190611136565b6020850190610370565b6040830190610370565b0190610370565b565b90916154bf6154cd9360408401908482035f860152610dfd565b916020818403910152610dfd565b90565b93929190916154dd612de0565b916154e781610dc6565b6155016154fb6154f685610dc6565b61031d565b9161031d565b036157815761550e6132cf565b946155185f611fec565b5b8061553461552e61552986610dc6565b61031d565b9161031d565b1015615677576155458382906138d6565b6155508583906138d6565b908961556c6155666155615f6131ad565b6102ee565b916102ee565b036155de575b906155a092918861559361558d6155885f6131ad565b6102ee565b916102ee565b036155a5575b5050612008565b615519565b6155d16155c26155bb6155d794935f8c01611b27565b8b906118b1565b916155cc83611b51565b613d03565b90613510565b5f80615599565b6155fd6155f86155f15f8a018490611b27565b8c906118b1565b611b51565b8061561061560a8561031d565b9161031d565b1061564d57906156446156296155a09594938490614fad565b61563f8d61563a5f8d018690611b27565b6118b1565b613510565b90919250615572565b90615673908b929361565d6102d1565b9485946303dee4c560e01b865260048601615467565b0390fd5b50959193925061568681610dc6565b6156996156936001612471565b9161031d565b145f14615722576156b66156c6916156b05f611fec565b906138d6565b936156c05f611fec565b906138d6565b93909192936157076157016156fb7fc3d58168c5ae7397731d063d5bbf3d657854427343f4c083240f7aacaa2d0f629461073d565b9461073d565b9461073d565b9461571c6157136102d1565b92839283611f86565b0390a45b565b92939091929361576461575e6157587f4a39dc06d4c0dbc64b70af90fd698a233a518aa5d07e595d983b8c0526c8f7fb9461073d565b9461073d565b9461073d565b946157796157706102d1565b928392836154a5565b0390a4615720565b61578d61579391610dc6565b91610dc6565b906157ae5f928392635b05999160e01b845260048401611f86565b0390fd5b6157bb81612fdc565b6157cd6157c75f611fec565b9161031d565b115f146157dc57805190602001fd5b5f63d6bda27560e01b8152806157f4600482016106d9565b0390fd5b615800611ca8565b50615809613b95565b615811613bb9565b61582261581d82612fd9565b612fdc565b61583461582e5f611fec565b9161031d565b115f1461585b576158459150612fd9565b61585761585182612fdc565b91613dc2565b2090565b505f6158679101611ce5565b8061587a6158745f6114b5565b91610818565b14155f146158855790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090565b6158b2611ca8565b506158bb613b95565b6158c3613bd8565b6158d46158cf82612fd9565b612fdc565b6158e66158e05f611fec565b9161031d565b115f1461590d576158f79150612fd9565b61590961590382612fdc565b91613dc2565b2090565b50600161591a9101611ce5565b8061592d6159275f6114b5565b91610818565b14155f146159385790565b507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709056fea2646970667358221220afe8fbf1c13f2447f358ee64905caee8d8189156c07a234d29f0d4b77623af6964736f6c634300081c0033