0 txs
44 calls
constructor
No constructor.
functions
authorized
viewfunction authorized(address) view returns (bool)
depositsDisallowed
viewfunction depositsDisallowed() view returns (bool)
maxDepositAmount
viewfunction maxDepositAmount(address) view returns (int256)
owner
viewfunction owner() view returns (address)
processedWithdrawalIds
viewfunction processedWithdrawalIds(string) view returns (bool)
renounceOwnership
viewfunction renounceOwnership() view
addFunds
nonpayablefunction addFunds(address token, uint256 amount)
addFundsNative
payablefunction addFundsNative() payable
authorize
nonpayablefunction authorize(address user, bool value)
authorizeMulti
nonpayablefunction authorizeMulti(address[] users, bool value)
createVMContract
nonpayablefunction createVMContract()
depositNativeWithId
payablefunction depositNativeWithId(uint256 commitmentId) payable
depositWithId
nonpayablefunction depositWithId(address token, uint256 amount, uint256 commitmentId)
depositWithPermit
nonpayablefunction depositWithPermit(address token, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s, uint256 commitmentId)
initialize
nonpayablefunction initialize()
removeFunds
nonpayablefunction removeFunds(address token, address to, uint256 amount)
removeFundsNative
nonpayablefunction removeFundsNative(address to, uint256 amount)
swapWithData
nonpayablefunction swapWithData(address tokenIn, address tokenOut, uint256 amountIn, uint256 amountInNative, uint256 minAmountOut, address recipient, tuple[] datas, bytes ref)
transferOwner
nonpayablefunction transferOwner(address newOwner)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
withdrawNativeV2
nonpayablefunction withdrawNativeV2(address to, uint256 amount)
withdrawV2
nonpayablefunction withdrawV2(address token, address to, uint256 amount)
withdrawV2WithNative
nonpayablefunction withdrawV2WithNative(address token, address to, uint256 amountToken, uint256 amountNative)
withdrawV2WithNativeNoEvent
nonpayablefunction withdrawV2WithNativeNoEvent(address token, address to, uint256 amountToken, uint256 amountNative)
withdrawVmFunds
nonpayablefunction withdrawVmFunds(address token)
withdrawWithData
nonpayablefunction withdrawWithData(address token, uint256 amount, uint256 amountNative, tuple[] datas, bytes ref)
withdrawWithDataNoEvent
nonpayablefunction withdrawWithDataNoEvent(address token, uint256 amount, uint256 amountNative, tuple[] datas)
events
BridgedDepositWithId
event BridgedDepositWithId(address sender, address origin, address token, uint256 amount, uint256 commitmentId)
BridgedWithdrawal
event BridgedWithdrawal(address user, address token, uint256 amount, string withdrawalId)
BridgedWithdrawalWithData
event BridgedWithdrawalWithData(address token, uint256 amountToken, uint256 amountNative, bytes ref)
BridgedWithdrawalWithNative
event BridgedWithdrawalWithNative(address user, address token, uint256 amountToken, uint256 amountNative)
Initialized
event Initialized(uint8 version)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
SwapWithData
event SwapWithData(address tokenIn, address tokenOut, uint256 amountIn, uint256 amountInNative, uint256 minAmountOut, address recipient, bytes ref)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50613481806100206000396000f3fe6080604052600436106101b05760003560e01c80637729d644116100ec578063bc4b33651161008a578063ec8acddf11610064578063ec8acddf146104c8578063f2fde38b146104e8578063f80dec9714610508578063f90686771461052257600080fd5b8063bc4b33651461044d578063d64410461461046d578063d6c9b6a5146104a857600080fd5b80639a203dbf116100c65780639a203dbf146103bd5780639c66c25d146103dd578063b78b415b146103fd578063b91816111461041d57600080fd5b80637729d644146103305780638129fc1c146103805780638da5cb5b1461039557600080fd5b80633fbe4dbb11610159578063535b355c11610133578063535b355c146102bb5780635831419b146102db578063653b954c146102fb578063715018a61461031b57600080fd5b80633fbe4dbb1461027e578063447e346f146102935780634fb2e45d1461029b57600080fd5b80632700bbaf1161018a5780632700bbaf1461021e5780632d1fb3891461023e57806336d44bbb1461025e57600080fd5b8063143531c0146101bc5780631c6dd8a1146101de5780632090d831146101fe57600080fd5b366101b757005b600080fd5b3480156101c857600080fd5b506101dc6101d7366004611e75565b610535565b005b3480156101ea57600080fd5b506101dc6101f9366004611e59565b61063e565b34801561020a57600080fd5b506101dc610219366004611f25565b61070a565b34801561022a57600080fd5b506101dc610239366004612034565b610930565b34801561024a57600080fd5b506101dc610259366004611fea565b6109fa565b34801561026a57600080fd5b506101dc610279366004611ee0565b610a2d565b34801561028a57600080fd5b506101dc610b6e565b6101dc610c2a565b3480156102a757600080fd5b506101dc6102b6366004611e59565b610c8b565b3480156102c757600080fd5b506101dc6102d6366004611e75565b610cff565b3480156102e757600080fd5b506101dc6102f6366004612068565b610e59565b34801561030757600080fd5b506101dc6103163660046121cc565b610ec5565b34801561032757600080fd5b506101dc610f65565b34801561033c57600080fd5b5061036b61034b36600461223d565b805160208183018101805160668252928201919093012091525460ff1681565b60405190151581526020015b60405180910390f35b34801561038c57600080fd5b506101dc610fb5565b3480156103a157600080fd5b506033546040516001600160a01b039091168152602001610377565b3480156103c957600080fd5b506101dc6103d8366004612163565b611131565b3480156103e957600080fd5b506101dc6103f8366004611ea0565b6111e2565b34801561040957600080fd5b506101dc610418366004611ee0565b6112ac565b34801561042957600080fd5b5061036b610438366004611e59565b60656020526000908152604090205460ff1681565b34801561045957600080fd5b506101dc610468366004612022565b61141b565b34801561047957600080fd5b5061049a610488366004611e59565b60686020526000908152604090205481565b604051908152602001610377565b3480156104b457600080fd5b506101dc6104c3366004611ea0565b611493565b3480156104d457600080fd5b506101dc6104e33660046120d0565b61150b565b3480156104f457600080fd5b506101dc610503366004611e59565b6115bf565b34801561051457600080fd5b5060675461036b9060ff1681565b6101dc610530366004612305565b61164c565b3360009081526065602052604090205460ff166105995760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a4544000000000000000000000000000000000000000060448201526064015b60405180910390fd5b804710156105e95760405162461bcd60e51b815260206004820152601460248201527f494e53554646494349454e545f42414c414e43450000000000000000000000006044820152606401610590565b6040516001600160a01b038316908290600081818185875af1925050503d8060008114610632576040519150601f19603f3d011682016040523d82523d6000602084013e610637565b606091505b5050505050565b6069546001600160a01b03166106965760405162461bcd60e51b815260206004820152601160248201527f564d5f444f45535f4e4f545f45584953540000000000000000000000000000006044820152606401610590565b6069546040517f1c6dd8a10000000000000000000000000000000000000000000000000000000081526001600160a01b03838116600483015290911690631c6dd8a190602401600060405180830381600087803b1580156106f657600080fd5b505af1158015610637573d6000803e3d6000fd5b3360009081526065602052604090205460ff166107695760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610590565b6069546001600160a01b03166107c15760405162461bcd60e51b815260206004820152601160248201527f564d5f444f45535f4e4f545f45584953540000000000000000000000000000006044820152606401610590565b6001600160a01b038a16156107ea576069546107ea906001600160a01b038c811691168a611699565b60006107f68a87611760565b6069546040517f3f707e6b0000000000000000000000000000000000000000000000000000000081529192506001600160a01b031690633f707e6b908a90610844908990899060040161241d565b6000604051808303818588803b15801561085d57600080fd5b505af1158015610871573d6000803e3d6000fd5b505050505060006108828b88611760565b90508761088f83836125a1565b10156108dd5760405162461bcd60e51b815260206004820152601a60248201527f494e53554646494349454e545f4f55545055545f414d4f554e540000000000006044820152606401610590565b7f86d9c3126cbe1cec3b5abb53f0ba6841551424e9b81990ddfdbd88773bf7d95f8c8c8c8c8c8c8a8a60405161091a989796959493929190612399565b60405180910390a1505050505050505050505050565b6001600160a01b0383166109865760405162461bcd60e51b815260206004820152601560248201527f424c41434b484f4c455f4e4f545f414c4c4f57454400000000000000000000006044820152606401610590565b61099b6001600160a01b03841633308561181c565b604080513381523260208201526001600160a01b0385169181019190915260608101839052608081018290527f1655dc426ee0145d9436d28cfb463fb0e0717ae145566e5e534da64b735e49f39060a0015b60405180910390a1505050565b610a0261186d565b6001600160a01b03919091166000908152606560205260409020805460ff1916911515919091179055565b3360009081526065602052604090205460ff16610a8c5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610590565b8015610b37576000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114610adf576040519150601f19603f3d011682016040523d82523d6000602084013e610ae4565b606091505b5050905080610b355760405162461bcd60e51b815260206004820152601260248201527f4641494c45445f544f5f53454e445f45544800000000000000000000000000006044820152606401610590565b505b600082118015610b4f57506001600160a01b03841615155b15610b6857610b686001600160a01b0385168484611699565b50505050565b6069546001600160a01b031615610bc75760405162461bcd60e51b815260206004820152601360248201527f564d5f414c52454144595f4445504c4f594544000000000000000000000000006044820152606401610590565b604051610bd390611dc2565b604051809103906000f080158015610bef573d6000803e3d6000fd5b50606980547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b3360009081526065602052604090205460ff16610c895760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610590565b565b610c9361186d565b6001600160a01b03811660009081526065602081905260408220805460ff1916600117905581610ccb6033546001600160a01b031690565b6001600160a01b031681526020810191909152604001600020805460ff1916911515919091179055610cfc816115bf565b50565b3360009081526065602052604090205460ff16610d5e5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610590565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610dab576040519150601f19603f3d011682016040523d82523d6000602084013e610db0565b606091505b5050905080610e015760405162461bcd60e51b815260206004820152601260248201527f4641494c45445f544f5f53454e445f45544800000000000000000000000000006044820152606401610590565b604080516001600160a01b03851681526000602082018190529181018490526080606082018190528101919091527fe4f4f1fb3534fe80225d336f6e5a73007dc992e5f6740152bf13ed2a08f3851a9060a0016109ed565b3360009081526065602052604090205460ff16610eb85760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610590565b61063785858585856118c7565b610ecd61186d565b60005b82811015610b68578160656000868685818110610f16577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9050602002016020810190610f2b9190611e59565b6001600160a01b031681526020810191909152604001600020805460ff191691151591909117905580610f5d816125e4565b915050610ed0565b610f6d61186d565b60405162461bcd60e51b815260206004820152601c60248201527f556e61626c6520746f2072656e6f756e6365206f776e657273686970000000006044820152606401610590565b600054610100900460ff1615808015610fd55750600054600160ff909116105b80610fef5750303b158015610fef575060005460ff166001145b6110615760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610590565b6000805460ff1916600117905580156110a157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b6110a96119ce565b336000908152606560205260409020805460ff191660011790556110cb610b6e565b8015610cfc57600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498906020015b60405180910390a150565b6040517fd505accf000000000000000000000000000000000000000000000000000000008152336004820152306024820152604481018790526064810186905260ff8516608482015260a4810184905260c481018390526001600160a01b0388169063d505accf9060e401600060405180830381600087803b1580156111b657600080fd5b505af11580156111ca573d6000803e3d6000fd5b505050506111d9878783610930565b50505050505050565b3360009081526065602052604090205460ff166112415760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610590565b6112556001600160a01b0384168383611699565b604080516001600160a01b038085168252851660208201529081018290526080606082018190526000908201527fe4f4f1fb3534fe80225d336f6e5a73007dc992e5f6740152bf13ed2a08f3851a9060a0016109ed565b3360009081526065602052604090205460ff1661130b5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610590565b6000836001600160a01b03168260405160006040518083038185875af1925050503d8060008114611358576040519150601f19603f3d011682016040523d82523d6000602084013e61135d565b606091505b50509050806113ae5760405162461bcd60e51b815260206004820152601260248201527f4641494c45445f544f5f53454e445f45544800000000000000000000000000006044820152606401610590565b6113c26001600160a01b0386168585611699565b604080516001600160a01b03808716825287166020820152908101849052606081018390527f0ec14d41fb8dd758c7a1fc411ce327517caf88a8b9dee8bed60869801990d22c9060800160405180910390a15050505050565b3360009081526065602052604090205460ff1661147a5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610590565b61148f6001600160a01b03831633308461181c565b5050565b3360009081526065602052604090205460ff166114f25760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610590565b6115066001600160a01b0384168383611699565b505050565b3360009081526065602052604090205460ff1661156a5760405162461bcd60e51b815260206004820152600c60248201527f554e415554484f52495a454400000000000000000000000000000000000000006044820152606401610590565b61157787878787876118c7565b7f446598b3c3f0d9f39b89eb111ba2796b4fcbbf3bb39d64d5fd98c3045218cb3187878785856040516115ae9594939291906123ee565b60405180910390a150505050505050565b6115c761186d565b6001600160a01b0381166116435760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610590565b610cfc81611a53565b60408051338152326020820152600091810191909152346060820152608081018290527f1655dc426ee0145d9436d28cfb463fb0e0717ae145566e5e534da64b735e49f39060a001611126565b6040516001600160a01b0383166024820152604481018290526115069084907fa9059cbb00000000000000000000000000000000000000000000000000000000906064015b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152611abd565b60006001600160a01b03831661178157506001600160a01b03811631611816565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301528416906370a082319060240160206040518083038186803b1580156117db57600080fd5b505afa1580156117ef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611813919061231d565b90505b92915050565b6040516001600160a01b0380851660248301528316604482015260648101829052610b689085907f23b872dd00000000000000000000000000000000000000000000000000000000906084016116de565b6033546001600160a01b03163314610c895760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610590565b6069546001600160a01b031661191f5760405162461bcd60e51b815260206004820152601160248201527f564d5f444f45535f4e4f545f45584953540000000000000000000000000000006044820152606401610590565b6001600160a01b0385161561194857606954611948906001600160a01b03878116911686611699565b6069546040517f3f707e6b0000000000000000000000000000000000000000000000000000000081526001600160a01b0390911690633f707e6b908590611995908690869060040161241d565b6000604051808303818588803b1580156119ae57600080fd5b505af11580156119c2573d6000803e3d6000fd5b50505050505050505050565b600054610100900460ff16611a4b5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610590565b610c89611ba2565b603380546001600160a01b038381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6000611b12826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316611c289092919063ffffffff16565b8051909150156115065780806020019051810190611b309190612221565b6115065760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152608401610590565b600054610100900460ff16611c1f5760405162461bcd60e51b815260206004820152602b60248201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960448201527f6e697469616c697a696e670000000000000000000000000000000000000000006064820152608401610590565b610c8933611a53565b6060611c378484600085611c41565b90505b9392505050565b606082471015611cb95760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c00000000000000000000000000000000000000000000000000006064820152608401610590565b6001600160a01b0385163b611d105760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610590565b600080866001600160a01b03168587604051611d2c919061237d565b60006040518083038185875af1925050503d8060008114611d69576040519150601f19603f3d011682016040523d82523d6000602084013e611d6e565b606091505b5091509150611d7e828286611d89565b979650505050505050565b60608315611d98575081611c3a565b825115611da85782518084602001fd5b8160405162461bcd60e51b81526004016105909190612550565b610dad8061269f83390190565b60008083601f840112611de0578081fd5b50813567ffffffffffffffff811115611df7578182fd5b6020830191508360208260051b8501011115611e1257600080fd5b9250929050565b60008083601f840112611e2a578182fd5b50813567ffffffffffffffff811115611e41578182fd5b602083019150836020828501011115611e1257600080fd5b600060208284031215611e6a578081fd5b8135611c3a8161267b565b60008060408385031215611e87578081fd5b8235611e928161267b565b946020939093013593505050565b600080600060608486031215611eb4578081fd5b8335611ebf8161267b565b92506020840135611ecf8161267b565b929592945050506040919091013590565b60008060008060808587031215611ef5578081fd5b8435611f008161267b565b93506020850135611f108161267b565b93969395505050506040820135916060013590565b6000806000806000806000806000806101008b8d031215611f44578586fd5b8a35611f4f8161267b565b995060208b0135611f5f8161267b565b985060408b0135975060608b0135965060808b0135955060a08b0135611f848161267b565b945060c08b013567ffffffffffffffff80821115611fa0578586fd5b611fac8e838f01611dcf565b909650945060e08d0135915080821115611fc4578384fd5b50611fd18d828e01611e19565b915080935050809150509295989b9194979a5092959850565b60008060408385031215611ffc578182fd5b82356120078161267b565b9150602083013561201781612690565b809150509250929050565b60008060408385031215611e87578182fd5b600080600060608486031215612048578283fd5b83356120538161267b565b95602085013595506040909401359392505050565b60008060008060006080868803121561207f578081fd5b853561208a8161267b565b94506020860135935060408601359250606086013567ffffffffffffffff8111156120b3578182fd5b6120bf88828901611dcf565b969995985093965092949392505050565b600080600080600080600060a0888a0312156120ea578081fd5b87356120f58161267b565b96506020880135955060408801359450606088013567ffffffffffffffff8082111561211f578283fd5b61212b8b838c01611dcf565b909650945060808a0135915080821115612143578283fd5b506121508a828b01611e19565b989b979a50959850939692959293505050565b600080600080600080600060e0888a03121561217d578081fd5b87356121888161267b565b96506020880135955060408801359450606088013560ff811681146121ab578182fd5b9699959850939660808101359560a0820135955060c0909101359350915050565b6000806000604084860312156121e0578081fd5b833567ffffffffffffffff8111156121f6578182fd5b61220286828701611dcf565b909450925050602084013561221681612690565b809150509250925092565b600060208284031215612232578081fd5b8151611c3a81612690565b60006020828403121561224e578081fd5b813567ffffffffffffffff80821115612265578283fd5b818401915084601f830112612278578283fd5b81358181111561228a5761228a61264c565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f011681019083821181831017156122d0576122d061264c565b816040528281528760208487010111156122e8578586fd5b826020860160208301379182016020019490945295945050505050565b600060208284031215612316578081fd5b5035919050565b60006020828403121561232e578081fd5b5051919050565b81835281816020850137506000806020838501015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b6000825161238f8184602087016125b8565b9190910192915050565b60006001600160a01b03808b168352808a16602084015288604084015287606084015286608084015280861660a08401525060e060c08301526123e060e083018486612335565b9a9950505050505050505050565b6001600160a01b0386168152846020820152836040820152608060608201526000611d7e608083018486612335565b60208082528181018390526000906040808401600586901b8501820187855b88811015612542577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc088840301845281357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa18b360301811261249c578788fd5b8a01606081356124ab8161267b565b6001600160a01b03168552818801358886015286820135368390037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe10181126124f257898afd5b8201803567ffffffffffffffff81111561250a578a8bfd5b803603841315612518578a8bfd5b828988015261252c838801828c8501612335565b978a01979650505092870192505060010161243c565b509098975050505050505050565b602081526000825180602084015261256f8160408501602087016125b8565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b6000828210156125b3576125b361261d565b500390565b60005b838110156125d35781810151838201526020016125bb565b83811115610b685750506000910152565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156126165761261661261d565b5060010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6001600160a01b0381168114610cfc57600080fd5b8015158114610cfc57600080fdfe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610d2f8061007e6000396000f3fe60806040526004361061005e5760003560e01c8063715018a611610043578063715018a61461009f5780638da5cb5b146100b4578063f2fde38b146100ed57600080fd5b80631c6dd8a11461006a5780633f707e6b1461008c57600080fd5b3661006557005b600080fd5b34801561007657600080fd5b5061008a610085366004610a2b565b61010d565b005b61008a61009a366004610a5f565b610295565b3480156100ab57600080fd5b5061008a6104cf565b3480156100c057600080fd5b506000546040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b3480156100f957600080fd5b5061008a610108366004610a2b565b6104e3565b600073ffffffffffffffffffffffffffffffffffffffff821615610210576040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8316906370a082319060240160206040518083038186803b15801561019057600080fd5b505afa1580156101a4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101c89190610aef565b90508015610210576102106101f260005473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff8416908361059a565b504780156102915760005473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168160405160006040518083038185875af1925050503d8060008114610288576040519150601f19603f3d011682016040523d82523d6000602084013e61028d565b606091505b5050505b5050565b61029d610627565b60005b818110156104ca576000808484848181106102e4577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020028101906102f69190610c38565b610304906020810190610a2b565b73ffffffffffffffffffffffffffffffffffffffff16858585818110610353577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020028101906103659190610c38565b602001358686868181106103a2577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020028101906103b49190610c38565b6103c2906040810190610bce565b6040516103d0929190610b51565b60006040518083038185875af1925050503d806000811461040d576040519150601f19603f3d011682016040523d82523d6000602084013e610412565b606091505b5091509150816104b55782858585818110610456577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90506020028101906104689190610c38565b610476906020810190610a2b565b826040517f405c0fff0000000000000000000000000000000000000000000000000000000081526004016104ac93929190610b90565b60405180910390fd5b505080806104c290610c9b565b9150506102a0565b505050565b6104d7610627565b6104e160006106a8565b565b6104eb610627565b73ffffffffffffffffffffffffffffffffffffffff811661058e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f646472657373000000000000000000000000000000000000000000000000000060648201526084016104ac565b610597816106a8565b50565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001790526104ca90849061071d565b60005473ffffffffffffffffffffffffffffffffffffffff1633146104e1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016104ac565b6000805473ffffffffffffffffffffffffffffffffffffffff8381167fffffffffffffffffffffffff0000000000000000000000000000000000000000831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b600061077f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166108299092919063ffffffff16565b8051909150156104ca578080602001905181019061079d9190610acf565b6104ca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f7420737563636565640000000000000000000000000000000000000000000060648201526084016104ac565b60606108388484600085610842565b90505b9392505050565b6060824710156108d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60448201527f722063616c6c000000000000000000000000000000000000000000000000000060648201526084016104ac565b73ffffffffffffffffffffffffffffffffffffffff85163b610952576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016104ac565b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161097b9190610b61565b60006040518083038185875af1925050503d80600081146109b8576040519150601f19603f3d011682016040523d82523d6000602084013e6109bd565b606091505b50915091506109cd8282866109d8565b979650505050505050565b606083156109e757508161083b565b8251156109f75782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ac9190610b7d565b600060208284031215610a3c578081fd5b813573ffffffffffffffffffffffffffffffffffffffff8116811461083b578182fd5b60008060208385031215610a71578081fd5b823567ffffffffffffffff80821115610a88578283fd5b818501915085601f830112610a9b578283fd5b813581811115610aa9578384fd5b8660208260051b8501011115610abd578384fd5b60209290920196919550909350505050565b600060208284031215610ae0578081fd5b8151801515811461083b578182fd5b600060208284031215610b00578081fd5b5051919050565b60008151808452610b1f816020860160208601610c6b565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b8183823760009101908152919050565b60008251610b73818460208701610c6b565b9190910192915050565b60208152600061083b6020830184610b07565b83815273ffffffffffffffffffffffffffffffffffffffff83166020820152606060408201526000610bc56060830184610b07565b95945050505050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112610c02578283fd5b83018035915067ffffffffffffffff821115610c1c578283fd5b602001915036819003821315610c3157600080fd5b9250929050565b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa1833603018112610b73578182fd5b60005b83811015610c86578181015183820152602001610c6e565b83811115610c95576000848401525b50505050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415610cf2577f4e487b710000000000000000000000000000000000000000000000000000000081526011600452602481fd5b506001019056fea264697066735822122065fc99af916dd6aa9adb0ff72a0fcc273c4fe04a6c16213bb628d02b7b1b013464736f6c63430008040033a264697066735822122012db9fb0bf767da7c6f5c9a628d46d983fd4e921a2730876a6b7ed0a62d5523364736f6c63430008040033