0 txs
0 calls
constructor
No constructor.
functions
deployedProxy
viewfunction deployedProxy() view returns (address)
eligibleAllPositionCloser
viewfunction eligibleAllPositionCloser() view returns (address)
eligibleLongPositionCloser
viewfunction eligibleLongPositionCloser() view returns (address)
eligibleLongPositionOpener
viewfunction eligibleLongPositionOpener() view returns (address)
eligibleShortPositionCloser
viewfunction eligibleShortPositionCloser() view returns (address)
eligibleShortPositionOpener
viewfunction eligibleShortPositionOpener() view returns (address)
getPositionEthDataRoi
viewfunction getPositionEthDataRoi(address usersGmxProxy, bool isLong) view returns (uint256[])
GMX_READER
viewfunction GMX_READER() view returns (address)
GMX_VAULT
viewfunction GMX_VAULT() view returns (address)
gmxProxy
viewfunction gmxProxy() view returns (address)
owner
viewfunction owner() view returns (address)
USDC
viewfunction USDC() view returns (address)
userProxy
viewfunction userProxy(address) view returns (address)
WETH
viewfunction WETH() view returns (address)
closeAllPositions
payablefunction closeAllPositions(address maker) payable
closeLongPositions
payablefunction closeLongPositions(address maker) payable
closeShortPositions
payablefunction closeShortPositions(address maker) payable
initialize
nonpayablefunction initialize()
openX20Leverage
payablefunction openX20Leverage(address maker, bool isLong) payable returns (bytes32)
renounceOwnership
nonpayablefunction renounceOwnership()
setDeployedProxy
nonpayablefunction setDeployedProxy(address _deployedProxy)
setEligibleAllPositionCloser
nonpayablefunction setEligibleAllPositionCloser(address _eligibleAllPositionCloser)
setEligibleLongPositionCloser
nonpayablefunction setEligibleLongPositionCloser(address _eligibleLongPositionCloser)
setEligibleLongPositionOpener
nonpayablefunction setEligibleLongPositionOpener(address _eligibleLongPositionOpener)
setEligibleShortPositionCloser
nonpayablefunction setEligibleShortPositionCloser(address _eligibleShortPositionCloser)
setEligibleShortPositionOpener
nonpayablefunction setEligibleShortPositionOpener(address _eligibleShortPositionOpener)
transferOwnership
nonpayablefunction transferOwnership(address newOwner)
transferProxyOwnership
nonpayablefunction transferProxyOwnership(address _userProxy, address newOwner)
events
Initialized
event Initialized(uint8 version)
OpenedLeveragePosition
event OpenedLeveragePosition(address maker, address personalProxy)
OwnershipTransferred
event OwnershipTransferred(address indexed previousOwner, address indexed newOwner)
errors
No errors.
creation bytecode
0x608060405234801561001057600080fd5b50613663806100206000396000f3fe6080604052600436106101ba5760003560e01c8063761c7b54116100ec5780638da5cb5b1161008a578063b04ddeec11610064578063b04ddeec146104fb578063b84a5cbd1461051b578063f2fde38b1461052e578063f8c344bf1461054e57600080fd5b80638da5cb5b1461049557806399d73cc5146104b3578063ad5c4648146104d357600080fd5b80638129fc1c116100c65780638129fc1c1461040257806385e4ad651461041757806388b82b711461043757806389a302711461046d57600080fd5b8063761c7b54146103995780637e36c6fc146103ba578063803427f5146103e257600080fd5b806338d2cbb81161015957806359613c0b1161013357806359613c0b146103245780635d650d40146103445780636cf3e7fb14610364578063715018a61461038457600080fd5b806338d2cbb8146102c45780633be396c9146102e4578063470639e11461030457600080fd5b80630c426201116101955780630c42620114610231578063122915e6146102445780632db9f59a146102645780632e3773fc146102a457600080fd5b8062361d55146101c657806307eb755f146101e85780630bc704041461021e57600080fd5b366101c157005b600080fd5b3480156101d257600080fd5b506101e66101e13660046111a6565b61056e565b005b3480156101f457600080fd5b506102086102033660046111d9565b6105d5565b6040516102159190611215565b60405180910390f35b6101e661022c366004611259565b61069c565b6101e661023f366004611259565b610745565b34801561025057600080fd5b506101e661025f366004611259565b610844565b34801561027057600080fd5b5061028c73489ee077994b6658eafa855c308275ead8097c4a81565b6040516001600160a01b039091168152602001610215565b3480156102b057600080fd5b50609c5461028c906001600160a01b031681565b3480156102d057600080fd5b5060975461028c906001600160a01b031681565b3480156102f057600080fd5b50609b5461028c906001600160a01b031681565b34801561031057600080fd5b506101e661031f366004611259565b61086e565b34801561033057600080fd5b506101e661033f366004611259565b610898565b34801561035057600080fd5b506101e661035f366004611259565b6108c2565b34801561037057600080fd5b506101e661037f366004611259565b6108ec565b34801561039057600080fd5b506101e6610916565b6103ac6103a73660046111d9565b61092a565b604051908152602001610215565b3480156103c657600080fd5b5061028c7322199a49a999c351ef7927602cfb187ec3cae48981565b3480156103ee57600080fd5b506101e66103fd366004611259565b610a90565b34801561040e57600080fd5b506101e6610aba565b34801561042357600080fd5b50609a5461028c906001600160a01b031681565b34801561044357600080fd5b5061028c610452366004611259565b6098602052600090815260409020546001600160a01b031681565b34801561047957600080fd5b5061028c73ff970a61a04b1ca14834a43f5de4533ebddb5cc881565b3480156104a157600080fd5b506033546001600160a01b031661028c565b3480156104bf57600080fd5b5060995461028c906001600160a01b031681565b3480156104df57600080fd5b5061028c7382af49447d8a07e3bd95bd0d56f35241523fbab181565b34801561050757600080fd5b5060cf5461028c906001600160a01b031681565b6101e6610529366004611259565b610bcb565b34801561053a57600080fd5b506101e6610549366004611259565b610c98565b34801561055a57600080fd5b5060d05461028c906001600160a01b031681565b610576610d0e565b60405163f2fde38b60e01b81526001600160a01b03828116600483015283169063f2fde38b90602401600060405180830381600087803b1580156105b957600080fd5b505af11580156105cd573d6000803e3d6000fd5b505050505050565b60607322199a49a999c351ef7927602cfb187ec3cae48963dc383cab73489ee077994b6658eafa855c308275ead8097c4a8561061086610d68565b610618610e27565b61062188610e92565b6040518663ffffffff1660e01b81526004016106419594939291906112b8565b60006040518083038186803b15801561065957600080fd5b505afa15801561066d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526106959190810190611354565b9392505050565b6001600160a01b03818116600090815260986020526040902054609b54908216911633146107115760405162461bcd60e51b815260206004820152601a60248201527f21656c696769626c65416c6c506f736974696f6e436c6f73657200000000000060448201526064015b60405180910390fd5b6001600160a01b0381166107375760405162461bcd60e51b815260040161070890611412565b6107418183610ee2565b5050565b6001600160a01b0381811660009081526098602052604090205460d054908216911633146107b55760405162461bcd60e51b815260206004820152601b60248201527f21656c696769626c654c6f6e67506f736974696f6e436c6f73657200000000006044820152606401610708565b6001600160a01b0381166107db5760405162461bcd60e51b815260040161070890611412565b604051635f18981560e11b81526001600160a01b0383811660048301526001602483015282169063be31302a9034906044015b6000604051808303818588803b15801561082757600080fd5b505af115801561083b573d6000803e3d6000fd5b50505050505050565b61084c610d0e565b609b80546001600160a01b0319166001600160a01b0392909216919091179055565b610876610d0e565b609c80546001600160a01b0319166001600160a01b0392909216919091179055565b6108a0610d0e565b60d080546001600160a01b0319166001600160a01b0392909216919091179055565b6108ca610d0e565b609980546001600160a01b0319166001600160a01b0392909216919091179055565b6108f4610d0e565b60cf80546001600160a01b0319166001600160a01b0392909216919091179055565b61091e610d0e565b6109286000610f12565b565b6001600160a01b038083166000908152609860205260408120549091168183156109ad576099546001600160a01b031633146109a85760405162461bcd60e51b815260206004820152601b60248201527f21656c696769626c654c6f6e67506f736974696f6e4f70656e657200000000006044820152606401610708565b610a07565b609a546001600160a01b03163314610a075760405162461bcd60e51b815260206004820152601c60248201527f21656c696769626c6553686f7274506f736974696f6e4f70656e6572000000006044820152606401610708565b6001600160a01b038216610a2157610a1e85610f64565b91505b8315610a3857610a318286611072565b9050610a45565b610a4282866110f4565b90505b604080516001600160a01b038088168252841660208201527fe429b92b89a7263996788bdba3dd737627447a8c7b978335d10df2627726f8b6910160405180910390a1949350505050565b610a98610d0e565b609a80546001600160a01b0319166001600160a01b0392909216919091179055565b600054610100900460ff1615808015610ada5750600054600160ff909116105b80610af45750303b158015610af4575060005460ff166001145b610b575760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610708565b6000805460ff191660011790558015610b7a576000805461ff0019166101001790555b610b82611128565b8015610bc8576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b50565b6001600160a01b0381811660009081526098602052604090205460cf5490821691163314610c3b5760405162461bcd60e51b815260206004820152601c60248201527f21656c696769626c6553686f7274506f736974696f6e436c6f736572000000006044820152606401610708565b6001600160a01b038116610c615760405162461bcd60e51b815260040161070890611412565b604051635f18981560e11b81526001600160a01b0383811660048301526000602483015282169063be31302a90349060440161080e565b610ca0610d0e565b6001600160a01b038116610d055760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610708565b610bc881610f12565b6033546001600160a01b031633146109285760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610708565b60608115610dd857604080516001808252818301909252600091602080830190803683370190505090507382af49447d8a07e3bd95bd0d56f35241523fbab181600081518110610dba57610dba61143f565b6001600160a01b039092166020928302919091019091015292915050565b6040805160018082528183019092526000916020808301908036833701905050905073ff970a61a04b1ca14834a43f5de4533ebddb5cc881600081518110610dba57610dba61143f565b919050565b60408051600180825281830190925260609160009190602080830190803683370190505090507382af49447d8a07e3bd95bd0d56f35241523fbab181600081518110610e7557610e7561143f565b6001600160a01b0390921660209283029190910190910152919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110610ecc57610ecc61143f565b9115156020928302919091019091015292915050565b6040516302f1c10160e21b81526001600160a01b038281166004830152831690630bc7040490349060240161080e565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080604051610f7390611182565b604051809103906000f080158015610f8f573d6000803e3d6000fd5b5060405163189acdbd60e31b81523060048201529091506001600160a01b0382169063c4d66de890602401600060405180830381600087803b158015610fd457600080fd5b505af1158015610fe8573d6000803e3d6000fd5b50505050806001600160a01b03166347f5d7106040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561102757600080fd5b505af115801561103b573d6000803e3d6000fd5b505050506001600160a01b03928316600090815260986020526040902080546001600160a01b031916938216939093179092555090565b60405163ae494f6360e01b81526001600160a01b0382811660048301526000919084169063ae494f639034906024015b6020604051808303818588803b1580156110bb57600080fd5b505af11580156110cf573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906106959190611455565b60405163e4b6d6db60e01b81526001600160a01b0382811660048301526000919084169063e4b6d6db9034906024016110a2565b600054610100900460ff1661114f5760405162461bcd60e51b81526004016107089061146e565b610928600054610100900460ff166111795760405162461bcd60e51b81526004016107089061146e565b61092833610f12565b612174806114ba83390190565b80356001600160a01b0381168114610e2257600080fd5b600080604083850312156111b957600080fd5b6111c28361118f565b91506111d06020840161118f565b90509250929050565b600080604083850312156111ec57600080fd5b6111f58361118f565b91506020830135801515811461120a57600080fd5b809150509250929050565b6020808252825182820181905260009190848201906040850190845b8181101561124d57835183529284019291840191600101611231565b50909695505050505050565b60006020828403121561126b57600080fd5b6106958261118f565b600081518084526020808501945080840160005b838110156112ad5781516001600160a01b031687529582019590820190600101611288565b509495945050505050565b600060018060a01b03808816835260208188168185015260a060408501526112e360a0850188611274565b915083820360608501526112f78287611274565b8481036080860152855180825282870193509082019060005b8181101561132e578451151583529383019391830191600101611310565b50909a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b6000602080838503121561136757600080fd5b825167ffffffffffffffff8082111561137f57600080fd5b818501915085601f83011261139357600080fd5b8151818111156113a5576113a561133e565b8060051b604051601f19603f830116810181811085821117156113ca576113ca61133e565b6040529182528482019250838101850191888311156113e857600080fd5b938501935b82851015611406578451845293850193928501926113ed565b98975050505050505050565b602080825260139082015272646f6e742068617665206f776e2070726f787960681b604082015260600190565b634e487b7160e01b600052603260045260246000fd5b60006020828403121561146757600080fd5b5051919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b60608201526080019056fe608060405234801561001057600080fd5b50612154806100206000396000f3fe60806040526004361061016a5760003560e01c80638da5cb5b116100d1578063d3e78e4d1161008a578063edf3daec11610064578063edf3daec1461049b578063f2fde38b146104bb578063fbfa77cf146104db578063ff7ebbf21461036a57600080fd5b8063d3e78e4d14610438578063e4b6d6db14610460578063e60724e31461047357600080fd5b80638da5cb5b1461037f578063ad5c46481461039d578063ae494f63146103c5578063be31302a146103d8578063c4d66de8146103eb578063c968b70e1461040b57600080fd5b8063562a97e511610123578063562a97e514610245578063715018a61461026d5780637e36c6fc146102825780638645f7a8146102aa57806389a30271146103425780638d01f0ba1461036a57600080fd5b80630bc7040414610176578063139dbe6c1461018b5780631ea21f1f146101d05780632db9f59a146101f357806336b4134a1461021b57806347f5d7101461023057600080fd5b3661017157005b600080fd5b610189610184366004611b62565b6104fb565b005b34801561019757600080fd5b506101b373b87a436b93ffe9d75c5cfa7bacfff96430b0986881565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101dc57600080fd5b506101e5600081565b6040519081526020016101c7565b3480156101ff57600080fd5b506101b373489ee077994b6658eafa855c308275ead8097c4a81565b34801561022757600080fd5b506101e5600681565b34801561023c57600080fd5b506101896105eb565b34801561025157600080fd5b506101b373abbc5f99639c9b6bcb58544ddf04efa6802f406481565b34801561027957600080fd5b50610189610665565b34801561028e57600080fd5b506101b37322199a49a999c351ef7927602cfb187ec3cae48981565b3480156102b657600080fd5b5061030a6102c5366004611b7d565b609760205260009081526040902080546001909101546001600160a01b0382169160ff600160a01b8204811692600160a81b8304821692600160b01b90049091169085565b604080516001600160a01b0390961686529315156020860152911515928401929092529015156060830152608082015260a0016101c7565b34801561034e57600080fd5b506101b373ff970a61a04b1ca14834a43f5de4533ebddb5cc881565b34801561037657600080fd5b506101e5600a81565b34801561038b57600080fd5b506033546001600160a01b03166101b3565b3480156103a957600080fd5b506101b37382af49447d8a07e3bd95bd0d56f35241523fbab181565b6101e56103d3366004611b62565b610679565b6101896103e6366004611ba4565b6106b9565b3480156103f757600080fd5b50610189610406366004611b62565b610775565b34801561041757600080fd5b5061042b610426366004611ba4565b6108a1565b6040516101c79190611bdb565b34801561044457600080fd5b506101b373ce03b880634ebd9bd0f6974ccf430eded3a8363f81565b6101e561046e366004611b62565b61096a565b34801561047f57600080fd5b506101b373639fe6ab55c921f74e7fac1ee960c0b6293ba61281565b3480156104a757600080fd5b506101896104b6366004611c1f565b6109a2565b3480156104c757600080fd5b506101896104d6366004611b62565b610b0c565b3480156104e757600080fd5b506099546101b3906001600160a01b031681565b6099546001600160a01b0316331461052e5760405162461bcd60e51b815260040161052590611c61565b60405180910390fd5b6000610538610b85565b905034610546826002611c97565b116105b25761055782600183610c13565b61056382600083610c13565b6001600160a01b0382166108fc61057b836002611c97565b6105859034611cb6565b6040518115909202916000818181858888f193505050501580156105ad573d6000803e3d6000fd5b505050565b6040516001600160a01b038316903480156108fc02916000818181858888f193505050501580156105ad573d6000803e3d6000fd5b5050565b6040516338c74dd960e01b815273b87a436b93ffe9d75c5cfa7bacfff96430b09868600482015273abbc5f99639c9b6bcb58544ddf04efa6802f4064906338c74dd990602401600060405180830381600087803b15801561064b57600080fd5b505af115801561065f573d6000803e3d6000fd5b50505050565b61066d610f7f565b6106776000610fd9565b565b6099546000906001600160a01b031633146106a65760405162461bcd60e51b815260040161052590611c61565b6106b182600161102b565b90505b919050565b6099546001600160a01b031633146106e35760405162461bcd60e51b815260040161052590611c61565b60006106ed610b85565b905034811161074057610701838383610c13565b6001600160a01b0383166108fc6107188334611cb6565b6040518115909202916000818181858888f1935050505015801561065f573d6000803e3d6000fd5b6040516001600160a01b038416903480156108fc02916000818181858888f1935050505015801561065f573d6000803e3d6000fd5b600054610100900460ff16158080156107955750600054600160ff909116105b806107af5750303b1580156107af575060005460ff166001145b6108125760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b6064820152608401610525565b6000805460ff191660011790558015610835576000805461ff0019166101001790555b61083d611412565b609980546001600160a01b0319166001600160a01b03841617905580156105e7576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b60607322199a49a999c351ef7927602cfb187ec3cae48963dc383cab73489ee077994b6658eafa855c308275ead8097c4a856108dc86611441565b6108e46114fb565b6108ed88611566565b6040518663ffffffff1660e01b815260040161090d959493929190611d11565b60006040518083038186803b15801561092557600080fd5b505afa158015610939573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526109619190810190611dad565b90505b92915050565b6099546000906001600160a01b031633146109975760405162461bcd60e51b815260040161052590611c61565b6106b182600061102b565b73b87a436b93ffe9d75c5cfa7bacfff96430b0986833146109fc5760405162461bcd60e51b815260206004820152601460248201527310a3a6ac2fa827a9a4aa24a7a72fa927aaaa22a960611b6044820152606401610525565b6000838152609760205260409020828015610a145750815b15610a2b57805460ff60a01b1916600160a01b1781555b828015610a36575081155b80610a47575082158015610a475750815b15610ab2578054610a6d906001600160a01b03811690600160b01b900460ff16856115b6565b80546001600160a01b03166000908152609860205260409020610a909085611706565b50600084815260976020526040812080546001600160b81b0319168155600101555b82158015610abe575081155b1561065f5780546001600160a01b03166000908152609860205260409020610ae69085611706565b50505060009182525060976020526040812080546001600160b81b031916815560010155565b610b14610f7f565b6001600160a01b038116610b795760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610525565b610b8281610fd9565b50565b600073b87a436b93ffe9d75c5cfa7bacfff96430b098686001600160a01b03166363ae21036040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610bd657600080fd5b505af1158015610bea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c0e9190611e6b565b905090565b6000828015610ce0576040516340d3096b60e11b81527382af49447d8a07e3bd95bd0d56f35241523fbab1600482015260009073489ee077994b6658eafa855c308275ead8097c4a906381a612d69060240160206040518083038186803b158015610c7d57600080fd5b505afa158015610c91573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610cb59190611e6b565b90506064610cc4600683611c97565b610cce9190611e84565b610cd89082611cb6565b925050610da0565b604051637092736960e11b81527382af49447d8a07e3bd95bd0d56f35241523fbab1600482015260009073489ee077994b6658eafa855c308275ead8097c4a9063e124e6d29060240160206040518083038186803b158015610d4157600080fd5b505afa158015610d55573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d799190611e6b565b90506064610d88600683611c97565b610d929190611e84565b610d9c9082611ea6565b9250505b6000610dac30866108a1565b9050600073b87a436b93ffe9d75c5cfa7bacfff96430b09868637be7d14186610dd58685611712565b7382af49447d8a07e3bd95bd0d56f35241523fbab1600087600081518110610dff57610dff611ebe565b602002602001015189308c60008f8e306040518d63ffffffff1660e01b8152600401610e359b9a99989796959493929190611ed4565b6020604051808303818588803b158015610e4e57600080fd5b505af1158015610e62573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610e879190611e6b565b6040805160a0810182526001600160a01b03808b16808352600060208085018281528587018381528e151560608801908152608088018581528a865260978552898620985189549451935192511515600160b01b0260ff60b01b19931515600160a81b029390931661ffff60a81b19941515600160a01b026001600160a81b0319909616919099161793909317919091169590951794909417855592516001949094019390935582526098905220909150610f429082611888565b506040518181527f86337556ac9ade551500a3c3a5e797e6a3b50e92e53df4cde62cd95a5c89537d9060200160405180910390a150505050505050565b6033546001600160a01b031633146106775760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610525565b603380546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b600080611036610b85565b90506000611045600a34611e84565b905060006110538234611cb6565b9050600061106082611894565b90506000861561112e57604051637092736960e11b81527382af49447d8a07e3bd95bd0d56f35241523fbab1600482015260009073489ee077994b6658eafa855c308275ead8097c4a9063e124e6d29060240160206040518083038186803b1580156110cb57600080fd5b505afa1580156110df573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111039190611e6b565b90506064611112600683611c97565b61111c9190611e84565b6111269082611ea6565b9150506111ee565b6040516340d3096b60e11b81527382af49447d8a07e3bd95bd0d56f35241523fbab1600482015260009073489ee077994b6658eafa855c308275ead8097c4a906381a612d69060240160206040518083038186803b15801561118f57600080fd5b505afa1580156111a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111c79190611e6b565b905060646111d6600683611c97565b6111e09190611e84565b6111ea9082611cb6565b9150505b6111f7846118f6565b73b87a436b93ffe9d75c5cfa7bacfff96430b09868635b88e8c68461121d8a6001611712565b6040516001600160e01b031960e085901b16815261126391907382af49447d8a07e3bd95bd0d56f35241523fbab19060009089908f908a908f9085903090600401611f47565b6020604051808303818588803b15801561127c57600080fd5b505af1158015611290573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112b59190611e6b565b95506040518060a00160405280896001600160a01b031681526020016000151581526020016001151581526020018815158152602001838152506097600088815260200190815260200160002060008201518160000160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555060208201518160000160146101000a81548160ff02191690831515021790555060408201518160000160156101000a81548160ff02191690831515021790555060608201518160000160166101000a81548160ff021916908315150217905550608082015181600101559050506113d386609860008b6001600160a01b03166001600160a01b0316815260200190815260200160002061188890919063ffffffff16565b506040518681527f044f63f2eed9e8888c18ad8644a4e8d9caa337e924f09b6e199c7b0c1debad6c9060200160405180910390a1505050505092915050565b600054610100900460ff166114395760405162461bcd60e51b815260040161052590611fa9565b610677611937565b606081156114b157604080516001808252818301909252600091602080830190803683370190505090507382af49447d8a07e3bd95bd0d56f35241523fbab18160008151811061149357611493611ebe565b6001600160a01b039092166020928302919091019091015292915050565b6040805160018082528183019092526000916020808301908036833701905050905073ff970a61a04b1ca14834a43f5de4533ebddb5cc88160008151811061149357611493611ebe565b60408051600180825281830190925260609160009190602080830190803683370190505090507382af49447d8a07e3bd95bd0d56f35241523fbab18160008151811061154957611549611ebe565b6001600160a01b0390921660209283029190910190910152919050565b604080516001808252818301909252606091600091906020808301908036833701905050905082816000815181106115a0576115a0611ebe565b9115156020928302919091019091015292915050565b81806115c0575080155b156115fa576040516001600160a01b038416904780156108fc02916000818181858888f1935050505015801561065f573d6000803e3d6000fd5b6040516370a0823160e01b815230600482015273ff970a61a04b1ca14834a43f5de4533ebddb5cc89063a9059cbb90859083906370a0823190602401602060405180830381600087803b15801561165057600080fd5b505af1158015611664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116889190611e6b565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156116ce57600080fd5b505af11580156116e2573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061065f9190611ff4565b60006109618383611967565b606082801561171e5750815b8061172f575082801561172f575081155b1561179d57604080516001808252818301909252600091602080830190803683370190505090507382af49447d8a07e3bd95bd0d56f35241523fbab18160008151811061177e5761177e611ebe565b6001600160a01b03909216602092830291909101909101529050610964565b821580156117a85750815b1561183e576040805160028082526060820183526000926020830190803683370190505090507382af49447d8a07e3bd95bd0d56f35241523fbab1816000815181106117f6576117f6611ebe565b60200260200101906001600160a01b031690816001600160a01b03168152505073ff970a61a04b1ca14834a43f5de4533ebddb5cc88160018151811061177e5761177e611ebe565b6040805160018082528183019092526000916020808301908036833701905050905073ff970a61a04b1ca14834a43f5de4533ebddb5cc88160008151811061177e5761177e611ebe565b60006109618383611a5a565b60008061189f611aa9565b905060006118ab611afa565b905060006118ba82600a6120fc565b6118c48487611c97565b6118ce9190611e84565b905060006118dd600a83611c97565b6118ec9064e8d4a51000611c97565b9695505050505050565b60405173ce03b880634ebd9bd0f6974ccf430eded3a8363f9082156108fc029083906000818181858888f193505050501580156105e7573d6000803e3d6000fd5b600054610100900460ff1661195e5760405162461bcd60e51b815260040161052590611fa9565b61067733610fd9565b60008181526001830160205260408120548015611a5057600061198b600183611cb6565b855490915060009061199f90600190611cb6565b9050818114611a045760008660000182815481106119bf576119bf611ebe565b90600052602060002001549050808760000184815481106119e2576119e2611ebe565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080611a1557611a15612108565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610964565b6000915050610964565b6000818152600183016020526040812054611aa157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610964565b506000610964565b600073639fe6ab55c921f74e7fac1ee960c0b6293ba6126001600160a01b03166350d25bcd6040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610bd657600080fd5b600073639fe6ab55c921f74e7fac1ee960c0b6293ba6126001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610bd657600080fd5b80356001600160a01b03811681146106b457600080fd5b600060208284031215611b7457600080fd5b61096182611b4b565b600060208284031215611b8f57600080fd5b5035919050565b8015158114610b8257600080fd5b60008060408385031215611bb757600080fd5b611bc083611b4b565b91506020830135611bd081611b96565b809150509250929050565b6020808252825182820181905260009190848201906040850190845b81811015611c1357835183529284019291840191600101611bf7565b50909695505050505050565b600080600060608486031215611c3457600080fd5b833592506020840135611c4681611b96565b91506040840135611c5681611b96565b809150509250925092565b602080825260069082015265085d985d5b1d60d21b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b6000816000190483118215151615611cb157611cb1611c81565b500290565b600082821015611cc857611cc8611c81565b500390565b600081518084526020808501945080840160005b83811015611d065781516001600160a01b031687529582019590820190600101611ce1565b509495945050505050565b600060018060a01b03808816835260208188168185015260a06040850152611d3c60a0850188611ccd565b91508382036060850152611d508287611ccd565b8481036080860152855180825282870193509082019060005b81811015611d87578451151583529383019391830191600101611d69565b50909a9950505050505050505050565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215611dc057600080fd5b825167ffffffffffffffff80821115611dd857600080fd5b818501915085601f830112611dec57600080fd5b815181811115611dfe57611dfe611d97565b8060051b604051601f19603f83011681018181108582111715611e2357611e23611d97565b604052918252848201925083810185019188831115611e4157600080fd5b938501935b82851015611e5f57845184529385019392850192611e46565b98975050505050505050565b600060208284031215611e7d57600080fd5b5051919050565b600082611ea157634e487b7160e01b600052601260045260246000fd5b500490565b60008219821115611eb957611eb9611c81565b500190565b634e487b7160e01b600052603260045260246000fd5b6000610160808352611ee88184018f611ccd565b6001600160a01b039d8e166020850152604084019c909c5250506060810198909852951515608088015293881660a087015260c086019290925260e0850152610100840152151561012083015290921661014090920191909152919050565b6000610120808352611f5b8184018d611ccd565b6001600160a01b039b8c166020850152604084019a909a5250506060810196909652931515608086015260a085019290925260c084015260e083015290921661010090920191909152919050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b60006020828403121561200657600080fd5b815161201181611b96565b9392505050565b600181815b8085111561205357816000190482111561203957612039611c81565b8085161561204657918102915b93841c939080029061201d565b509250929050565b60008261206a57506001610964565b8161207757506000610964565b816001811461208d5760028114612097576120b3565b6001915050610964565b60ff8411156120a8576120a8611c81565b50506001821b610964565b5060208310610133831016604e8410600b84101617156120d6575081810a610964565b6120e08383612018565b80600019048211156120f4576120f4611c81565b029392505050565b6000610961838361205b565b634e487b7160e01b600052603160045260246000fdfea264697066735822122018b6f923aee135ba3b7b6efc3b3e5aeef590de42e8be6118fe44d6068d72379f64736f6c63430008090033a2646970667358221220f8e346044cbe3b12875cf3e9fe1657394ce6da8189fda6e0a9efb8f0e8c32ba864736f6c63430008090033