0 txs
0 calls
constructor
constructor()
functions
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
ethSpursTokenId
viewfunction ethSpursTokenId() view returns (uint256)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
legacySpurs1155
viewfunction legacySpurs1155() view returns (address)
onERC1155BatchReceived
purefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) pure returns (bytes4)
onERC1155Received
purefunction onERC1155Received(address, address, uint256, uint256, bytes) pure returns (bytes4)
owner
viewfunction owner() view returns (address)
pendingOwner
viewfunction pendingOwner() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
spurs1155
viewfunction spurs1155() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 interfaceId) view returns (bool)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
USDC_SPURS_AMOUNT
viewfunction USDC_SPURS_AMOUNT() view returns (uint256)
usdc
viewfunction usdc() view returns (address)
usdcSpursTokenId
viewfunction usdcSpursTokenId() view returns (uint256)
acceptOwnership
nonpayablefunction acceptOwnership()
adminWithdrawERC1155
nonpayablefunction adminWithdrawERC1155(address tokenContract, uint256 tokenId, address recipient, uint256 amount)
adminWithdrawERC20
nonpayablefunction adminWithdrawERC20(address tokenContract, address recipient, uint256 amount)
adminWithdrawETH
nonpayablefunction adminWithdrawETH(address recipient, uint256 amount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize(address _admin, address _legacySpurs1155, address _spurs1155, uint256 _ethSpursTokenId, uint256 _usdcSpursTokenId, address _usdc)
renounceOwnership
nonpayablefunction renounceOwnership()
renounceRole
nonpayablefunction renounceRole(bytes32 role, address callerConfirmation)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
swap
nonpayablefunction swap(uint256 ethSpursAmount, address recipient)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
AdminWithdrawETH
event AdminWithdrawETH(address indexed recipient, uint256 amount)
Initialized
event Initialized(uint64 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
OwnershipTransferStarted
event OwnershipTransferStarted(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)
Swap
event Swap(address indexed user, address indexed recipient, uint256 ethSpursAmount, uint256 usdcSpursAmount)
Upgraded
event Upgraded(address indexed implementation)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AdminWithdraw_AmountZero
error AdminWithdraw_AmountZero()
AdminWithdraw_InsufficientBalance
error AdminWithdraw_InsufficientBalance()
AdminWithdraw_NoBalance
error AdminWithdraw_NoBalance()
AdminWithdraw_RecipientZero
error AdminWithdraw_RecipientZero()
AdminWithdraw_TokenContractZero
error AdminWithdraw_TokenContractZero()
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InsufficientBalance
error InsufficientBalance(uint256 balance, uint256 needed)
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
OwnableInvalidOwner
error OwnableInvalidOwner(address owner)
OwnableUnauthorizedAccount
error OwnableUnauthorizedAccount(address account)
Swap_AmountZero
error Swap_AmountZero()
Swap_InsufficientETHSpurs
error Swap_InsufficientETHSpurs()
Swap_InsufficientUSDCSpurs
error Swap_InsufficientUSDCSpurs()
Swap_RecipientZero
error Swap_RecipientZero()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523073ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff16815250348015610042575f5ffd5b5061005161005660201b60201c565b6101b6565b5f61006561015460201b60201c565b9050805f0160089054906101000a900460ff16156100af576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff8016815f015f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16146101515767ffffffffffffffff815f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d267ffffffffffffffff604051610148919061019d565b60405180910390a15b50565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b5f67ffffffffffffffff82169050919050565b6101978161017b565b82525050565b5f6020820190506101b05f83018461018e565b92915050565b6080516136ef6101dc5f395f8181611bfe01528181611c530152611e1201526136ef5ff3fe6080604052600436106101ba575f3560e01c80638da5cb5b116100eb578063be06daf111610089578063de3db04711610063578063de3db047146105b7578063e30c3978146105e1578063f23a6e611461060b578063f2fde38b14610647576101c1565b8063be06daf11461053d578063d3986f0814610567578063d547741f1461058f576101c1565b8063a217fddf116100c5578063a217fddf14610483578063ad3cb1cc146104ad578063b0fc5798146104d7578063bc197c8114610501576101c1565b80638da5cb5b146103f557806391d148541461041f5780639273a69a1461045b576101c1565b80633e413bee1161015857806352d1902d1161013257806352d1902d14610377578063715018a6146103a157806379ba5097146103b757806381fd2d33146103cd576101c1565b80633e413bee146103095780634b636f72146103335780634f1ef2861461035b576101c1565b80632f2ff15d116101945780632f2ff15d14610267578063330bf2a01461028f57806336568abe146102b957806336601f40146102e1576101c1565b806301ffc9a7146101c55780630745a49514610201578063248a9ca31461022b576101c1565b366101c157005b5f5ffd5b3480156101d0575f5ffd5b506101eb60048036038101906101e69190612666565b61066f565b6040516101f891906126ab565b60405180910390f35b34801561020c575f5ffd5b50610215610680565b60405161022291906126dc565b60405180910390f35b348015610236575f5ffd5b50610251600480360381019061024c9190612728565b610686565b60405161025e9190612762565b60405180910390f35b348015610272575f5ffd5b5061028d600480360381019061028891906127d5565b6106b0565b005b34801561029a575f5ffd5b506102a36106d2565b6040516102b0919061286e565b60405180910390f35b3480156102c4575f5ffd5b506102df60048036038101906102da91906127d5565b6106f7565b005b3480156102ec575f5ffd5b50610307600480360381019061030291906128ec565b610772565b005b348015610314575f5ffd5b5061031d61084a565b60405161032a919061295c565b60405180910390f35b34801561033e575f5ffd5b5061035960048036038101906103549190612975565b61086f565b005b61037560048036038101906103709190612b3a565b610d0b565b005b348015610382575f5ffd5b5061038b610d2a565b6040516103989190612762565b60405180910390f35b3480156103ac575f5ffd5b506103b5610d5b565b005b3480156103c2575f5ffd5b506103cb610d6e565b005b3480156103d8575f5ffd5b506103f360048036038101906103ee9190612bcf565b610dfc565b005b348015610400575f5ffd5b50610409610e87565b6040516104169190612c42565b60405180910390f35b34801561042a575f5ffd5b50610445600480360381019061044091906127d5565b610ebc565b60405161045291906126ab565b60405180910390f35b348015610466575f5ffd5b50610481600480360381019061047c9190612c96565b610f2d565b005b34801561048e575f5ffd5b5061049761108d565b6040516104a49190612762565b60405180910390f35b3480156104b8575f5ffd5b506104c1611093565b6040516104ce9190612d34565b60405180910390f35b3480156104e2575f5ffd5b506104eb6110cc565b6040516104f891906126dc565b60405180910390f35b34801561050c575f5ffd5b5061052760048036038101906105229190612e06565b6110d1565b6040516105349190612eec565b60405180910390f35b348015610548575f5ffd5b506105516110e8565b60405161055e9190612f25565b60405180910390f35b348015610572575f5ffd5b5061058d60048036038101906105889190612f3e565b61110c565b005b34801561059a575f5ffd5b506105b560048036038101906105b091906127d5565b611572565b005b3480156105c2575f5ffd5b506105cb611594565b6040516105d891906126dc565b60405180910390f35b3480156105ec575f5ffd5b506105f561159a565b6040516106029190612c42565b60405180910390f35b348015610616575f5ffd5b50610631600480360381019061062c9190612f7c565b6115cf565b60405161063e9190612eec565b60405180910390f35b348015610652575f5ffd5b5061066d60048036038101906106689190613012565b6115e4565b005b5f6106798261169d565b9050919050565b60025481565b5f5f610690611716565b9050805f015f8481526020019081526020015f2060010154915050919050565b6106b982610686565b6106c28161173d565b6106cc8383611751565b50505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6106ff611849565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610763576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61076d8282611850565b505050565b5f5f1b61077e8161173d565b61078a845f8585611948565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b81526004016107c592919061303d565b6020604051808303815f875af11580156107e1573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610805919061308e565b610844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161083b90613103565b60405180910390fd5b50505050565b60045f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f610878611bc1565b90505f815f0160089054906101000a900460ff161590505f825f015f9054906101000a900467ffffffffffffffff1690505f5f8267ffffffffffffffff161480156108c05750825b90505f60018367ffffffffffffffff161480156108f357505f3073ffffffffffffffffffffffffffffffffffffffff163b145b905081158015610901575080155b15610938576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001855f015f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055508315610985576001855f0160086101000a81548160ff0219169083151502179055505b5f73ffffffffffffffffffffffffffffffffffffffff168b73ffffffffffffffffffffffffffffffffffffffff16036109f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ea9061316b565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168a73ffffffffffffffffffffffffffffffffffffffff1603610a61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a58906131f9565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1603610acf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac690613261565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603610b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b34906132c9565b60405180910390fd5b5f8803610b7f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7690613357565b60405180910390fd5b5f8703610bc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb8906133e5565b60405180910390fd5b895f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508860015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508560045f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508760028190555086600381905550610c978b611be8565b610ca35f5f1b8c611751565b508315610cfe575f855f0160086101000a81548160ff0219169083151502179055507fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d26001604051610cf5919061344f565b60405180910390a15b5050505050505050505050565b610d13611bfc565b610d1c82611ce2565b610d268282611cf2565b5050565b5f610d33611e10565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b905090565b610d63611e97565b610d6c5f611f1e565b565b5f610d77611849565b90508073ffffffffffffffffffffffffffffffffffffffff16610d9861159a565b73ffffffffffffffffffffffffffffffffffffffff1614610df057806040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610de79190612c42565b60405180910390fd5b610df981611f1e565b50565b5f5f1b610e088161173d565b610e1485858585611948565b8473ffffffffffffffffffffffffffffffffffffffff1663f242432a308587866040518563ffffffff1660e01b8152600401610e53949392919061349b565b5f604051808303815f87803b158015610e6a575f5ffd5b505af1158015610e7c573d5f5f3e3d5ffd5b505050505050505050565b5f5f610e91611f5b565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f5f610ec6611716565b9050805f015f8581526020019081526020015f205f015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1691505092915050565b5f5f1b610f398161173d565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f9e576040517f0c413f4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8203610fd7576040517fd22c56e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81471015611011576040517f5095cb5500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff167f5f01cc0d31539293745eca6d1d2bc488958ed4b14e865d1d3c6affb0cd5f9fbc8360405161105791906126dc565b60405180910390a2611088828473ffffffffffffffffffffffffffffffffffffffff16611f8290919063ffffffff16565b505050565b5f5f1b81565b6040518060400160405280600581526020017f352e302e3000000000000000000000000000000000000000000000000000000081525081565b606481565b5f63bc197c8160e01b905098975050505050505050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f8203611145576040517f1147a8ea00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111aa576040517fa6998bca00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b815f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e336002546040518363ffffffff1660e01b815260040161120792919061303d565b602060405180830381865afa158015611222573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112469190613505565b101561127e576040517f408b4b5700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60648361128c919061355d565b90508060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1662fdd58e306003546040518363ffffffff1660e01b81526004016112ec92919061303d565b602060405180830381865afa158015611307573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061132b9190613505565b1015611363576040517f78599daf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167ffa2dda1cc1b86e41239702756b13effbc1a092b5c57e3ad320fbe4f3b13fe23585846040516113c292919061359e565b60405180910390a35f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3330600254876040518563ffffffff1660e01b815260040161142b949392919061349b565b5f604051808303815f87803b158015611442575f5ffd5b505af1158015611454573d5f5f3e3d5ffd5b505050505f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637b20af87846040518263ffffffff1660e01b81526004016114b191906126dc565b5f604051808303815f87803b1580156114c8575f5ffd5b505af11580156114da573d5f5f3e3d5ffd5b5050505060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f242432a3084600354856040518563ffffffff1660e01b8152600401611540949392919061349b565b5f604051808303815f87803b158015611557575f5ffd5b505af1158015611569573d5f5f3e3d5ffd5b50505050505050565b61157b82610686565b6115848161173d565b61158e8383611850565b50505050565b60035481565b5f5f6115a4612048565b9050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505090565b5f63f23a6e6160e01b90509695505050505050565b6115ec611e97565b5f6115f5612048565b905081815f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff16611657610e87565b73ffffffffffffffffffffffffffffffffffffffff167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a35050565b5f7f7965db0b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061170f575061170e8261206f565b5b9050919050565b5f7f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800905090565b61174e81611749611849565b6120d8565b50565b5f5f61175b611716565b90506117678484610ebc565b61183e576001815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506117da611849565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050611843565b5f9150505b92915050565b5f33905090565b5f5f61185a611716565b90506118668484610ebc565b1561193d575f815f015f8681526020019081526020015f205f015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055506118d9611849565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a46001915050611942565b5f9150505b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036119ad576040517f360223e800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a12576040517f0c413f4800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611a4b576040517fd22c56e700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8303611b0857808473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401611a8c9190612c42565b602060405180830381865afa158015611aa7573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611acb9190613505565b1015611b03576040517f31eda1a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bbb565b808473ffffffffffffffffffffffffffffffffffffffff1662fdd58e30866040518363ffffffff1660e01b8152600401611b4392919061303d565b602060405180830381865afa158015611b5e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b829190613505565b1015611bba576040517f31eda1a100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b5f7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00905090565b611bf0612129565b611bf981612169565b50565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480611ca957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16611c906121ed565b73ffffffffffffffffffffffffffffffffffffffff1614155b15611ce0576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f5f1b611cee8161173d565b5050565b8173ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d5a57506040513d601f19601f82011682018060405250810190611d5791906135d9565b60015b611d9b57816040517f4c9c8ce3000000000000000000000000000000000000000000000000000000008152600401611d929190612c42565b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b8114611e0157806040517faa1d49a4000000000000000000000000000000000000000000000000000000008152600401611df89190612762565b60405180910390fd5b611e0b8383612240565b505050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff1614611e95576040517fe07c8dba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b611e9f611849565b73ffffffffffffffffffffffffffffffffffffffff16611ebd610e87565b73ffffffffffffffffffffffffffffffffffffffff1614611f1c57611ee0611849565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401611f139190612c42565b60405180910390fd5b565b5f611f27612048565b9050805f015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055611f57826122b2565b5050565b5f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300905090565b80471015611fc95747816040517fcf479181000000000000000000000000000000000000000000000000000000008152600401611fc092919061359e565b60405180910390fd5b5f5f8373ffffffffffffffffffffffffffffffffffffffff1683604051611fef9061362e565b5f6040518083038185875af1925050503d805f8114612029576040519150601f19603f3d011682016040523d82523d5f602084013e61202e565b606091505b5091509150816120425761204181612383565b5b50505050565b5f7f237e158222e3e6968b72b9db0d8043aacf074ad9f650f0d1606b4d82ee432c00905090565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b6120e28282610ebc565b6121255780826040517fe2517d3f00000000000000000000000000000000000000000000000000000000815260040161211c929190613642565b60405180910390fd5b5050565b6121316123c7565b612167576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612171612129565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121e1575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016121d89190612c42565b60405180910390fd5b6121ea81611f1e565b50565b5f6122197f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6123e5565b5f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b612249826123ee565b8173ffffffffffffffffffffffffffffffffffffffff167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b60405160405180910390a25f815111156122a55761229f82826124b7565b506122ae565b6122ad612537565b5b5050565b5f6122bb611f5b565b90505f815f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905082825f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3505050565b5f815111156123955780518082602001fd5b6040517fd6bda27500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f6123d0611bc1565b5f0160089054906101000a900460ff16905090565b5f819050919050565b5f8173ffffffffffffffffffffffffffffffffffffffff163b0361244957806040517f4c9c8ce30000000000000000000000000000000000000000000000000000000081526004016124409190612c42565b60405180910390fd5b806124757f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5f1b6123e5565b5f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60605f5f8473ffffffffffffffffffffffffffffffffffffffff16846040516124e091906136a3565b5f60405180830381855af49150503d805f8114612518576040519150601f19603f3d011682016040523d82523d5f602084013e61251d565b606091505b509150915061252d858383612573565b9250505092915050565b5f341115612571576040517fb398979f00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b6060826125885761258382612383565b6125f8565b5f82511480156125ae57505f8473ffffffffffffffffffffffffffffffffffffffff163b145b156125f057836040517f9996b3150000000000000000000000000000000000000000000000000000000081526004016125e79190612c42565b60405180910390fd5b8190506125f9565b5b9392505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61264581612611565b811461264f575f5ffd5b50565b5f813590506126608161263c565b92915050565b5f6020828403121561267b5761267a612609565b5b5f61268884828501612652565b91505092915050565b5f8115159050919050565b6126a581612691565b82525050565b5f6020820190506126be5f83018461269c565b92915050565b5f819050919050565b6126d6816126c4565b82525050565b5f6020820190506126ef5f8301846126cd565b92915050565b5f819050919050565b612707816126f5565b8114612711575f5ffd5b50565b5f81359050612722816126fe565b92915050565b5f6020828403121561273d5761273c612609565b5b5f61274a84828501612714565b91505092915050565b61275c816126f5565b82525050565b5f6020820190506127755f830184612753565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6127a48261277b565b9050919050565b6127b48161279a565b81146127be575f5ffd5b50565b5f813590506127cf816127ab565b92915050565b5f5f604083850312156127eb576127ea612609565b5b5f6127f885828601612714565b9250506020612809858286016127c1565b9150509250929050565b5f819050919050565b5f61283661283161282c8461277b565b612813565b61277b565b9050919050565b5f6128478261281c565b9050919050565b5f6128588261283d565b9050919050565b6128688161284e565b82525050565b5f6020820190506128815f83018461285f565b92915050565b5f6128918261279a565b9050919050565b6128a181612887565b81146128ab575f5ffd5b50565b5f813590506128bc81612898565b92915050565b6128cb816126c4565b81146128d5575f5ffd5b50565b5f813590506128e6816128c2565b92915050565b5f5f5f6060848603121561290357612902612609565b5b5f612910868287016128ae565b9350506020612921868287016127c1565b9250506040612932868287016128d8565b9150509250925092565b5f6129468261283d565b9050919050565b6129568161293c565b82525050565b5f60208201905061296f5f83018461294d565b92915050565b5f5f5f5f5f5f60c0878903121561298f5761298e612609565b5b5f61299c89828a016127c1565b96505060206129ad89828a016127c1565b95505060406129be89828a016127c1565b94505060606129cf89828a016128d8565b93505060806129e089828a016128d8565b92505060a06129f189828a016127c1565b9150509295509295509295565b5f5ffd5b5f5ffd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612a4c82612a06565b810181811067ffffffffffffffff82111715612a6b57612a6a612a16565b5b80604052505050565b5f612a7d612600565b9050612a898282612a43565b919050565b5f67ffffffffffffffff821115612aa857612aa7612a16565b5b612ab182612a06565b9050602081019050919050565b828183375f83830152505050565b5f612ade612ad984612a8e565b612a74565b905082815260208101848484011115612afa57612af9612a02565b5b612b05848285612abe565b509392505050565b5f82601f830112612b2157612b206129fe565b5b8135612b31848260208601612acc565b91505092915050565b5f5f60408385031215612b5057612b4f612609565b5b5f612b5d858286016127c1565b925050602083013567ffffffffffffffff811115612b7e57612b7d61260d565b5b612b8a85828601612b0d565b9150509250929050565b5f612b9e8261279a565b9050919050565b612bae81612b94565b8114612bb8575f5ffd5b50565b5f81359050612bc981612ba5565b92915050565b5f5f5f5f60808587031215612be757612be6612609565b5b5f612bf487828801612bbb565b9450506020612c05878288016128d8565b9350506040612c16878288016127c1565b9250506060612c27878288016128d8565b91505092959194509250565b612c3c8161279a565b82525050565b5f602082019050612c555f830184612c33565b92915050565b5f612c658261277b565b9050919050565b612c7581612c5b565b8114612c7f575f5ffd5b50565b5f81359050612c9081612c6c565b92915050565b5f5f60408385031215612cac57612cab612609565b5b5f612cb985828601612c82565b9250506020612cca858286016128d8565b9150509250929050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f612d0682612cd4565b612d108185612cde565b9350612d20818560208601612cee565b612d2981612a06565b840191505092915050565b5f6020820190508181035f830152612d4c8184612cfc565b905092915050565b5f5ffd5b5f5ffd5b5f5f83601f840112612d7157612d706129fe565b5b8235905067ffffffffffffffff811115612d8e57612d8d612d54565b5b602083019150836020820283011115612daa57612da9612d58565b5b9250929050565b5f5f83601f840112612dc657612dc56129fe565b5b8235905067ffffffffffffffff811115612de357612de2612d54565b5b602083019150836001820283011115612dff57612dfe612d58565b5b9250929050565b5f5f5f5f5f5f5f5f60a0898b031215612e2257612e21612609565b5b5f612e2f8b828c016127c1565b9850506020612e408b828c016127c1565b975050604089013567ffffffffffffffff811115612e6157612e6061260d565b5b612e6d8b828c01612d5c565b9650965050606089013567ffffffffffffffff811115612e9057612e8f61260d565b5b612e9c8b828c01612d5c565b9450945050608089013567ffffffffffffffff811115612ebf57612ebe61260d565b5b612ecb8b828c01612db1565b92509250509295985092959890939650565b612ee681612611565b82525050565b5f602082019050612eff5f830184612edd565b92915050565b5f612f0f8261283d565b9050919050565b612f1f81612f05565b82525050565b5f602082019050612f385f830184612f16565b92915050565b5f5f60408385031215612f5457612f53612609565b5b5f612f61858286016128d8565b9250506020612f72858286016127c1565b9150509250929050565b5f5f5f5f5f5f60a08789031215612f9657612f95612609565b5b5f612fa389828a016127c1565b9650506020612fb489828a016127c1565b9550506040612fc589828a016128d8565b9450506060612fd689828a016128d8565b935050608087013567ffffffffffffffff811115612ff757612ff661260d565b5b61300389828a01612db1565b92509250509295509295509295565b5f6020828403121561302757613026612609565b5b5f613034848285016127c1565b91505092915050565b5f6040820190506130505f830185612c33565b61305d60208301846126cd565b9392505050565b61306d81612691565b8114613077575f5ffd5b50565b5f8151905061308881613064565b92915050565b5f602082840312156130a3576130a2612609565b5b5f6130b08482850161307a565b91505092915050565b7f4552433230207472616e73666572206661696c656400000000000000000000005f82015250565b5f6130ed601583612cde565b91506130f8826130b9565b602082019050919050565b5f6020820190508181035f83015261311a816130e1565b9050919050565b7f41646d696e20616464726573732063616e6e6f74206265207a65726f000000005f82015250565b5f613155601c83612cde565b915061316082613121565b602082019050919050565b5f6020820190508181035f83015261318281613149565b9050919050565b7f4c65676163792053707572733131353520616464726573732063616e6e6f74205f8201527f6265207a65726f00000000000000000000000000000000000000000000000000602082015250565b5f6131e3602783612cde565b91506131ee82613189565b604082019050919050565b5f6020820190508181035f830152613210816131d7565b9050919050565b7f53707572733131353520616464726573732063616e6e6f74206265207a65726f5f82015250565b5f61324b602083612cde565b915061325682613217565b602082019050919050565b5f6020820190508181035f8301526132788161323f565b9050919050565b7f5553444320616464726573732063616e6e6f74206265207a65726f00000000005f82015250565b5f6132b3601b83612cde565b91506132be8261327f565b602082019050919050565b5f6020820190508181035f8301526132e0816132a7565b9050919050565b7f45544820537075727320746f6b656e2049442063616e6e6f74206265207a65725f8201527f6f00000000000000000000000000000000000000000000000000000000000000602082015250565b5f613341602183612cde565b915061334c826132e7565b604082019050919050565b5f6020820190508181035f83015261336e81613335565b9050919050565b7f5553444320537075727320746f6b656e2049442063616e6e6f74206265207a655f8201527f726f000000000000000000000000000000000000000000000000000000000000602082015250565b5f6133cf602283612cde565b91506133da82613375565b604082019050919050565b5f6020820190508181035f8301526133fc816133c3565b9050919050565b5f819050919050565b5f67ffffffffffffffff82169050919050565b5f61343961343461342f84613403565b612813565b61340c565b9050919050565b6134498161341f565b82525050565b5f6020820190506134625f830184613440565b92915050565b5f82825260208201905092915050565b50565b5f6134865f83613468565b915061349182613478565b5f82019050919050565b5f60a0820190506134ae5f830187612c33565b6134bb6020830186612c33565b6134c860408301856126cd565b6134d560608301846126cd565b81810360808301526134e68161347b565b905095945050505050565b5f815190506134ff816128c2565b92915050565b5f6020828403121561351a57613519612609565b5b5f613527848285016134f1565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613567826126c4565b9150613572836126c4565b9250828202613580816126c4565b9150828204841483151761359757613596613530565b5b5092915050565b5f6040820190506135b15f8301856126cd565b6135be60208301846126cd565b9392505050565b5f815190506135d3816126fe565b92915050565b5f602082840312156135ee576135ed612609565b5b5f6135fb848285016135c5565b91505092915050565b5f81905092915050565b5f6136195f83613604565b915061362482613478565b5f82019050919050565b5f6136388261360e565b9150819050919050565b5f6040820190506136555f830185612c33565b6136626020830184612753565b9392505050565b5f81519050919050565b5f61367d82613669565b6136878185613604565b9350613697818560208601612cee565b80840191505092915050565b5f6136ae8284613673565b91508190509291505056fea264697066735822122006b4db1c00d6e193c3954e8f416658d682f599ff2c0c37c85a96259d45caf5ea64736f6c634300081c0033