[ { "inputs": [ { "internalType": "address", "name": "_router", "type": "address" }, { "internalType": "address", "name": "_autoLiquidityReceiver", "type": "address" }, { "internalType": "address", "name": "_treasuryReceiver", "type": "address" }, { "internalType": "address", "name": "_riskFreeValueReceiver", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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": "uint256", "name": "epoch", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "totalSupply", "type": "uint256" } ], "name": "LogRebase", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "MinterAdded", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" } ], "name": "MinterRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" } ], "name": "OwnershipRenounced", "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": [ { "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": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "addMinter", "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": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "autoLiquidityReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "autoRebase", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "who", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "blacklist", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_pair", "type": "address" } ], "name": "changePair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_addr", "type": "address" } ], "name": "checkFeeExempt", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkSwapThreshold", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amountPercentage", "type": "uint256" }, { "internalType": "address", "name": "addr", "type": "address" } ], "name": "clearStuckBalance", "outputs": [], "stateMutability": "nonpayable", "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": "_addr", "type": "address" } ], "name": "enableTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "feeDenominator", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getCirculatingSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "accuracy", "type": "uint256" } ], "name": "getLiquidityBacking", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNextRebase", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "initialDistributionFinished", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "isMinter", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isNotInSwap", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "target", "type": "uint256" }, { "internalType": "uint256", "name": "accuracy", "type": "uint256" } ], "name": "isOverLiquified", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "isOwner", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "liquidityFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "manualSync", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "mint", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "nextRebase", "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": "pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pairContract", "outputs": [ { "internalType": "contract InterfaceLP", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "epoch", "type": "uint256" }, { "internalType": "int256", "name": "supplyDelta", "type": "int256" } ], "name": "rebase", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rebaseFrequency", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "removeMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceMinter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokens", "type": "uint256" } ], "name": "rescueToken", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardYield", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rewardYieldDenominator", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "riskFreeValueFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "riskFreeValueReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "router", "outputs": [ { "internalType": "contract IJoeRouter02", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_autoRebase", "type": "bool" } ], "name": "setAutoRebase", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_addr", "type": "address" } ], "name": "setFeeExempt", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_autoLiquidityReceiver", "type": "address" }, { "internalType": "address", "name": "_treasuryReceiver", "type": "address" }, { "internalType": "address", "name": "_riskFreeValueReceiver", "type": "address" } ], "name": "setFeeReceivers", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_liquidityFee", "type": "uint256" }, { "internalType": "uint256", "name": "_riskFreeValueFee", "type": "uint256" }, { "internalType": "uint256", "name": "_treasuryFee", "type": "uint256" }, { "internalType": "uint256", "name": "_sellFee", "type": "uint256" }, { "internalType": "uint256", "name": "_feeDenominator", "type": "uint256" } ], "name": "setFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "setInitialDistributionFinished", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_address", "type": "address" } ], "name": "setLP", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_nextRebase", "type": "uint256" } ], "name": "setNextRebase", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rebaseFrequency", "type": "uint256" } ], "name": "setRebaseFrequency", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_rewardYield", "type": "uint256" }, { "internalType": "uint256", "name": "_rewardYieldDenominator", "type": "uint256" } ], "name": "setRewardYield", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_enabled", "type": "bool" }, { "internalType": "uint256", "name": "_num", "type": "uint256" }, { "internalType": "uint256", "name": "_denom", "type": "uint256" } ], "name": "setSwapBackSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "target", "type": "uint256" }, { "internalType": "uint256", "name": "accuracy", "type": "uint256" } ], "name": "setTargetLiquidity", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "shouldRebase", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "swapEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_receiver", "type": "address" } ], "name": "swipe", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalFee", "outputs": [ { "internalType": "uint256", "name": "", "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": "value", "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": "value", "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": "treasuryFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "treasuryReceiver", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_user", "type": "address" }, { "internalType": "bool", "name": "_flag", "type": "bool" } ], "name": "updateBlacklist", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60806040526001600755600760085560056009556005600a55620000516009546200003d600854600754620009d460201b620033661790919060201c565b620009d460201b620033661790919060201c565b600b556064600c55623feb87600d556402540be400600e556078600f55600f5442016010556001601160006101000a81548160ff02191690831515021790555061dead601160016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550603260165560646017556001601960146101000a81548160ff021916908315150217905550612710600a6012600a0a63ee6b280002600019816200015657fe5b066000190302816200016457fe5b04601a553480156200017557600080fd5b5060405162005b9c38038062005b9c833981810160405260808110156200019b57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291905050506040518060400160405280600781526020017f4b657463687570000000000000000000000000000000000000000000000000008152506040518060400160405280600781526020017f4b45544348555000000000000000000000000000000000000000000000000000815250601282600090805190602001906200025092919062000e08565b5081600190805190602001906200026992919062000e08565b5080600260006101000a81548160ff021916908360ff16021790555050505033600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620002da3362000a5d60201b60201c565b83601860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200038457600080fd5b505afa15801562000399573d6000803e3d6000fd5b505050506040513d6020811015620003b057600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff1663c9c65396601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b815260040160206040518083038186803b1580156200044557600080fd5b505afa1580156200045a573d6000803e3d6000fd5b505050506040513d60208110156200047157600080fd5b8101908080519060200190929190505050306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff16815260200192505050602060405180830381600087803b158015620004ed57600080fd5b505af115801562000502573d6000803e3d6000fd5b505050506040513d60208110156200051957600080fd5b8101908080519060200190929190505050601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506012600a0a63ee6b280002601c819055506012600a0a63ee6b280002600019816200077a57fe5b0660001903601e6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200081a601c546012600a0a63ee6b280002600019816200080157fe5b066000190362000abe60201b620033ee1790919060201c565b601d819055506000600460146101000a81548160ff021916908315150217905550600160066000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000940601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1662000b4960201b60201c565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601c546040518082815260200191505060405180910390a35050505062000ebe565b60008082840190508381101562000a53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b62000a7881600362000c4460201b620034771790919060201c565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b600080821162000b36576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838162000b4057fe5b04905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141562000b8457600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b62000c56828262000d2860201b60201c565b1562000cca576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141562000db1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018062005b7a6022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b828054600181600116156101000203166002900490600052602060002090601f01602090048101928262000e40576000855562000e8c565b82601f1062000e5b57805160ff191683800117855562000e8c565b8280016001018555821562000e8c579182015b8281111562000e8b57825182559160200191906001019062000e6e565b5b50905062000e9b919062000e9f565b5090565b5b8082111562000eba57600081600090555060010162000ea0565b5090565b614cac8062000ece6000396000f3fe6080604052600436106103f35760003560e01c80637d4b501711610208578063c1f1b1b511610118578063d5938aac116100ab578063e120938a1161007a578063e120938a146115bd578063e15beb80146115e8578063f2fde38b14611625578063f887ea4014611676578063f9f92be4146116b7576103fa565b8063d5938aac1461142b578063d7832b111461147c578063d7c01032146114a7578063dd62ed3e14611538576103fa565b8063d0889358116100e7578063d0889358146112f7578063d1fce26414611348578063d439979014611375578063d51ed1c8146113dc576103fa565b8063c1f1b1b5146111f9578063ca33e64c1461123a578063cc32d1761461127b578063cce7db58146112a6576103fa565b806398118cb41161019b578063a457c2d71161016a578063a457c2d714611044578063a8aa1b31146110b5578063a9059cbb146110f6578063aa271e1a14611167578063bc7e68a3146111ce576103fa565b806398118cb414610f76578063983b2d5614610fa15780639865027514610ff25780639ae7372d14611009576103fa565b80638f32d59b116101d75780638f32d59b14610e2f5780639079f93214610e5c5780639155e08314610e8957806395d89b4114610ee6576103fa565b80637d4b501714610d5557806383b4ac6814610d9657806389375abf14610dc35780638da5cb5b14610dee576103fa565b8063313ce5671161030357806363eab10a1161029657806370a082311161026557806370a0823114610c18578063715018a614610c7d578063749796a514610c94578063753d02a114610ce55780637a43e23f14610cfc576103fa565b806363eab10a14610b425780636bc8af8414610b6f5780636d351d1a14610bc05780636ddd171314610beb576103fa565b80634cd9ddf2116102d25780634cd9ddf214610a405780634d709adf14610a7b57806356a227f214610abc5780635d9280af14610b17576103fa565b8063313ce567146108d557806333f3d62814610903578063395093511461097457806340c10f19146109e5576103fa565b806318160ddd116103865780632b112e49116103555780632b112e49146107c65780632b14ca56146107f15780632be6937d1461081c5780632f34d282146108335780633092afd514610884576103fa565b806318160ddd1461069a5780631df4ccfc146106c5578063201e7991146106f057806323b872dd14610735576103fa565b8063095ea7b3116103c2578063095ea7b3146105785780630af08314146105e95780631161ae3914610614578063180b0d7e1461066f576103fa565b806301b16827146103ff57806304a66b481461044457806306fdde03146104a757806308b1fd8f14610537576103fa565b366103fa57005b600080fd5b34801561040b57600080fd5b506104426004803603604081101561042257600080fd5b81019080803590602001909291908035906020019092919050505061171e565b005b34801561045057600080fd5b506104a5600480360360a081101561046757600080fd5b810190808035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611741565b005b3480156104b357600080fd5b506104bc6117c7565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104fc5780820151818401526020810190506104e1565b50505050905090810190601f1680156105295780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561054357600080fd5b5061054c611869565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561058457600080fd5b506105d16004803603604081101561059b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061188f565b60405180821515815260200191505060405180910390f35b3480156105f557600080fd5b506105fe6119fd565b6040518082815260200191505060405180910390f35b34801561062057600080fd5b506106576004803603604081101561063757600080fd5b810190808035906020019092919080359060200190929190505050611a03565b60405180821515815260200191505060405180910390f35b34801561067b57600080fd5b50610684611a18565b6040518082815260200191505060405180910390f35b3480156106a657600080fd5b506106af611a1e565b6040518082815260200191505060405180910390f35b3480156106d157600080fd5b506106da611a28565b6040518082815260200191505060405180910390f35b3480156106fc57600080fd5b506107336004803603604081101561071357600080fd5b810190808035906020019092919080359060200190929190505050611a2e565b005b34801561074157600080fd5b506107ae6004803603606081101561075857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611a51565b60405180821515815260200191505060405180910390f35b3480156107d257600080fd5b506107db611c90565b6040518082815260200191505060405180910390f35b3480156107fd57600080fd5b50610806611dab565b6040518082815260200191505060405180910390f35b34801561082857600080fd5b50610831611db1565b005b34801561083f57600080fd5b506108826004803603602081101561085657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ddf565b005b34801561089057600080fd5b506108d3600480360360208110156108a757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e7f565b005b3480156108e157600080fd5b506108ea611e9c565b604051808260ff16815260200191505060405180910390f35b34801561090f57600080fd5b5061095c6004803603604081101561092657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611eb3565b60405180821515815260200191505060405180910390f35b34801561098057600080fd5b506109cd6004803603604081101561099757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611f7a565b60405180821515815260200191505060405180910390f35b3480156109f157600080fd5b50610a3e60048036036040811015610a0857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121f2565b005b348015610a4c57600080fd5b50610a7960048036036020811015610a6357600080fd5b81019080803590602001909291905050506123f4565b005b348015610a8757600080fd5b50610a9061240f565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610ac857600080fd5b50610b1560048036036040811015610adf57600080fd5b8101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612435565b005b348015610b2357600080fd5b50610b2c6124a3565b6040518082815260200191505060405180910390f35b348015610b4e57600080fd5b50610b576124a9565b60405180821515815260200191505060405180910390f35b348015610b7b57600080fd5b50610bbe60048036036020811015610b9257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506124b6565b005b348015610bcc57600080fd5b50610bd561256e565b6040518082815260200191505060405180910390f35b348015610bf757600080fd5b50610c0061258c565b60405180821515815260200191505060405180910390f35b348015610c2457600080fd5b50610c6760048036036020811015610c3b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061259f565b6040518082815260200191505060405180910390f35b348015610c8957600080fd5b50610c926125fc565b005b348015610ca057600080fd5b50610ce360048036036020811015610cb757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506126b6565b005b348015610cf157600080fd5b50610cfa612722565b005b348015610d0857600080fd5b50610d3f60048036036040811015610d1f57600080fd5b8101908080359060200190929190803590602001909291905050506127a6565b6040518082815260200191505060405180910390f35b348015610d6157600080fd5b50610d6a61284e565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610da257600080fd5b50610dab612874565b60405180821515815260200191505060405180910390f35b348015610dcf57600080fd5b50610dd861288c565b6040518082815260200191505060405180910390f35b348015610dfa57600080fd5b50610e03612892565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610e3b57600080fd5b50610e446128bc565b60405180821515815260200191505060405180910390f35b348015610e6857600080fd5b50610e71612914565b60405180821515815260200191505060405180910390f35b348015610e9557600080fd5b50610ee460048036036040811015610eac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050612927565b005b348015610ef257600080fd5b50610efb612993565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610f3b578082015181840152602081019050610f20565b50505050905090810190601f168015610f685780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610f8257600080fd5b50610f8b612a35565b6040518082815260200191505060405180910390f35b348015610fad57600080fd5b50610ff060048036036020811015610fc457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a3b565b005b348015610ffe57600080fd5b50611007612a58565b005b34801561101557600080fd5b506110426004803603602081101561102c57600080fd5b8101908080359060200190929190505050612a63565b005b34801561105057600080fd5b5061109d6004803603604081101561106757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612a7e565b60405180821515815260200191505060405180910390f35b3480156110c157600080fd5b506110ca612d8b565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561110257600080fd5b5061114f6004803603604081101561111957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050612db1565b60405180821515815260200191505060405180910390f35b34801561117357600080fd5b506111b66004803603602081101561118a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612e81565b60405180821515815260200191505060405180910390f35b3480156111da57600080fd5b506111e3612e9e565b6040518082815260200191505060405180910390f35b34801561120557600080fd5b5061120e612ea4565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561124657600080fd5b5061124f612ece565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561128757600080fd5b50611290612ef4565b6040518082815260200191505060405180910390f35b3480156112b257600080fd5b506112f5600480360360208110156112c957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612efa565b005b34801561130357600080fd5b506113466004803603606081101561131a57600080fd5b810190808035151590602001909291908035906020019092919080359060200190929190505050612f5b565b005b34801561135457600080fd5b5061135d612fcf565b60405180821515815260200191505060405180910390f35b34801561138157600080fd5b506113c46004803603602081101561139857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612fe2565b60405180821515815260200191505060405180910390f35b3480156113e857600080fd5b50611415600480360360208110156113ff57600080fd5b8101908080359060200190929190505050613038565b6040518082815260200191505060405180910390f35b34801561143757600080fd5b5061147a6004803603602081101561144e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506130fa565b005b34801561148857600080fd5b50611491613166565b6040518082815260200191505060405180910390f35b3480156114b357600080fd5b50611536600480360360608110156114ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061316c565b005b34801561154457600080fd5b506115a76004803603604081101561155b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613245565b6040518082815260200191505060405180910390f35b3480156115c957600080fd5b506115d26132cc565b6040518082815260200191505060405180910390f35b3480156115f457600080fd5b506116236004803603602081101561160b57600080fd5b810190808035151590602001909291905050506132d6565b005b34801561163157600080fd5b506116746004803603602081101561164857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613304565b005b34801561168257600080fd5b5061168b613321565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156116c357600080fd5b50611706600480360360208110156116da57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613347565b60405180821515815260200191505060405180910390f35b6117266128bc565b61172f57600080fd5b81600d8190555080600e819055505050565b6117496128bc565b61175257600080fd5b84600781905550836009819055508260088190555081600a8190555061179960095461178b60085460075461336690919063ffffffff16565b61336690919063ffffffff16565b600b8190555080600c819055506004600c54816117b257fe5b04600b54106117c057600080fd5b5050505050565b606060008054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561185f5780601f106118345761010080835404028352916020019161185f565b820191906000526020600020905b81548152906001019060200180831161184257829003601f168201915b5050505050905090565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600460149054906101000a900460ff16806118b057506118af6128bc565b5b806119045750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61190d57600080fd5b81601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b600d5481565b600082611a0f83613038565b11905092915050565b600c5481565b6000601c54905090565b600b5481565b611a366128bc565b611a3f57600080fd5b81601681905550806017819055505050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611a8e57600080fd5b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414611c7857611bf7836040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250601f60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546135529092919063ffffffff16565b601f60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b611c8385858561360c565b5060019150509392505050565b6000611da6601d54611d98601e6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611d8a601e6000601160019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546012600a0a63ee6b28000260001981611d7757fe5b066000190361397d90919063ffffffff16565b61397d90919063ffffffff16565b6133ee90919063ffffffff16565b905090565b600a5481565b611db96128bc565b611dc257600080fd5b6001600460146101000a81548160ff021916908315150217905550565b611de76128bc565b611df057600080fd5b80600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a90505050565b611e876128bc565b611e9057600080fd5b611e9981613a00565b50565b6000600260009054906101000a900460ff16905090565b6000611ebd6128bc565b611ec657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611f3757600080fd5b505af1158015611f4b573d6000803e3d6000fd5b505050506040513d6020811015611f6157600080fd5b8101908080519060200190929190505050905092915050565b6000600460149054906101000a900460ff1680611f9b5750611f9a6128bc565b5b80611fef5750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611ff857600080fd5b61208782601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336690919063ffffffff16565b601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b6121fb33612e81565b612250576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180614be36030913960400191505060405180910390fd5b61226581601c5461336690919063ffffffff16565b601c819055506000196fffffffffffffffffffffffffffffffff16601c5411156122a5576000196fffffffffffffffffffffffffffffffff16601c819055505b6122d3601c546012600a0a63ee6b280002600019816122c057fe5b06600019036133ee90919063ffffffff16565b601d81905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561234357600080fd5b505af1158015612357573d6000803e3d6000fd5b505050506123ad81601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336690919063ffffffff16565b601e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b6123fc6128bc565b61240557600080fd5b80600f8190555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61243d6128bc565b61244657600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc60648584028161247157fe5b049081150290604051600060405180830381858888f1935050505015801561249d573d6000803e3d6000fd5b50505050565b60095481565b6000426010541115905090565b6124be6128bc565b6124c757600080fd5b80601960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000612587601d54601a546133ee90919063ffffffff16565b905090565b601960149054906101000a900460ff1681565b60006125f5601d54601e60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133ee90919063ffffffff16565b9050919050565b6126046128bc565b61260d57600080fd5b600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a26000600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6126be6128bc565b6126c757600080fd5b6001600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561278c57600080fd5b505af11580156127a0573d6000803e3d6000fd5b50505050565b60006127b06128bc565b6127b957600080fd5b601b60009054906101000a900460ff161561283c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260098152602001807f54727920616761696e000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6128468383613a5a565b905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000601b60009054906101000a900460ff1615905090565b600f5481565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614905090565b601160009054906101000a900460ff1681565b61292f6128bc565b61293857600080fd5b80602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b606060018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015612a2b5780601f10612a0057610100808354040283529160200191612a2b565b820191906000526020600020905b815481529060010190602001808311612a0e57829003601f168201915b5050505050905090565b60075481565b612a436128bc565b612a4c57600080fd5b612a5581613c26565b50565b612a6133613a00565b565b612a6b6128bc565b612a7457600080fd5b8060108190555050565b6000600460149054906101000a900460ff1680612a9f5750612a9e6128bc565b5b80612af35750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612afc57600080fd5b6000601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612c0b576000601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c9f565b612c1e838261397d90919063ffffffff16565b601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925601f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612dee57600080fd5b600460149054906101000a900460ff1680612e0d5750612e0c6128bc565b5b80612e615750600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b612e6a57600080fd5b612e7533858561360c565b50600191505092915050565b6000612e97826003613c8090919063ffffffff16565b9050919050565b60105481565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60085481565b612f026128bc565b612f0b57600080fd5b60004790508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612f56573d6000803e3d6000fd5b505050565b612f636128bc565b612f6c57600080fd5b82601960146101000a81548160ff021916908315150217905550612fc482612fb6836012600a0a63ee6b28000260001981612fa357fe5b06600019036133ee90919063ffffffff16565b613d5e90919063ffffffff16565b601a81905550505050565b600460149054906101000a900460ff1681565b6000600660008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000806130b1601d54601e6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133ee90919063ffffffff16565b90506130f26130be611c90565b6130e46130d5600285613d5e90919063ffffffff16565b86613d5e90919063ffffffff16565b6133ee90919063ffffffff16565b915050919050565b6131026128bc565b61310b57600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600e5481565b6131746128bc565b61317d57600080fd5b82601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000601f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6000601054905090565b6132de6128bc565b6132e757600080fd5b80601160006101000a81548160ff02191690831515021790555050565b61330c6128bc565b61331557600080fd5b61331e81613de4565b50565b601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b602080528060005260406000206000915054906101000a900460ff1681565b6000808284019050838110156133e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000808211613465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525060200191505060405180910390fd5b81838161346e57fe5b04905092915050565b6134818282613c80565b156134f4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f526f6c65733a206163636f756e7420616c72656164792068617320726f6c650081525060200191505060405180910390fd5b60018260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60008383111582906135ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156135c45780820151818401526020810190506135a9565b50505050905090810190601f1680156135f15780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5082840390509392505050565b6000602060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156136b25750602060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b613724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252600c8152602001807f696e5f626c61636b6c697374000000000000000000000000000000000000000081525060200191505060405180910390fd5b601b60009054906101000a900460ff161561374b57613744848484613ede565b9050613976565b6000613762601d5484613d5e90919063ffffffff16565b905061376c61402e565b1561377a57613779614105565b5b6137cc81601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600061381b86866147e1565b6138255781613831565b6138308686846148ea565b5b905061388581601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336690919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61392c601d54856133ee90919063ffffffff16565b6040518082815260200191505060405180910390a36139496124a9565b80156139615750601160009054906101000a900460ff165b1561396f5761396e614ab7565b5b6001925050505b9392505050565b6000828211156139f5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525060200191505060405180910390fd5b818303905092915050565b613a14816003614b2590919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167fe94479a9f7e1952cc78f2d6baab678adc1b772d936c6583def489e524cb6669260405160405180910390a250565b600080821415613aa857827f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2601c546040518082815260200191505060405180910390a2601c549050613c20565b6000821215613ad457613ac982600003601c5461397d90919063ffffffff16565b601c81905550613af0565b613ae982601c5461336690919063ffffffff16565b601c819055505b6000196fffffffffffffffffffffffffffffffff16601c541115613b2a576000196fffffffffffffffffffffffffffffffff16601c819055505b613b58601c546012600a0a63ee6b28000260001981613b4557fe5b06600019036133ee90919063ffffffff16565b601d81905550600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b158015613bc857600080fd5b505af1158015613bdc573d6000803e3d6000fd5b50505050827f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f2601c546040518082815260200191505060405180910390a2601c5490505b92915050565b613c3a81600361347790919063ffffffff16565b8073ffffffffffffffffffffffffffffffffffffffff167f6ae172837ea30b801fbfcdd4108aa1d5bf8ff775444fd70256b44e6bf3dfc3f660405160405180910390a250565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613d07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180614c556022913960400191505060405180910390fd5b8260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b600080831415613d715760009050613dde565b6000828402905082848281613d8257fe5b0414613dd9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614c346021913960400191505060405180910390fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613e1e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600260019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600260016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080613ef6601d5484613d5e90919063ffffffff16565b9050613f4a81601e60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461397d90919063ffffffff16565b601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fdf81601e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336690919063ffffffff16565b601e60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060019150509392505050565b6000601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415801561409b5750601b60009054906101000a900460ff16155b80156140b35750601960149054906101000a900460ff165b80156141005750601a54601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001601b60006101000a81548160ff0219169083151502179055506000614130601654601754611a03565b61413c5760075461413f565b60005b90506000614197601d54601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546133ee90919063ffffffff16565b905060006141d560026141c7600b546141b98787613d5e90919063ffffffff16565b6133ee90919063ffffffff16565b6133ee90919063ffffffff16565b905060006141ec828461397d90919063ffffffff16565b90506000600267ffffffffffffffff8111801561420857600080fd5b506040519080825280602002602001820160405280156142375781602001602082028036833780820191505090505b509050308160008151811061424857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166373b295c26040518163ffffffff1660e01b815260040160206040518083038186803b1580156142ea57600080fd5b505afa1580156142fe573d6000803e3d6000fd5b505050506040513d602081101561431457600080fd5b81019080805190602001909291905050508160018151811061433257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000479050601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663762b15628460008530426040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561443557808201518184015260208101905061441a565b505050509050019650505050505050600060405180830381600087803b15801561445e57600080fd5b505af1158015614472573d6000803e3d6000fd5b50505050600061448b824761397d90919063ffffffff16565b905060006144b76144a660028a6133ee90919063ffffffff16565b600b5461397d90919063ffffffff16565b905060006144f360026144e5846144d78d88613d5e90919063ffffffff16565b6133ee90919063ffffffff16565b6133ee90919063ffffffff16565b9050600061451e8361451060095487613d5e90919063ffffffff16565b6133ee90919063ffffffff16565b905060006145498461453b60085488613d5e90919063ffffffff16565b6133ee90919063ffffffff16565b90506000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168261753090604051806000019050600060405180830381858888f193505050503d80600081146145d2576040519150601f19603f3d011682016040523d82523d6000602084013e6145d7565b606091505b50509050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168361753090604051806000019050600060405180830381858888f193505050503d8060008114614660576040519150601f19603f3d011682016040523d82523d6000602084013e614665565b606091505b5050809150506000905060008a11156147b857601860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f91b3f7285308d600080601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16426040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561476457600080fd5b505af1158015614778573d6000803e3d6000fd5b50505050506040513d606081101561478f57600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505b5050505050505050505050506000601b60006101000a81548160ff021916908315150217905550565b60008273ffffffffffffffffffffffffffffffffffffffff16601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16148061488c57508173ffffffffffffffffffffffffffffffffffffffff16601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b80156148e25750600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b600080600b549050601960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614156149605761495d600a548261336690919063ffffffff16565b90505b6000614989600c5461497b8487613d5e90919063ffffffff16565b6133ee90919063ffffffff16565b90506149dd81601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461336690919063ffffffff16565b601e60003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef614a84601d54856133ee90919063ffffffff16565b6040518082815260200191505060405180910390a3614aac818561397d90919063ffffffff16565b925050509392505050565b601b60009054906101000a900460ff16614b235760004290506000614ada611c90565b90506000614b07600e54614af9600d5485613d5e90919063ffffffff16565b6133ee90919063ffffffff16565b9050614b138382613a5a565b50600f5483016010819055505050505b565b614b2f8282613c80565b614b84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180614c136021913960400191505060405180910390fd5b60008260000160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505056fe4d696e746572526f6c653a2063616c6c657220646f6573206e6f74206861766520746865204d696e74657220726f6c65526f6c65733a206163636f756e7420646f6573206e6f74206861766520726f6c65536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f6c65733a206163636f756e7420697320746865207a65726f2061646472657373a2646970667358221220c6a833831dcde5744bd9bb2923f47265ce60315cf337269ef9e2f8035ccb6cdd64736f6c63430007060033526f6c65733a206163636f756e7420697320746865207a65726f206164647265737300000000000000000000000060ae616a2155ee3d9a68541ba4544862310933d4000000000000000000000000f9a27c6d1e1f7b0d2953421164e52b7ee9aa052b00000000000000000000000088f3dd897eb3216252ad00f2a6d3eaaf4b3be3a60000000000000000000000000aa4e910071823091ad49b5aa560fb7aeae81bfe