[ { "inputs": [ { "internalType": "contract IERC20", "name": "_pefi", "type": "address" }, { "internalType": "uint256", "name": "_paperHandsPenalty", "type": "uint256" } ], "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": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amountPefi", "type": "uint256" } ], "name": "DailyRewardsReceived", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegator", "type": "address" }, { "indexed": true, "internalType": "address", "name": "fromDelegate", "type": "address" }, { "indexed": true, "internalType": "address", "name": "toDelegate", "type": "address" } ], "name": "DelegateChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "delegate", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "previousBalance", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBalance", "type": "uint256" } ], "name": "DelegateVotesChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "penguin", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Enter", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "penguin", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "shares", "type": "uint256" } ], "name": "Leave", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "luckyPenguin", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amountPefi", "type": "uint256" } ], "name": "LuckyPenguinDistribution", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousLuckyPenguin", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newLuckyPenguin", "type": "address" } ], "name": "NewLuckyPenguin", "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": false, "internalType": "uint256", "name": "newPaperHandsPenalty", "type": "uint256" } ], "name": "PaperHandsPenaltySet", "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": "DELEGATION_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DOMAIN_TYPEHASH", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_BIPS", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "MAX_PAPER_HANDS_PENALTY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "SECONDS_PER_DAY", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "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": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint32", "name": "", "type": "uint32" } ], "name": "checkpoints", "outputs": [ { "internalType": "uint32", "name": "fromBlock", "type": "uint32" }, { "internalType": "uint256", "name": "votes", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "currentExchangeRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "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": "delegatee", "type": "address" } ], "name": "delegate", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegatee", "type": "address" }, { "internalType": "uint256", "name": "nonce", "type": "uint256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "delegateBySig", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "delegator", "type": "address" } ], "name": "delegates", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "deposits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_amount", "type": "uint256" } ], "name": "enter", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "fundsCollectedByPHP", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "getCurrentVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getExchangeRateHistory", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" }, { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getLatestStoredExchangeRate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "uint256", "name": "blockNumber", "type": "uint256" } ], "name": "getPriorVotes", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "historicExchangeRates", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "historicTimestamps", "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": "isLuckyPenguinEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_share", "type": "uint256" } ], "name": "leave", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "luckyPenguin", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "luckyPenguinCount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "luckyPenguinEarnings", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "luckyPenguinInterval", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "luckyPenguinMinimumDeposit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "luckyPenguinRewardBP", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "numCheckpoints", "outputs": [ { "internalType": "uint32", "name": "", "type": "uint32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "numStoredExchangeRates", "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": "paperHandsPenalty", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pefi", "outputs": [ { "internalType": "contract IERC20", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pefiBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "rewardsReceived", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rollingStartPefiBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rollingStartTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rollingStartTotalDeposits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "rollingStartTotalWithdrawals", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_luckyPenguinEnabled", "type": "bool" } ], "name": "setLuckyPenguinEnabled", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_luckyPenguinInterval", "type": "uint256" } ], "name": "setLuckyPenguinInterval", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_luckyPenguinMinimumDeposit", "type": "uint256" } ], "name": "setLuckyPenguinMinimumDeposit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_luckyPenguinRewardBP", "type": "uint256" } ], "name": "setLuckyPenguinRewardBP", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_paperHandsPenalty", "type": "uint256" } ], "name": "setPaperHandsPenalty", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "timeSinceLastDailyUpdate", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalDeposits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalWithdrawals", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "address", "name": "recipient", "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": [ { "internalType": "address", "name": "penguinAddress", "type": "address" } ], "name": "userProfits", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "withdrawals", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" } ]
60a06040523480156200001157600080fd5b50604051620062683803806200626883398181016040528101906200003791906200049c565b6040518060400160405280600e81526020017f50656e6775696e4e6573747356320000000000000000000000000000000000008152506040518060400160405280600581526020017f695045464900000000000000000000000000000000000000000000000000000081525081818160039080519060200190620000bd929190620003be565b508060049080519060200190620000d6929190620003be565b505050505033600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a38173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1660601b81525050620001bf816200028960201b60201c565b33600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506007600c8190555068056bc75e2d63100000600d8190555060016013819055506014670de0b6b3a7640000908060018154018082558091505060019003906000526020600020016000909190919091505560154290806001815401808255809150506001900390600052602060002001600090919091909150554260168190555050506200071c565b3373ffffffffffffffffffffffffffffffffffffffff16620002b06200039460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff161462000309576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003009062000564565b60405180910390fd5b6109c481111562000351576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003489062000542565b60405180910390fd5b80600f819055507f34aa6aa40570d43caa26f462478d997d743a353218119ac500de5211f13533ee8160405162000389919062000586565b60405180910390a150565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054620003cc9062000606565b90600052602060002090601f016020900481019282620003f057600085556200043c565b82601f106200040b57805160ff19168380011785556200043c565b828001600101855582156200043c579182015b828111156200043b5782518255916020019190600101906200041e565b5b5090506200044b91906200044f565b5090565b5b808211156200046a57600081600090555060010162000450565b5090565b6000815190506200047f81620006e8565b92915050565b600081519050620004968162000702565b92915050565b60008060408385031215620004b657620004b56200066b565b5b6000620004c6858286016200046e565b9250506020620004d98582860162000485565b9150509250929050565b6000620004f2603383620005a3565b9150620004ff8262000670565b604082019050919050565b600062000519602083620005a3565b91506200052682620006bf565b602082019050919050565b6200053c81620005fc565b82525050565b600060208201905081810360008301526200055d81620004e3565b9050919050565b600060208201905081810360008301526200057f816200050a565b9050919050565b60006020820190506200059d600083018462000531565b92915050565b600082825260208201905092915050565b6000620005c182620005dc565b9050919050565b6000620005d582620005b4565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060028204905060018216806200061f57607f821691505b602082108114156200063657620006356200063c565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600080fd5b7f43616e277420686176652070617065722068616e64732070656e616c7479206760008201527f726561746572207468616e206d6178696d756d00000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b620006f381620005c8565b8114620006ff57600080fd5b50565b6200070d81620005fc565b81146200071957600080fd5b50565b60805160601c615b116200075760003960008181611162015281816113670152818161157001528181611844015261209b0152615b116000f3fe608060405234801561001057600080fd5b50600436106103ba5760003560e01c80638a4091a2116101f4578063be3548361161011a578063e92fb38c116100ad578063f52460db1161007c578063f52460db14610bbb578063f709e49114610bd9578063fc7e286d14610bf7578063fd57956c14610c27576103ba565b8063e92fb38c14610b36578063eba9e00e14610b52578063f1127ed814610b6e578063f2fde38b14610b9f576103ba565b8063dd62ed3e116100e9578063dd62ed3e14610aae578063e5efeccd14610ade578063e6ea118d14610afc578063e7a324dc14610b18576103ba565b8063be35483614610a26578063c3cda52014610a56578063cbf0df1314610a72578063d5a095e814610a90576103ba565b8063a368497711610192578063a9059cbb11610161578063a9059cbb1461098a578063ada0e7a5146109ba578063b3249e9e146109d8578063b4b5ea57146109f6576103ba565b8063a368497714610902578063a457c2d714610920578063a59f3e0c14610950578063a8ce0d9b1461096c576103ba565b806395a18986116101ce57806395a189861461087857806395d89b41146108a85780639c64ad8b146108c6578063a2ea2192146108e4576103ba565b80638a4091a21461081e5780638d478a4f1461083c5780638da5cb5b1461085a576103ba565b806343a20f80116102e457806370a0823111610277578063782d6fe111610246578063782d6fe1146107705780637a9262a2146107a05780637d882097146107d05780637ecebe00146107ee576103ba565b806370a08231146106fa578063715018a61461072a5780637340b60d1461073457806374f0314f14610752576103ba565b806360464627116102b357806360464627146106605780636750f7361461067e57806367dfd4c9146106ae5780636fcfff45146106ca576103ba565b806343a20f80146105d85780635776e5c8146105f6578063587cde1e146106145780635c19a95c14610644576103ba565b806320606b701161035c578063313ce5671161032b578063313ce56714610550578063395093511461056e5780633fd4df871461059e57806341de1cb6146105bc576103ba565b806320606b70146104b357806323b872dd146104d15780632d7794a7146105015780633101f0a914610532576103ba565b8063095ea7b311610398578063095ea7b31461041757806318160ddd146104475780631b530be9146104655780631b91ca8314610483576103ba565b8063026a6c5e146103bf57806302bd7cc4146103dd57806306fdde03146103f9575b600080fd5b6103c7610c46565b6040516103d49190614ea0565b60405180910390f35b6103f760048036038101906103f29190614499565b610c4c565b005b610401610cde565b60405161040e9190614bde565b60405180910390f35b610431600480360381019061042c919061438c565b610d70565b60405161043e9190614abe565b60405180910390f35b61044f610d8e565b60405161045c9190614ea0565b60405180910390f35b61046d610d98565b60405161047a9190614ea0565b60405180910390f35b61049d600480360381019061049891906144f3565b610d9e565b6040516104aa9190614ea0565b60405180910390f35b6104bb610dc2565b6040516104c89190614ad9565b60405180910390f35b6104eb60048036038101906104e69190614339565b610de6565b6040516104f89190614abe565b60405180910390f35b61051b600480360381019061051691906144f3565b610ede565b604051610529929190614a87565b60405180910390f35b61053a611098565b6040516105479190614abe565b60405180910390f35b6105586110ab565b6040516105659190614f28565b60405180910390f35b6105886004803603810190610583919061438c565b6110b4565b6040516105959190614abe565b60405180910390f35b6105a6611160565b6040516105b39190614bc3565b60405180910390f35b6105d660048036038101906105d191906144f3565b611184565b005b6105e0611248565b6040516105ed9190614ea0565b60405180910390f35b6105fe61124e565b60405161060b9190614ea0565b60405180910390f35b61062e600480360381019061062991906142cc565b611254565b60405161063b9190614a0c565b60405180910390f35b61065e600480360381019061065991906142cc565b6112bd565b005b6106686112ca565b6040516106759190614ea0565b60405180910390f35b610698600480360381019061069391906144f3565b6112d0565b6040516106a59190614ea0565b60405180910390f35b6106c860048036038101906106c391906144f3565b6112f4565b005b6106e460048036038101906106df91906142cc565b61169f565b6040516106f19190614ee4565b60405180910390f35b610714600480360381019061070f91906142cc565b6116c2565b6040516107219190614ea0565b60405180910390f35b61073261170a565b005b61073c611840565b6040516107499190614ea0565b60405180910390f35b61075a6118f0565b6040516107679190614ea0565b60405180910390f35b61078a6004803603810190610785919061438c565b6118f7565b6040516107979190614ea0565b60405180910390f35b6107ba60048036038101906107b591906142cc565b611cce565b6040516107c79190614ea0565b60405180910390f35b6107d8611ce6565b6040516107e59190614ea0565b60405180910390f35b610808600480360381019061080391906142cc565b611cec565b6040516108159190614ea0565b60405180910390f35b610826611d04565b6040516108339190614ea0565b60405180910390f35b610844611d0a565b6040516108519190614ea0565b60405180910390f35b610862611d10565b60405161086f9190614a0c565b60405180910390f35b610892600480360381019061088d91906142cc565b611d3a565b60405161089f9190614ea0565b60405180910390f35b6108b0611d52565b6040516108bd9190614bde565b60405180910390f35b6108ce611de4565b6040516108db9190614ea0565b60405180910390f35b6108ec611e45565b6040516108f99190614ea0565b60405180910390f35b61090a611e4b565b6040516109179190614ea0565b60405180910390f35b61093a6004803603810190610935919061438c565b611e9f565b6040516109479190614abe565b60405180910390f35b61096a600480360381019061096591906144f3565b611f8a565b005b61097461224d565b6040516109819190614ea0565b60405180910390f35b6109a4600480360381019061099f919061438c565b612262565b6040516109b19190614abe565b60405180910390f35b6109c2612280565b6040516109cf9190614ea0565b60405180910390f35b6109e0612286565b6040516109ed9190614ea0565b60405180910390f35b610a106004803603810190610a0b91906142cc565b61228c565b604051610a1d9190614ea0565b60405180910390f35b610a406004803603810190610a3b91906142cc565b61236b565b604051610a4d9190614ea0565b60405180910390f35b610a706004803603810190610a6b91906143cc565b612468565b005b610a7a6126fd565b604051610a879190614ea0565b60405180910390f35b610a98612703565b604051610aa59190614ea0565b60405180910390f35b610ac86004803603810190610ac391906142f9565b612709565b604051610ad59190614ea0565b60405180910390f35b610ae6612790565b604051610af39190614ea0565b60405180910390f35b610b166004803603810190610b1191906144f3565b612796565b005b610b20612891565b604051610b2d9190614ad9565b60405180910390f35b610b506004803603810190610b4b91906144f3565b6128b5565b005b610b6c6004803603810190610b6791906144f3565b612942565b005b610b886004803603810190610b839190614459565b6129c1565b604051610b96929190614eff565b60405180910390f35b610bb96004803603810190610bb491906142cc565b612a02565b005b610bc3612ba7565b604051610bd09190614ea0565b60405180910390f35b610be1612bad565b604051610bee9190614a0c565b60405180910390f35b610c116004803603810190610c0c91906142cc565b612bd3565b604051610c1e9190614ea0565b60405180910390f35b610c2f612beb565b604051610c3d929190614ebb565b60405180910390f35b60165481565b3373ffffffffffffffffffffffffffffffffffffffff16610c6b611d10565b73ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb890614d60565b60405180910390fd5b80600960146101000a81548160ff02191690831515021790555050565b606060038054610ced90615233565b80601f0160208091040260200160405190810160405280929190818152602001828054610d1990615233565b8015610d665780601f10610d3b57610100808354040283529160200191610d66565b820191906000526020600020905b815481529060010190602001808311610d4957829003601f168201915b5050505050905090565b6000610d84610d7d612c50565b8484612c58565b6001905092915050565b6000600254905090565b600b5481565b60158181548110610dae57600080fd5b906000526020600020016000915090505481565b7f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86681565b6000610df3848484612e23565b6000600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e3e612c50565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610ebe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eb590614d20565b60405180910390fd5b610ed285610eca612c50565b858403612c58565b60019150509392505050565b60608060006001601354610ef29190615105565b90506000818511610f1a5760018583610f0b9190615105565b610f159190614fb9565b610f1d565b60005b9050600060018284610f2f9190615105565b610f399190614fb9565b905060008167ffffffffffffffff811115610f5757610f566153a5565b5b604051908082528060200260200182016040528015610f855781602001602082028036833780820191505090505b50905060008267ffffffffffffffff811115610fa457610fa36153a5565b5b604051908082528060200260200182016040528015610fd25781602001602082028036833780820191505090505b50905060008490505b8581116110875760148181548110610ff657610ff5615376565b5b906000526020600020015483868361100e9190615105565b8151811061101f5761101e615376565b5b6020026020010181815250506015818154811061103f5761103e615376565b5b90600052602060002001548286836110579190615105565b8151811061106857611067615376565b5b602002602001018181525050808061107f90615265565b915050610fdb565b508181965096505050505050915091565b600960149054906101000a900460ff1681565b60006012905090565b60006111566110c1612c50565b8484600160006110cf612c50565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546111519190614fb9565b612c58565b6001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b3373ffffffffffffffffffffffffffffffffffffffff166111a3611d10565b73ffffffffffffffffffffffffffffffffffffffff16146111f9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f090614d60565b60405180910390fd5b61271081111561123e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123590614c40565b60405180910390fd5b80600e8190555050565b600e5481565b60185481565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6112c73382612f15565b50565b60125481565b601481815481106112e057600080fd5b906000526020600020016000915090505481565b60006112fe610d8e565b9050600061130a611840565b9050600082828561131b91906150ab565b6113259190615049565b90506113313385613086565b6000612710600f548361134491906150ab565b61134e9190615049565b90506000818361135e9190615105565b90506113ab33827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166130ff9092919063ffffffff16565b80601b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113fa9190614fb9565b9250508190555080601260008282546114139190614fb9565b92505081905550816010600082825461142c9190614fb9565b92505081905550600960149054906101000a900460ff16801561145157506000600e54115b1561163f576000612710600e548461146991906150ab565b6114739190615049565b905080601c6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546114e29190614fb9565b601c6000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506115b4600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16827f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166130ff9092919063ffffffff16565b80601260008282546115c69190614fb9565b92505081905550600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f0af18ca1cb3a2a8958322623fa3eecc8f62ff7019851e39da8bcd9168650a701826040516116359190614ea0565b60405180910390a2505b611647613185565b3373ffffffffffffffffffffffffffffffffffffffff167f0f0f7f8153c6d63a5696720d4cc434e56bb5ac1cf8c791ed9c180defb6e92153848860405161168f929190614ebb565b60405180910390a2505050505050565b60076020528060005260406000206000915054906101000a900463ffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b3373ffffffffffffffffffffffffffffffffffffffff16611729611d10565b73ffffffffffffffffffffffffffffffffffffffff161461177f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177690614d60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161189b9190614a0c565b60206040518083038186803b1580156118b357600080fd5b505afa1580156118c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118eb9190614520565b905090565b6201518081565b600043821061193b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193290614e40565b60405180910390fd5b6000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff1614156119a8576000915050611cc8565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846119f79190615139565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff1611611aa457600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600183611a7e9190615139565b63ffffffff1663ffffffff16815260200190815260200160002060010154915050611cc8565b82600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008063ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff161115611b25576000915050611cc8565b600080600183611b359190615139565b90505b8163ffffffff168163ffffffff161115611c6257600060028383611b5c9190615139565b611b66919061507a565b82611b719190615139565b90506000600660008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152602001600182015481525050905086816000015163ffffffff161415611c3157806020015195505050505050611cc8565b86816000015163ffffffff161015611c4b57819350611c5b565b600182611c589190615139565b92505b5050611b38565b600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008363ffffffff1663ffffffff1681526020019081526020016000206001015493505050505b92915050565b601b6020528060005260406000206000915090505481565b60115481565b60086020528060005260406000206000915090505481565b6109c481565b600f5481565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601c6020528060005260406000206000915090505481565b606060048054611d6190615233565b80601f0160208091040260200160405190810160405280929190818152602001828054611d8d90615233565b8015611dda5780601f10611daf57610100808354040283529160200191611dda565b820191906000526020600020905b815481529060010190602001808311611dbd57829003601f168201915b5050505050905090565b600080611def611840565b90506000601854601154611e039190615105565b90506000601954601254611e179190615105565b905060175482611e279190614fb9565b8184611e339190614fb9565b611e3d9190615105565b935050505090565b600c5481565b600080611e56610d8e565b90506000811415611e7257670de0b6b3a7640000915050611e9c565b80670de0b6b3a7640000611e84611840565b611e8e91906150ab565b611e989190615049565b9150505b90565b60008060016000611eae612c50565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015611f6b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f6290614e60565b60405180910390fd5b611f7f611f76612c50565b85858403612c58565b600191505092915050565b6000611f94611840565b90506000611fa0610d8e565b90506000811480611fb15750600082145b15611fc557611fc03384613272565b611fec565b6000828285611fd491906150ab565b611fde9190615049565b9050611fea3382613272565b505b82601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120379190614fb9565b601a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550826011600082825461208c9190614fb9565b925050819055506120e03330857f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166132eb909392919063ffffffff16565b600960149054906101000a900460ff1680156120fe5750600d548310155b156121f257600b600081548092919061211690615265565b91905055506000600c54600b5461212d91906152b8565b14156121f1573373ffffffffffffffffffffffffffffffffffffffff16600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f1b0f9eb3e5640f8f28ed4561b7ebc191bac51e77abc21bf99b134d329a69e4ed60405160405180910390a333600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5b6121fa613185565b3373ffffffffffffffffffffffffffffffffffffffff167f1fb48929215fc354244acea33112720ce5b7ba6912db70bb0149e77aa7c91ce1846040516122409190614ea0565b60405180910390a2505050565b60006016544261225d9190615105565b905090565b600061227661226f612c50565b8484612e23565b6001905092915050565b60175481565b61271081565b600080600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff16905060008163ffffffff16116122f6576000612363565b600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001836123449190615139565b63ffffffff1663ffffffff168152602001908152602001600020600101545b915050919050565b600080601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000601b60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060006123fe610d8e565b905060008161240b611840565b612414886116c2565b61241e91906150ab565b6124289190615049565b9050600081846124389190614fb9565b905084811061245957848161244d9190615105565b95505050505050612463565b6000955050505050505b919050565b60007f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866612493610cde565b805190602001206124a2613374565b306040516020016124b69493929190614b39565b60405160208183030381529060405280519060200120905060007fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf8888886040516020016125079493929190614af4565b604051602081830303815290604052805190602001209050600082826040516020016125349291906149d5565b6040516020818303038152906040528051906020012090506000600182888888604051600081526020016040526040516125719493929190614b7e565b6020604051602081039080840390855afa158015612593573d6000803e3d6000fd5b505050602060405103519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561260f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260690614d40565b60405180910390fd5b600860008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061265f90615265565b9190505589146126a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269b90614c60565b60405180910390fd5b874211156126e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126de90614da0565b60405180910390fd5b6126f1818b612f15565b50505050505050505050565b60135481565b60105481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60195481565b3373ffffffffffffffffffffffffffffffffffffffff166127b5611d10565b73ffffffffffffffffffffffffffffffffffffffff161461280b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161280290614d60565b60405180910390fd5b6109c4811115612850576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161284790614ce0565b60405180910390fd5b80600f819055507f34aa6aa40570d43caa26f462478d997d743a353218119ac500de5211f13533ee816040516128869190614ea0565b60405180910390a150565b7fe48329057bfd03d55e49b547132e39cffd9c1820ad7b9d4c5307691425d15adf81565b3373ffffffffffffffffffffffffffffffffffffffff166128d4611d10565b73ffffffffffffffffffffffffffffffffffffffff161461292a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292190614d60565b60405180910390fd5b600081141561293857600080fd5b80600c8190555050565b3373ffffffffffffffffffffffffffffffffffffffff16612961611d10565b73ffffffffffffffffffffffffffffffffffffffff16146129b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129ae90614d60565b60405180910390fd5b80600d8190555050565b6006602052816000526040600020602052806000526040600020600091509150508060000160009054906101000a900463ffffffff16908060010154905082565b3373ffffffffffffffffffffffffffffffffffffffff16612a21611d10565b73ffffffffffffffffffffffffffffffffffffffff1614612a77576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a6e90614d60565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612ae7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ade90614c80565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600d5481565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b601a6020528060005260406000206000915090505481565b60008060146001601354612bff9190615105565b81548110612c1057612c0f615376565b5b906000526020600020015460156001601354612c2c9190615105565b81548110612c3d57612c3c615376565b5b9060005260206000200154915091509091565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612cc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cbf90614de0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d2f90614ca0565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051612e169190614ea0565b60405180910390a3505050565b6000612e2d610d8e565b90506000612e39611840565b90506000828285612e4a91906150ab565b612e549190615049565b905080601a60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612ea59190614fb9565b9250508190555080601b60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612efb9190614fb9565b92505081905550612f0d86868661337c565b505050505050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000612f84846116c2565b905082600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167f3134e8a2e6d97e929a7e54011ea5485d7d196dd5f0ba4d4ef95803e8e3fc257f60405160405180910390a4613080828483613455565b50505050565b61309082826136f6565b6130fb6000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613455565b5050565b6131808363a9059cbb60e01b848460405160240161311e929190614a5e565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506138cd565b505050565b6201518061319161224d565b1061327057427ffee3046ab1d7c129896e60131ef46e7d50ee8f366aaf63ef9f0d0176518708a46131c0611de4565b6040516131cd9190614ea0565b60405180910390a2426016819055506131e4611840565b6017819055506011546018819055506012546019819055506014613206611e4b565b908060018154018082558091505060019003906000526020600020016000909190919091505560154290806001815401808255809150506001900390600052602060002001600090919091909150556001601360008282546132689190614fb9565b925050819055505b565b61327c8282613994565b6132e76000600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613455565b5050565b61336e846323b872dd60e01b85858560405160240161330c93929190614a27565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506138cd565b50505050565b600046905090565b613387838383613af4565b613450600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683613455565b505050565b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156134915750600081115b156136f157600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146135c3576000600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116135345760006135a1565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846135829190615139565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600083826135b19190615105565b90506135bf86848484613d75565b5050505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146136f0576000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900463ffffffff1690506000808263ffffffff16116136615760006136ce565b600660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006001846136af9190615139565b63ffffffff1663ffffffff168152602001908152602001600020600101545b9050600083826136de9190614fb9565b90506136ec85848484613d75565b5050505b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613766576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161375d90614d80565b60405180910390fd5b6137728260008361401e565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156137f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016137ef90614c20565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816002600082825461384f9190615105565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516138b49190614ea0565b60405180910390a36138c883600084614023565b505050565b600061392f826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166140289092919063ffffffff16565b905060008151111561398f578080602001905181019061394f91906144c6565b61398e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161398590614e20565b60405180910390fd5b5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613a04576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016139fb90614e80565b60405180910390fd5b613a106000838361401e565b8060026000828254613a229190614fb9565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613a779190614fb9565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051613adc9190614ea0565b60405180910390a3613af060008383614023565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415613b64576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613b5b90614dc0565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613bcb90614c00565b60405180910390fd5b613bdf83838361401e565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015613c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401613c5c90614cc0565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254613cf89190614fb9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051613d5c9190614ea0565b60405180910390a3613d6f848484614023565b50505050565b6000613d9943604051806060016040528060358152602001615aa760359139614040565b905060008463ffffffff16118015613e3757508063ffffffff16600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600187613e019190615139565b63ffffffff1663ffffffff16815260200190815260200160002060000160009054906101000a900463ffffffff1663ffffffff16145b15613eb15781600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600187613e8b9190615139565b63ffffffff1663ffffffff16815260200190815260200160002060010181905550613fc7565b60405180604001604052808263ffffffff16815260200183815250600660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008663ffffffff1663ffffffff16815260200190815260200160002060008201518160000160006101000a81548163ffffffff021916908363ffffffff16021790555060208201518160010155905050600184613f69919061500f565b600760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548163ffffffff021916908363ffffffff1602179055505b8473ffffffffffffffffffffffffffffffffffffffff167fdec2bacdd2f05b59de34da9b523dff8be42e5e38e818c82fdb0bae774387a724848460405161400f929190614ebb565b60405180910390a25050505050565b505050565b505050565b60606140378484600085614096565b90509392505050565b60006401000000008310829061408c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140839190614bde565b60405180910390fd5b5082905092915050565b6060824710156140db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016140d290614d00565b60405180910390fd5b6140e4856141aa565b614123576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161411a90614e00565b60405180910390fd5b6000808673ffffffffffffffffffffffffffffffffffffffff16858760405161414c91906149be565b60006040518083038185875af1925050503d8060008114614189576040519150601f19603f3d011682016040523d82523d6000602084013e61418e565b606091505b509150915061419e8282866141bd565b92505050949350505050565b600080823b905060008111915050919050565b606083156141cd5782905061421d565b6000835111156141e05782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016142149190614bde565b60405180910390fd5b9392505050565b60008135905061423381615a1c565b92915050565b60008135905061424881615a33565b92915050565b60008151905061425d81615a33565b92915050565b60008135905061427281615a4a565b92915050565b60008135905061428781615a61565b92915050565b60008151905061429c81615a61565b92915050565b6000813590506142b181615a78565b92915050565b6000813590506142c681615a8f565b92915050565b6000602082840312156142e2576142e16153d4565b5b60006142f084828501614224565b91505092915050565b600080604083850312156143105761430f6153d4565b5b600061431e85828601614224565b925050602061432f85828601614224565b9150509250929050565b600080600060608486031215614352576143516153d4565b5b600061436086828701614224565b935050602061437186828701614224565b925050604061438286828701614278565b9150509250925092565b600080604083850312156143a3576143a26153d4565b5b60006143b185828601614224565b92505060206143c285828601614278565b9150509250929050565b60008060008060008060c087890312156143e9576143e86153d4565b5b60006143f789828a01614224565b965050602061440889828a01614278565b955050604061441989828a01614278565b945050606061442a89828a016142b7565b935050608061443b89828a01614263565b92505060a061444c89828a01614263565b9150509295509295509295565b600080604083850312156144705761446f6153d4565b5b600061447e85828601614224565b925050602061448f858286016142a2565b9150509250929050565b6000602082840312156144af576144ae6153d4565b5b60006144bd84828501614239565b91505092915050565b6000602082840312156144dc576144db6153d4565b5b60006144ea8482850161424e565b91505092915050565b600060208284031215614509576145086153d4565b5b600061451784828501614278565b91505092915050565b600060208284031215614536576145356153d4565b5b60006145448482850161428d565b91505092915050565b60006145598383614982565b60208301905092915050565b61456e8161516d565b82525050565b600061457f82614f53565b6145898185614f81565b935061459483614f43565b8060005b838110156145c55781516145ac888261454d565b97506145b783614f74565b925050600181019050614598565b5085935050505092915050565b6145db8161517f565b82525050565b6145ea8161518b565b82525050565b6146016145fc8261518b565b6152ae565b82525050565b600061461282614f5e565b61461c8185614f92565b935061462c818560208601615200565b80840191505092915050565b614641816151dc565b82525050565b600061465282614f69565b61465c8185614f9d565b935061466c818560208601615200565b614675816153d9565b840191505092915050565b600061468d602383614f9d565b9150614698826153ea565b604082019050919050565b60006146b0602283614f9d565b91506146bb82615439565b604082019050919050565b60006146d3603483614f9d565b91506146de82615488565b604082019050919050565b60006146f6602383614f9d565b9150614701826154d7565b604082019050919050565b6000614719602683614f9d565b915061472482615526565b604082019050919050565b600061473c602283614f9d565b915061474782615575565b604082019050919050565b600061475f600283614fae565b915061476a826155c4565b600282019050919050565b6000614782602683614f9d565b915061478d826155ed565b604082019050919050565b60006147a5603383614f9d565b91506147b08261563c565b604082019050919050565b60006147c8602683614f9d565b91506147d38261568b565b604082019050919050565b60006147eb602883614f9d565b91506147f6826156da565b604082019050919050565b600061480e602783614f9d565b915061481982615729565b604082019050919050565b6000614831602083614f9d565b915061483c82615778565b602082019050919050565b6000614854602183614f9d565b915061485f826157a1565b604082019050919050565b6000614877602783614f9d565b9150614882826157f0565b604082019050919050565b600061489a602583614f9d565b91506148a58261583f565b604082019050919050565b60006148bd602483614f9d565b91506148c88261588e565b604082019050919050565b60006148e0601d83614f9d565b91506148eb826158dd565b602082019050919050565b6000614903602a83614f9d565b915061490e82615906565b604082019050919050565b6000614926602883614f9d565b915061493182615955565b604082019050919050565b6000614949602583614f9d565b9150614954826159a4565b604082019050919050565b600061496c601f83614f9d565b9150614977826159f3565b602082019050919050565b61498b816151b5565b82525050565b61499a816151b5565b82525050565b6149a9816151bf565b82525050565b6149b8816151cf565b82525050565b60006149ca8284614607565b915081905092915050565b60006149e082614752565b91506149ec82856145f0565b6020820191506149fc82846145f0565b6020820191508190509392505050565b6000602082019050614a216000830184614565565b92915050565b6000606082019050614a3c6000830186614565565b614a496020830185614565565b614a566040830184614991565b949350505050565b6000604082019050614a736000830185614565565b614a806020830184614991565b9392505050565b60006040820190508181036000830152614aa18185614574565b90508181036020830152614ab58184614574565b90509392505050565b6000602082019050614ad360008301846145d2565b92915050565b6000602082019050614aee60008301846145e1565b92915050565b6000608082019050614b0960008301876145e1565b614b166020830186614565565b614b236040830185614991565b614b306060830184614991565b95945050505050565b6000608082019050614b4e60008301876145e1565b614b5b60208301866145e1565b614b686040830185614991565b614b756060830184614565565b95945050505050565b6000608082019050614b9360008301876145e1565b614ba060208301866149af565b614bad60408301856145e1565b614bba60608301846145e1565b95945050505050565b6000602082019050614bd86000830184614638565b92915050565b60006020820190508181036000830152614bf88184614647565b905092915050565b60006020820190508181036000830152614c1981614680565b9050919050565b60006020820190508181036000830152614c39816146a3565b9050919050565b60006020820190508181036000830152614c59816146c6565b9050919050565b60006020820190508181036000830152614c79816146e9565b9050919050565b60006020820190508181036000830152614c998161470c565b9050919050565b60006020820190508181036000830152614cb98161472f565b9050919050565b60006020820190508181036000830152614cd981614775565b9050919050565b60006020820190508181036000830152614cf981614798565b9050919050565b60006020820190508181036000830152614d19816147bb565b9050919050565b60006020820190508181036000830152614d39816147de565b9050919050565b60006020820190508181036000830152614d5981614801565b9050919050565b60006020820190508181036000830152614d7981614824565b9050919050565b60006020820190508181036000830152614d9981614847565b9050919050565b60006020820190508181036000830152614db98161486a565b9050919050565b60006020820190508181036000830152614dd98161488d565b9050919050565b60006020820190508181036000830152614df9816148b0565b9050919050565b60006020820190508181036000830152614e19816148d3565b9050919050565b60006020820190508181036000830152614e39816148f6565b9050919050565b60006020820190508181036000830152614e5981614919565b9050919050565b60006020820190508181036000830152614e798161493c565b9050919050565b60006020820190508181036000830152614e998161495f565b9050919050565b6000602082019050614eb56000830184614991565b92915050565b6000604082019050614ed06000830185614991565b614edd6020830184614991565b9392505050565b6000602082019050614ef960008301846149a0565b92915050565b6000604082019050614f1460008301856149a0565b614f216020830184614991565b9392505050565b6000602082019050614f3d60008301846149af565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b6000614fc4826151b5565b9150614fcf836151b5565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115615004576150036152e9565b5b828201905092915050565b600061501a826151bf565b9150615025836151bf565b92508263ffffffff0382111561503e5761503d6152e9565b5b828201905092915050565b6000615054826151b5565b915061505f836151b5565b92508261506f5761506e615318565b5b828204905092915050565b6000615085826151bf565b9150615090836151bf565b9250826150a05761509f615318565b5b828204905092915050565b60006150b6826151b5565b91506150c1836151b5565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156150fa576150f96152e9565b5b828202905092915050565b6000615110826151b5565b915061511b836151b5565b92508282101561512e5761512d6152e9565b5b828203905092915050565b6000615144826151bf565b915061514f836151bf565b925082821015615162576151616152e9565b5b828203905092915050565b600061517882615195565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006151e7826151ee565b9050919050565b60006151f982615195565b9050919050565b60005b8381101561521e578082015181840152602081019050615203565b8381111561522d576000848401525b50505050565b6000600282049050600182168061524b57607f821691505b6020821081141561525f5761525e615347565b5b50919050565b6000615270826151b5565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156152a3576152a26152e9565b5b600182019050919050565b6000819050919050565b60006152c3826151b5565b91506152ce836151b5565b9250826152de576152dd615318565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b7f43616e27742068617665206c75636b7950656e6775696e52657761726442502060008201527f67726561746572207468616e206d6178696d756d000000000000000000000000602082015250565b7f58504546493a3a64656c656761746542795369673a20696e76616c6964206e6f60008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f1901000000000000000000000000000000000000000000000000000000000000600082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b7f43616e277420686176652070617065722068616e64732070656e616c7479206760008201527f726561746572207468616e206d6178696d756d00000000000000000000000000602082015250565b7f416464726573733a20696e73756666696369656e742062616c616e636520666f60008201527f722063616c6c0000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b7f58504546493a3a64656c656761746542795369673a20696e76616c696420736960008201527f676e617475726500000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b7f58504546493a3a64656c656761746542795369673a207369676e61747572652060008201527f6578706972656400000000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000600082015250565b7f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008201527f6f74207375636365656400000000000000000000000000000000000000000000602082015250565b7f58504546493a3a6765745072696f72566f7465733a206e6f742079657420646560008201527f7465726d696e6564000000000000000000000000000000000000000000000000602082015250565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b615a258161516d565b8114615a3057600080fd5b50565b615a3c8161517f565b8114615a4757600080fd5b50565b615a538161518b565b8114615a5e57600080fd5b50565b615a6a816151b5565b8114615a7557600080fd5b50565b615a81816151bf565b8114615a8c57600080fd5b50565b615a98816151cf565b8114615aa357600080fd5b5056fe58504546493a3a5f7772697465436865636b706f696e743a20626c6f636b206e756d62657220657863656564732033322062697473a26469706673582212203d787516a004b2b8479e98ee15a5904c29871ff415a90ddd2bc7515a7ed0f39064736f6c63430008060033000000000000000000000000e896cdeaac9615145c0ca09c8cd5c25bced6384c0000000000000000000000000000000000000000000000000000000000000071