0 txs
0 calls
constructor
constructor(address _permit2)
functions
owner
viewfunction owner() view returns (address)
paused
viewfunction paused() view returns (bool)
permit2
viewfunction permit2() view returns (address)
tokenManager
viewfunction tokenManager() view returns (address)
executeOrder
payablefunction executeOrder(tuple _order, tuple[] _route) payable
executeOrder
nonpayablefunction executeOrder(tuple _permit, tuple _order, bytes _signature, tuple[] _route)
pause
nonpayablefunction pause()
renounceOwnership
nonpayablefunction renounceOwnership()
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
unpause
nonpayablefunction unpause()
events
FulfilledOrder
event FulfilledOrder(((address token, uint256 amount)[] inputs, (address token, uint256 minOutputAmount)[] outputs, (address target, uint256 value, bytes data) relay, address user, address recipient) indexed order, address indexed caller, address indexed recipient)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
Paused
event Paused(address account)
RelayData
event RelayData(address indexed target, uint256 value, bytes data)
TokenReturned
event TokenReturned(address indexed token, uint256 amount)
Unpaused
event Unpaused(address account)
errors
CallerNotZap
error CallerNotZap(address caller)
CallFailed
error CallFailed(address target, uint256 value, bytes callData)
EtherTransferFailed
error EtherTransferFailed(address recipient)
InsufficientRelayValue
error InsufficientRelayValue(uint256 balance, uint256 relayValue)
InvalidCaller
error InvalidCaller(address owner, address caller)
Slippage
error Slippage(address token, uint256 minAmountOut, uint256 balance)
TargetingInvalidContract
error TargetingInvalidContract(address target)
creation bytecode
0x60c06040523480156200001157600080fd5b5060405162003158380380620031588339810160408190526200003491620000fa565b6200003f336200009c565b6000805460ff60a01b19169055600180556001600160a01b0381166080526040516200006b90620000ec565b604051809103906000f08015801562000088573d6000803e3d6000fd5b506001600160a01b031660a052506200012c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61079380620029c583390190565b6000602082840312156200010d57600080fd5b81516001600160a01b03811681146200012557600080fd5b9392505050565b60805160a05161284a6200017b600039600081816101310152818161054d01528181610b8a015261122501526000818160d30152818161027401528181610b4501526111d0015261284a6000f3fe6080604052600436106100b55760003560e01c8063715018a6116100695780638da5cb5b1161004e5780638da5cb5b146101ef578063f2fde38b1461021a578063f41b2db61461023a57600080fd5b8063715018a6146101c55780638456cb59146101da57600080fd5b80632e0af5e51161009a5780632e0af5e5146101535780633f4ba83a146101755780635c975abb1461018a57600080fd5b806312261ee7146100c15780632a709b141461011f57600080fd5b366100bc57005b600080fd5b3480156100cd57600080fd5b506100f57f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b34801561012b57600080fd5b506100f57f000000000000000000000000000000000000000000000000000000000000000081565b34801561015f57600080fd5b5061017361016e366004611bcb565b61024d565b005b34801561018157600080fd5b50610173610393565b34801561019657600080fd5b5060005474010000000000000000000000000000000000000000900460ff166040519015158152602001610116565b3480156101d157600080fd5b506101736103a5565b3480156101e657600080fd5b506101736103b7565b3480156101fb57600080fd5b5060005473ffffffffffffffffffffffffffffffffffffffff166100f5565b34801561022657600080fd5b50610173610235366004611ce3565b6103c7565b610173610248366004611d05565b610483565b6102556105f5565b61025d610668565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001663fe8ec1a7876102ac6102a78980611d6e565b6106ed565b6102bc60808a0160608b01611ce3565b7fc709880ce3db9deadf408dae85548b37e4530edc88a93e955bd080b45f3255c28a6040516020016102ef929190611fe0565b60405160208183030381529060405280519060200120604051806101400160405280610109815260200161270c61010991398a8a6040518863ffffffff1660e01b815260040161034597969594939291906121c8565b600060405180830381600087803b15801561035f57600080fd5b505af1158015610373573d6000803e3d6000fd5b505050506103828583836107d4565b61038b60018055565b505050505050565b61039b6108a9565b6103a361092a565b565b6103ad6108a9565b6103a360006109a7565b6103bf6108a9565b6103a3610a1c565b6103cf6108a9565b73ffffffffffffffffffffffffffffffffffffffff8116610477576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b610480816109a7565b50565b61048b6105f5565b610493610668565b6104a36080840160608501611ce3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610536576104e56080840160608501611ce3565b6040517f16cece4800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015233602482015260440161046e565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166377fc3fa86105826080860160608701611ce3565b61058c8680611d6e565b6040518463ffffffff1660e01b81526004016105aa939291906122a0565b600060405180830381600087803b1580156105c457600080fd5b505af11580156105d8573d6000803e3d6000fd5b505050506105e78383836107d4565b6105f060018055565b505050565b600260015403610661576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161046e565b6002600155565b60005474010000000000000000000000000000000000000000900460ff16156103a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015260640161046e565b60608160008167ffffffffffffffff81111561070b5761070b612300565b60405190808252806020026020018201604052801561075057816020015b60408051808201909152600080825260208201528152602001906001900390816107295790505b50905060005b828110156107c95760405180604001604052803073ffffffffffffffffffffffffffffffffffffffff1681526020018787848181106107975761079761232f565b905060400201602001358152508282815181106107b6576107b661232f565b6020908102919091010152600101610756565b509150505b92915050565b6107de8282610a8b565b6108146107ee6020850185611d6e565b6107fe60a0870160808801611ce3565b61080b604088018861235e565b60200135610e78565b610829610824604085018561235e565b611184565b61083960a0840160808501611ce3565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1684604051610874919061241b565b604051908190038120907f1ba5b6ed656994657175705961138c96bd8ec133c35817fa85903f450129e0b190600090a4505050565b60005473ffffffffffffffffffffffffffffffffffffffff1633146103a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161046e565b61093261141b565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610a24610668565b600080547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16740100000000000000000000000000000000000000001790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861097d3390565b8060005b81811015610e725736848483818110610aaa57610aaa61232f565b9050602002810190610abc91906124dd565b90506000808036818181610ad36020890189611ce3565b6020890135610ae560408b018b612511565b610af260408d018d612511565b610aff60608f018f611d6e565b97509750975097508080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250949b5092995090975050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff90811690891614905080610bd857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16145b15610c27576040517f781568a400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8816600482015260240161046e565b600081815b81811015610dd95736858583818110610c4757610c4761232f565b6040029190910191506000905080610c626020840184611ce3565b610c726040850160208601612576565b909250905073ffffffffffffffffffffffffffffffffffffffff8216610c9a57479b50610dcb565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015610d04573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d289190612599565b9550610d35828e8861149f565b60008160030b12610dcb57600381900b610d528160008c8e6125b2565b60408051602081018b905201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528d8d610d9986602061260b565b610da49282906125b2565b604051602001610db895949392919061261e565b6040516020818303038152906040529b50505b836001019350505050610c2c565b506000808a73ffffffffffffffffffffffffffffffffffffffff168a8a604051610e039190612652565b60006040518083038185875af1925050503d8060008114610e40576040519150601f19603f3d011682016040523d82523d6000602084013e610e45565b606091505b509150915081610e5b57610e5b8b8b8b8461157f565b8c6001019c50505050505050505050505050610a8f565b50505050565b600083815b8181101561117b5736878783818110610e9857610e9861232f565b6040029190910191506000905080610eb36020840184611ce3565b915050602082013573ffffffffffffffffffffffffffffffffffffffff82166110065747955080861015610f39576040517fd4cf45a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602481018290526044810187905260640161046e565b8686111561100157610f4b8787612664565b955060008873ffffffffffffffffffffffffffffffffffffffff168760405160006040518083038185875af1925050503d8060008114610fa7576040519150601f19603f3d011682016040523d82523d6000602084013e610fac565b606091505b5050905080610fff576040517f464e254d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8a16600482015260240161046e565b505b61111d565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a0823190602401602060405180830381865afa158015611070573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110949190612599565b9550808610156110f6576040517fd4cf45a200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602481018290526044810187905260640161046e565b851561111d5761111d73ffffffffffffffffffffffffffffffffffffffff831689886115c8565b8173ffffffffffffffffffffffffffffffffffffffff167feaf449319c042c9ba3474fa0c5329eb58cd1f23be110cdbf9d697b8d303dac158760405161116591815260200190565b60405180910390a2836001019350505050610e7d565b50505050505050565b60008036816111966020860186611ce3565b60208601356111a86040880188612511565b9296509094509250905073ffffffffffffffffffffffffffffffffffffffff841615611414577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061127357507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b156112c2576040517f781568a400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8516600482015260240161046e565b82471015611305576040517f74c8cbe60000000000000000000000000000000000000000000000000000000081524760048201526024810184905260440161046e565b6000808573ffffffffffffffffffffffffffffffffffffffff16858585604051611330929190612677565b60006040518083038185875af1925050503d806000811461136d576040519150601f19603f3d011682016040523d82523d6000602084013e611372565b606091505b5091509150816113bf576113bf868686868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525087925061157f915050565b8573ffffffffffffffffffffffffffffffffffffffff167f6c936258f37a22c831493e49cb45429bdf7b6bb0e261f271a15f084e5b08aaff86868660405161140993929190612687565b60405180910390a250505b5050505050565b60005474010000000000000000000000000000000000000000900460ff166103a3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015260640161046e565b6040517fdd62ed3e00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff838116602483015282919085169063dd62ed3e90604401602060405180830381865afa158015611514573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115389190612599565b10156105f0576105f073ffffffffffffffffffffffffffffffffffffffff8416837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff61169c565b80516000036115c0578383836040517fe1eec8f100000000000000000000000000000000000000000000000000000000815260040161046e939291906126a1565b805181602001fd5b60405173ffffffffffffffffffffffffffffffffffffffff83166024820152604481018290526105f09084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611788565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f095ea7b3000000000000000000000000000000000000000000000000000000001790526117288482611897565b610e725760405173ffffffffffffffffffffffffffffffffffffffff84166024820152600060448201526117829085907f095ea7b3000000000000000000000000000000000000000000000000000000009060640161161a565b610e7284825b60006117ea826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166119589092919063ffffffff16565b905080516000148061180b57508080602001905181019061180b91906126d6565b6105f0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161046e565b60008060008473ffffffffffffffffffffffffffffffffffffffff16846040516118c19190612652565b6000604051808303816000865af19150503d80600081146118fe576040519150601f19603f3d011682016040523d82523d6000602084013e611903565b606091505b509150915081801561192d57508051158061192d57508080602001905181019061192d91906126d6565b801561194f575073ffffffffffffffffffffffffffffffffffffffff85163b15155b95945050505050565b6060611967848460008561196f565b949350505050565b606082471015611a01576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161046e565b6000808673ffffffffffffffffffffffffffffffffffffffff168587604051611a2a9190612652565b60006040518083038185875af1925050503d8060008114611a67576040519150601f19603f3d011682016040523d82523d6000602084013e611a6c565b606091505b5091509150611a7d87838387611a88565b979650505050505050565b60608315611b1e578251600003611b175773ffffffffffffffffffffffffffffffffffffffff85163b611b17576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161046e565b5081611967565b6119678383815115611b335781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161046e91906126f8565b600060a08284031215611b7957600080fd5b50919050565b60008083601f840112611b9157600080fd5b50813567ffffffffffffffff811115611ba957600080fd5b6020830191508360208260051b8501011115611bc457600080fd5b9250929050565b60008060008060008060808789031215611be457600080fd5b863567ffffffffffffffff80821115611bfc57600080fd5b908801906060828b031215611c1057600080fd5b90965060208801359080821115611c2657600080fd5b611c328a838b01611b67565b96506040890135915080821115611c4857600080fd5b818901915089601f830112611c5c57600080fd5b813581811115611c6b57600080fd5b8a6020828501011115611c7d57600080fd5b602083019650809550506060890135915080821115611c9b57600080fd5b50611ca889828a01611b7f565b979a9699509497509295939492505050565b803573ffffffffffffffffffffffffffffffffffffffff81168114611cde57600080fd5b919050565b600060208284031215611cf557600080fd5b611cfe82611cba565b9392505050565b600080600060408486031215611d1a57600080fd5b833567ffffffffffffffff80821115611d3257600080fd5b611d3e87838801611b67565b94506020860135915080821115611d5457600080fd5b50611d6186828701611b7f565b9497909650939450505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611da357600080fd5b83018035915067ffffffffffffffff821115611dbe57600080fd5b6020019150600681901b3603821315611bc457600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611e0b57600080fd5b830160208101925035905067ffffffffffffffff811115611e2b57600080fd5b8060061b3603821315611bc457600080fd5b73ffffffffffffffffffffffffffffffffffffffff611e5b82611cba565b168252602090810135910152565b81835260208301925060008160005b84811015611e9d57611e8a8683611e3d565b6040958601959190910190600101611e78565b5093949350505050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112611edb57600080fd5b90910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112611f1957600080fd5b830160208101925035905067ffffffffffffffff811115611f3957600080fd5b803603821315611bc457600080fd5b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b73ffffffffffffffffffffffffffffffffffffffff611faf82611cba565b168252602081013560208301526000611fcb6040830183611ee4565b6060604086015261194f606086018284611f48565b6000604084835280602084015260e08301611ffb8586611dd6565b60a086850152918290529060009061010086015b81831015612033576120218185611e3d565b9284019260019290920191840161200f565b6120406020890189611dd6565b945092507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc091508187820301606088015261207c818585611e69565b93505061208b84880188611ea7565b93508086840301608087015250506120a38183611f91565b9150506120b260608501611cba565b73ffffffffffffffffffffffffffffffffffffffff1660a08401526120d960808501611cba565b73ffffffffffffffffffffffffffffffffffffffff811660c085015250949350505050565b600081518084526020808501945080840160005b8381101561214f578151805173ffffffffffffffffffffffffffffffffffffffff1688528301518388015260409096019590820190600101612112565b509495945050505050565b60005b8381101561217557818101518382015260200161215d565b50506000910152565b6000815180845261219681602086016020860161215a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60c08152600061012082016121dd8a8b611dd6565b606060c0860152918290529060009061014085015b81831015612217576122048185611e3d565b60409384019360019390930192016121f2565b60208d013560e087015260408d0135610100870152858103602087015261223e818d6120fe565b9350505050612265604084018973ffffffffffffffffffffffffffffffffffffffff169052565b866060840152828103608084015261227d818761217e565b905082810360a0840152612292818587611f48565b9a9950505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff841681526040602082018190528181018390526000908460608401835b868110156122f4576122e48284611e3d565b91830191908301906001016122d2565b50979650505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa183360301811261239257600080fd5b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff6123ba82611cba565b1682526020810135602083015260006123d66040830183611ee4565b8082604087013760006040828701015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168601019250505092915050565b60006124278384611dd6565b8360005b828110156124505761243d8285611e3d565b604093840193919091019060010161242b565b5061245e6020870187611dd6565b935091506000905b8382101561248b576124788184611e3d565b6040928301926001929092019101612466565b611a7d6124d16124a7836124a260408c018c611ea7565b61239c565b6124b360608b01611cba565b73ffffffffffffffffffffffffffffffffffffffff16815260200190565b6124b360808a01611cba565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261239257600080fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261254657600080fd5b83018035915067ffffffffffffffff82111561256157600080fd5b602001915036819003821315611bc457600080fd5b60006020828403121561258857600080fd5b81358060030b8114611cfe57600080fd5b6000602082840312156125ab57600080fd5b5051919050565b600080858511156125c257600080fd5b838611156125cf57600080fd5b5050820193919092039150565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b808201808211156107ce576107ce6125dc565b84868237600085820160008152855161263b818360208a0161215a565b018385823760009301928352509095945050505050565b6000825161239281846020870161215a565b818103818111156107ce576107ce6125dc565b8183823760009101908152919050565b83815260406020820152600061194f604083018486611f48565b73ffffffffffffffffffffffffffffffffffffffff8416815282602082015260606040820152600061194f606083018461217e565b6000602082840312156126e857600080fd5b81518015158114611cfe57600080fd5b602081526000611cfe602083018461217e56fe4f72646572206f72646572294f7264657228496e7075745b5d20696e707574732c4f75747075745b5d206f7574707574732c52656c61792072656c61792c6164647265737320757365722c6164647265737320726563697069656e7429496e707574286164647265737320746f6b656e2c75696e7432353620616d6f756e74294f7574707574286164647265737320746f6b656e2c75696e74323536206d696e4f7574707574416d6f756e742952656c61792861646472657373207461726765742c75696e743235362076616c75652c6279746573206461746129546f6b656e5065726d697373696f6e73286164647265737320746f6b656e2c75696e7432353620616d6f756e7429a2646970667358221220512457ca52bfc529d3aa7b321c2cb9ea86fcc2ba388bc6391744516f029360d164736f6c6343000813003360a060405234801561001057600080fd5b503360805260805161075e610035600039600081816040015260b8015261075e6000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063262d61521461003b57806377fc3fa81461008b575b600080fd5b6100627f000000000000000000000000000000000000000000000000000000000000000081565b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390f35b61009e61009936600461059e565b6100a0565b005b3373ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610116576040517f403e63e90000000000000000000000000000000000000000000000000000000081523360048201526024015b60405180910390fd5b8060005b818110156101b0573684848381811061013557610135610624565b600190940193604002919091019150600090506101556020830183610653565b73ffffffffffffffffffffffffffffffffffffffff1603610176575061011a565b6101aa86336020840180359061018c9086610653565b73ffffffffffffffffffffffffffffffffffffffff169291906101b7565b5061011a565b5050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261024c908590610252565b50505050565b60006102b4826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166103669092919063ffffffff16565b90508051600014806102d55750808060200190518101906102d59190610675565b610361576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f74207375636365656400000000000000000000000000000000000000000000606482015260840161010d565b505050565b6060610375848460008561037d565b949350505050565b60608247101561040f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c0000000000000000000000000000000000000000000000000000606482015260840161010d565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161043891906106bb565b60006040518083038185875af1925050503d8060008114610475576040519150601f19603f3d011682016040523d82523d6000602084013e61047a565b606091505b509150915061048b87838387610496565b979650505050505050565b6060831561052c5782516000036105255773ffffffffffffffffffffffffffffffffffffffff85163b610525576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015260640161010d565b5081610375565b61037583838151156105415781518083602001fd5b806040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161010d91906106d7565b803573ffffffffffffffffffffffffffffffffffffffff8116811461059957600080fd5b919050565b6000806000604084860312156105b357600080fd5b6105bc84610575565b9250602084013567ffffffffffffffff808211156105d957600080fd5b818601915086601f8301126105ed57600080fd5b8135818111156105fc57600080fd5b8760208260061b850101111561061157600080fd5b6020830194508093505050509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60006020828403121561066557600080fd5b61066e82610575565b9392505050565b60006020828403121561068757600080fd5b8151801515811461066e57600080fd5b60005b838110156106b257818101518382015260200161069a565b50506000910152565b600082516106cd818460208701610697565b9190910192915050565b60208152600082518060208401526106f6816040850160208701610697565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016919091016040019291505056fea2646970667358221220299c92bc4ed46081b3cb3ce14d83bcb0fa7406938e0e0f750575b6ea4b4c0cf364736f6c63430008130033000000000000000000000000000000000022d473030f116ddee9f6b43ac78ba3