[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "PackedUint128Math__SubUnderflow", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "x", "type": "uint256" }, { "internalType": "int256", "name": "y", "type": "int256" } ], "name": "Uint128x128Math__PowUnderflow", "type": "error" }, { "inputs": [], "name": "Uint256x256Math__MulDivOverflow", "type": "error" }, { "inputs": [], "name": "Uint256x256Math__MulShiftOverflow", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "excludedStatus", "type": "uint256" } ], "name": "ExcludedFromTaxSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newFloorId", "type": "uint256" } ], "name": "FloorRaised", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferStarted", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [], "name": "RebalancePaused", "type": "event" }, { "anonymous": false, "inputs": [], "name": "RebalanceUnpaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "newRoofId", "type": "uint256" } ], "name": "RoofRaised", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "secondTaxRecipient", "type": "address" } ], "name": "SecondTaxRecipientSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "shareForSecondTaxRecipient", "type": "uint256" } ], "name": "ShareForSecondTaxRecipientSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "shareForThirdTaxRecipient", "type": "uint256" } ], "name": "ShareForThirdTaxRecipientSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "taxRate", "type": "uint256" } ], "name": "TaxRateSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "taxRecipient", "type": "address" } ], "name": "TaxRecipientSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "thirdTaxRecipient", "type": "address" } ], "name": "ThirdTaxRecipientSet", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "inputs": [], "name": "acceptOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "calculateNewFloorId", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "excludedFromTax", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "floorPrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "addedValue", "type": "uint256" } ], "name": "increaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pair", "outputs": [ { "internalType": "contract ILBPair", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pauseRebalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "pendingOwner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint24", "name": "nbBins", "type": "uint24" } ], "name": "raiseRoof", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "range", "outputs": [ { "internalType": "uint24", "name": "", "type": "uint24" }, { "internalType": "uint24", "name": "", "type": "uint24" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rebalanceFloor", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rebalancePaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "secondTaxRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "excludedStatus", "type": "uint256" } ], "name": "setExcludedFromTax", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newSecondTaxRecipient", "type": "address" } ], "name": "setSecondTaxRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newShareForSecondRecipient", "type": "uint256" } ], "name": "setShareForSecondTaxRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newShareForThirdRecipient", "type": "uint256" } ], "name": "setShareForThirdTaxRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newTaxRate", "type": "uint256" } ], "name": "setTaxRate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newTaxRecipient", "type": "address" } ], "name": "setTaxRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newThirdTaxRecipient", "type": "address" } ], "name": "setThirdTaxRecipient", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "shareForSecondTaxRecipient", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "shareForThirdTaxRecipient", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "thirdTaxRecipient", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensInPair", "outputs": [ { "internalType": "uint256", "name": "amountFloor", "type": "uint256" }, { "internalType": "uint256", "name": "amountY", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "unpauseRebalance", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101006040523480156200001257600080fd5b50604051806040016040528060048152602001635669626560e01b815250604051806040016040528060048152602001635649424560e01b815250737e53502b0d6c1efc21689ece63bbb3658dbec27482828282828273b31f66aa3c1e785363f0875a1b74e27b85fd66c7738e42f2f4101563bf679975178e880fd87d3efd4e628000006064690179ca4da0a7d144000087878160039081620000b6919062000324565b506004620000c5828262000324565b505050620000e2620000dc620001ff60201b60201c565b62000203565b61ffff821660c05260e08190526001600160a01b03808616608052841663659ac74b308762000113600188620003f0565b6040516001600160e01b031960e086901b1681526001600160a01b03938416600482015292909116602483015262ffffff16604482015261ffff851660648201526084016020604051808303816000875af115801562000177573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200019d919062000422565b6001600160a01b031660a05250506006805460ff60d81b1962ffffff909316600160a01b029290921667ff00000000ffffff60a01b1990921691909117600160d81b17905550620001f090508162000203565b50505050505050505062000454565b3390565b600680546001600160a01b03191690556200022a816200022d602090811b6200100c17901c565b50565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b634e487b7160e01b600052604160045260246000fd5b600181811c90821680620002aa57607f821691505b602082108103620002cb57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200031f57600081815260208120601f850160051c81016020861015620002fa5750805b601f850160051c820191505b818110156200031b5782815560010162000306565b5050505b505050565b81516001600160401b038111156200034057620003406200027f565b620003588162000351845462000295565b84620002d1565b602080601f831160018114620003905760008415620003775750858301515b600019600386901b1c1916600185901b1785556200031b565b600085815260208120601f198616915b82811015620003c157888601518255948401946001909101908401620003a0565b5085821015620003e05787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b62ffffff8281168282160390808211156200041b57634e487b7160e01b600052601160045260246000fd5b5092915050565b6000602082840312156200043557600080fd5b81516001600160a01b03811681146200044d57600080fd5b9392505050565b60805160a05160c05160e051613da4620005596000396000611d2d015260008181610cec01526119c401526000818161052b01528181610a1301528181610e16015281816113910152818161170e015281816117a20152818161182601528181611b7201528181611dee01528181611e7d01528181611f1001528181611f5b01528181611f9401528181611fc001528181611ff1015281816120f90152818161218801528181612222015281816122620152818161229b01528181612a5b01528181612ae801528181612b1801528181612ba401528181612c3a01528181612cf201528181612e9b01528181612ecc015261371d01526000612c760152613da46000f3fe608060405234801561001057600080fd5b50600436106102d35760003560e01c806378e3079e11610186578063a71e0a8f116100e3578063c6d69a3011610097578063e30c397811610071578063e30c3978146105f1578063e97206a914610602578063f2fde38b1461062e57600080fd5b8063c6d69a3014610592578063dca0dcf8146105a5578063dd62ed3e146105b857600080fd5b8063a9059cbb116100c8578063a9059cbb1461054f578063b43e5c5b14610562578063c088ac311461057557600080fd5b8063a71e0a8f14610511578063a8aa1b311461052957600080fd5b806392bb41661161013a57806395d89b411161011f57806395d89b41146104cd578063989763ef146104d5578063a457c2d7146104fe57600080fd5b806392bb4166146104b25780639363c812146104c557600080fd5b80638da5cb5b1161016b5780638da5cb5b1461047d578063909e81a11461048e57806391a5d22a146104a157600080fd5b806378e3079e1461046257806379ba50971461047557600080fd5b8063313ce567116102345780635ed3bf84116101e8578063715018a6116101cd578063715018a614610431578063737ea06e14610439578063771a3a1d1461044a57600080fd5b80635ed3bf841461040b57806370a082311461041e57600080fd5b80634e3f5565116102195780634e3f5565146103c557806350884c81146103e15780635b3816cd146103f357600080fd5b8063313ce567146103a357806339509351146103b257600080fd5b806318160ddd1161028b5780632c5211f2116102705780632c5211f21461036e5780632d7abd5014610393578063306cf6841461039b57600080fd5b806318160ddd1461034557806323b872dd1461035b57600080fd5b806306fdde03116102bc57806306fdde031461031557806308e9ff231461032a578063095ea7b31461033257600080fd5b80630132f31e146102d857806301ffc9a7146102ed575b600080fd5b6102eb6102e63660046137cd565b610641565b005b6103006102fb3660046137e8565b610693565b60405190151581526020015b60405180910390f35b61031d6106be565b60405161030c9190613812565b6102eb610750565b610300610340366004613860565b6107fd565b61034d610815565b60405190815260200161030c565b61030061036936600461388a565b610825565b600a546001600160a01b03165b6040516001600160a01b03909116815260200161030c565b6102eb61084b565b6102eb6108fb565b6040516012815260200161030c565b6103006103c0366004613860565b6109a7565b6103cd6109e6565b60405162ffffff909116815260200161030c565b600654600160d01b900460ff16610300565b600954600160a01b90046001600160601b031661034d565b6102eb6104193660046138d7565b610adc565b61034d61042c3660046137cd565b610b1b565b6102eb610b39565b6007546001600160a01b031661037b565b600754600160a01b90046001600160601b031661034d565b6102eb6104703660046137cd565b610b4b565b6102eb610b5f565b6005546001600160a01b031661037b565b6102eb61049c3660046138f4565b610bd6565b6009546001600160a01b031661037b565b6102eb6104c03660046137cd565b610c69565b61034d610cbb565b61031d610d16565b61034d6104e33660046137cd565b6001600160a01b031660009081526008602052604090205490565b61030061050c366004613860565b610d25565b600a54600160a01b90046001600160601b031661034d565b7f000000000000000000000000000000000000000000000000000000000000000061037b565b61030061055d366004613860565b610dc2565b6102eb610570366004613860565b610dd0565b61057d610de6565b6040805192835260208301919091520161030c565b6102eb6105a03660046138f4565b610ea9565b6102eb6105b33660046138f4565b610eba565b61034d6105c636600461390d565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6006546001600160a01b031661037b565b6006546040805162ffffff600160a01b840481168252600160b81b90930490921660208301520161030c565b6102eb61063c3660046137cd565b610f9b565b61064961105e565b600980546001600160a01b0319166001600160a01b0383169081179091556040517fba92f563c79a94e8d1789beb2c5931ccb4e32f7e0aa8f384cba251f1d3293b5d90600090a250565b60006001600160e01b0319821663c55786e360e01b14806106b857506106b8826110b8565b92915050565b6060600380546106cd90613940565b80601f01602080910402602001604051908101604052809291908181526020018280546106f990613940565b80156107465780601f1061071b57610100808354040283529160200191610746565b820191906000526020600020905b81548152906001019060200180831161072957829003601f168201915b5050505050905090565b61075861105e565b600654600160d01b900460ff166107c55760405162461bcd60e51b815260206004820152602660248201527f466c6f6f72546f6b656e3a20726562616c616e636520616c726561647920756e6044820152651c185d5cd95960d21b60648201526084015b60405180910390fd5b6006805460ff60d01b191690556040517fb329a1ed0dba30ab9535dae837d2207622cc2ecd6d9f138cbb11b35f5e999a7190600090a1565b60003361080b8185856110dd565b5060019392505050565b600061082060025490565b905090565b600033610833858285611201565b61083e858585611293565b60019150505b9392505050565b600654600160d01b900460ff16156108a55760405162461bcd60e51b815260206004820152601c60248201527f466c6f6f72546f6b656e3a20726562616c616e6365207061757365640000000060448201526064016107bc565b6108ad61138c565b6108f95760405162461bcd60e51b815260206004820152601f60248201527f466c6f6f72546f6b656e3a206e6f20726562616c616e6365206e65656465640060448201526064016107bc565b565b61090361105e565b600654600160d01b900460ff16156109695760405162461bcd60e51b8152602060048201526024808201527f466c6f6f72546f6b656e3a20726562616c616e636520616c72656164792070616044820152631d5cd95960e21b60648201526084016107bc565b6006805460ff60d01b1916600160d01b1790556040517f41e5bb3fd6a848a1f7a3f5f101afeebf7345ccd25d685ff2d6e02c02c70a74ba90600090a1565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919061080b90829086906109e1908790613990565b6110dd565b6000806000610a0b60065462ffffff600160a01b8204811692600160b81b9092041690565b9150915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a9391906139a3565b90506000806000610aa58685876115e5565b93505092509250600083610ab7610815565b610ac191906139c0565b9050610ad08786838686611977565b97505050505050505090565b610ae461105e565b600080610b0760065462ffffff600160a01b8204811692600160b81b9092041690565b91509150610b16818385611a9c565b505050565b6001600160a01b0381166000908152602081905260408120546106b8565b610b4161105e565b6108f9600061234e565b610b5361105e565b610b5c81612367565b50565b60065433906001600160a01b03168114610bcd5760405162461bcd60e51b815260206004820152602960248201527f4f776e61626c6532537465703a2063616c6c6572206973206e6f7420746865206044820152683732bb9037bbb732b960b91b60648201526084016107bc565b610b5c8161234e565b610bde61105e565b600a54600160a01b90046001600160601b0316610c0390670de0b6b3a76400006139c0565b811115610c605760405162461bcd60e51b815260206004820152602560248201527f5472616e73666572547269706c65546178546f6b656e3a20696e76616c696420604482015264736861726560d81b60648201526084016107bc565b610b5c816123b1565b610c7161105e565b600a80546001600160a01b0319166001600160a01b0383169081179091556040517f2fd69ca0a3e3281681bfe8f2d25c146bdb98e9756b1264e2a4d5ed510d75bbc090600090a250565b600080610cde60065462ffffff600160a01b8204811692600160b81b9092041690565b509050610d1062ffffff82167f0000000000000000000000000000000000000000000000000000000000000000612407565b91505090565b6060600480546106cd90613940565b3360008181526001602090815260408083206001600160a01b038716845290915281205490919083811015610daa5760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77604482015264207a65726f60d81b60648201526084016107bc565b610db782868684036110dd565b506001949350505050565b60003361080b818585611293565b610dd861105e565b610de28282612442565b5050565b600080600080610e0c60065462ffffff600160a01b8204811692600160b81b9092041690565b91509150610e9c827f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e72573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e9691906139a3565b836115e5565b5091969095509350505050565b610eb161105e565b610b5c81612576565b610ec261105e565b600954600160a01b90046001600160601b0316610ee790670de0b6b3a76400006139c0565b811115610f445760405162461bcd60e51b815260206004820152602560248201527f5472616e73666572547269706c65546178546f6b656e3a20696e76616c696420604482015264736861726560d81b60648201526084016107bc565b600a80546001600160a01b0316600160a01b6001600160601b038416021790556040518181527ff1ed16668bae5f38581819c60206a623a60e7cfd9aca936e9cb120364b49535f906020015b60405180910390a150565b610fa361105e565b600680546001600160a01b0383166001600160a01b03199091168117909155610fd46005546001600160a01b031690565b6001600160a01b03167f38d16b8cac22d99fc7c124b9cd0de2d3fa1faef420bfe791d8c362d765e2270060405160405180910390a350565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b031633146108f95760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064016107bc565b60006001600160e01b03198216630b6636cb60e31b14806106b857506106b88261262e565b6001600160a01b03831661113f5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016107bc565b6001600160a01b0382166111a05760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016107bc565b6001600160a01b0383811660008181526001602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b03838116600090815260016020908152604080832093861683529290522054600019811461128d57818110156112805760405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e636500000060448201526064016107bc565b61128d84848484036110dd565b50505050565b816001600160a01b0316836001600160a01b0316141580156112b55750600081115b15610b16576001806112dc856001600160a01b031660009081526008602052604090205490565b1614806113095750600280611306846001600160a01b031660009081526008602052604090205490565b16145b1561131957610b1683838361267e565b60006113486113386007546001600160601b03600160a01b9091041690565b8390670de0b6b3a764000061282d565b9050600061135682846139c0565b90506113748561136e6007546001600160a01b031690565b8461291f565b80156113855761138585858361267e565b5050505050565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113ed573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061141191906139a3565b905060008061143660065462ffffff600160a01b8204811692600160b81b9092041690565b915091508262ffffff168262ffffff1660016114529190613990565b10611461576000935050505090565b6000806000806114728688876115e5565b9350935093509350600084611485610815565b61148f91906139c0565b905060006114a0888a848887611977565b62ffffff1690508762ffffff1681116114c3576000995050505050505050505090565b60006114d462ffffff8a16836139c0565b905060008167ffffffffffffffff8111156114f1576114f16139d3565b60405190808252806020026020018201604052801561151a578160200160208202803683370190505b50905060005b8281101561155c576115378162ffffff8d16613990565b828281518110611549576115496139e9565b6020908102919091010152600101611520565b50818652600680547fffffffffffffffffff000000ffffffffffffffffffffffffffffffffffffffff16600160a01b62ffffff8616021790556115a08187856129d5565b6040518381527fad555e2fd7f9bd9a23191d0be74913cc0ce598a128cf227a4464d7521bb47c3b9060200160405180910390a160019b50505050505050505050505090565b600080606080826115f688876139ff565b611601906001613a22565b62ffffff16905060008762ffffff168962ffffff16116116355761162589896139ff565b611630906001613a22565b611638565b60005b62ffffff1690508067ffffffffffffffff811115611658576116586139d3565b604051908082528060200260200182016040528015611681578160200160208202803683370190505b5093508067ffffffffffffffff81111561169d5761169d6139d3565b6040519080825280602002602001820160405280156116c6578160200160208202803683370190505b50925060005b8281101561196b5760006116e58262ffffff8d16613990565b604051627eeac760e11b8152306004820152602481018290529091506000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169062fdd58e90604401602060405180830381865afa158015611754573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117789190613a3e565b604051630157d2d160e31b815262ffffff8416600482015290915060009081906001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690630abe9688906024016040805180830381865afa1580156117e8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061180c9190613a6e565b6001600160801b031691506001600160801b0316915060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663bd85b039866040518263ffffffff1660e01b815260040161187291815260200190565b602060405180830381865afa15801561188f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118b39190613a3e565b9050831561195b5760008084116118cb5760006118d6565b6118d685858461302b565b905060008084116118e85760006118f3565b6118f386858561302b565b90506118ff828f613990565b9d5061190b818e613990565b9c508f62ffffff16871161195857858c898151811061192c5761192c6139e9565b602002602001018181525050808b898151811061194b5761194b6139e9565b6020026020010181815250505b50505b85600101955050505050506116cc565b50505093509350935093565b60008462ffffff168662ffffff1610611991575084611a93565b600061199e866001613a22565b62ffffff1690505b8662ffffff16811115611a71576000190160006119e862ffffff83167f0000000000000000000000000000000000000000000000000000000000000000612407565b90506000846119fc62ffffff8b16856139c0565b81518110611a0c57611a0c6139e9565b602002602001015190506000611a2e8360808a6130559092919063ffffffff16565b905086811115611a6157611a4282886139c0565b9650611a5082608085613093565b611a5a90896139c0565b9750611a69565b505050611a71565b5050506119a6565b808662ffffff1611611a8d57611a886001876139ff565b611a8f565b805b9150505b95945050505050565b600654600160d81b900460ff16600114611af85760405162461bcd60e51b815260206004820152601a60248201527f466c6f6f72546f6b656e3a207265656e7472616e742063616c6c00000000000060448201526064016107bc565b6006805460ff60d81b1916600160d91b17905562ffffff8116611b5d5760405162461bcd60e51b815260206004820152601560248201527f466c6f6f72546f6b656e3a207a65726f2062696e73000000000000000000000060448201526064016107bc565b62ffffff83161580611bfa57508262ffffff167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663dbe65edc6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611bce573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bf291906139a3565b62ffffff1611155b611c505760405162461bcd60e51b815260206004820152602160248201527f466c6f6f72546f6b656e3a206163746976652062696e2061626f766520726f6f6044820152603360f91b60648201526084016107bc565b600062ffffff841615611c6d57611c68846001613a22565b611c6f565b825b62ffffff169050600060018362ffffff1683611c8b9190613990565b611c9591906139c0565b90506064611ca862ffffff8616836139c0565b11158015611cb9575062ffffff8111155b611d055760405162461bcd60e51b815260206004820152601d60248201527f466c6f6f72546f6b656e3a206e657720726f6f6620746f6f206869676800000060448201526064016107bc565b6000611d1e62ffffff8516670de0b6b3a7640000613aae565b90506000611d5162ffffff86167f0000000000000000000000000000000000000000000000000000000000000000613ad5565b905060008562ffffff1667ffffffffffffffff811115611d7357611d736139d3565b604051908082528060200260200182016040528015611d9c578160200160208202803683370190505b50905060005b8662ffffff16811015611de957611dc4846000611dbf848a613990565b6130bd565b828281518110611dd657611dd66139e9565b6020908102919091010152600101611da2565b5060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630902f1ac6040518163ffffffff1660e01b81526004016040805180830381865afa158015611e49573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e6d9190613a6e565b506001600160801b0316905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa158015611ed8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611efc9190613a6e565b506001600160801b03169050600081611f347f0000000000000000000000000000000000000000000000000000000000000000610b1b565b611f3e91906139c0565b90506000611f4c84836139c0565b905085811115611f8757611f827f00000000000000000000000000000000000000000000000000000000000000008783036130f7565b611fbb565b80861115611fbb57611fbb7f0000000000000000000000000000000000000000000000000000000000000000828803613101565b6000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663383d15c530897f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b815260040161202e93929190613aec565b6000604051808303816000875af115801561204d573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526120759190810190613ba5565b50909250905061208e612088838361310b565b60801c90565b6001600160801b0316156120e45760405162461bcd60e51b815260206004820152601b60248201527f466c6f6f72546f6b656e3a20696e76616c696420616d6f756e7473000000000060448201526064016107bc565b60006001600160801b038216156122555760007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630902f1ac6040518163ffffffff1660e01b81526004016040805180830381865afa158015612154573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121789190613a6e565b506001600160801b0316905060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa1580156121e3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122079190613a6e565b506001600160801b0316905061221d8183613990565b6122467f0000000000000000000000000000000000000000000000000000000000000000610b1b565b61225091906139c0565b925050505b8381111561228e576122897f00000000000000000000000000000000000000000000000000000000000000008583036130f7565b6122c2565b808411156122c2576122c27f0000000000000000000000000000000000000000000000000000000000000000828603613101565b600680547fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff16600160b81b62ffffff8e16021790556040518b81527ff30ac2bd690b4c02a04fb2c317f8b26ee14d59f5fc6abd6de17c505fcd7627759060200160405180910390a150506006805460ff60d81b1916600160d81b17905550505050505050505050505050565b600680546001600160a01b0319169055610b5c8161100c565b600780546001600160a01b0319166001600160a01b0383169081179091556040517f3953989a020ae698fd33e6517a1b8942190c016aec73ac3a572b088433e975df90600090a250565b600980546001600160a01b0316600160a01b6001600160601b038416908102919091179091556040519081527fa67b8b65c1f19ca1413a1c9bf4b94c6622348b4376c5d6a81da72f806618db6890602001610f90565b600061271071ffff00000000000000000000000000000000608084901b1604600160801b0162ffffff8416627fffff1901611a938282613145565b60038111156124a55760405162461bcd60e51b815260206004820152602960248201527f5472616e73666572546178546f6b656e3a20696e76616c6964206578636c756460448201526865642073746174757360b81b60648201526084016107bc565b6001600160a01b03821660009081526008602052604090205481900361251d5760405162461bcd60e51b815260206004820152602760248201527f5472616e73666572546178546f6b656e3a2073616d65206578636c7573696f6e6044820152662073746174757360c81b60648201526084016107bc565b6001600160a01b03821660008181526008602052604090819020839055517fe4055d8b6399c185db5bbcbacce7d489048e9fe772c16f08987fa262886e1c8b9061256a9084815260200190565b60405180910390a25050565b670de0b6b3a76400008111156125de5760405162461bcd60e51b815260206004820152602760248201527f5472616e73666572546178546f6b656e3a2074617820726174652065786365656044820152666473203130302560c81b60648201526084016107bc565b600780546001600160a01b0316600160a01b6001600160601b038416021790556040518181527f2cf6bdee09c3811c29dab74512064ee7a320add122b9150b166c88dd9576021790602001610f90565b60006001600160e01b031982166396f8386960e01b148061265f57506001600160e01b031982166336372b0760e01b145b806106b857506301ffc9a760e01b6001600160e01b03198316146106b8565b6001600160a01b0383166126e25760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016107bc565b6001600160a01b0382166127445760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016107bc565b61274f8383836133a5565b6001600160a01b038316600090815260208190526040902054818110156127c75760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b60648201526084016107bc565b6001600160a01b03848116600081815260208181526040808320878703905593871680835291849020805487019055925185815290927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a361128d565b60008080600019858709858702925082811083820303915050806000036128675783828161285d5761285d613a98565b0492505050610844565b8084116128b65760405162461bcd60e51b815260206004820152601560248201527f4d6174683a206d756c446976206f766572666c6f77000000000000000000000060448201526064016107bc565b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b600061293e611338600a546001600160601b03600160a01b9091041690565b9050600061296f61295f6009546001600160601b03600160a01b9091041690565b8490670de0b6b3a764000061282d565b905060008261297e83866139c0565b61298891906139c0565b90506129958686836133b0565b6129b1866129ab6009546001600160a01b031690565b846133b0565b6129cd866129c7600a546001600160a01b031690565b856133b0565b505050505050565b600654600160d81b900460ff16600114612a315760405162461bcd60e51b815260206004820152601a60248201527f466c6f6f72546f6b656e3a207265656e7472616e742063616c6c00000000000060448201526064016107bc565b6006805460ff60d81b1916600160d91b17905560408051630240bc6b60e21b8152815160009283927f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031692630902f1ac926004808401939192918290030181865afa158015612aac573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ad09190613a6e565b6001600160801b031691506001600160801b031691507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c9939f5e307f000000000000000000000000000000000000000000000000000000000000000088886040518563ffffffff1660e01b8152600401612b589493929190613c8b565b6000604051808303816000875af1158015612b77573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612b9f9190810190613cc9565b5060007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d8dfcea06040518163ffffffff1660e01b81526004016040805180830381865afa158015612bff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612c239190613a6e565b6040516370a0823160e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000811660048301526001600160801b039290921693506000925083917f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa158015612cbd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ce19190613a3e565b612ceb91906139c0565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316630902f1ac6040518163ffffffff1660e01b81526004016040805180830381865afa158015612d4d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d719190613a6e565b6001600160801b031691506001600160801b03169150858214612de05760405162461bcd60e51b815260206004820152602160248201527f466c6f6f72546f6b656e3a20746f6b656e2072657365727665206368616e67656044820152601960fa1b60648201526084016107bc565b6000612dec82876139c0565b90506000612dfa83866139c0565b90506000828211612e1357670de0b6b3a7640000612e45565b81612e1f6001826139c0565b612e31670de0b6b3a764000086613ad5565b612e3b9190613990565b612e459190613d5a565b6040805160018082528183019092529192506000919060208083019080368337019050509050612e776000838d6130bd565b81600081518110612e8a57612e8a6139e9565b6020026020010181815250506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663383d15c530857f00000000000000000000000000000000000000000000000000000000000000006040518463ffffffff1660e01b8152600401612f0993929190613aec565b6000604051808303816000875af1158015612f28573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052612f509190810190613ba5565b5090925090506000612f62838361310b565b90506000612f708260801c90565b6001600160801b03169050670de0b6b3a7640000612f8e8789613ad5565b612f989190613d5a565b81148015612fa65750878110155b8015612fb957506001600160801b038216155b6130055760405162461bcd60e51b815260206004820152601c60248201527f466c6f6f72546f6b656e3a2062726f6b656e20696e76617269616e740000000060448201526064016107bc565b50506006805460ff60d81b1916600160d81b179055505050505050505050505050505050565b600080600061303a86866133d9565b9150915061304b86868685856133f8565b9695505050505050565b60006130628484846134a4565b9050600160ff83161b8061307857613078613a98565b838509156108445761308b600182613990565b949350505050565b600060ff831684811b9061ffff6101008290031686901c9061304b9087906001901b8685856133f8565b601882901b6affffffffffffffff00000016605884901b72ffffffffffffffff0000000000000000000000161762ffffff8216811761308b565b610de28282613512565b610de28282613650565b8082038281118061312757506001600160801b03808416908216115b156106b85760405163e599af5560e01b815260040160405180910390fd5b6000806000836000036131615750600160801b91506106b89050565b50826000811215613173579015906000035b6210000081101561336357600160801b9250846001600160801b0381111561319d57911591600019045b60018216156131ae5792830260801c925b800260801c60028216156131c45792830260801c925b800260801c60048216156131da5792830260801c925b800260801c60088216156131f05792830260801c925b800260801c60108216156132065792830260801c925b800260801c602082161561321c5792830260801c925b800260801c60408216156132325792830260801c925b8002608090811c908216156132495792830260801c925b800260801c6101008216156132605792830260801c925b800260801c6102008216156132775792830260801c925b800260801c61040082161561328e5792830260801c925b800260801c6108008216156132a55792830260801c925b800260801c6110008216156132bc5792830260801c925b800260801c6120008216156132d35792830260801c925b800260801c6140008216156132ea5792830260801c925b800260801c6180008216156133015792830260801c925b800260801c620100008216156133195792830260801c925b800260801c620200008216156133315792830260801c925b800260801c620400008216156133495792830260801c925b800260801c620800008216156133615792830260801c925b505b8260000361338e57604051631dba598d60e11b815260048101869052602481018590526044016107bc565b816133995782611a93565b611a9383600019613d5a565b610b1683838361371b565b8015610b16576001600160a01b0382166133ce57610b1683826130f7565b610b1683838361267e565b6000806000198385098385029250828110838203039150509250929050565b6000816000036134195783838161341157613411613a98565b049050611a93565b838210613439576040516313eae71560e01b815260040160405180910390fd5b600084868809600186198101871660008190038190049091018683119095039490940294038390049390931760029290940460038102831880820284030280820284030280820284030280820284030280820284030290810290920390910292909202949350505050565b60008060006134b386866133d9565b91509150816000146134c9578360ff1682901c92505b801561350957600160ff85161b81106134f557604051638e471a8960e01b815260040160405180910390fd5b8360ff166101000361ffff1681901b830192505b50509392505050565b6001600160a01b0382166135725760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107bc565b61357e826000836133a5565b6001600160a01b038216600090815260208190526040902054818110156135f25760405162461bcd60e51b815260206004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e604482015261636560f01b60648201526084016107bc565b6001600160a01b0383166000818152602081815260408083208686039055600280548790039055518581529192917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3505050565b6001600160a01b0382166136a65760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107bc565b6136b2600083836133a5565b80600260008282546136c49190613990565b90915550506001600160a01b038216600081815260208181526040808320805486019055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a35050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316148061376257506001600160a01b038316155b8061377457506001600160a01b038216155b1561377e57505050565b600654600160d01b900460ff161580156137a45750600654600160d81b900460ff166001145b15610b165761128d61138c565b80356001600160a01b03811681146137c857600080fd5b919050565b6000602082840312156137df57600080fd5b610844826137b1565b6000602082840312156137fa57600080fd5b81356001600160e01b03198116811461084457600080fd5b600060208083528351808285015260005b8181101561383f57858101830151858201604001528201613823565b506000604082860101526040601f19601f8301168501019250505092915050565b6000806040838503121561387357600080fd5b61387c836137b1565b946020939093013593505050565b60008060006060848603121561389f57600080fd5b6138a8846137b1565b92506138b6602085016137b1565b9150604084013590509250925092565b62ffffff81168114610b5c57600080fd5b6000602082840312156138e957600080fd5b8135610844816138c6565b60006020828403121561390657600080fd5b5035919050565b6000806040838503121561392057600080fd5b613929836137b1565b9150613937602084016137b1565b90509250929050565b600181811c9082168061395457607f821691505b60208210810361397457634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b808201808211156106b8576106b861397a565b6000602082840312156139b557600080fd5b8151610844816138c6565b818103818111156106b8576106b861397a565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b62ffffff828116828216039080821115613a1b57613a1b61397a565b5092915050565b62ffffff818116838216019080821115613a1b57613a1b61397a565b600060208284031215613a5057600080fd5b5051919050565b80516001600160801b03811681146137c857600080fd5b60008060408385031215613a8157600080fd5b613a8a83613a57565b915061393760208401613a57565b634e487b7160e01b600052601260045260246000fd5b600067ffffffffffffffff80841680613ac957613ac9613a98565b92169190910492915050565b80820281158282048414176106b8576106b861397a565b6000606082016001600160a01b0380871684526020606081860152828751808552608087019150828901945060005b81811015613b3757855183529483019491830191600101613b1b565b5050809450505080851660408501525050949350505050565b604051601f8201601f1916810167ffffffffffffffff81118282101715613b7957613b796139d3565b604052919050565b600067ffffffffffffffff821115613b9b57613b9b6139d3565b5060051b60200190565b600080600060608486031215613bba57600080fd5b835192506020808501519250604085015167ffffffffffffffff811115613be057600080fd5b8501601f81018713613bf157600080fd5b8051613c04613bff82613b81565b613b50565b81815260059190911b82018301908381019089831115613c2357600080fd5b928401925b82841015613c4157835182529284019290840190613c28565b80955050505050509250925092565b600081518084526020808501945080840160005b83811015613c8057815187529582019590820190600101613c64565b509495945050505050565b60006001600160a01b03808716835280861660208401525060806040830152613cb76080830185613c50565b8281036060840152611a8f8185613c50565b60006020808385031215613cdc57600080fd5b825167ffffffffffffffff811115613cf357600080fd5b8301601f81018513613d0457600080fd5b8051613d12613bff82613b81565b81815260059190911b82018301908381019087831115613d3157600080fd5b928401925b82841015613d4f57835182529284019290840190613d36565b979650505050505050565b600082613d6957613d69613a98565b50049056fea26469706673582212201422e251683f8033259102a4967f2986b8370d42f443fc99b46836c54baa31c664736f6c63430008110033