0 txs
388 calls
constructor
constructor()
functions
APX_ETH
viewfunction APX_ETH() view returns (address)
DEFAULT_ADMIN_ROLE
viewfunction DEFAULT_ADMIN_ROLE() view returns (bytes32)
defaultAdmin
viewfunction defaultAdmin() view returns (address)
defaultAdminDelay
viewfunction defaultAdminDelay() view returns (uint48)
defaultAdminDelayIncreaseWait
viewfunction defaultAdminDelayIncreaseWait() view returns (uint48)
getRoleAdmin
viewfunction getRoleAdmin(bytes32 role) view returns (bytes32)
hasRole
viewfunction hasRole(bytes32 role, address account) view returns (bool)
owner
viewfunction owner() view returns (address)
pendingDefaultAdmin
viewfunction pendingDefaultAdmin() view returns (address newAdmin, uint48 schedule)
pendingDefaultAdminDelay
viewfunction pendingDefaultAdminDelay() view returns (uint48 newDelay, uint48 schedule)
PIREX_ETH
viewfunction PIREX_ETH() view returns (address)
PX_ETH
viewfunction PX_ETH() view returns (address)
supportsInterface
viewfunction supportsInterface(bytes4 _interfaceId) view returns (bool isSupports)
TREASURY_ROLE
viewfunction TREASURY_ROLE() view returns (bytes32)
UPX_ETH
viewfunction UPX_ETH() view returns (address)
acceptDefaultAdminTransfer
nonpayablefunction acceptDefaultAdminTransfer()
beginDefaultAdminTransfer
nonpayablefunction beginDefaultAdminTransfer(address newAdmin)
cancelDefaultAdminTransfer
nonpayablefunction cancelDefaultAdminTransfer()
changeDefaultAdminDelay
nonpayablefunction changeDefaultAdminDelay(uint48 newDelay)
deposit
payablefunction deposit() payable returns (uint256 pxETHPostFeeAmount, uint256 feeAmount, uint256 apxETHAmount)
emergencyWithdrawERC1155
nonpayablefunction emergencyWithdrawERC1155(address _token, address _to, uint256 _tokenId)
emergencyWithdrawERC20
nonpayablefunction emergencyWithdrawERC20(address _token, address _to, uint256 _amount)
grantRole
nonpayablefunction grantRole(bytes32 role, address account)
initialize
nonpayablefunction initialize()
initiateRedemption
nonpayablefunction initiateRedemption(uint256 _apxETHAmount) returns (uint256 pxETHPostFeeAmount, uint256 feeAmount)
instantRedeemWithApxEth
nonpayablefunction instantRedeemWithApxEth(uint256 _apxETHAmount) returns (uint256 pxETHPostFeeAmount, uint256 feeAmount)
onERC1155BatchReceived
nonpayablefunction onERC1155BatchReceived(address, address, uint256[], uint256[], bytes) returns (bytes4)
onERC1155Received
nonpayablefunction onERC1155Received(address, address, uint256, uint256, bytes) returns (bytes4)
redeem
nonpayablefunction redeem(uint256[] _upxETHTokenIds)
renounceRole
nonpayablefunction renounceRole(bytes32 role, address account)
revokeRole
nonpayablefunction revokeRole(bytes32 role, address account)
rollbackDefaultAdminDelay
nonpayablefunction rollbackDefaultAdminDelay()
events
DefaultAdminDelayChangeCanceled
event DefaultAdminDelayChangeCanceled()
DefaultAdminDelayChangeScheduled
event DefaultAdminDelayChangeScheduled(uint48 newDelay, uint48 effectSchedule)
DefaultAdminTransferCanceled
event DefaultAdminTransferCanceled()
DefaultAdminTransferScheduled
event DefaultAdminTransferScheduled(address indexed newAdmin, uint48 acceptSchedule)
Deposited
event Deposited(uint256 _amount, uint256 _pxETHPostFeeAmount, uint256 _feeAmount, uint256 _apxETHAmount)
EmergencyWithdrawnERC1155
event EmergencyWithdrawnERC1155(address indexed _token, address indexed _to, uint256 _tokenId, uint256 _amount)
EmergencyWithdrawnERC20
event EmergencyWithdrawnERC20(address indexed _token, address indexed _to, uint256 _amount)
Initialized
event Initialized(uint64 version)
InitiatedRedemption
event InitiatedRedemption(uint256 _apxETHAmount, uint256 _pxETHPostFeeAmount, uint256 _feeAmount)
InstantRedeemed
event InstantRedeemed(uint256 _apxETHAmount, uint256 _pxETHPostFeeAmount, uint256 _feeAmount)
Redeemed
event Redeemed(uint256 indexed _upxETHTokenId, uint256 _amount)
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)
errors
AccessControlBadConfirmation
error AccessControlBadConfirmation()
AccessControlEnforcedDefaultAdminDelay
error AccessControlEnforcedDefaultAdminDelay(uint48 schedule)
AccessControlEnforcedDefaultAdminRules
error AccessControlEnforcedDefaultAdminRules()
AccessControlInvalidDefaultAdmin
error AccessControlInvalidDefaultAdmin(address defaultAdmin)
AccessControlUnauthorizedAccount
error AccessControlUnauthorizedAccount(address account, bytes32 neededRole)
AddressEmptyCode
error AddressEmptyCode(address target)
AddressInsufficientBalance
error AddressInsufficientBalance(address account)
EmptyTokensArray
error EmptyTokensArray()
FailedInnerCall
error FailedInnerCall()
IdempotencyKeyAlreadyExist
error IdempotencyKeyAlreadyExist(bytes32 _idempotencyKey)
InvalidAmount
error InvalidAmount(uint256 _amount)
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
SafeCastOverflowedUintDowncast
error SafeCastOverflowedUintDowncast(uint8 bits, uint256 value)
SafeERC20FailedOperation
error SafeERC20FailedOperation(address token)
ZeroAddress
error ZeroAddress()
creation bytecode
0x6080604052348015600f57600080fd5b506016601a565b60ca565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff161560695760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b039081161460c75780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6130b9806100d96000396000f3fe6080604052600436106101e35760003560e01c806391d1485411610102578063cf6eefb711610095578063d602b9fd11610064578063d602b9fd14610732578063f23a6e6114610747578063f9afb26a1461078c578063fe5be481146107ac57600080fd5b8063cf6eefb714610643578063d0e30db0146106bb578063d11a57ec146106de578063d547741f1461071257600080fd5b8063bc197c81116100d1578063bc197c8114610583578063c5a4daeb146105f9578063cc8463c814610619578063cefc14291461062e57600080fd5b806391d14854146104a0578063a1eda53c14610512578063a217fddf14610546578063b0fc4f581461055b57600080fd5b806355b8fb811161017a5780638129fc1c116101495780638129fc1c146104045780638331ae231461041957806384ef8ffc146104415780638da5cb5b1461048b57600080fd5b806355b8fb811461037c578063634e93da1461039c578063649a5ec7146103bc5780637dfc904b146103dc57600080fd5b806316510f20116101b657806316510f2014610292578063248a9ca3146102df5780632f2ff15d1461033c57806336568abe1461035c57600080fd5b806301ffc9a7146101e8578063022d63fb1461021d57806308820634146102465780630aa6220b1461027b575b600080fd5b3480156101f457600080fd5b50610208610203366004612afb565b6107cc565b60405190151581526020015b60405180910390f35b34801561022957600080fd5b50620697805b60405165ffffffffffff9091168152602001610214565b34801561025257600080fd5b50610266610261366004612b3d565b610828565b60408051928352602083019190915201610214565b34801561028757600080fd5b506102906109e1565b005b34801561029e57600080fd5b506102ba735bf2419a33f82f4c1f075b4006d7fc4104c4386881565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610214565b3480156102eb57600080fd5b5061032e6102fa366004612b3d565b60009081527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015490565b604051908152602001610214565b34801561034857600080fd5b50610290610357366004612b78565b6109f7565b34801561036857600080fd5b50610290610377366004612b78565b610a3c565b34801561038857600080fd5b50610290610397366004612ba8565b610ba8565b3480156103a857600080fd5b506102906103b7366004612be9565b610c5c565b3480156103c857600080fd5b506102906103d7366004612c06565b610c70565b3480156103e857600080fd5b506102ba7304c154b66cb340f3ae24111cc767e0184ed00cc681565b34801561041057600080fd5b50610290610c84565b34801561042557600080fd5b506102ba73d664b74274dfeb538d9bac494f3a4760828b02b081565b34801561044d57600080fd5b507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff166102ba565b34801561049757600080fd5b506102ba610e0f565b3480156104ac57600080fd5b506102086104bb366004612b78565b60009182527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b34801561051e57600080fd5b50610527610e54565b6040805165ffffffffffff938416815292909116602083015201610214565b34801561055257600080fd5b5061032e600081565b34801561056757600080fd5b506102ba739ba021b0a9b958b5e75ce9f6dff97c7ee52cb3e681565b34801561058f57600080fd5b506105c861059e366004612dba565b7fbc197c810000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff000000000000000000000000000000000000000000000000000000009091168152602001610214565b34801561060557600080fd5b50610290610614366004612ba8565b610f13565b34801561062557600080fd5b5061022f6110c9565b34801561063a57600080fd5b506102906111aa565b34801561064f57600080fd5b507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400546040805173ffffffffffffffffffffffffffffffffffffffff831681527401000000000000000000000000000000000000000090920465ffffffffffff16602083015201610214565b6106c3611225565b60408051938452602084019290925290820152606001610214565b3480156106ea57600080fd5b5061032e7fe1dcbdb91df27212a29bc27177c840cf2f819ecf2187432e1fac86c2dd5dfca981565b34801561071e57600080fd5b5061029061072d366004612b78565b611418565b34801561073e57600080fd5b50610290611459565b34801561075357600080fd5b506105c8610762366004612e68565b7ff23a6e610000000000000000000000000000000000000000000000000000000095945050505050565b34801561079857600080fd5b506102906107a7366004612ed1565b61146c565b3480156107b857600080fd5b506102666107c7366004612b3d565b6116a1565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e0000000000000000000000000000000000000000000000000000000001480610822575061082282611856565b92915050565b6000807fe1dcbdb91df27212a29bc27177c840cf2f819ecf2187432e1fac86c2dd5dfca9610855816118ac565b61085e846118b6565b6040517fba08765200000000000000000000000000000000000000000000000000000000815260048101859052306024820152336044820152600090739ba021b0a9b958b5e75ce9f6dff97c7ee52cb3e69063ba087652906064016020604051808303816000875af11580156108d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108fc9190612f46565b6040517fb4a265690000000000000000000000000000000000000000000000000000000081526004810182905233602482015290915073d664b74274dfeb538d9bac494f3a4760828b02b09063b4a265699060440160408051808303816000875af115801561096f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109939190612f5f565b604080518881526020810184905290810182905291955093507f10745a9f734378094b6edae1b9c6213f328159f1810e4f154faecc19246afb42906060015b60405180910390a15050915091565b60006109ec816118ac565b6109f46118f3565b50565b81610a2e576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a388282611900565b5050565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840082158015610aa457507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff8381169116145b15610b99577feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984005473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900465ffffffffffff1681151580610b17575065ffffffffffff8116155b80610b2a57504265ffffffffffff821610155b15610b70576040517f19ca5ebb00000000000000000000000000000000000000000000000000000000815265ffffffffffff821660048201526024015b60405180910390fd5b505080547fffffffffffff000000000000ffffffffffffffffffffffffffffffffffffffff1681555b610ba3838361194a565b505050565b6000610bb3816118ac565b610bbc846119a3565b610bc5836119a3565b610bce826118b6565b610bef73ffffffffffffffffffffffffffffffffffffffff851684846119f0565b8273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167ff563e0862357d06e5752eb37b7057a0b8b5aca7410305cfd9b45865523e48c6d84604051610c4e91815260200190565b60405180910390a350505050565b6000610c67816118ac565b610a3882611a71565b6000610c7b816118ac565b610a3882611af1565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000810460ff16159067ffffffffffffffff16600081158015610ccf5750825b905060008267ffffffffffffffff166001148015610cec5750303b155b905081158015610cfa575080155b15610d31576040517ff92ee8a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b84547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001660011785558315610d925784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff16680100000000000000001785555b610d9f6201518033611b61565b610da7611b73565b8315610e085784547fffffffffffffffffffffffffffffffffffffffffffffff00ffffffffffffffff168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050565b6000610e4f7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff1690565b905090565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401546000907a010000000000000000000000000000000000000000000000000000900465ffffffffffff167feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984008115801590610ed757504265ffffffffffff831610155b610ee357600080610f0a565b600181015474010000000000000000000000000000000000000000900465ffffffffffff16825b92509250509091565b6000610f1e816118ac565b610f27846119a3565b610f30836119a3565b6040517efdd58e0000000000000000000000000000000000000000000000000000000081523060048201526024810183905260009073ffffffffffffffffffffffffffffffffffffffff86169062fdd58e90604401602060405180830381865afa158015610fa2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fc69190612f46565b6040517ff242432a00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8681166024830152604482018690526064820183905260a06084830152600060a48301529192509086169063f242432a9060c401600060405180830381600087803b15801561105557600080fd5b505af1158015611069573d6000803e3d6000fd5b5050604080518681526020810185905273ffffffffffffffffffffffffffffffffffffffff8089169450891692507f80aed7005dca15a5fb990719bca7e416134bdde82b5d687710abb9860c4f836e910160405180910390a35050505050565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401546000907feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400907a010000000000000000000000000000000000000000000000000000900465ffffffffffff16801580159061114c57504265ffffffffffff8216105b61117d5781547a010000000000000000000000000000000000000000000000000000900465ffffffffffff166111a3565b600182015474010000000000000000000000000000000000000000900465ffffffffffff165b9250505090565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984005473ffffffffffffffffffffffffffffffffffffffff1633811461121d576040517fc22c8022000000000000000000000000000000000000000000000000000000008152336004820152602401610b67565b6109f4611b7b565b60008060007fe1dcbdb91df27212a29bc27177c840cf2f819ecf2187432e1fac86c2dd5dfca9611254816118ac565b3461125e816118b6565b6040517fadc9740c00000000000000000000000000000000000000000000000000000000815230600482015260006024820152739ba021b0a9b958b5e75ce9f6dff97c7ee52cb3e69073d664b74274dfeb538d9bac494f3a4760828b02b09063adc9740c908490604401604080518083038185885af11580156112e5573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061130a9190612f5f565b909650945061132e7304c154b66cb340f3ae24111cc767e0184ed00cc68288611cac565b6040517f6e553f650000000000000000000000000000000000000000000000000000000081526004810187905233602482015273ffffffffffffffffffffffffffffffffffffffff821690636e553f65906044016020604051808303816000875af11580156113a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113c59190612f46565b6040805184815260208101899052908101879052606081018290529094507f1ec55d9e15c44189f574f4c7598877f9f4db58852439702a7c97979f1e755ad09060800160405180910390a1505050909192565b8161144f576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610a388282611d5c565b6000611464816118ac565b6109f4611da0565b7fe1dcbdb91df27212a29bc27177c840cf2f819ecf2187432e1fac86c2dd5dfca9611496816118ac565b8160008190036114d2576040517fe75d7d0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b81811015610e08576000735bf2419a33f82f4c1f075b4006d7fc4104c4386862fdd58e3088888681811061150b5761150b612f83565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e087901b16815273ffffffffffffffffffffffffffffffffffffffff90941660048501526020029190910135602483015250604401602060405180830381865afa158015611582573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115a69190612f46565b90506115b1816118b6565b60008686848181106115c5576115c5612f83565b6040517f0dcb8c1a000000000000000000000000000000000000000000000000000000008152602090910292909201356004830181905260248301859052336044840152925073d664b74274dfeb538d9bac494f3a4760828b02b091630dcb8c1a9150606401600060405180830381600087803b15801561164557600080fd5b505af1158015611659573d6000803e3d6000fd5b50505050807f6f73b7b8d37df32ea60a45eadc8fc3d2d716d705ee099bd506817482ce8473168360405161168f91815260200190565b60405180910390a250506001016114d5565b6000807fe1dcbdb91df27212a29bc27177c840cf2f819ecf2187432e1fac86c2dd5dfca96116ce816118ac565b6116d7846118b6565b6040517fba08765200000000000000000000000000000000000000000000000000000000815260048101859052306024820152336044820152600090739ba021b0a9b958b5e75ce9f6dff97c7ee52cb3e69063ba087652906064016020604051808303816000875af1158015611751573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117759190612f46565b6040517f3faae344000000000000000000000000000000000000000000000000000000008152600481018290523060248201526000604482015290915073d664b74274dfeb538d9bac494f3a4760828b02b090633faae3449060640160408051808303816000875af11580156117ef573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118139190612f5f565b604080518881526020810184905290810182905291955093507fef2bc5a08158ddd14ed328904387acef26b685a30b8d97f333228e70c5eed021906060016109d2565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f31498786000000000000000000000000000000000000000000000000000000001480610822575061082282611dab565b6109f48133611e01565b806000036109f4576040517f3728b83d00000000000000000000000000000000000000000000000000000000815260048101829052602401610b67565b6118fe600080611ea8565b565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800602052604090206001015461193a816118ac565b6119448383612041565b50505050565b73ffffffffffffffffffffffffffffffffffffffff81163314611999576040517f6697b23200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610ba3828261214b565b73ffffffffffffffffffffffffffffffffffffffff81166109f4576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60405173ffffffffffffffffffffffffffffffffffffffff838116602483015260448201839052610ba391859182169063a9059cbb906064015b604051602081830303815290604052915060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506121ef565b6000611a7b6110c9565b611a8442612285565b611a8e9190612fe1565b9050611a9a82826122d5565b60405165ffffffffffff8216815273ffffffffffffffffffffffffffffffffffffffff8316907f3377dc44241e779dd06afab5b788a35ca5f3b778836e2990bdb26a2a4b2e5ed69060200160405180910390a25050565b6000611afc82612390565b611b0542612285565b611b0f9190612fe1565b9050611b1b8282611ea8565b6040805165ffffffffffff8085168252831660208201527ff1038c18cf84a56e432fdbfaf746924b7ea511dfe03a6506a0ceba4888788d9b910160405180910390a15050565b611b696123df565b610a388282612446565b6118fe6123df565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400805473ffffffffffffffffffffffffffffffffffffffff81169074010000000000000000000000000000000000000000900465ffffffffffff16801580611beb57504265ffffffffffff821610155b15611c2c576040517f19ca5ebb00000000000000000000000000000000000000000000000000000000815265ffffffffffff82166004820152602401610b67565b611c746000611c6f7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff1690565b61214b565b50611c80600083612041565b505081547fffffffffffff00000000000000000000000000000000000000000000000000001690915550565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff83811660248301526000919085169063dd62ed3e90604401602060405180830381865afa158015611d22573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d469190612f46565b90506119448484611d578585613000565b612511565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020526040902060010154611d96816118ac565b611944838361214b565b6118fe6000806122d5565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b0000000000000000000000000000000000000000000000000000000014806108225750610822826125e9565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020908152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610a38576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216600482015260248101839052604401610b67565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698401547feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400907a010000000000000000000000000000000000000000000000000000900465ffffffffffff168015611fbb574265ffffffffffff82161015611f91576001820154825479ffffffffffffffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000090910465ffffffffffff167a01000000000000000000000000000000000000000000000000000002178255611fbb565b6040517f2b1fa2edafe6f7b9e97c1a9e0c3660e645beb2dcaa2d45bdbf9beaf5472e1ec590600090a15b50600101805473ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000065ffffffffffff9485160279ffffffffffffffffffffffffffffffffffffffffffffffffffff16177a0100000000000000000000000000000000000000000000000000009290931691909102919091179055565b60007feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400836121395760006120a97feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146120f6576040517f3fc3c27a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff85161790555b6121438484612680565b949350505050565b60007feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d8698400831580156121b557507feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d86984015473ffffffffffffffffffffffffffffffffffffffff8481169116145b156121e5576001810180547fffffffffffffffffffffffff00000000000000000000000000000000000000001690555b61214384846127a8565b600061221173ffffffffffffffffffffffffffffffffffffffff841683612886565b905080516000141580156122365750808060200190518101906122349190613013565b155b15610ba3576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610b67565b600065ffffffffffff8211156122d1576040517f6dfcc6500000000000000000000000000000000000000000000000000000000081526030600482015260248101839052604401610b67565b5090565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840080547401000000000000000000000000000000000000000065ffffffffffff84811682027fffffffffffff0000000000000000000000000000000000000000000000000000841673ffffffffffffffffffffffffffffffffffffffff8816171784559104168015611944576040517f8886ebfc4259abdbc16601dd8fb5678e54878f47b3c34836cfc51154a960510990600090a150505050565b60008061239b6110c9565b90508065ffffffffffff168365ffffffffffff16116123c3576123be8382613035565b6123d8565b6123d865ffffffffffff841662069780612894565b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a005468010000000000000000900460ff166118fe576040517fd7e6bcf800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61244e6123df565b7feef3dac4538c82c8ace4063ab0acd2d15cdb5883aa1dff7c2673abb3d869840073ffffffffffffffffffffffffffffffffffffffff82166124bf576040517fc22c802200000000000000000000000000000000000000000000000000000000815260006004820152602401610b67565b805479ffffffffffffffffffffffffffffffffffffffffffffffffffff167a01000000000000000000000000000000000000000000000000000065ffffffffffff851602178155611944600083612041565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b30000000000000000000000000000000000000000000000000000000017905261259d84826128aa565b6119445760405173ffffffffffffffffffffffffffffffffffffffff8481166024830152600060448301526125df91869182169063095ea7b390606401611a2a565b61194484826121ef565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000148061082257507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614610822565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff166127975760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff87168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790556127333390565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610822565b6000915050610822565b5092915050565b60008281527f02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b6268006020818152604080842073ffffffffffffffffffffffffffffffffffffffff8616855290915282205460ff16156127975760008481526020828152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610822565b60606123d88383600061296c565b60008183106128a357816123d8565b5090919050565b60008060008473ffffffffffffffffffffffffffffffffffffffff16846040516128d49190613054565b6000604051808303816000865af19150503d8060008114612911576040519150601f19603f3d011682016040523d82523d6000602084013e612916565b606091505b50915091508180156129405750805115806129405750808060200190518101906129409190613013565b8015612963575060008573ffffffffffffffffffffffffffffffffffffffff163b115b95945050505050565b6060814710156129aa576040517fcd786059000000000000000000000000000000000000000000000000000000008152306004820152602401610b67565b6000808573ffffffffffffffffffffffffffffffffffffffff1684866040516129d39190613054565b60006040518083038185875af1925050503d8060008114612a10576040519150601f19603f3d011682016040523d82523d6000602084013e612a15565b606091505b5091509150612a25868383612a2f565b9695505050505050565b606082612a3f576123be82612ab9565b8151158015612a63575073ffffffffffffffffffffffffffffffffffffffff84163b155b15612ab2576040517f9996b31500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85166004820152602401610b67565b50806123d8565b805115612ac95780518082602001fd5b6040517f1425ea4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600060208284031215612b0d57600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146123d857600080fd5b600060208284031215612b4f57600080fd5b5035919050565b73ffffffffffffffffffffffffffffffffffffffff811681146109f457600080fd5b60008060408385031215612b8b57600080fd5b823591506020830135612b9d81612b56565b809150509250929050565b600080600060608486031215612bbd57600080fd5b8335612bc881612b56565b92506020840135612bd881612b56565b929592945050506040919091013590565b600060208284031215612bfb57600080fd5b81356123d881612b56565b600060208284031215612c1857600080fd5b813565ffffffffffff811681146123d857600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715612ca457612ca4612c2e565b604052919050565b600082601f830112612cbd57600080fd5b8135602067ffffffffffffffff821115612cd957612cd9612c2e565b8160051b612ce8828201612c5d565b9283528481018201928281019087851115612d0257600080fd5b83870192505b84831015612d2157823582529183019190830190612d08565b979650505050505050565b600082601f830112612d3d57600080fd5b813567ffffffffffffffff811115612d5757612d57612c2e565b612d8860207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f84011601612c5d565b818152846020838601011115612d9d57600080fd5b816020850160208301376000918101602001919091529392505050565b600080600080600060a08688031215612dd257600080fd5b8535612ddd81612b56565b94506020860135612ded81612b56565b9350604086013567ffffffffffffffff80821115612e0a57600080fd5b612e1689838a01612cac565b94506060880135915080821115612e2c57600080fd5b612e3889838a01612cac565b93506080880135915080821115612e4e57600080fd5b50612e5b88828901612d2c565b9150509295509295909350565b600080600080600060a08688031215612e8057600080fd5b8535612e8b81612b56565b94506020860135612e9b81612b56565b93506040860135925060608601359150608086013567ffffffffffffffff811115612ec557600080fd5b612e5b88828901612d2c565b60008060208385031215612ee457600080fd5b823567ffffffffffffffff80821115612efc57600080fd5b818501915085601f830112612f1057600080fd5b813581811115612f1f57600080fd5b8660208260051b8501011115612f3457600080fd5b60209290920196919550909350505050565b600060208284031215612f5857600080fd5b5051919050565b60008060408385031215612f7257600080fd5b505080516020909101519092909150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b65ffffffffffff8181168382160190808211156127a1576127a1612fb2565b8082018082111561082257610822612fb2565b60006020828403121561302557600080fd5b815180151581146123d857600080fd5b65ffffffffffff8281168282160390808211156127a1576127a1612fb2565b6000825160005b81811015613075576020818601810151858301520161305b565b50600092019182525091905056fea26469706673582212203e94e2eedcd764dd3f1d56d65f6fcfb55bc1407b1c068e497a27204d52d7a4a164736f6c63430008190033