UNPKG

blackbull-sdk

Version:

An SDK for building applications on top of Blackbullswap

495 lines 92.4 kB
{ "_format": "hh-sol-artifact-1", "contractName": "LiquidityPoolManagerV2", "sourceName": "contracts/LiquidityPoolManagerV2.sol", "abi": [ { "inputs": [ { "internalType": "address", "name": "wavax_", "type": "address" }, { "internalType": "address", "name": "png_", "type": "address" }, { "internalType": "address", "name": "treasuryVester_", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "avaxSplit_", "type": "uint256" }, { "internalType": "uint256", "name": "pngSplit_", "type": "uint256" } ], "name": "activateFeeSplit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "uint256", "name": "weight", "type": "uint256" } ], "name": "addWhitelistedPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "avaxPngPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "avaxSplit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "calculateAndDistribute", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "calculateReturns", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "uint256", "name": "weight", "type": "uint256" } ], "name": "changeWeight", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "deactivateFeeSplit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "distributeTokens", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "pairIndex", "type": "uint256" } ], "name": "distributeTokensSinglePool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "distribution", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" } ], "name": "getAvaxLiquidity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getAvaxPngRatio", "outputs": [ { "internalType": "uint256", "name": "conversionFactor", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "uint256", "name": "conversionFactor", "type": "uint256" } ], "name": "getPngLiquidity", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" } ], "name": "isAvaxPair", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" } ], "name": "isPngPair", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" } ], "name": "isWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numPools", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "png", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pngSplit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" } ], "name": "removeWhitelistedPool", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "avaxPngPair_", "type": "address" } ], "name": "setAvaxPngPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "splitPools", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "stakes", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "treasuryVester", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "unallocatedPng", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "vestAllocation", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "wavax", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "weights", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ], "bytecode": "0x60806040526000600f8190556010805460ff191690556012553480156200002557600080fd5b506040516200513638038062005136833981810160405260608110156200004b57600080fd5b50805160208201516040909201519091906000620000686200016c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600180556001600160a01b03831615801590620000d757506001600160a01b03821615155b8015620000ec57506001600160a01b03811615155b620001295760405162461bcd60e51b8152600401808060200182810382526046815260200180620050f06046913960600191505060405180910390fd5b600b80546001600160a01b039485166001600160a01b031991821617909155600c805493851693821693909317909255600e805491909316911617905562000170565b3390565b614f7080620001806000396000f3fe60806040523480156200001157600080fd5b5060043610620002205760003560e01c80638c31ceff1162000129578063a8d9568e11620000b1578063d4597783116200007b578063d459778314620004f5578063db130a49146200051b578063f2fde38b1462000544578063fbb6b56b146200056d5762000220565b8063a8d9568e1462000492578063aa8b0670146200049c578063c49b14f114620004bc578063c63931ca14620004eb5762000220565b8063a0559a5c11620000f3578063a0559a5c146200042c578063a325f4c91462000436578063a7cac8461462000440578063a8cb13df14620004695762000220565b80638c31ceff14620003e55780638da5cb5b146200040e578063933733cf14620004185780639ab1b48414620004225762000220565b806346e16a1111620001ad5780636a6b353911620001775780636a6b35391462000388578063715018a614620003b1578063796cd9ba14620003bb5780637d8a6c2314620003db5762000220565b806346e16a11146200033b5780634ad00082146200036a5780635278f89c14620003745780635f775678146200037e5762000220565b80631bd172d011620001ef5780631bd172d014620002bb5780632be40cbe14620002ec57806335c62bc214620002f65780633af32abf14620003125762000220565b8063117be4c21462000225578063150895db146200024b57806316934fc4146200025557806318607f67146200027e575b600080fd5b6200022f62000577565b604080516001600160a01b039092168252519081900360200190f35b6200022f62000586565b6200022f600480360360208110156200026d57600080fd5b50356001600160a01b031662000595565b620002a7600480360360208110156200029657600080fd5b50356001600160a01b0316620005b0565b604080519115158252519081900360200190f35b620002ea60048036036040811015620002d357600080fd5b506001600160a01b038135169060200135620005c5565b005b620002a7620006e5565b62000300620006ee565b60408051918252519081900360200190f35b620002a7600480360360208110156200032a57600080fd5b50356001600160a01b0316620006f4565b620002ea600480360360408110156200035357600080fd5b506001600160a01b03813516906020013562000717565b620002ea62000b5f565b620002ea62001014565b6200022f62001256565b620002ea60048036036020811015620003a057600080fd5b50356001600160a01b031662001265565b620002ea6200133b565b620002ea60048036036020811015620003d357600080fd5b5035620013f2565b62000300620016d2565b620002a760048036036020811015620003fd57600080fd5b50356001600160a01b0316620016d8565b6200022f620016e7565b620002ea620016f6565b620002ea6200170c565b62000300620019af565b620002ea620019b5565b62000300600480360360208110156200045857600080fd5b50356001600160a01b031662001a7b565b620002ea600480360360208110156200048157600080fd5b50356001600160a01b031662001a8d565b6200030062001d74565b6200030060048036036020811015620004b457600080fd5b503562001d7a565b6200030060048036036040811015620004d457600080fd5b506001600160a01b03813516906020013562001d9c565b6200030062001fc2565b620002ea600480360360408110156200050d57600080fd5b50803590602001356200215d565b62000300600480360360208110156200053357600080fd5b50356001600160a01b03166200227c565b620002ea600480360360208110156200055c57600080fd5b50356001600160a01b031662002486565b6200022f62002595565b600b546001600160a01b031681565b600e546001600160a01b031681565b6006602052600090815260409020546001600160a01b031681565b6000620005bf600483620025a4565b92915050565b620005cf620025c2565b6000546001600160a01b0390811691161462000632576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038216600090815260076020526040902054620006885760405162461bcd60e51b8152600401808060200182810382526038815260200180620049d06038913960400191505060405180910390fd5b60008111620006c95760405162461bcd60e51b815260040180806020018281038252603781526020018062004c5c6037913960400191505060405180910390fd5b6001600160a01b03909116600090815260076020526040902055565b60085460ff1681565b600f5481565b600062000703600283620025a4565b80620005bf5750620005bf600483620025a4565b62000721620025c2565b6000546001600160a01b0390811691161462000784576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60105460ff1615620007c85760405162461bcd60e51b8152600401808060200182810382526066815260200180620047c36066913960800191505060405180910390fd5b6001600160a01b0382166200080f5760405162461bcd60e51b815260040180806020018281038252604981526020018062004df66049913960600191505060405180910390fd5b6200081a82620006f4565b15620008585760405162461bcd60e51b815260040180806020018281038252604281526020018062004c1a6042913960600191505060405180910390fd5b60008111620008995760405162461bcd60e51b815260040180806020018281038252603f81526020018062004afc603f913960400191505060405180910390fd5b6000826001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b158015620008d557600080fd5b505afa158015620008ea573d6000803e3d6000fd5b505050506040513d60208110156200090157600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0386169163d21220a7916004808301926020929190829003018186803b1580156200094a57600080fd5b505afa1580156200095f573d6000803e3d6000fd5b505050506040513d60208110156200097657600080fd5b505190506001600160a01b038281169082161415620009c75760405162461bcd60e51b815260040180806020018281038252604481526020018062004b806044913960600191505060405180910390fd5b600c546040516000916001600160a01b0316908690620009e79062002a69565b6001600160a01b03928316815291166020820152604080519182900301906000f08015801562000a1b573d6000803e3d6000fd5b506001600160a01b03868116600090815260066020908152604080832080546001600160a01b03191686861617905560079091529020869055600c54919250908116908416148062000a7a5750600c546001600160a01b038381169116145b1562000ad05762000a8d600486620025c6565b62000aca5760405162461bcd60e51b8152600401808060200182810382526039815260200180620049976039913960400191505060405180910390fd5b62000b45565b600b546001600160a01b038481169116148062000afa5750600b546001600160a01b038381169116145b1562000b0d5762000a8d600286620025c6565b60405162461bcd60e51b8152600401808060200182810382526044815260200180620047076044913960600191505060405180910390fd5b600f5462000b55906001620025dd565b600f555050505050565b60105460ff161562000ba35760405162461bcd60e51b815260040180806020018281038252606181526020018062004c936061913960800191505060405180910390fd5b60006012541162000be65760405162461bcd60e51b8152600401808060200182810382526052815260200180620047716052913960600191505060405180910390fd5b600062000bf4600462002638565b111562000c4457600d546001600160a01b031662000c445760405162461bcd60e51b815260040180806020018281038252603d81526020018062004efe603d913960400191505060405180910390fd5b600f5467ffffffffffffffff8111801562000c5e57600080fd5b5060405190808252806020026020018201604052801562000c89578160200160208202803683370190505b50805162000ca09160119160209091019062002a77565b5060008060005b62000cb3600262002638565b81101562000d3e57600062000cca60028362002645565b9050600062000cd9826200227c565b6001600160a01b0383166000908152600760205260408120549192509062000d0390839062002653565b9050806011858154811062000d1457fe5b60009182526020909120015562000d2c8682620025dd565b9550506001909201915062000ca79050565b50600062000d4d600462002638565b111562000e0d57600062000d6062001fc2565b905060005b62000d71600462002638565b81101562000e0a57600062000d8860048362002645565b9050600062000d98828562001d9c565b6001600160a01b0383166000908152600760205260408120549192509062000dc290839062002653565b905080601162000dd3600262002638565b86018154811062000de057fe5b60009182526020909120015562000df88682620025dd565b9550506001909201915062000d659050565b50505b60085460009060ff161562000f9057600062000e44606462000e3d6009546012546200265390919063ffffffff16565b90620026b1565b9050600062000e5f82601254620026f590919063ffffffff16565b905060005b62000e70600262002638565b81101562000ee157600062000eac8762000e3d866011868154811062000e9257fe5b90600052602060002001546200265390919063ffffffff16565b9050806011838154811062000ebd57fe5b60009182526020909120015562000ed58582620025dd565b94505060010162000e64565b50600062000ef0600462002638565b111562000f8857600062000f0362001fc2565b905060005b62000f14600462002638565b81101562000f8557600062000f438762000e3d86601162000f36600262002638565b87018154811062000e9257fe5b905080601162000f54600262002638565b84018154811062000f6157fe5b60009182526020909120015562000f798682620025dd565b95505060010162000f08565b50505b505062001002565b600062000f9e8484620025dd565b905060005b60115481101562000fff57600062000fca8362000e3d6012546011868154811062000e9257fe5b9050806011838154811062000fdb57fe5b60009182526020909120015562000ff38482620025dd565b93505060010162000fa3565b50505b50506010805460ff1916600117905550565b600260015414156200106d576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015560125415620010b35760405162461bcd60e51b815260040180806020018281038252605681526020018062004bc46056913960600191505060405180910390fd5b600e60009054906101000a90046001600160a01b03166001600160a01b0316634e71d92d6040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200110457600080fd5b505af115801562001119573d6000803e3d6000fd5b505050506040513d60208110156200113057600080fd5b50516012819055620011745760405162461bcd60e51b815260040180806020018281038252604a81526020018062004868604a913960600191505060405180910390fd5b600c54604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b158015620011d957600080fd5b505afa158015620011ee573d6000803e3d6000fd5b505050506040513d60208110156200120557600080fd5b50516012549091508110156200124d5760405162461bcd60e51b815260040180806020018281038252604281526020018062004a086042913960600191505060405180910390fd5b60125560018055565b600c546001600160a01b031681565b6200126f620025c2565b6000546001600160a01b03908116911614620012d2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b038116620013195760405162461bcd60e51b815260040180806020018281038252604581526020018062004eb96045913960600191505060405180910390fd5b600d80546001600160a01b0319166001600160a01b0392909216919091179055565b62001345620025c2565b6000546001600160a01b03908116911614620013a8576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600260015414156200144b576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015560105460ff16620014935760405162461bcd60e51b8152600401808060200182810382526069815260200180620048f26069913960800191505060405180910390fd5b600f548110620014d55760405162461bcd60e51b815260040180806020018281038252604581526020018062004b3b6045913960600191505060405180910390fd5b6000620014e3600262002638565b821015620015215760066000620014fc60028562002645565b6001600160a01b03908116825260208201929092526040016000205416905062001560565b600660006200154062001535600262002638565b600490860362002645565b6001600160a01b0390811682526020820192909252604001600020541690505b6000601183815481106200157057fe5b906000526020600020015490506000811115620016c9576000601184815481106200159757fe5b6000918252602080832090910192909255600c546040805163a9059cbb60e01b81526001600160a01b038781166004830152602482018790529151919092169363a9059cbb936044808501949293928390030190829087803b158015620015fd57600080fd5b505af115801562001612573d6000803e3d6000fd5b505050506040513d60208110156200162957600080fd5b5051620016685760405162461bcd60e51b815260040180806020018281038252603781526020018062004d606037913960400191505060405180910390fd5b816001600160a01b0316633c6b16ab826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015620016af57600080fd5b505af1158015620016c4573d6000803e3d6000fd5b505050505b50506001805550565b60095481565b6000620005bf600283620025a4565b6000546001600160a01b031690565b6200170062000b5f565b6200170a6200170c565b565b6002600154141562001765576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260015560105460ff16620017ad5760405162461bcd60e51b815260040180806020018281038252605f81526020018062004d97605f913960600191505060405180910390fd5b6010805460ff19169055600080805b601154811015620019a157620017d3600262002638565b811015620018115760066000620017ec60028462002645565b6001600160a01b03908116825260208201929092526040016000205416925062001850565b600660006200183062001825600262002638565b600490850362002645565b6001600160a01b0390811682526020820192909252604001600020541692505b601181815481106200185e57fe5b9060005260206000200154915060008211156200199857600c546040805163a9059cbb60e01b81526001600160a01b038681166004830152602482018690529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015620018cc57600080fd5b505af1158015620018e1573d6000803e3d6000fd5b505050506040513d6020811015620018f857600080fd5b5051620019375760405162461bcd60e51b815260040180806020018281038252603781526020018062004d606037913960400191505060405180910390fd5b826001600160a01b0316633c6b16ab836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156200197e57600080fd5b505af115801562001993573d6000803e3d6000fd5b505050505b600101620017bc565b505060006012555060018055565b60125481565b620019bf620025c2565b6000546001600160a01b0390811691161462001a22576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60085460ff1662001a655760405162461bcd60e51b8152600401808060200182810382526041815260200180620046c66041913960600191505060405180910390fd5b6008805460ff1916905560006009819055600a55565b60076020526000908152604090205481565b62001a97620025c2565b6000546001600160a01b0390811691161462001afa576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60105460ff161562001b3e5760405162461bcd60e51b815260040180806020018281038252606c81526020018062004cf4606c913960800191505060405180910390fd5b62001b4981620006f4565b62001b865760405162461bcd60e51b815260040180806020018281038252604181526020018062004a9a6041913960600191505060405180910390fd5b6000816001600160a01b0316630dfe16816040518163ffffffff1660e01b815260040160206040518083038186803b15801562001bc257600080fd5b505afa15801562001bd7573d6000803e3d6000fd5b505050506040513d602081101562001bee57600080fd5b50516040805163d21220a760e01b815290519192506000916001600160a01b0385169163d21220a7916004808301926020929190829003018186803b15801562001c3757600080fd5b505afa15801562001c4c573d6000803e3d6000fd5b505050506040513d602081101562001c6357600080fd5b50516001600160a01b03808516600090815260066020908152604080832080546001600160a01b03191690556007909152812055600c549192508381169116148062001cbc5750600c546001600160a01b038281169116145b1562001d125762001ccf60048462002739565b62001d0c5760405162461bcd60e51b815260040180806020018281038252603f81526020018062004829603f913960400191505060405180910390fd5b62001d5c565b62001d1f60028462002739565b62001d5c5760405162461bcd60e51b815260040180806020018281038252603f81526020018062004829603f913960400191505060405180910390fd5b600f5462001d6c906001620026f5565b600f55505050565b600a5481565b6011818154811062001d8b57600080fd5b600091825260209091200154905081565b6000806000846001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b15801562001ddb57600080fd5b505afa15801562001df0573d6000803e3d6000fd5b505050506040513d606081101562001e0757600080fd5b508051602091820151600c5460408051630dfe168160e01b815290516dffffffffffffffffffffffffffff94851697509390921694506000936001600160a01b0391821693918a1692630dfe16819260048083019392829003018186803b15801562001e7257600080fd5b505afa15801562001e87573d6000803e3d6000fd5b505050506040513d602081101562001e9e57600080fd5b50516001600160a01b0316141562001ec45762001ebc8184620025dd565b905062001f90565b600c546040805163d21220a760e01b815290516001600160a01b039283169289169163d21220a7916004808301926020929190829003018186803b15801562001f0c57600080fd5b505afa15801562001f21573d6000803e3d6000fd5b505050506040513d602081101562001f3857600080fd5b50516001600160a01b03161462001f815760405162461bcd60e51b815260040180806020018281038252605081526020018062004a4a6050913960600191505060405180910390fd5b62001f8d8183620025dd565b90505b670de0b6b3a764000062001fb78162000e3d600262001fb0868b62002653565b9062002653565b979650505050505050565b600d546000906001600160a01b03166200200e5760405162461bcd60e51b815260040180806020018281038252603b8152602001806200468b603b913960400191505060405180910390fd5b600080600d60009054906101000a90046001600160a01b03166001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b1580156200206057600080fd5b505afa15801562002075573d6000803e3d6000fd5b505050506040513d60608110156200208c57600080fd5b508051602091820151600b54600d5460408051630dfe168160e01b815290516dffffffffffffffffffffffffffff95861698509490931695506001600160a01b0391821694911692630dfe1681926004808201939291829003018186803b158015620020f757600080fd5b505afa1580156200210c573d6000803e3d6000fd5b505050506040513d60208110156200212357600080fd5b50516001600160a01b03161415620021495762002141818362002750565b925062002158565b62002155828262002750565b92505b505090565b62002167620025c2565b6000546001600160a01b03908116911614620021ca576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b620021d68282620025dd565b606414620022165760405162461bcd60e51b8152600401808060200182810382526040815260200180620048b26040913960400191505060405180910390fd5b8160641480620022265750806064145b15620022645760405162461bcd60e51b815260040180806020018281038252603c8152602001806200495b603c913960400191505060405180910390fd5b6008805460ff19166001179055600991909155600a55565b6000806000836001600160a01b0316630902f1ac6040518163ffffffff1660e01b815260040160606040518083038186803b158015620022bb57600080fd5b505afa158015620022d0573d6000803e3d6000fd5b505050506040513d6060811015620022e757600080fd5b508051602091820151600b5460408051630dfe168160e01b815290516dffffffffffffffffffffffffffff94851697509390921694506000936001600160a01b039182169391891692630dfe16819260048083019392829003018186803b1580156200235257600080fd5b505afa15801562002367573d6000803e3d6000fd5b505050506040513d60208110156200237e57600080fd5b50516001600160a01b03161415620023a4576200239c8184620025dd565b905062002470565b600b546040805163d21220a760e01b815290516001600160a01b039283169288169163d21220a7916004808301926020929190829003018186803b158015620023ec57600080fd5b505afa15801562002401573d6000803e3d6000fd5b505050506040513d60208110156200241857600080fd5b50516001600160a01b031614620024615760405162461bcd60e51b815260040180806020018281038252605381526020018062004e3f6053913960600191505060405180910390fd5b6200246d8183620025dd565b90505b6200247d81600262002653565b95945050505050565b62002490620025c2565b6000546001600160a01b03908116911614620024f3576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166200253a5760405162461bcd60e51b81526004018080602001828103825260268152602001806200474b6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b600d546001600160a01b031681565b6000620025bb836001600160a01b038416620027c7565b9392505050565b3390565b6000620025bb836001600160a01b038416620027df565b600082820183811015620025bb576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000620005bf826200282e565b6000620025bb838362002832565b6000826200266457506000620005bf565b828202828482816200267257fe5b0414620025bb5760405162461bcd60e51b815260040180806020018281038252602181526020018062004adb6021913960400191505060405180910390fd5b6000620025bb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062002899565b6000620025bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062002940565b6000620025bb836001600160a01b0384166200299d565b60008083118015620027625750600082115b6200279f5760405162461bcd60e51b815260040180806020018281038252602781526020018062004e926027913960400191505060405180910390fd5b670de0b6b3a7640000620027bf620027b8828562002653565b85620026b1565b949350505050565b60009081526001919091016020526040902054151590565b6000620027ed8383620027c7565b6200282557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620005bf565b506000620005bf565b5490565b81546000908210620028765760405162461bcd60e51b8152600401808060200182810382526022815260200180620046696022913960400191505060405180910390fd5b8260000182815481106200288657fe5b9060005260206000200154905092915050565b60008183620029295760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620028ed578181015183820152602001620028d3565b50505050905090810190601f1680156200291b5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385816200293657fe5b0495945050505050565b60008184841115620029955760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315620028ed578181015183820152602001620028d3565b505050900390565b6000818152600183016020526040812054801562002a5e5783546000198083019190810190600090879083908110620029d257fe5b9060005260206000200154905080876000018481548110620029f057fe5b60009182526020808320909101929092558281526001898101909252604090209084019055865487908062002a2157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050620005bf565b6000915050620005bf565b611b8a8062002adf83390190565b82805482825590600052602060002090810192821562002ab5579160200282015b8281111562002ab557825182559160200191906001019062002a98565b5062002ac392915062002ac7565b5090565b5b8082111562002ac3576000815560010162002ac856fe6080604052600060045560006005556201518060065534801561002157600080fd5b50604051611b8a380380611b8a8339818101604052604081101561004457600080fd5b5080516020909101516001600090815561005c6100db565b600180546001600160a01b0319166001600160a01b038316908117909155604051919250906000907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600280546001600160a01b039384166001600160a01b031991821617909155600380549290931691161790556100df565b3390565b611a9c806100ee6000396000f3fe608060405234801561001057600080fd5b50600436106101ad5760003560e01c80638980f11f116100ee578063cd3daf9d11610097578063e9fad8ee11610071578063e9fad8ee14610382578063ebe2b12b1461038a578063ecd9ba8214610392578063f2fde38b146103ca576101ad565b8063cd3daf9d1461036a578063d1af0c7d14610372578063df136d651461037a576101ad565b8063a694fc3a116100c8578063a694fc3a14610328578063c8f33c9114610345578063cc1a378f1461034d576101ad565b80638980f11f146102ce5780638b876347146102fa5780638da5cb5b14610320576101ad565b80633c6b16ab1161015b578063715018a611610135578063715018a61461029257806372f702f31461029a5780637b0a47ee146102be57806380faa57d146102c6576101ad565b80633c6b16ab146102475780633d18b9121461026457806370a082311461026c576101ad565b80631c1f78eb1161018c5780631c1f78eb146102185780632e1a7d4d14610220578063386a95251461023f576101ad565b80628cc262146101b25780630700037d146101ea57806318160ddd14610210575b600080fd5b6101d8600480360360208110156101c857600080fd5b50356001600160a01b03166103f0565b60408051918252519081900360200190f35b6101d86004803603602081101561020057600080fd5b50356001600160a01b031661046e565b6101d8610480565b6101d8610487565b61023d6004803603602081101561023657600080fd5b50356104a5565b005b6101d8610647565b61023d6004803603602081101561025d57600080fd5b503561064d565b61023d6108ba565b6101d86004803603602081101561028257600080fd5b50356001600160a01b03166109f1565b61023d610a0c565b6102a2610acd565b604080516001600160a01b039092168252519081900360200190f35b6101d8610adc565b6101d8610ae2565b61023d600480360360408110156102e457600080fd5b506001600160a01b038135169060200135610af0565b6101d86004803603602081101561031057600080fd5b50356001600160a01b0316610c6d565b6102a2610c7f565b61023d6004803603602081101561033e57600080fd5b5035610c8e565b6101d8610e31565b61023d6004803603602081101561036357600080fd5b5035610e37565b6101d8610f71565b6102a2610fbf565b6101d8610fce565b61023d610fd4565b6101d8610ff7565b61023d600480360360a08110156103a857600080fd5b5080359060208101359060ff6040820135169060608101359060800135610ffd565b61023d600480360360208110156103e057600080fd5b50356001600160a01b0316611248565b6001600160a01b0381166000908152600a60209081526040808320546009909252822054610468919061046290670de0b6b3a76400009061045c9061043d90610437610f71565b90611360565b6001600160a01b0388166000908152600c6020526040902054906113a9565b90611402565b90611444565b92915050565b600a6020526000908152604090205481565b600b545b90565b60006104a06006546005546113a990919063ffffffff16565b905090565b600260005414156104fd576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000553361050b610f71565b600855610516610ae2565b6007556001600160a01b0381161561055d57610531816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b600082116105b2576040805162461bcd60e51b815260206004820152601160248201527f43616e6e6f742077697468647261772030000000000000000000000000000000604482015290519081900360640190fd5b600b546105bf9083611360565b600b55336000908152600c60205260409020546105dc9083611360565b336000818152600c6020526040902091909155600354610608916001600160a01b03909116908461149e565b60408051838152905133917f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5919081900360200190a250506001600055565b60065481565b610655611523565b6001546001600160a01b039081169116146106b7576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60006106c1610f71565b6008556106cc610ae2565b6007556001600160a01b03811615610713576106e7816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b60045442106107325760065461072a908390611402565b600555610775565b6004546000906107429042611360565b9050600061075b600554836113a990919063ffffffff16565b60065490915061076f9061045c8684611444565b60055550505b600254604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516000926001600160a01b0316916370a08231916024808301926020929190829003018186803b1580156107d957600080fd5b505afa1580156107ed573d6000803e3d6000fd5b505050506040513d602081101561080357600080fd5b5051600654909150610816908290611402565b600554111561086c576040805162461bcd60e51b815260206004820152601860248201527f50726f76696465642072657761726420746f6f20686967680000000000000000604482015290519081900360640190fd5b42600781905560065461087f9190611444565b6004556040805184815290517fde88a922e0d3b88b24e9623efeb464919c6bf9f66857a65e2bfcf2ce87a9433d9181900360200190a1505050565b60026000541415610912576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005533610920610f71565b60085561092b610ae2565b6007556001600160a01b0381161561097257610946816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b336000908152600a602052604090205480156109e857336000818152600a60205260408120556002546109b1916001600160a01b03909116908361149e565b60408051828152905133917fe2403640ba68fed3a2f88b7557551d1993f84b99bb10ff833f0cf8db0c5e0486919081900360200190a25b50506001600055565b6001600160a01b03166000908152600c602052604090205490565b610a14611523565b6001546001600160a01b03908116911614610a76576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001546040516000916001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a36001805473ffffffffffffffffffffffffffffffffffffffff19169055565b6003546001600160a01b031681565b60055481565b60006104a042600454611527565b610af8611523565b6001546001600160a01b03908116911614610b5a576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b60026000541415610bb2576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b60026000556003546001600160a01b0383811691161415610c045760405162461bcd60e51b8152600401808060200182810382526021815260200180611a466021913960400191505060405180910390fd5b610c20610c0f610c7f565b6001600160a01b038416908361149e565b604080516001600160a01b03841681526020810183905281517f8c1256b8896378cd5044f80c202f9772b9d77dc85c8a6eb51967210b09bfaa28929181900390910190a150506001600055565b60096020526000908152604090205481565b6001546001600160a01b031690565b60026000541415610ce6576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005533610cf4610f71565b600855610cff610ae2565b6007556001600160a01b03811615610d4657610d1a816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b60008211610d9b576040805162461bcd60e51b815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b600b54610da89083611444565b600b55336000908152600c6020526040902054610dc59083611444565b336000818152600c6020526040902091909155600354610df2916001600160a01b0390911690308561153d565b60408051838152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a250506001600055565b60075481565b610e3f611523565b6001546001600160a01b03908116911614610ea1576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6004544211610ee15760405162461bcd60e51b81526004018080602001828103825260588152602001806119576058913960600191505060405180910390fd5b60008111610f36576040805162461bcd60e51b815260206004820152601d60248201527f526577617264206475726174696f6e2063616e2774206265207a65726f000000604482015290519081900360640190fd5b60068190556040805182815290517ffb46ca5a5e06d4540d6387b930a7c978bce0db5f449ec6b3f5d07c6e1d44f2d39181900360200190a150565b6000600b5460001415610f875750600854610484565b6104a0610fb6600b5461045c670de0b6b3a7640000610fb0600554610fb0600754610437610ae2565b906113a9565b60085490611444565b6002546001600160a01b031681565b60085481565b336000908152600c6020526040902054610fed906104a5565b610ff56108ba565b565b60045481565b60026000541415611055576040805162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015290519081900360640190fd5b600260005533611063610f71565b60085561106e610ae2565b6007556001600160a01b038116156110b557611089816103f0565b6001600160a01b0382166000908152600a60209081526040808320939093556008546009909152919020555b6000861161110a576040805162461bcd60e51b815260206004820152600e60248201527f43616e6e6f74207374616b652030000000000000000000000000000000000000604482015290519081900360640190fd5b600b546111179087611444565b600b55336000908152600c60205260409020546111349087611444565b336000818152600c60205260408082209390935560035483517fd505accf0000000000000000000000000000000000000000000000000000000081526004810193909352306024840152604483018a90526064830189905260ff8816608484015260a4830187905260c4830186905292516001600160a01b039093169263d505accf9260e480820193929182900301818387803b1580156111d457600080fd5b505af11580156111e8573d6000803e3d6000fd5b505060035461120592506001600160a01b0316905033308961153d565b60408051878152905133917f9e71bc8eea02a63969f509818f2dafb9254532904319f9dbda79b67bd34a5f3d919081900360200190a25050600160005550505050565b611250611523565b6001546001600160a01b039081169116146112b2576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166112f75760405162461bcd60e51b81526004018080602001828103825260268152602001806119af6026913960400191505060405180910390fd5b6001546040516001600160a01b038084169216907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a36001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b60006113a283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115cb565b9392505050565b6000826113b857506000610468565b828202828482816113c557fe5b04146113a25760405162461bcd60e51b81526004018080602001828103825260218152602001806119fb6021913960400191505060405180910390fd5b60006113a283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611662565b6000828201838110156113a2576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb0000000000000000000000000000000000000000000000000000000017905261151e9084906116c7565b505050565b3390565b600081831061153657816113a2565b5090919050565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd000000000000000000000000000000000000000000000000000000001790526115c59085906116c7565b50505050565b6000818484111561165a5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561161f578181015183820152602001611607565b50505050905090810190601f16801561164c5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b600081836116b15760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561161f578181015183820152602001611607565b5060008385816116bd57fe5b0495945050505050565b600061171c826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166117789092919063ffffffff16565b80519091501561151e5780806020019051602081101561173b57600080fd5b505161151e5760405162461bcd60e51b815260040180806020018281038252602a815260200180611a1c602a913960400191505060405180910390fd5b6060611787848460008561178f565b949350505050565b6060824710156117d05760405162461bcd60e51b81526004018080602001828103825260268152602001806119d56026913960400191505060405180910390fd5b6117d9856118ea565b61182a576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600080866001600160a01b031685876040518082805190602001908083835b602083106118685780518252601f199092019160209182019101611849565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d80600081146118ca576040519150601f19603f3d011682016040523d82523d6000602084013e6118cf565b606091505b50915091506118df8282866118f0565b979650505050505050565b3b151590565b606083156118ff5750816113a2565b82511561190f5782518084602001fd5b60405162461bcd60e51b815260206004820181815284516024840152845185939192839260440191908501908083836000831561161f57818101518382015260200161160756fe50726576696f7573207265776172647320706572696f64206d75737420626520636f6d706c657465206265666f7265206368616e67696e6720746865206475726174696f6e20666f7220746865206e657720706572696f644f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656443616e6e6f7420776974686472617720746865207374616b696e6720746f6b656ea26469706673582212206f44426a74f577b6d4f862ae02ec89c75f5c1bc3041e522f4a80381cfe10654964736f6c63430007060033456e756d657261626c655365743a20696e646578206f7574206f6620626f756e64734c6971756964697479506f6f6c4d616e616765723a3a67657441766178506e67526174696f3a204e6f20415641582d504e472070616972207365744c6971756964697479506f6f6c4d616e616765723a3a6465616374697661746546656553706c69743a204665652073706c6974206e6f74206163746976617465644c6971756964697479506f6f6c4d616e616765723a3a61646457686974656c6973746564506f6f6c3a204e6f2041564158206f7220504e4720696e2074686520706169724f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734c6971756964697479506f6f6c4d616e616765723a3a63616c63756c61746552657475726e733a204e6f20504e4720746f20616c6c6f636174652e2043616c6c2076657374416c6c6f636174696f6e28292e4c6971756964697479506f6f6c4d616e616765723a3a61646457686974656c6973746564506f6f6c3a2043616e6e6f742061646420706f6f6c206265747765656e2063616c63756c6174696e6720616e6420646973747269627574696e672072657475726e734c6971756964697479506f6f6c4d616e616765723a3a72656d6f766557686974656c6973746564506f6f6c3a20506169722072656d6f7665206661696c65644c6971756964697479506f6f6c4d616e616765723a3a76657374416c6c6f636174696f6e3a204e6f20504e4720746f20636c61696d2e2054727920616761696e20746f6d6f72726f772e4c6971756964697479506f6f6c4d616e616765723a3a616374697661746546656553706c69743a2053706c697420646f65736e27742061646420746f203130304c6971756964697479506f6f6c4d616e616765723a3a64697374726962757465546f6b656e7353696e676c65506f6f6c3a2050726576696f75732072657475726e73206e6f7420616c6c6f63617465642e2043616c6c2063616c63756c61746552657475726e7328294c6971756964697479506f6f6c4d616e616765723a3a616374697661746546656553706c69743a2053706c69742063616e2774206265203130302f304c6971756964697479506f6f6c4d616e616765723a3a61646457686974656c6973746564506f6f6c3a205061697220616464206661696c65644c6971756964697479506f6f6c4d616e616765723a3a6368616e67655765696768743a2050616972206e6f742077686974656c69737465644c6971756964697479506f6f6c4d616e616765723a3a76657374416c6c6f636174696f6e3a20496e73756666696369656e7420504e47207472616e736665727265644c6971756964697479506f6f6c4d616e616765723a3a676574506e674c69717569646974793a204f6e65206f662074686520746f6b656e7320696e207468652070616972206d75737420626520504e474c6971756964697479506f6f6c4d616e616765723a3a72656d6f766557686974656c6973746564506f6f6c3a20506f6f6c206e6f742077686974656c6973746564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774c6971756964697479506f6f6c4d616e616765723a3a61646457686974656c6973746564506f6f6c3a205765696768742063616e6e6f74206265207a65726f4c6971756964697479506f6f6c4d616e616765723a3a64697374726962757465546f6b656e7353696e676c65506f6f6c3a20496e646578206f7574206f6620626f756e64734c6971756964697479506f6f6c4d616e616765723a3a61646457686974656c6973746564506f6f6c3a20546f6b656e732063616e6e6f74206265206964656e746963616c4c6971756964697479506f6f6c4d616e616765723a3a76657374416c6c6f636174696f6e3a204f6c6420504e4720697320756e616c6c6f63617465642e2043616c6c2064697374726962757465546f6b656e7328292e4c6971756964697479506f6f6c4d616e616765723a3a61646457686974656c6973746564506f6f6c3a20506f6f6c20616c72656164792077686974656c69737465644c6971756964697479506f6f6c4d616e61