0 txs
304 calls
constructor
constructor()
functions
frictionless
viewfunction frictionless() view returns (address)
frictionlessAdmin
viewfunction frictionlessAdmin() view returns (address)
implementationContract
viewfunction implementationContract() view returns (address)
lastController
viewfunction lastController() view returns (address)
pendingAdmin
viewfunction pendingAdmin() view returns (address)
privateControllerBeacon
viewfunction privateControllerBeacon() view returns (address)
privateControllerCount
viewfunction privateControllerCount() view returns (uint256)
privateControllerPrice
viewfunction privateControllerPrice() view returns (uint256)
privateControllers
viewfunction privateControllers(uint256) view returns (address controllerContract, address owner, string ipfsHash, bool approved, bool pending, bool paid, uint256 id)
privateSwitchFactory
viewfunction privateSwitchFactory() view returns (address)
proxiableUUID
viewfunction proxiableUUID() view returns (bytes32)
UPGRADE_INTERFACE_VERSION
viewfunction UPGRADE_INTERFACE_VERSION() view returns (string)
v2Factory
viewfunction v2Factory() view returns (address)
v3Factory
viewfunction v3Factory() view returns (address)
wrappedNative
viewfunction wrappedNative() view returns (address)
acceptFrictionlessAdmin
nonpayablefunction acceptFrictionlessAdmin()
addPrivateController
nonpayablefunction addPrivateController(address _controllerOwner, string _ipfsHash)
approvePrivateController
nonpayablefunction approvePrivateController(uint256 _id)
denyPrivateController
nonpayablefunction denyPrivateController(uint256 _id)
deployPrivateController
nonpayablefunction deployPrivateController(uint256 _id, address _feeRecipient, string _name)
initialize
nonpayablefunction initialize(address _privateSwitchFactory, address _v2Factory, address _v3Factory, address _frictionless, address _wrappedNative, uint256 _privateControllerPrice)
payPrivateController
nonpayablefunction payPrivateController(uint256 _id)
registerPrivateControllerImplementationContract
nonpayablefunction registerPrivateControllerImplementationContract(address _privateControllerImplementationContract)
setFrictionless
nonpayablefunction setFrictionless(address _newFrictionless)
setFrictionlessAdmin
nonpayablefunction setFrictionlessAdmin(address _newAdmin)
setPrivateControllerPrice
nonpayablefunction setPrivateControllerPrice(uint256 _newPrice)
setPrivateSwitchFactory
nonpayablefunction setPrivateSwitchFactory(address _newPrivateSwitchFactory)
setV2Factory
nonpayablefunction setV2Factory(address _newV2Factory)
setV3Factory
nonpayablefunction setV3Factory(address _newV3Factory)
setWrappedNative
nonpayablefunction setWrappedNative(address _newWrappedNative)
upgradePrivateController
nonpayablefunction upgradePrivateController(address _newImplementation)
upgradeToAndCall
payablefunction upgradeToAndCall(address newImplementation, bytes data) payable
events
FrictionlessAdminChangeAccepted
event FrictionlessAdminChangeAccepted(address indexed newAdmin)
FrictionlessAdminChangeStarted
event FrictionlessAdminChangeStarted(address indexed newAdmin)
FrictionlessUpdated
event FrictionlessUpdated(address indexed newFrictionless)
Initialized
event Initialized(uint64 version)
PrivateControllerAdded
event PrivateControllerAdded(uint256 id, address owner, string ipfsHash, bool approved, bool pending)
PrivateControllerApproved
event PrivateControllerApproved(uint256 id, bool approved)
PrivateControllerDenied
event PrivateControllerDenied(uint256 id, bool approved)
PrivateControllerDeployed
event PrivateControllerDeployed(address indexed controller, address indexed feeRecipient, address indexed owner, string controllerName, uint256 id)
PrivateControllerFactoryInitialized
event PrivateControllerFactoryInitialized(address privateSwitchFactory, address v2Factory, address v3Factory, address frictionless, address wrappedNative, uint256 privateControllerPrice, address frictionlessAdmin)
PrivateControllerImplementationUpgraded
event PrivateControllerImplementationUpgraded(address indexed newImplementation)
PrivateControllerPaid
event PrivateControllerPaid(uint256 id, bool paid)
PrivateControllerPriceUpdated
event PrivateControllerPriceUpdated(uint256 newPrice)
PrivateSwitchFactoryUpdated
event PrivateSwitchFactoryUpdated(address indexed newPrivateSwitchFactory)
Upgraded
event Upgraded(address indexed implementation)
V2FactoryUpdated
event V2FactoryUpdated(address indexed newV2Factory)
V3FactoryUpdated
event V3FactoryUpdated(address indexed newV3Factory)
WrappedNativeUpdated
event WrappedNativeUpdated(address indexed newWrappedNative)
errors
AddressEmptyCode
error AddressEmptyCode(address target)
ERC1967InvalidImplementation
error ERC1967InvalidImplementation(address implementation)
ERC1967NonPayable
error ERC1967NonPayable()
FailedCall
error FailedCall()
InvalidInitialization
error InvalidInitialization()
NotInitializing
error NotInitializing()
UUPSUnauthorizedCallContext
error UUPSUnauthorizedCallContext()
UUPSUnsupportedProxiableUUID
error UUPSUnsupportedProxiableUUID(bytes32 slot)
creation bytecode
0x60a06040523060805234801562000014575f80fd5b506200001f62000025565b620000d9565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff1615620000765760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b0390811614620000d65780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516132b1620001005f395f8181611cc501528181611cef0152611e6a01526132b15ff3fe60806040526004361062000203575f3560e01c806395b6ef0c1162000112578063c791957e116200009e578063eb6d3a11116200006a578063eb6d3a111462000600578063f2eefdc51462000621578063fcf6465a1462000645578063ffbda3011462000666575f80fd5b8063c791957e146200057d578063d15b99bd14620005a1578063d629460214620005b8578063e83f2bac14620005dc575f80fd5b8063a8abc93211620000de578063a8abc93214620004d6578063aa6fdc3514620004fa578063ad3cb1cc146200051b578063b4b57c39146200055c575f80fd5b806395b6ef0c146200044c57806399e7d05614620004705780639b820a8014620004915780639b866db814620004b2575f80fd5b80634a140a5b116200019257806373086dfb116200015e57806373086dfb14620003c35780637ab5392714620003e35780637c887c59146200040757806382897ea01462000428575f80fd5b80634a140a5b146200034d5780634f1ef286146200037157806352cb60ca146200038857806352d1902d14620003ac575f80fd5b806335d0f43c11620001d257806335d0f43c14620002bb578063380e233614620002df5780634013f52a1462000305578063474f07771462000329575f80fd5b806313efd0d41462000207578063144a295b14620002205780632678224714620002445780632efa58c71462000282575b5f80fd5b34801562000213575f80fd5b506200021e62000687565b005b3480156200022c575f80fd5b506200021e6200023e36600462002161565b6200074c565b34801562000250575f80fd5b50600a5462000265906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156200028e575f80fd5b50620002a6620002a036600462002161565b6200085d565b604051620002799796959493929190620021ca565b348015620002c7575f80fd5b506200021e620002d9366004620022e1565b6200093e565b348015620002eb575f80fd5b50620002f6600c5481565b60405190815260200162000279565b34801562000311575f80fd5b506200021e6200032336600462002334565b62000bf8565b34801562000335575f80fd5b506200021e6200034736600462002334565b62000c99565b34801562000359575f80fd5b506200021e6200036b36600462002334565b62000d3a565b6200021e6200038236600462002352565b62000dd9565b34801562000394575f80fd5b506200021e620003a636600462002334565b62000dfe565b348015620003b8575f80fd5b50620002f662000e9f565b348015620003cf575f80fd5b505f5462000265906001600160a01b031681565b348015620003ef575f80fd5b506200021e6200040136600462002334565b62000ebd565b34801562000413575f80fd5b5060085462000265906001600160a01b031681565b34801562000434575f80fd5b506200021e6200044636600462002161565b62000fff565b34801562000458575f80fd5b506200021e6200046a366004620023af565b620010a7565b3480156200047c575f80fd5b5060055462000265906001600160a01b031681565b3480156200049d575f80fd5b5060065462000265906001600160a01b031681565b348015620004be575f80fd5b506200021e620004d03660046200242f565b62001373565b348015620004e2575f80fd5b506200021e620004f436600462002334565b6200164f565b34801562000506575f80fd5b5060035462000265906001600160a01b031681565b34801562000527575f80fd5b506200054d604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516200027991906200248a565b34801562000568575f80fd5b5060075462000265906001600160a01b031681565b34801562000589575f80fd5b506200021e6200059b36600462002334565b6200174c565b348015620005ad575f80fd5b50620002f6600b5481565b348015620005c4575f80fd5b506200021e620005d636600462002161565b620017ed565b348015620005e8575f80fd5b506200021e620005fa36600462002161565b62001b8f565b3480156200060c575f80fd5b5060095462000265906001600160a01b031681565b3480156200062d575f80fd5b506200021e6200063f36600462002334565b62001c19565b34801562000651575f80fd5b5060015462000265906001600160a01b031681565b34801562000672575f80fd5b5060045462000265906001600160a01b031681565b600a546001600160a01b03163314620006fb5760405162461bcd60e51b815260206004820152602b60248201527f50726976617465436f6e74726f6c6c6572466163746f72793a204e6f7420706560448201526a373234b7339030b236b4b760a91b60648201526084015b60405180910390fd5b600a8054600480546001600160a01b03199081166001600160a01b0384161790915516905560405133907fc94eb96c9652c1f8941e5991e041f03ff203674646b8dd070db1ba10128ffeb4905f90a2565b6004546001600160a01b03163314620007795760405162461bcd60e51b8152600401620006f2906200249e565b600b5481106200079d5760405162461bcd60e51b8152600401620006f290620024e2565b5f8181526002602052604090206003810154610100900460ff16620008135760405162461bcd60e51b815260206004820152602560248201527f50726976617465436f6e74726f6c6c6572466163746f72793a204e6f742070656044820152646e64696e6760d81b6064820152608401620006f2565b60038101805461ffff19169055604080518381525f60208201527fb50775b9466daa337c89e8dea1e3e290da18d2b714c301ee9d4cd9fb77c5bef591015b60405180910390a15050565b600260208190525f91825260409091208054600182015492820180546001600160a01b03928316949092169291620008959062002526565b80601f0160208091040260200160405190810160405280929190818152602001828054620008c39062002526565b8015620009125780601f10620008e85761010080835404028352916020019162000912565b820191905f5260205f20905b815481529060010190602001808311620008f457829003601f168201915b5050506003840154600490940154929360ff808216946101008304821694506201000090920416915087565b5f8054906101000a90046001600160a01b03166001600160a01b03166339d01c696040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200098d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620009b3919062002560565b6001600160a01b0316336001600160a01b03161462000a245760405162461bcd60e51b815260206004820152602660248201527f50726976617465436f6e74726f6c6c6572466163746f72793a204e6f7420657860448201526532b1baba37b960d11b6064820152608401620006f2565b6001600160a01b03821662000a4d5760405162461bcd60e51b8152600401620006f2906200257e565b5f81511162000aab5760405162461bcd60e51b8152602060048201526024808201527f50726976617465436f6e74726f6c6c6572466163746f72793a20456d70747920604482015263090c2e6d60e31b6064820152608401620006f2565b6040805160e0810182525f8082526001600160a01b0385811660208085019182528486018781526060860185905260016080870181905260a08701869052600b5460c08801819052865260029283905296909420855181549085166001600160a01b0319918216178255925196810180549790941696909216959095179091559051919290919082019062000b4190826200260c565b506060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff00199515159590951661ffff1990931692909217939093179290921691909117905560c090910151600490910155600b546040517f1ce6894614e2f3214ee0e39481473fd851bcd6ef3d15cac73db4ae2804983f059162000bd691859085905f90600190620026d9565b60405180910390a1600b8054905f62000bef836200271d565b91905055505050565b6004546001600160a01b0316331462000c255760405162461bcd60e51b8152600401620006f2906200249e565b806001600160a01b03811662000c4f5760405162461bcd60e51b8152600401620006f2906200257e565b600880546001600160a01b0319166001600160a01b0384169081179091556040517f2fca8fd9e834d548cd181d5f34d1ab71b8a73560f874692e0647341622a95d0a905f90a25050565b6004546001600160a01b0316331462000cc65760405162461bcd60e51b8152600401620006f2906200249e565b806001600160a01b03811662000cf05760405162461bcd60e51b8152600401620006f2906200257e565b600780546001600160a01b0319166001600160a01b0384169081179091556040517fa3be3e915d82f6deb8e5f251c0897775c876d62b6e8bae10b5b37b8141048903905f90a25050565b6004546001600160a01b0316331462000d675760405162461bcd60e51b8152600401620006f2906200249e565b806001600160a01b03811662000d915760405162461bcd60e51b8152600401620006f2906200257e565b5f80546001600160a01b0319166001600160a01b038416908117825560405190917fac698440fb3c2f622094bb1d0f7f5abcfeb1319a2a93be05b9b582a581b64b2291a25050565b62000de362001cba565b62000dee8262001d64565b62000dfa828262001d94565b5050565b6004546001600160a01b0316331462000e2b5760405162461bcd60e51b8152600401620006f2906200249e565b806001600160a01b03811662000e555760405162461bcd60e51b8152600401620006f2906200257e565b600980546001600160a01b0319166001600160a01b0384169081179091556040517fe4b65cab715d9f041fcdab1d74d9a96cb240496bc9e1b465135d6438b5662f9b905f90a25050565b5f62000eaa62001e5f565b505f805160206200325c83398151915290565b6004546001600160a01b0316331462000eea5760405162461bcd60e51b8152600401620006f2906200249e565b6001546001600160a01b03161562000f535760405162461bcd60e51b815260206004820152602560248201527f50726976617465436f6e74726f6c6c6572466163746f72793a20416c726561646044820152641e481cd95d60da1b6064820152608401620006f2565b6001600160a01b03811662000f7c5760405162461bcd60e51b8152600401620006f2906200257e565b600580546001600160a01b0319166001600160a01b038316908117909155604051309062000faa9062002145565b6001600160a01b03928316815291166020820152604001604051809103905ff08015801562000fdb573d5f803e3d5ffd5b50600180546001600160a01b0319166001600160a01b039290921691909117905550565b6004546001600160a01b031633146200102c5760405162461bcd60e51b8152600401620006f2906200249e565b600b548110620010505760405162461bcd60e51b8152600401620006f290620024e2565b5f8181526002602090815260409182902060038101805461ffff19166001908117909155835185815292830152917fd9a10d931c7b956c0028514fbdf289f6ddb1589e5905cf30b9a6edd04d291534910162000851565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015620010ed5750825b90505f8267ffffffffffffffff1660011480156200110a5750303b155b90508115801562001119575080155b15620011385760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200116357845460ff60401b1916600160401b1785555b6200116d62001ea9565b6001600160a01b038b16620011965760405162461bcd60e51b8152600401620006f2906200257e565b6001600160a01b038a16620011bf5760405162461bcd60e51b8152600401620006f2906200257e565b6001600160a01b038916620011e85760405162461bcd60e51b8152600401620006f2906200257e565b6001600160a01b038816620012115760405162461bcd60e51b8152600401620006f2906200257e565b6001600160a01b0387166200123a5760405162461bcd60e51b8152600401620006f2906200257e565b5f86116200125c5760405162461bcd60e51b8152600401620006f29062002742565b5f80546001600160a01b038d81166001600160a01b03199283168117909355600780548e83169084168117909155600880548e84169085168117909155600680548e85169086168117909155600c8c905560098054948e16948616851790556004805490951633908117909555604080519687526020870193909352918501526060840152608083015260a0820188905260c08201527f1bd783b757d633a3379537db3d5570ff287b33f75b86c41f44785e216766fbe29060e00160405180910390a183156200136657845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050505050565b6004546001600160a01b03163314620013a05760405162461bcd60e51b8152600401620006f2906200249e565b5f815111620014015760405162461bcd60e51b815260206004820152602660248201527f50726976617465436f6e74726f6c6c6572466163746f72793a20496e76616c6960448201526564206e616d6560d01b6064820152608401620006f2565b5f838152600260205260409020600381015462010000900460ff16620014805760405162461bcd60e51b815260206004820152602d60248201527f50726976617465436f6e74726f6c6c6572466163746f72793a20436f6e74726f60448201526c1b1b195c881b9bdd081c185a59609a1b6064820152608401620006f2565b80546001600160a01b031615620014f85760405162461bcd60e51b815260206004820152603560248201527f50726976617465436f6e74726f6c6c6572466163746f72793a20436f6e74726f6044820152741b1b195c88185b1c9958591e4819195c1b1bde5959605a1b6064820152608401620006f2565b600180546007546008545f80546009546006549688015460405193976001600160a01b039788169763819dc9fb60e01b976200154f979082169690821695821694821693928216928e9216908d9060240162002798565b60408051601f198184030181529181526020820180516001600160e01b03166001600160e01b03199094169390931790925290516200158e9062002153565b6200159b929190620027fd565b604051809103905ff080158015620015b5573d5f803e3d5ffd5b50600380546001600160a01b0383166001600160a01b031991821681178355918501805461ff00191690558454161783559050620015f38162001eb3565b60018201546040516001600160a01b039182169186811691908416907ff64d446c0d721e8f9b308b01fff574a69120a8063dbb1c25950b2c1136c57df190620016409088908b906200282a565b60405180910390a45050505050565b6004546001600160a01b031633146200167c5760405162461bcd60e51b8152600401620006f2906200249e565b6001600160a01b038116620016a55760405162461bcd60e51b8152600401620006f2906200257e565b600154604051631b2ce7f360e11b81526001600160a01b03838116600483015290911690633659cfe6906024015f604051808303815f87803b158015620016ea575f80fd5b505af1158015620016fd573d5f803e3d5ffd5b5050600580546001600160a01b0319166001600160a01b0385169081179091556040519092507fa1298684ea958d1e42e98a7929df03f7aa9346e6c5fe02ef8c9116d57250128291505f90a250565b6004546001600160a01b03163314620017795760405162461bcd60e51b8152600401620006f2906200249e565b806001600160a01b038116620017a35760405162461bcd60e51b8152600401620006f2906200257e565b600680546001600160a01b0319166001600160a01b0384169081179091556040517f0cc2e4b83644fa8adb000e578f952a2869182d2b9bc19452b57f0efbb2fa088c905f90a25050565b600b548110620018115760405162461bcd60e51b8152600401620006f290620024e2565b5f818152600260205260409020600381015460ff166200188e5760405162461bcd60e51b815260206004820152603160248201527f50726976617465436f6e74726f6c6c6572466163746f72793a20436f6e74726f6044820152701b1b195c881b9bdd08185c1c1c9bdd9959607a1b6064820152608401620006f2565b600381015462010000900460ff1615620018fa5760405162461bcd60e51b815260206004820152602660248201527f50726976617465436f6e74726f6c6c6572466163746f72793a20416c726561646044820152651e481c185a5960d21b6064820152608401620006f2565b60018101546001600160a01b03163314620019645760405162461bcd60e51b815260206004820152602360248201527f50726976617465436f6e74726f6c6c6572466163746f72793a204e6f74206f776044820152623732b960e91b6064820152608401620006f2565b600654600c546040516370a0823160e01b81523360048201526001600160a01b039092169182906370a0823190602401602060405180830381865afa158015620019b0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620019d691906200284d565b101562001a3d5760405162461bcd60e51b815260206004820152602e60248201527f50726976617465436f6e74726f6c6c6572466163746f72793a20496e7375666660448201526d696369656e742062616c616e636560901b6064820152608401620006f2565b806001600160a01b03166323b872dd335f8054906101000a90046001600160a01b03166001600160a01b031663f851a4406040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001a9c573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001ac2919062002560565b600c546040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015260448201526064016020604051808303815f875af115801562001b17573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062001b3d919062002865565b5060038201805462ff000019166201000017905560408051848152600160208201527f44a9a682095af95815cd917e41c319e702f46cee19766cfa15a4c49f3f4dc87a910160405180910390a1505050565b6004546001600160a01b0316331462001bbc5760405162461bcd60e51b8152600401620006f2906200249e565b5f811162001bde5760405162461bcd60e51b8152600401620006f29062002742565b600c8190556040518181527fe311db93696021bcaf71f24a920be8d5c176330c92fcd6810662f7201da76adf9060200160405180910390a150565b6004546001600160a01b0316331462001c465760405162461bcd60e51b8152600401620006f2906200249e565b806001600160a01b03811662001c705760405162461bcd60e51b8152600401620006f2906200257e565b600a80546001600160a01b0319166001600160a01b0384169081179091556040517f025f81fdac23d1ccf9ea68af57cebce697e6b31a97def476f62522127a526e49905f90a25050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148062001d4357507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031662001d375f805160206200325c833981519152546001600160a01b031690565b6001600160a01b031614155b1562001d625760405163703e46dd60e11b815260040160405180910390fd5b565b6004546001600160a01b0316331462001d915760405162461bcd60e51b8152600401620006f2906200249e565b50565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa92505050801562001df1575060408051601f3d908101601f1916820190925262001dee918101906200284d565b60015b62001e1b57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401620006f2565b5f805160206200325c833981519152811462001e4e57604051632a87526960e21b815260048101829052602401620006f2565b62001e5a838362001f11565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161462001d625760405163703e46dd60e11b815260040160405180910390fd5b62001d6262001f6d565b5f5460405163b247dfaf60e01b81526001600160a01b0383811660048301529091169063b247dfaf906024015f604051808303815f87803b15801562001ef7575f80fd5b505af115801562001f0a573d5f803e3d5ffd5b5050505050565b62001f1c8262001fb7565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511562001f635762001e5a82826200201d565b62000dfa62002095565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1662001d6257604051631afcd79f60e31b815260040160405180910390fd5b806001600160a01b03163b5f0362001fee57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401620006f2565b5f805160206200325c83398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b0316846040516200203b919062002886565b5f60405180830381855af49150503d805f811462002075576040519150601f19603f3d011682016040523d82523d5f602084013e6200207a565b606091505b50915091506200208c858383620020b5565b95945050505050565b341562001d625760405163b398979f60e01b815260040160405180910390fd5b606082620020ce57620020c8826200211b565b62002114565b8151158015620020e657506001600160a01b0384163b155b156200211157604051639996b31560e01b81526001600160a01b0385166004820152602401620006f2565b50805b9392505050565b8051156200212c5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b61042180620028a483390190565b6105978062002cc583390190565b5f6020828403121562002172575f80fd5b5035919050565b5f5b83811015620021955781810151838201526020016200217b565b50505f910152565b5f8151808452620021b681602086016020860162002179565b601f01601f19169290920160200192915050565b6001600160a01b0388811682528716602082015260e0604082018190525f90620021f7908301886200219d565b951515606083015250921515608084015290151560a083015260c0909101529392505050565b6001600160a01b038116811462001d91575f80fd5b634e487b7160e01b5f52604160045260245ffd5b5f67ffffffffffffffff8084111562002263576200226362002232565b604051601f8501601f19908116603f011681019082821181831017156200228e576200228e62002232565b81604052809350858152868686011115620022a7575f80fd5b858560208301375f602087830101525050509392505050565b5f82601f830112620022d0575f80fd5b620021148383356020850162002246565b5f8060408385031215620022f3575f80fd5b823562002300816200221d565b9150602083013567ffffffffffffffff8111156200231c575f80fd5b6200232a85828601620022c0565b9150509250929050565b5f6020828403121562002345575f80fd5b813562002114816200221d565b5f806040838503121562002364575f80fd5b823562002371816200221d565b9150602083013567ffffffffffffffff8111156200238d575f80fd5b8301601f810185136200239e575f80fd5b6200232a8582356020840162002246565b5f805f805f8060c08789031215620023c5575f80fd5b8635620023d2816200221d565b95506020870135620023e4816200221d565b94506040870135620023f6816200221d565b9350606087013562002408816200221d565b925060808701356200241a816200221d565b8092505060a087013590509295509295509295565b5f805f6060848603121562002442575f80fd5b83359250602084013562002456816200221d565b9150604084013567ffffffffffffffff81111562002472575f80fd5b6200248086828701620022c0565b9150509250925092565b602081525f6200211460208301846200219d565b60208082526024908201527f50726976617465436f6e74726f6c6c6572466163746f72793a204f6e6c7920616040820152633236b4b760e11b606082015260800190565b60208082526024908201527f50726976617465436f6e74726f6c6c6572466163746f72793a20496e76616c696040820152631908125160e21b606082015260800190565b600181811c908216806200253b57607f821691505b6020821081036200255a57634e487b7160e01b5f52602260045260245ffd5b50919050565b5f6020828403121562002571575f80fd5b815162002114816200221d565b60208082526026908201527f50726976617465436f6e74726f6c6c6572466163746f72793a2041646472657360408201526573205a65726f60d01b606082015260800190565b601f82111562001e5a57805f5260205f20601f840160051c81016020851015620025eb5750805b601f840160051c820191505b8181101562001f0a575f8155600101620025f7565b815167ffffffffffffffff81111562002629576200262962002232565b62002641816200263a845462002526565b84620025c4565b602080601f83116001811462002677575f84156200265f5750858301515b5f19600386901b1c1916600185901b178555620026d1565b5f85815260208120601f198616915b82811015620026a75788860151825594840194600190910190840162002686565b5085821015620026c557878501515f19600388901b60f8161c191681555b505060018460011b0185555b505050505050565b8581526001600160a01b038516602082015260a0604082018190525f9062002704908301866200219d565b9315156060830152509015156080909101529392505050565b5f600182016200273b57634e487b7160e01b5f52601160045260245ffd5b5060010190565b60208082526036908201527f50726976617465436f6e74726f6c6c6572466163746f72793a2050726963652060408201527506d7573742062652067726561746572207468616e20360541b606082015260800190565b6001600160a01b038981168252888116602083015287811660408301528681166060830152858116608083015284811660a0830152831660c082015261010060e082018190525f90620027ee838201856200219d565b9b9a5050505050505050505050565b6001600160a01b03831681526040602082018190525f9062002822908301846200219d565b949350505050565b604081525f6200283e60408301856200219d565b90508260208301529392505050565b5f602082840312156200285e575f80fd5b5051919050565b5f6020828403121562002876575f80fd5b8151801515811462002114575f80fd5b5f82516200289981846020870162002179565b919091019291505056fe608060405234801561000f575f80fd5b5060405161042138038061042183398101604081905261002e9161015f565b806001600160a01b03811661005d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b61006681610077565b50610070826100c6565b5050610190565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b806001600160a01b03163b5f036100fb5760405163211eb15960e21b81526001600160a01b0382166004820152602401610054565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b80516001600160a01b038116811461015a575f80fd5b919050565b5f8060408385031215610170575f80fd5b61017983610144565b915061018760208401610144565b90509250929050565b6102848061019d5f395ff3fe608060405234801561000f575f80fd5b5060043610610055575f3560e01c80633659cfe6146100595780635c60da1b1461006e578063715018a6146100975780638da5cb5b1461009f578063f2fde38b146100af575b5f80fd5b61006c610067366004610221565b6100c2565b005b6001546001600160a01b03165b6040516001600160a01b03909116815260200160405180910390f35b61006c6100d6565b5f546001600160a01b031661007b565b61006c6100bd366004610221565b6100e9565b6100ca610128565b6100d381610154565b50565b6100de610128565b6100e75f6101d2565b565b6100f1610128565b6001600160a01b03811661011f57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6100d3816101d2565b5f546001600160a01b031633146100e75760405163118cdaa760e01b8152336004820152602401610116565b806001600160a01b03163b5f036101895760405163211eb15960e21b81526001600160a01b0382166004820152602401610116565b600180546001600160a01b0319166001600160a01b0383169081179091556040517fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a250565b5f80546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b5f60208284031215610231575f80fd5b81356001600160a01b0381168114610247575f80fd5b939250505056fea2646970667358221220c3897609882e1bd41ca1fe4509f3692b831be8a3e8181acac690317d81be0d5f64736f6c6343000817003360a060405260405161059738038061059783398101604081905261002291610376565b61002c828261003e565b506001600160a01b0316608052610465565b610047826100fb565b6040516001600160a01b038316907f1cf3b03a6cf19fa2baba4df148e9dcabedea7f8a5c07840e207e5c089be95d3e905f90a28051156100ef576100ea826001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156100c0573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906100e49190610431565b82610209565b505050565b6100f761027c565b5050565b806001600160a01b03163b5f0361013557604051631933b43b60e21b81526001600160a01b03821660048201526024015b60405180910390fd5b807fa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d5080546001600160a01b0319166001600160a01b0392831617905560408051635c60da1b60e01b815290515f92841691635c60da1b9160048083019260209291908290030181865afa1580156101ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101d29190610431565b9050806001600160a01b03163b5f036100f757604051634c9c8ce360e01b81526001600160a01b038216600482015260240161012c565b60605f80846001600160a01b031684604051610225919061044a565b5f60405180830381855af49150503d805f811461025d576040519150601f19603f3d011682016040523d82523d5f602084013e610262565b606091505b50909250905061027385838361029d565b95945050505050565b341561029b5760405163b398979f60e01b815260040160405180910390fd5b565b6060826102b2576102ad826102fc565b6102f5565b81511580156102c957506001600160a01b0384163b155b156102f257604051639996b31560e01b81526001600160a01b038516600482015260240161012c565b50805b9392505050565b80511561030c5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b80516001600160a01b038116811461033b575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f5b8381101561036e578181015183820152602001610356565b50505f910152565b5f8060408385031215610387575f80fd5b61039083610325565b60208401519092506001600160401b03808211156103ac575f80fd5b818501915085601f8301126103bf575f80fd5b8151818111156103d1576103d1610340565b604051601f8201601f19908116603f011681019083821181831017156103f9576103f9610340565b81604052828152886020848701011115610411575f80fd5b610422836020830160208801610354565b80955050505050509250929050565b5f60208284031215610441575f80fd5b6102f582610325565b5f825161045b818460208701610354565b9190910192915050565b60805161011b61047c5f395f601d015261011b5ff3fe6080604052600a600c565b005b60186014601a565b609d565b565b5f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c60da1b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156076573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906098919060ba565b905090565b365f80375f80365f845af43d5f803e80801560b6573d5ff35b3d5ffd5b5f6020828403121560c9575f80fd5b81516001600160a01b038116811460de575f80fd5b939250505056fea2646970667358221220a5b7a142dad3a74fb8f8430afb6c060a9c9645a3a78f4500d209d24b528adb1a64736f6c63430008170033360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220b1989c78c569ec5a02ccd7b8f4366e8144001ef705d446c9d03fdc6946ba0fe964736f6c63430008170033