[ { "inputs": [], "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": false, "internalType": "uint256", "name": "buyTaxTotal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "buyMarketingTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "buyProjectTax", "type": "uint256" } ], "name": "BuyFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "DisabledTransferDelay", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "ExcludeFromLimits", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "LimitsRemoved", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "MarketingWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxTx", "type": "uint256" } ], "name": "MaxTxUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "maxWallet", "type": "uint256" } ], "name": "MaxWalletUpdated", "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": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "ProjectWalletUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "sellTaxTotal", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellMarketingTax", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "sellProjectTax", "type": "uint256" } ], "name": "SellFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pair", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetAutomatedMarketMakerPair", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "bool", "name": "enabled", "type": "bool" }, { "indexed": false, "internalType": "uint256", "name": "swapBackValueMin", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "swapBackValueMax", "type": "uint256" } ], "name": "SwapbackSettingsUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "TradingEnabled", "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" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newAddress", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldAddress", "type": "address" } ], "name": "UpdateUniswapV2Router", "type": "event" }, { "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": "newWallet", "type": "address" } ], "name": "changeMarketingWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newWallet", "type": "address" } ], "name": "changeProjectWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_target", "type": "address" } ], "name": "checkMappings", "outputs": [ { "internalType": "bool", "name": "_transferTaxExempt", "type": "bool" }, { "internalType": "bool", "name": "_transferLimitExempt", "type": "bool" }, { "internalType": "bool", "name": "_automatedMarketMakerPairs", "type": "bool" } ], "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": [], "name": "dexPair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "disableTransferDelay", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "exemptFromFees", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "updAds", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "exemptFromLimits", "outputs": [], "stateMutability": "nonpayable", "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": "maxTxValues", "outputs": [ { "internalType": "bool", "name": "_limitsEnabled", "type": "bool" }, { "internalType": "bool", "name": "_transferDelayEnabled", "type": "bool" }, { "internalType": "uint256", "name": "_maxWallet", "type": "uint256" }, { "internalType": "uint256", "name": "_maxTx", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "receiverwallets", "outputs": [ { "internalType": "address", "name": "_marketingWallet", "type": "address" }, { "internalType": "address", "name": "_projectWallet", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "removeAllLimits", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "pair", "type": "address" }, { "internalType": "bool", "name": "value", "type": "bool" } ], "name": "setAutomatedMarketMakerPair", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" } ], "name": "setFeesBuy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_marketingFee", "type": "uint256" }, { "internalType": "uint256", "name": "_devFee", "type": "uint256" } ], "name": "setFeesSell", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_enabled", "type": "bool" }, { "internalType": "uint256", "name": "_min", "type": "uint256" }, { "internalType": "uint256", "name": "_max", "type": "uint256" } ], "name": "setSwapBackSettings", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "setTheMaxTx", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "setTheMaxWallet", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "startTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapbackValues", "outputs": [ { "internalType": "bool", "name": "_swapbackEnabled", "type": "bool" }, { "internalType": "uint256", "name": "_swapBackValueMin", "type": "uint256" }, { "internalType": "uint256", "name": "_swapBackValueMax", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "taxValues", "outputs": [ { "internalType": "uint256", "name": "_buyTaxTotal", "type": "uint256" }, { "internalType": "uint256", "name": "_buyMarketingTax", "type": "uint256" }, { "internalType": "uint256", "name": "_buyProjectTax", "type": "uint256" }, { "internalType": "uint256", "name": "_sellTaxTotal", "type": "uint256" }, { "internalType": "uint256", "name": "_sellMarketingTax", "type": "uint256" }, { "internalType": "uint256", "name": "_sellProjectTax", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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" }, { "stateMutability": "payable", "type": "receive" } ]
60c06040525f600560156101000a81548160ff021916908315150217905550600160085f6101000a81548160ff0219169083151502179055506001600860016101000a81548160ff0219169083151502179055505f600c5f6101000a81548160ff021916908315150217905550348015610077575f80fd5b506040518060400160405280600981526020017f46554120546f6b656e00000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f465541000000000000000000000000000000000000000000000000000000000081525081600390816100f39190610e59565b5080600490816101039190610e59565b5050506101226101176105b660201b60201c565b6105bd60201b60201c565b5f737a250d5630b4cf539739df2c5dacb4c659f2488d905061014b81600161068060201b60201c565b8073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101c8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101ec9190610f86565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610251573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102759190610f86565b6040518363ffffffff1660e01b8152600401610292929190610fc0565b6020604051808303815f875af11580156102ae573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102d29190610f86565b73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505061031860a051600161068060201b60201c565b61032b60a05160016107ae60201b60201c565b5f805f600390505f8061034261084c60201b60201c565b600a61034e919061114f565b64293605aa0061035e9190611199565b90506103e8600a826103709190611199565b61037a9190611207565b600a819055506103e8600a826103909190611199565b61039a9190611207565b6009819055506103e86001826103b09190611199565b6103ba9190611207565b60068190555060646002826103cf9190611199565b6103d99190611207565b60078190555084600f8190555083601081905550601054600f546103fd9190611237565b600e8190555082601281905550816013819055506013546012546104219190611237565b60118190555073e4f138ffcd521cc754f5e166f1a0f57873fd9920600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506104cd33600161085460201b60201c565b6104de30600161085460201b60201c565b6104f161dead600161085460201b60201c565b610524600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161085460201b60201c565b61053533600161068060201b60201c565b61054630600161068060201b60201c565b61055961dead600161068060201b60201c565b61058c600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600161068060201b60201c565b61059b3361098260201b60201c565b6105ab3382610a8a60201b60201c565b505050505050611433565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61068e6105b660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166106b2610bed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610708576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106ff906112c4565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc92826040516107a291906112fc565b60405180910390a25050565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f6012905090565b6108626105b660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16610886610bed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16146108dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108d3906112c4565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df78260405161097691906112fc565b60405180910390a25050565b6109906105b660201b60201c565b73ffffffffffffffffffffffffffffffffffffffff166109b4610bed60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614610a0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a01906112c4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6f90611385565b60405180910390fd5b610a87816105bd60201b60201c565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610aef906113ed565b60405180910390fd5b610b095f8383610c1560201b60201c565b8060025f828254610b1a9190611237565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610b6c9190611237565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610bd0919061141a565b60405180910390a3610be95f8383610c1a60201b60201c565b5050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680610c9a57607f821691505b602082108103610cad57610cac610c56565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302610d0f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610cd4565b610d198683610cd4565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f610d5d610d58610d5384610d31565b610d3a565b610d31565b9050919050565b5f819050919050565b610d7683610d43565b610d8a610d8282610d64565b848454610ce0565b825550505050565b5f90565b610d9e610d92565b610da9818484610d6d565b505050565b5b81811015610dcc57610dc15f82610d96565b600181019050610daf565b5050565b601f821115610e1157610de281610cb3565b610deb84610cc5565b81016020851015610dfa578190505b610e0e610e0685610cc5565b830182610dae565b50505b505050565b5f82821c905092915050565b5f610e315f1984600802610e16565b1980831691505092915050565b5f610e498383610e22565b9150826002028217905092915050565b610e6282610c1f565b67ffffffffffffffff811115610e7b57610e7a610c29565b5b610e858254610c83565b610e90828285610dd0565b5f60209050601f831160018114610ec1575f8415610eaf578287015190505b610eb98582610e3e565b865550610f20565b601f198416610ecf86610cb3565b5f5b82811015610ef657848901518255600182019150602085019450602081019050610ed1565b86831015610f135784890151610f0f601f891682610e22565b8355505b6001600288020188555050505b505050505050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f610f5582610f2c565b9050919050565b610f6581610f4b565b8114610f6f575f80fd5b50565b5f81519050610f8081610f5c565b92915050565b5f60208284031215610f9b57610f9a610f28565b5b5f610fa884828501610f72565b91505092915050565b610fba81610f4b565b82525050565b5f604082019050610fd35f830185610fb1565b610fe06020830184610fb1565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156110695780860481111561104557611044610fe7565b5b60018516156110545780820291505b808102905061106285611014565b9450611029565b94509492505050565b5f82611081576001905061113c565b8161108e575f905061113c565b81600181146110a457600281146110ae576110dd565b600191505061113c565b60ff8411156110c0576110bf610fe7565b5b8360020a9150848211156110d7576110d6610fe7565b5b5061113c565b5060208310610133831016604e8410600b84101617156111125782820a90508381111561110d5761110c610fe7565b5b61113c565b61111f8484846001611020565b9250905081840481111561113657611135610fe7565b5b81810290505b9392505050565b5f60ff82169050919050565b5f61115982610d31565b915061116483611143565b92506111917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611072565b905092915050565b5f6111a382610d31565b91506111ae83610d31565b92508282026111bc81610d31565b915082820484148315176111d3576111d2610fe7565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61121182610d31565b915061121c83610d31565b92508261122c5761122b6111da565b5b828204905092915050565b5f61124182610d31565b915061124c83610d31565b925082820190508082111561126457611263610fe7565b5b92915050565b5f82825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6112ae60208361126a565b91506112b98261127a565b602082019050919050565b5f6020820190508181035f8301526112db816112a2565b9050919050565b5f8115159050919050565b6112f6816112e2565b82525050565b5f60208201905061130f5f8301846112ed565b92915050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61136f60268361126a565b915061137a82611315565b604082019050919050565b5f6020820190508181035f83015261139c81611363565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f6113d7601f8361126a565b91506113e2826113a3565b602082019050919050565b5f6020820190508181035f830152611404816113cb565b9050919050565b61141481610d31565b82525050565b5f60208201905061142d5f83018461140b565b92915050565b60805160a0516148fa6114775f395f818161122101528181611beb015261241201525f81816123ba015281816132ae0152818161338d01526133b401526148fa5ff3fe6080604052600436106101fc575f3560e01c806399e5b5c81161010c578063db05e5cb1161009f578063f242ab411161006e578063f242ab41146106fe578063f2fde38b14610728578063f3dc390214610750578063fab82a8e1461077f578063fcbb7607146107aa57610203565b8063db05e5cb14610658578063dd62ed3e1461066e578063e13b2007146106aa578063e884f260146106e857610203565b8063a457c2d7116100db578063a457c2d714610590578063a9059cbb146105cc578063bb85c6d114610608578063d08893581461063057610203565b806399e5b5c8146104f05780639a7a23d6146105185780639b6b5499146105405780639fe640941461056857610203565b80634ada218b1161018f57806370a082311161015e57806370a082311461041e578063715018a61461045a57806377b5312c146104705780638da5cb5b1461049c57806395d89b41146104c657610203565b80634ada218b1461037c5780634b896a3e146103a657806352d65858146103ce5780635580145f146103f657610203565b8063293230b8116101cb578063293230b8146102d3578063313ce567146102e957806331f8151114610313578063395093511461034057610203565b806306fdde0314610207578063095ea7b31461023157806318160ddd1461026d57806323b872dd1461029757610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b6107d2565b60405161022891906134c9565b60405180910390f35b34801561023c575f80fd5b506102576004803603810190610252919061357a565b610862565b60405161026491906135d2565b60405180910390f35b348015610278575f80fd5b5061028161087f565b60405161028e91906135fa565b60405180910390f35b3480156102a2575f80fd5b506102bd60048036038101906102b89190613613565b610888565b6040516102ca91906135d2565b60405180910390f35b3480156102de575f80fd5b506102e761097a565b005b3480156102f4575f80fd5b506102fd610a5a565b60405161030a919061367e565b60405180910390f35b34801561031e575f80fd5b50610327610a62565b6040516103379493929190613697565b60405180910390f35b34801561034b575f80fd5b506103666004803603810190610361919061357a565b610a99565b60405161037391906135d2565b60405180910390f35b348015610387575f80fd5b50610390610b40565b60405161039d91906135d2565b60405180910390f35b3480156103b1575f80fd5b506103cc60048036038101906103c791906136da565b610b52565b005b3480156103d9575f80fd5b506103f460048036038101906103ef9190613705565b610c74565b005b348015610401575f80fd5b5061041c600480360381019061041791906136da565b610d9f565b005b348015610429575f80fd5b50610444600480360381019061043f9190613743565b610ec1565b60405161045191906135fa565b60405180910390f35b348015610465575f80fd5b5061046e610f06565b005b34801561047b575f80fd5b50610484610f8d565b6040516104939392919061376e565b60405180910390f35b3480156104a7575f80fd5b506104b0610fb1565b6040516104bd91906137b2565b60405180910390f35b3480156104d1575f80fd5b506104da610fd9565b6040516104e791906134c9565b60405180910390f35b3480156104fb575f80fd5b5061051660048036038101906105119190613743565b611069565b005b348015610523575f80fd5b5061053e600480360381019061053991906137f5565b6111a3565b005b34801561054b575f80fd5b50610566600480360381019061056191906137f5565b6112bb565b005b348015610573575f80fd5b5061058e60048036038101906105899190613705565b6113dd565b005b34801561059b575f80fd5b506105b660048036038101906105b1919061357a565b611508565b6040516105c391906135d2565b60405180910390f35b3480156105d7575f80fd5b506105f260048036038101906105ed919061357a565b6115ee565b6040516105ff91906135d2565b60405180910390f35b348015610613575f80fd5b5061062e60048036038101906106299190613743565b61160b565b005b34801561063b575f80fd5b5061065660048036038101906106519190613833565b611747565b005b348015610663575f80fd5b5061066c6118f0565b005b348015610679575f80fd5b50610694600480360381019061068f9190613883565b6119b4565b6040516106a191906135fa565b60405180910390f35b3480156106b5575f80fd5b506106d060048036038101906106cb9190613743565b611a36565b6040516106df939291906138c1565b60405180910390f35b3480156106f3575f80fd5b506106fc611b24565b005b348015610709575f80fd5b50610712611be9565b60405161071f91906137b2565b60405180910390f35b348015610733575f80fd5b5061074e60048036038101906107499190613743565b611c0d565b005b34801561075b575f80fd5b50610764611d03565b604051610776969594939291906138f6565b60405180910390f35b34801561078a575f80fd5b50610793611d2f565b6040516107a1929190613955565b60405180910390f35b3480156107b5575f80fd5b506107d060048036038101906107cb91906137f5565b611d7e565b005b6060600380546107e1906139a9565b80601f016020809104026020016040519081016040528092919081815260200182805461080d906139a9565b80156108585780601f1061082f57610100808354040283529160200191610858565b820191905f5260205f20905b81548152906001019060200180831161083b57829003601f168201915b5050505050905090565b5f61087561086e611ea0565b8484611ea7565b6001905092915050565b5f600254905090565b5f61089484848461206a565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6108db611ea0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490508281101561095a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161095190613a49565b60405180910390fd5b61096e85610966611ea0565b858403611ea7565b60019150509392505050565b610982611ea0565b73ffffffffffffffffffffffffffffffffffffffff166109a0610fb1565b73ffffffffffffffffffffffffffffffffffffffff16146109f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109ed90613ab1565b60405180910390fd5b6001600c5f6101000a81548160ff0219169083151502179055506001600560156101000a81548160ff021916908315150217905550427fb3da2db3dfc3778f99852546c6e9ab39ec253f9de7b0847afec61bd27878e92360405160405180910390a2565b5f6012905090565b5f805f8060085f9054906101000a900460ff169350600860019054906101000a900460ff1692506009549150600a54905090919293565b5f610b36610aa5611ea0565b848460015f610ab2611ea0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610b319190613afc565b611ea7565b6001905092915050565b600c5f9054906101000a900460ff1681565b610b5a611ea0565b73ffffffffffffffffffffffffffffffffffffffff16610b78610fb1565b73ffffffffffffffffffffffffffffffffffffffff1614610bce576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bc590613ab1565b60405180910390fd5b6005811015610c12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c0990613b9f565b60405180910390fd5b6103e8610c1d61087f565b82610c289190613bbd565b610c329190613c2b565b6009819055507f12528a3c61e0f3b2d6fc707a9fc58b1af86e252cad0d7f4c154ebeabb162dace600954604051610c6991906135fa565b60405180910390a150565b610c7c611ea0565b73ffffffffffffffffffffffffffffffffffffffff16610c9a610fb1565b73ffffffffffffffffffffffffffffffffffffffff1614610cf0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ce790613ab1565b60405180910390fd5b81600f8190555080601081905550601054600f54610d0e9190613afc565b600e819055506064600e541115610d5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d5190613ccb565b60405180910390fd5b7f38513c502b0ab4834ac1df9502b76f75dcf7092469782cfd0db7fe664388e25e600e54600f54601054604051610d9393929190613ce9565b60405180910390a15050565b610da7611ea0565b73ffffffffffffffffffffffffffffffffffffffff16610dc5610fb1565b73ffffffffffffffffffffffffffffffffffffffff1614610e1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1290613ab1565b60405180910390fd5b6002811015610e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5690613d68565b60405180910390fd5b6103e8610e6a61087f565b82610e759190613bbd565b610e7f9190613c2b565b600a819055507fff3dd5e80294197918c284bbfc3dadd97d0b40ce92106110946329088f80068a600a54604051610eb691906135fa565b60405180910390a150565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610f0e611ea0565b73ffffffffffffffffffffffffffffffffffffffff16610f2c610fb1565b73ffffffffffffffffffffffffffffffffffffffff1614610f82576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7990613ab1565b60405180910390fd5b610f8b5f612c59565b565b5f805f600560159054906101000a900460ff16925060065491506007549050909192565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610fe8906139a9565b80601f0160208091040260200160405190810160405280929190818152602001828054611014906139a9565b801561105f5780601f106110365761010080835404028352916020019161105f565b820191905f5260205f20905b81548152906001019060200180831161104257829003601f168201915b5050505050905090565b611071611ea0565b73ffffffffffffffffffffffffffffffffffffffff1661108f610fb1565b73ffffffffffffffffffffffffffffffffffffffff16146110e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110dc90613ab1565b60405180910390fd5b600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fb91dbdeaf34f885ccae2d8abc3967cb03c079b6af2c7944e3893fd29427d75e760405160405180910390a380600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6111ab611ea0565b73ffffffffffffffffffffffffffffffffffffffff166111c9610fb1565b73ffffffffffffffffffffffffffffffffffffffff161461121f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121690613ab1565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036112ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a490613df6565b60405180910390fd5b6112b78282612d1c565b5050565b6112c3611ea0565b73ffffffffffffffffffffffffffffffffffffffff166112e1610fb1565b73ffffffffffffffffffffffffffffffffffffffff1614611337576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161132e90613ab1565b60405180910390fd5b8060165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f9d8f7706ea1113d1a167b526eca956215946dd36cc7df39eb16180222d8b5df7826040516113d191906135d2565b60405180910390a25050565b6113e5611ea0565b73ffffffffffffffffffffffffffffffffffffffff16611403610fb1565b73ffffffffffffffffffffffffffffffffffffffff1614611459576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145090613ab1565b60405180910390fd5b81601281905550806013819055506013546012546114779190613afc565b601181905550606460115411156114c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114ba90613e84565b60405180910390fd5b7fcb5f36df892836a2eaedc349de29a7581176990398ee185d16eaa8f6c1abd8f16011546012546013546040516114fc93929190613ce9565b60405180910390a15050565b5f8060015f611515611ea0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050828110156115cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c690613f12565b60405180910390fd5b6115e36115da611ea0565b85858403611ea7565b600191505092915050565b5f6116016115fa611ea0565b848461206a565b6001905092915050565b611613611ea0565b73ffffffffffffffffffffffffffffffffffffffff16611631610fb1565b73ffffffffffffffffffffffffffffffffffffffff1614611687576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167e90613ab1565b60405180910390fd5b600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8616c7a330e3cf61290821331585511f1e2778171e2b005fb5ec60cfe874dc6760405160405180910390a380600c60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b61174f611ea0565b73ffffffffffffffffffffffffffffffffffffffff1661176d610fb1565b73ffffffffffffffffffffffffffffffffffffffff16146117c3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ba90613ab1565b60405180910390fd5b6001821015611807576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117fe90613fa0565b60405180910390fd5b8181101561184a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118419061402e565b60405180910390fd5b82600560156101000a81548160ff0219169083151502179055506127108261187061087f565b61187a9190613bbd565b6118849190613c2b565b6006819055506127108161189661087f565b6118a09190613bbd565b6118aa9190613c2b565b6007819055507f52cd2cdb42ff0eeec9362d7ed5b04f64c8d022697128b5378fc51cea7e63c7798383836040516118e39392919061376e565b60405180910390a1505050565b6118f8611ea0565b73ffffffffffffffffffffffffffffffffffffffff16611916610fb1565b73ffffffffffffffffffffffffffffffffffffffff161461196c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161196390613ab1565b60405180910390fd5b5f60085f6101000a81548160ff021916908315150217905550427ff4eaa75eae08ae80c3daf791438dac1cff2cfd3b0bad2304ec7bbb067e50261660405160405180910390a2565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f805f60165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16925060175f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16915060185f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1690509193909250565b611b2c611ea0565b73ffffffffffffffffffffffffffffffffffffffff16611b4a610fb1565b73ffffffffffffffffffffffffffffffffffffffff1614611ba0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b9790613ab1565b60405180910390fd5b5f600860016101000a81548160ff021916908315150217905550427f26e776fcf7ca20aa79b5b946e9b5111f47205539ece9d7a7995271dd6a8b5bad60405160405180910390a2565b7f000000000000000000000000000000000000000000000000000000000000000081565b611c15611ea0565b73ffffffffffffffffffffffffffffffffffffffff16611c33610fb1565b73ffffffffffffffffffffffffffffffffffffffff1614611c89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8090613ab1565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611cf7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cee906140bc565b60405180910390fd5b611d0081612c59565b50565b5f805f805f80600e549550600f5494506010549350601154925060125491506013549050909192939495565b5f80600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915091509091565b611d86611ea0565b73ffffffffffffffffffffffffffffffffffffffff16611da4610fb1565b73ffffffffffffffffffffffffffffffffffffffff1614611dfa576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611df190613ab1565b60405180910390fd5b8060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f4b89c347592b1d537e066cb4ed98d87696ae35164745d7e370e4add16941dc9282604051611e9491906135d2565b60405180910390a25050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f0c9061414a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f7a906141d8565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161205d91906135fa565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036120d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120cf90614266565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612146576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213d906142f4565b60405180910390fd5b5f810361215d5761215883835f612dba565b612c54565b60085f9054906101000a900460ff161561280457612179610fb1565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156121e757506121b7610fb1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561221f57505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b8015612259575061dead73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156122725750600560149054906101000a900460ff16155b1561280357600c5f9054906101000a900460ff166123655760165f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612325575060165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b612364576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161235b90614382565b60405180910390fd5b5b600860019054906101000a900460ff161561252957612382610fb1565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415801561240957507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b801561246157507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b156125285743600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054106124e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124dc90614436565b60405180910390fd5b43600b5f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b60185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680156125c6575060175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561266d57600a54811115612610576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612607906144c4565b60405180910390fd5b60095461261c83610ec1565b826126279190613afc565b1115612668576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161265f9061452c565b60405180910390fd5b612802565b60185f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561270a575060175f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561275957600a54811115612754576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161274b906145ba565b60405180910390fd5b612801565b60175f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16612800576009546127b383610ec1565b826127be9190613afc565b11156127ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127f69061452c565b60405180910390fd5b5b5b5b5b5b5f61280e30610ec1565b90505f60065482101590508080156128325750600560159054906101000a900460ff165b801561284b5750600560149054906101000a900460ff16155b801561289e575060185f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b80156128f1575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015612944575060165f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15612987576001600560146101000a81548160ff02191690831515021790555061296c61302f565b5f600560146101000a81548160ff0219169083151502179055505b5f600560149054906101000a900460ff1615905060165f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612a36575060165f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612a3f575f90505b5f8115612c445760185f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612a9d57505f601154115b15612b3557612aca6064612abc601154886131dd90919063ffffffff16565b6131f290919063ffffffff16565b905060115460135482612add9190613bbd565b612ae79190613c2b565b60155f828254612af79190613afc565b9250508190555060115460125482612b0f9190613bbd565b612b199190613c2b565b60145f828254612b299190613afc565b92505081905550612c21565b60185f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612b8c57505f600e54115b15612c2057612bb96064612bab600e54886131dd90919063ffffffff16565b6131f290919063ffffffff16565b9050600e5460105482612bcc9190613bbd565b612bd69190613c2b565b60155f828254612be69190613afc565b92505081905550600e54600f5482612bfe9190613bbd565b612c089190613c2b565b60145f828254612c189190613afc565b925050819055505b5b5f811115612c3557612c34873083612dba565b5b8085612c4191906145d8565b94505b612c4f878787612dba565b505050505b505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b8060185f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508015158273ffffffffffffffffffffffffffffffffffffffff167fffa9187bf1f18bf477bd0ea1bcbb64e93b6a98132473929edfce215cd9b16fab60405160405180910390a35050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e1f90614266565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e8d906142f4565b60405180910390fd5b612ea1838383613207565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f1b9061467b565b60405180910390fd5b8181035f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612fb29190613afc565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161301691906135fa565b60405180910390a361302984848461320c565b50505050565b5f61303930610ec1565b90505f8190505f80830361304f575050506131db565b60075483111561305f5760075492505b5f8390505f47905061307082613211565b5f613084824761344490919063ffffffff16565b90505f6130ae866130a0601554856131dd90919063ffffffff16565b6131f290919063ffffffff16565b90505f6014819055505f601581905550600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681604051613103906146c6565b5f6040518083038185875af1925050503d805f811461313d576040519150601f19603f3d011682016040523d82523d5f602084013e613142565b606091505b505080955050600c60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161318e906146c6565b5f6040518083038185875af1925050503d805f81146131c8576040519150601f19603f3d011682016040523d82523d5f602084013e6131cd565b606091505b505080955050505050505050505b565b5f81836131ea9190613bbd565b905092915050565b5f81836131ff9190613c2b565b905092915050565b505050565b505050565b5f600267ffffffffffffffff81111561322d5761322c6146da565b5b60405190808252806020026020018201604052801561325b5781602001602082028036833780820191505090505b50905030815f8151811061327257613271614707565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015613315573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906133399190614748565b8160018151811061334d5761334c614707565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506133b2307f000000000000000000000000000000000000000000000000000000000000000084611ea7565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161341395949392919061486c565b5f604051808303815f87803b15801561342a575f80fd5b505af115801561343c573d5f803e3d5ffd5b505050505050565b5f818361345191906145d8565b905092915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f61349b82613459565b6134a58185613463565b93506134b5818560208601613473565b6134be81613481565b840191505092915050565b5f6020820190508181035f8301526134e18184613491565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613516826134ed565b9050919050565b6135268161350c565b8114613530575f80fd5b50565b5f813590506135418161351d565b92915050565b5f819050919050565b61355981613547565b8114613563575f80fd5b50565b5f8135905061357481613550565b92915050565b5f80604083850312156135905761358f6134e9565b5b5f61359d85828601613533565b92505060206135ae85828601613566565b9150509250929050565b5f8115159050919050565b6135cc816135b8565b82525050565b5f6020820190506135e55f8301846135c3565b92915050565b6135f481613547565b82525050565b5f60208201905061360d5f8301846135eb565b92915050565b5f805f6060848603121561362a576136296134e9565b5b5f61363786828701613533565b935050602061364886828701613533565b925050604061365986828701613566565b9150509250925092565b5f60ff82169050919050565b61367881613663565b82525050565b5f6020820190506136915f83018461366f565b92915050565b5f6080820190506136aa5f8301876135c3565b6136b760208301866135c3565b6136c460408301856135eb565b6136d160608301846135eb565b95945050505050565b5f602082840312156136ef576136ee6134e9565b5b5f6136fc84828501613566565b91505092915050565b5f806040838503121561371b5761371a6134e9565b5b5f61372885828601613566565b925050602061373985828601613566565b9150509250929050565b5f60208284031215613758576137576134e9565b5b5f61376584828501613533565b91505092915050565b5f6060820190506137815f8301866135c3565b61378e60208301856135eb565b61379b60408301846135eb565b949350505050565b6137ac8161350c565b82525050565b5f6020820190506137c55f8301846137a3565b92915050565b6137d4816135b8565b81146137de575f80fd5b50565b5f813590506137ef816137cb565b92915050565b5f806040838503121561380b5761380a6134e9565b5b5f61381885828601613533565b9250506020613829858286016137e1565b9150509250929050565b5f805f6060848603121561384a576138496134e9565b5b5f613857868287016137e1565b935050602061386886828701613566565b925050604061387986828701613566565b9150509250925092565b5f8060408385031215613899576138986134e9565b5b5f6138a685828601613533565b92505060206138b785828601613533565b9150509250929050565b5f6060820190506138d45f8301866135c3565b6138e160208301856135c3565b6138ee60408301846135c3565b949350505050565b5f60c0820190506139095f8301896135eb565b61391660208301886135eb565b61392360408301876135eb565b61393060608301866135eb565b61393d60808301856135eb565b61394a60a08301846135eb565b979650505050505050565b5f6040820190506139685f8301856137a3565b61397560208301846137a3565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806139c057607f821691505b6020821081036139d3576139d261397c565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613a33602883613463565b9150613a3e826139d9565b604082019050919050565b5f6020820190508181035f830152613a6081613a27565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613a9b602083613463565b9150613aa682613a67565b602082019050919050565b5f6020820190508181035f830152613ac881613a8f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613b0682613547565b9150613b1183613547565b9250828201905080821115613b2957613b28613acf565b5b92915050565b7f43616e6e6f7420736574206d617857616c6c6574206c6f776572207468616e205f8201527f302e352500000000000000000000000000000000000000000000000000000000602082015250565b5f613b89602483613463565b9150613b9482613b2f565b604082019050919050565b5f6020820190508181035f830152613bb681613b7d565b9050919050565b5f613bc782613547565b9150613bd283613547565b9250828202613be081613547565b91508282048414831517613bf757613bf6613acf565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613c3582613547565b9150613c4083613547565b925082613c5057613c4f613bfe565b5b828204905092915050565b7f546f74616c20627579206665652063616e6e6f742062652068696768657220745f8201527f68616e2031303025000000000000000000000000000000000000000000000000602082015250565b5f613cb5602883613463565b9150613cc082613c5b565b604082019050919050565b5f6020820190508181035f830152613ce281613ca9565b9050919050565b5f606082019050613cfc5f8301866135eb565b613d0960208301856135eb565b613d1660408301846135eb565b949350505050565b7f43616e6e6f7420736574206d61785478206c6f776572207468616e20302e32255f82015250565b5f613d52602083613463565b9150613d5d82613d1e565b602082019050919050565b5f6020820190508181035f830152613d7f81613d46565b9050919050565b7f54686520706169722063616e6e6f742062652072656d6f7665642066726f6d205f8201527f6175746f6d617465644d61726b65744d616b6572506169727300000000000000602082015250565b5f613de0603983613463565b9150613deb82613d86565b604082019050919050565b5f6020820190508181035f830152613e0d81613dd4565b9050919050565b7f546f74616c2073656c6c206665652063616e6e6f7420626520686967686572205f8201527f7468616e20313030250000000000000000000000000000000000000000000000602082015250565b5f613e6e602983613463565b9150613e7982613e14565b604082019050919050565b5f6020820190508181035f830152613e9b81613e62565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613efc602583613463565b9150613f0782613ea2565b604082019050919050565b5f6020820190508181035f830152613f2981613ef0565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e30312520746f74616c20737570706c792e000000000000000000000000602082015250565b5f613f8a603483613463565b9150613f9582613f30565b604082019050919050565b5f6020820190508181035f830152613fb781613f7e565b9050919050565b7f6d6178696d756d20616d6f756e742063616e74206265206869676865722074685f8201527f616e206d696e696d756d00000000000000000000000000000000000000000000602082015250565b5f614018602a83613463565b915061402382613fbe565b604082019050919050565b5f6020820190508181035f8301526140458161400c565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6140a6602683613463565b91506140b18261404c565b604082019050919050565b5f6020820190508181035f8301526140d38161409a565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f614134602483613463565b915061413f826140da565b604082019050919050565b5f6020820190508181035f83015261416181614128565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6141c2602283613463565b91506141cd82614168565b604082019050919050565b5f6020820190508181035f8301526141ef816141b6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f614250602583613463565b915061425b826141f6565b604082019050919050565b5f6020820190508181035f83015261427d81614244565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6142de602383613463565b91506142e982614284565b604082019050919050565b5f6020820190508181035f83015261430b816142d2565b9050919050565b7f5f7472616e736665723a3a2054726164696e67206973206e6f742061637469765f8201527f652e000000000000000000000000000000000000000000000000000000000000602082015250565b5f61436c602283613463565b915061437782614312565b604082019050919050565b5f6020820190508181035f83015261439981614360565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f614420604983613463565b915061442b826143a0565b606082019050919050565b5f6020820190508181035f83015261444d81614414565b9050919050565b7f427579207472616e7366657220616d6f756e74206578636565647320746865205f8201527f6d617854782e0000000000000000000000000000000000000000000000000000602082015250565b5f6144ae602683613463565b91506144b982614454565b604082019050919050565b5f6020820190508181035f8301526144db816144a2565b9050919050565b7f4d61782077616c6c6574206578636565646564000000000000000000000000005f82015250565b5f614516601383613463565b9150614521826144e2565b602082019050919050565b5f6020820190508181035f8301526145438161450a565b9050919050565b7f53656c6c207472616e7366657220616d6f756e742065786365656473207468655f8201527f206d617854782e00000000000000000000000000000000000000000000000000602082015250565b5f6145a4602783613463565b91506145af8261454a565b604082019050919050565b5f6020820190508181035f8301526145d181614598565b9050919050565b5f6145e282613547565b91506145ed83613547565b925082820390508181111561460557614604613acf565b5b92915050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614665602683613463565b91506146708261460b565b604082019050919050565b5f6020820190508181035f83015261469281614659565b9050919050565b5f81905092915050565b50565b5f6146b15f83614699565b91506146bc826146a3565b5f82019050919050565b5f6146d0826146a6565b9150819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f815190506147428161351d565b92915050565b5f6020828403121561475d5761475c6134e9565b5b5f61476a84828501614734565b91505092915050565b5f819050919050565b5f819050919050565b5f61479f61479a61479584614773565b61477c565b613547565b9050919050565b6147af81614785565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6147e78161350c565b82525050565b5f6147f883836147de565b60208301905092915050565b5f602082019050919050565b5f61481a826147b5565b61482481856147bf565b935061482f836147cf565b805f5b8381101561485f57815161484688826147ed565b975061485183614804565b925050600181019050614832565b5085935050505092915050565b5f60a08201905061487f5f8301886135eb565b61488c60208301876147a6565b818103604083015261489e8186614810565b90506148ad60608301856137a3565b6148ba60808301846135eb565b969550505050505056fea26469706673582212205a10bbf0c6ec9420f05dfb1208455ad23bfc14fba50242414d06c73cd891f2f364736f6c63430008190033