[ { "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "currentAllowance", "type": "uint256" }, { "internalType": "uint256", "name": "requestedDecrease", "type": "uint256" } ], "name": "ERC20FailedDecreaseAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "allowance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientAllowance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "balance", "type": "uint256" }, { "internalType": "uint256", "name": "needed", "type": "uint256" } ], "name": "ERC20InsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC20InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC20InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC20InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" } ], "name": "ERC20InvalidSpender", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "account", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "isExcluded", "type": "bool" } ], "name": "AddressExcludedFromFees", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "pair", "type": "address" }, { "indexed": true, "internalType": "bool", "name": "value", "type": "bool" } ], "name": "SetDexPair", "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": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "addressForProjectFeeUpdated", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "newWallet", "type": "address" }, { "indexed": true, "internalType": "address", "name": "oldWallet", "type": "address" } ], "name": "addressForTreasuryFeeUpdated", "type": "event" }, { "inputs": [], "name": "_trdOpen", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "addressForProjectFee", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "addressForTreasuryFee", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "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": "", "type": "address" } ], "name": "ammPairs", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyFee1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyFee2", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "buyFeeT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "changeMaxTokensPerTransfer", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newNum", "type": "uint256" } ], "name": "changeMaxWalletPerAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newAmount", "type": "uint256" } ], "name": "changeMinSwapbackTreshold", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "createPair", "outputs": [], "stateMutability": "payable", "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": "requestedDecrease", "type": "uint256" } ], "name": "decreaseAllowance", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "earlyLimits", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "enableTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" }, { "internalType": "bool", "name": "excluded", "type": "bool" } ], "name": "excludeFeesForSwap", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "updAds", "type": "address" }, { "internalType": "bool", "name": "isEx", "type": "bool" } ], "name": "excludeLimitForTx", "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": "maxSwapbackLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "minSwapbackTreshold", "outputs": [ { "internalType": "uint256", "name": "", "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": "removeTxLimits", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sellFee1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellFee2", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "sellFeeT", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fee1", "type": "uint256" }, { "internalType": "uint256", "name": "_fee2", "type": "uint256" } ], "name": "setBuyFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_fee1", "type": "uint256" }, { "internalType": "uint256", "name": "_fee2", "type": "uint256" } ], "name": "setSellFee", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "swapForFeesEnabled", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForReceiver1", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tokensForReceiver2", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "txLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "txLimitWhitelisted", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniV2Pair", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "uniV2Router", "outputs": [ { "internalType": "contract IUniV2Router", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "walletLimit", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "stateMutability": "payable", "type": "receive" } ]
60a06040526006805460ff60a81b191690556009805460ff19166001179055600e805460ff60a01b191690553480156200003857600080fd5b506040518060400160405280600a8152602001692637b7b83c9021b7b4b760b11b815250604051806040016040528060058152602001644c4f4f505960d81b81525081600390816200008b91906200107d565b5060046200009a82826200107d565b505050620000b7620000b16200029660201b60201c565b6200029a565b737a250d5630b4cf539739df2c5dacb4c659f2488d620000d9816001620002ec565b6001600160a01b0381166080526b033b2e3c9fd0803ce80000006103e8620001038260146200115f565b6200010f919062001179565b600b556103e8620001228260146200115f565b6200012e919062001179565b600a55620186a0620001428260036200115f565b6200014e919062001179565b60075560646200015f82826200115f565b6200016b919062001179565b600855600f60108190556000601181905562000187916200119c565b600f908155601381905560006014819055620001a3916200119c565b601255600d80546001600160a01b031990811673ee27a62ba3cfe6855cf275e64d74e1caf3817b5817909155600e805490911633179055620001f9620001f16005546001600160a01b031690565b600162000366565b6200020630600162000366565b6200021561dead600162000366565b600d546200022e906001600160a01b0316600162000366565b6200024d620002456005546001600160a01b031690565b6001620002ec565b6200025a306001620002ec565b6200026961dead6001620002ec565b600d5462000282906001600160a01b03166001620002ec565b6200028e338262000410565b505062001283565b3390565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6005546001600160a01b031633146200033b5760405162461bcd60e51b81526020600482018190526024820152600080516020620035c583398151915260448201526064015b60405180910390fd5b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b03163314620003b15760405162461bcd60e51b81526020600482018190526024820152600080516020620035c5833981519152604482015260640162000332565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f43e5678c2fcaa42d15df6505520f417a1fbf973324cb2f7c106ebdbd662d0c3d910160405180910390a25050565b6001600160a01b0382166200043c5760405163ec442f0560e01b81526000600482015260240162000332565b6200044a600083836200044e565b5050565b806000036200046a57620004658383600062000b14565b505050565b6001600160a01b03831660009081526017602052604090205460ff16158015620004ad57506001600160a01b03821660009081526017602052604090205460ff16155b156200050e57600e54600160a01b900460ff166200050e5760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652100000000000000000000604482015260640162000332565b60095460ff1680156200052a5750600e54600160a01b900460ff165b1562000805576005546001600160a01b038481169116148015906200055d57506005546001600160a01b03838116911614155b80156200057257506001600160a01b03821615155b80156200058a57506001600160a01b03821661dead14155b8015620005a15750600654600160a01b900460ff16155b1562000805576001600160a01b03831660009081526019602052604090205460ff168015620005e957506001600160a01b03821660009081526018602052604090205460ff16155b15620006c857600b54811115620006545760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152673a3c2634b6b4ba1760c11b606482015260840162000332565b600a546001600160a01b0383166000908152602081905260409020546200067c90836200119c565b1115620006c25760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640162000332565b62000805565b6001600160a01b03821660009081526019602052604090205460ff1680156200070a57506001600160a01b03831660009081526018602052604090205460ff16155b156200077657600b54811115620006c25760405162461bcd60e51b815260206004820152602960248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015268103a3c2634b6b4ba1760b91b606482015260840162000332565b6001600160a01b03821660009081526018602052604090205460ff166200080557600a546001600160a01b038316600090815260208190526040902054620007bf90836200119c565b1115620008055760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b604482015260640162000332565b3060009081526020819052604090205460075481108015908190620008335750600654600160a81b900460ff165b80156200084a5750600654600160a01b900460ff16155b80156200086f57506001600160a01b03841660009081526019602052604090205460ff165b80156200087d575060075483115b8015620008a357506001600160a01b03851660009081526017602052604090205460ff16155b8015620008c957506001600160a01b03841660009081526017602052604090205460ff16155b15620008fa576006805460ff60a01b1916600160a01b179055620008ec62000c47565b6006805460ff60a01b191690555b6006546001600160a01b03861660009081526017602052604090205460ff600160a01b9092048216159116806200094957506001600160a01b03851660009081526017602052604090205460ff165b1562000953575060005b6000811562000afe576001600160a01b03861660009081526019602052604090205460ff1680156200098757506000601254115b1562000a2257601254620009ac90606490620009a590889062000d4e565b9062000d65565b905060125460145482620009c191906200115f565b620009cd919062001179565b60166000828254620009e091906200119c565b9091555050601254601354620009f790836200115f565b62000a03919062001179565b6015600082825462000a1691906200119c565b9091555062000adb9050565b6001600160a01b03871660009081526019602052604090205460ff16801562000a4d57506000600f54115b1562000adb57600f5462000a6b90606490620009a590889062000d4e565b9050600f546011548262000a8091906200115f565b62000a8c919062001179565b6016600082825462000a9f91906200119c565b9091555050600f5460105462000ab690836200115f565b62000ac2919062001179565b6015600082825462000ad591906200119c565b90915550505b801562000aef5762000aef87308362000b14565b62000afb8186620011b2565b94505b62000b0b87878762000b14565b50505050505050565b6001600160a01b03831662000b4357806002600082825462000b3791906200119c565b9091555062000bb79050565b6001600160a01b0383166000908152602081905260409020548181101562000b985760405163391434e360e21b81526001600160a01b0385166004820152602481018290526044810183905260640162000332565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b03821662000bd55760028054829003905562000bf4565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000c3a91815260200190565b60405180910390a3505050565b306000908152602081905260408120549050600060165460155462000c6d91906200119c565b9050600060075483111562000c825760075492505b4762000c8e8462000d73565b600062000c9c478362000eee565b9050600062000cbc85620009a56016548562000d4e60201b90919060201c565b600e546040519192506001600160a01b0316908290600081818185875af1925050503d806000811462000d0c576040519150601f19603f3d011682016040523d82523d6000602084013e62000d11565b606091505b5050600d546040519195506001600160a01b0316904780156108fc02916000818181858888f1935050505015801562000b0b573d6000803e3d6000fd5b600062000d5c82846200115f565b90505b92915050565b600062000d5c828462001179565b604080516002808252606082018352600092602083019080368337019050509050308160008151811062000dab5762000dab620011c8565b60200260200101906001600160a01b031690816001600160a01b0316815250506080516001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000e0c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000e329190620011de565b8160018151811062000e485762000e48620011c8565b60200260200101906001600160a01b031690816001600160a01b03168152505062000e7d306080518462000efc60201b60201c565b6080516001600160a01b031663791ac9478360008430426040518663ffffffff1660e01b815260040162000eb695949392919062001210565b600060405180830381600087803b15801562000ed157600080fd5b505af115801562000ee6573d6000803e3d6000fd5b505050505050565b600062000d5c8284620011b2565b6200046583838360016001600160a01b03841662000f315760405163e602df0560e01b81526000600482015260240162000332565b6001600160a01b03831662000f5d57604051634a1406b160e11b81526000600482015260240162000332565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801562000fdb57826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258460405162000fd291815260200190565b60405180910390a35b50505050565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200100c57607f821691505b6020821081036200102d57634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200046557600081815260208120601f850160051c810160208610156200105c5750805b601f850160051c820191505b8181101562000ee65782815560010162001068565b81516001600160401b0381111562001099576200109962000fe1565b620010b181620010aa845462000ff7565b8462001033565b602080601f831160018114620010e95760008415620010d05750858301515b600019600386901b1c1916600185901b17855562000ee6565b600085815260208120601f198616915b828110156200111a57888601518255948401946001909101908401620010f9565b5085821015620011395787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b634e487b7160e01b600052601160045260246000fd5b808202811582820484141762000d5f5762000d5f62001149565b6000826200119757634e487b7160e01b600052601260045260246000fd5b500490565b8082018082111562000d5f5762000d5f62001149565b8181038181111562000d5f5762000d5f62001149565b634e487b7160e01b600052603260045260246000fd5b600060208284031215620011f157600080fd5b81516001600160a01b03811681146200120957600080fd5b9392505050565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015620012625784516001600160a01b0316835293830193918301916001016200123b565b50506001600160a01b03969096166060850152505050608001529392505050565b6080516122f5620012d06000396000818161064501528181610ccc01528181610d5d01528181610e9501528181610ebe01528181611e0001528181611eb90152611ef501526122f56000f3fe6080604052600436106102765760003560e01c806365e007191161014f57806395d89b41116100c1578063dd62ed3e1161007a578063dd62ed3e14610724578063dfd028f014610744578063ed8a2fda14610764578063f2fde38b1461077a578063f8f86b991461079a578063fb0ecfa4146107ba57600080fd5b806395d89b41146106675780639e78fb4f1461067c578063a457c2d714610684578063a72905a2146106a4578063a9059cbb146106d4578063aaa1fe45146106f457600080fd5b8063760062731161011357806376006273146105b45780638a8c523c146105ca5780638bcea939146105df5780638c900a71146105ff5780638da5cb5b14610615578063958c2e521461063357600080fd5b806365e007191461051d5780636ac9a870146105335780636caae8321461055357806370a0823114610569578063715018a61461059f57600080fd5b80632765cddd116101e85780633c8463a1116101ac5780633c8463a11461046e5780633d56af6b1461048457806346e973611461049a578063522ef4c7146104ba57806357e06699146104db57806358915a86146104fd57600080fd5b80632765cddd146103f05780632956376914610406578063313ce5671461041c57806335c094a414610438578063395093511461044e57600080fd5b8063095ea7b31161023a578063095ea7b314610341578063106d058314610361578063159a522014610385578063171a65861461039b57806318160ddd146103bb57806323b872dd146103d057600080fd5b80630106aaef1461028257806304571cdd146102ac57806306123160146102e457806306fdde031461030557806307b1faea1461032757600080fd5b3661027d57005b600080fd5b34801561028e57600080fd5b506102976107da565b60405190151581526020015b60405180910390f35b3480156102b857600080fd5b50600d546102cc906001600160a01b031681565b6040516001600160a01b0390911681526020016102a3565b3480156102f057600080fd5b50600e5461029790600160a01b900460ff1681565b34801561031157600080fd5b5061031a610820565b6040516102a39190611f75565b34801561033357600080fd5b506009546102979060ff1681565b34801561034d57600080fd5b5061029761035c366004611fd8565b6108b2565b34801561036d57600080fd5b5061037760105481565b6040519081526020016102a3565b34801561039157600080fd5b5061037760135481565b3480156103a757600080fd5b506102976103b6366004612004565b6108cc565b3480156103c757600080fd5b50600254610377565b3480156103dc57600080fd5b506102976103eb36600461201d565b6109f7565b3480156103fc57600080fd5b5061037760115481565b34801561041257600080fd5b5061037760145481565b34801561042857600080fd5b50604051601281526020016102a3565b34801561044457600080fd5b5061037760155481565b34801561045a57600080fd5b50610297610469366004611fd8565b610a1b565b34801561047a57600080fd5b50610377600a5481565b34801561049057600080fd5b5061037760165481565b3480156104a657600080fd5b50600e546102cc906001600160a01b031681565b3480156104c657600080fd5b5060065461029790600160a81b900460ff1681565b3480156104e757600080fd5b506104fb6104f636600461205e565b610a3d565b005b34801561050957600080fd5b506104fb610518366004612004565b610ac6565b34801561052957600080fd5b5061037760085481565b34801561053f57600080fd5b506104fb61054e36600461209c565b610b72565b34801561055f57600080fd5b50610377600b5481565b34801561057557600080fd5b506103776105843660046120be565b6001600160a01b031660009081526020819052604090205490565b3480156105ab57600080fd5b506104fb610c09565b3480156105c057600080fd5b5061037760075481565b3480156105d657600080fd5b506104fb610c3f565b3480156105eb57600080fd5b506006546102cc906001600160a01b031681565b34801561060b57600080fd5b50610377600f5481565b34801561062157600080fd5b506005546001600160a01b03166102cc565b34801561063f57600080fd5b506102cc7f000000000000000000000000000000000000000000000000000000000000000081565b34801561067357600080fd5b5061031a610c91565b6104fb610ca0565b34801561069057600080fd5b5061029761069f366004611fd8565b610fb3565b3480156106b057600080fd5b506102976106bf3660046120be565b60196020526000908152604090205460ff1681565b3480156106e057600080fd5b506102976106ef366004611fd8565b61100a565b34801561070057600080fd5b5061029761070f3660046120be565b60186020526000908152604090205460ff1681565b34801561073057600080fd5b5061037761073f3660046120db565b611018565b34801561075057600080fd5b506104fb61075f366004612004565b611043565b34801561077057600080fd5b5061037760125481565b34801561078657600080fd5b506104fb6107953660046120be565b6110f3565b3480156107a657600080fd5b506104fb6107b536600461205e565b61118e565b3480156107c657600080fd5b506104fb6107d536600461209c565b6111e3565b6005546000906001600160a01b031633146108105760405162461bcd60e51b815260040161080790612109565b60405180910390fd5b506009805460ff19169055600190565b60606003805461082f9061213e565b80601f016020809104026020016040519081016040528092919081815260200182805461085b9061213e565b80156108a85780601f1061087d576101008083540402835291602001916108a8565b820191906000526020600020905b81548152906001019060200180831161088b57829003601f168201915b5050505050905090565b6000336108c0818585611276565b60019150505b92915050565b3360009081526017602052604081205460ff166108e857600080fd5b620186a06108f560025490565b6108ff919061218e565b82101561096c5760405162461bcd60e51b815260206004820152603560248201527f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e60448201527410181718181892903a37ba30b61039bab838363c9760591b6064820152608401610807565b6008548211156109d95760405162461bcd60e51b815260206004820152603260248201527f5377617020616d6f756e742063616e6e6f7420626520686967686572207468616044820152711b881b585e14ddd85c189858dad31a5b5a5d60721b6064820152608401610807565b6006546109ef906001600160a01b031683611283565b506001919050565b600033610a058582856112b9565b610a1085858561131f565b506001949350505050565b6000336108c0818585610a2e8383611018565b610a3891906121b0565b611276565b6005546001600160a01b03163314610a675760405162461bcd60e51b815260040161080790612109565b6001600160a01b038216600081815260176020908152604091829020805460ff191685151590811790915591519182527f43e5678c2fcaa42d15df6505520f417a1fbf973324cb2f7c106ebdbd662d0c3d910160405180910390a25050565b6005546001600160a01b03163314610af05760405162461bcd60e51b815260040161080790612109565b6002811015610b4c5760405162461bcd60e51b815260206004820152602260248201527f43616e6e6f74207365742074784c696d6974206c6f776572207468616e20302e604482015261322560f01b6064820152608401610807565b6103e8610b5860025490565b610b6290836121c3565b610b6c919061218e565b600b5550565b6005546001600160a01b03163314610b9c5760405162461bcd60e51b815260040161080790612109565b60138290556014819055610bb081836121b0565b601281905560041015610c055760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203425206f72206c657373000000006044820152606401610807565b5050565b6005546001600160a01b03163314610c335760405162461bcd60e51b815260040161080790612109565b610c3d600061137e565b565b6005546001600160a01b03163314610c695760405162461bcd60e51b815260040161080790612109565b600e805460ff60a01b1916600160a01b1790556006805460ff60a81b1916600160a81b179055565b60606004805461082f9061213e565b6005546001600160a01b03163314610cca5760405162461bcd60e51b815260040161080790612109565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d4c91906121da565b6001600160a01b031663c9c65396307f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610db9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ddd91906121da565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015610e2a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4e91906121da565b600680546001600160a01b0319166001600160a01b03929092169182179055610e7890600161118e565b600654610e8f906001600160a01b031660016113d0565b610ebc307f0000000000000000000000000000000000000000000000000000000000000000600019611276565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663f305d7193430610f0c306001600160a01b031660009081526020819052604090205490565b600080610f216005546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015610f89573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fae91906121f7565b505050565b60003381610fc18286611018565b905083811015610ffd57604051632983c0c360e21b81526001600160a01b03861660048201526024810182905260448101859052606401610807565b610a108286868403611276565b6000336108c081858561131f565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205490565b6005546001600160a01b0316331461106d5760405162461bcd60e51b815260040161080790612109565b60058110156110cd5760405162461bcd60e51b815260206004820152602660248201527f43616e6e6f74207365742077616c6c65744c696d6974206c6f776572207468616044820152656e20302e352560d01b6064820152608401610807565b6103e86110d960025490565b6110e390836121c3565b6110ed919061218e565b600a5550565b6005546001600160a01b0316331461111d5760405162461bcd60e51b815260040161080790612109565b6001600160a01b0381166111825760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610807565b61118b8161137e565b50565b6005546001600160a01b031633146111b85760405162461bcd60e51b815260040161080790612109565b6001600160a01b03919091166000908152601860205260409020805460ff1916911515919091179055565b6005546001600160a01b0316331461120d5760405162461bcd60e51b815260040161080790612109565b6010829055601181905561122181836121b0565b600f81905560041015610c055760405162461bcd60e51b815260206004820152601c60248201527f4d757374206b6565702066656573206174203425206f72206c657373000000006044820152606401610807565b610fae8383836001611424565b6001600160a01b0382166112ad57604051634b637e8f60e11b815260006004820152602401610807565b610c05826000836114f9565b60006112c58484611018565b90506000198114611319578181101561130a57604051637dc7a0d960e11b81526001600160a01b03841660048201526024810182905260448101839052606401610807565b61131984848484036000611424565b50505050565b6001600160a01b03831661134957604051634b637e8f60e11b815260006004820152602401610807565b6001600160a01b0382166113735760405163ec442f0560e01b815260006004820152602401610807565b610fae8383836114f9565b600580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b6001600160a01b038216600081815260196020526040808220805460ff191685151590811790915590519092917f02d59e6bf2c101e2d8367c2a27c51357eccfebcca0d09aa27c00e24e946c0d6a91a35050565b6001600160a01b03841661144e5760405163e602df0560e01b815260006004820152602401610807565b6001600160a01b03831661147857604051634a1406b160e11b815260006004820152602401610807565b6001600160a01b038085166000908152600160209081526040808320938716835292905220829055801561131957826001600160a01b0316846001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516114eb91815260200190565b60405180910390a350505050565b8060000361150d57610fae83836000611b66565b6001600160a01b03831660009081526017602052604090205460ff1615801561154f57506001600160a01b03821660009081526017602052604090205460ff16155b156115a657600e54600160a01b900460ff166115a65760405162461bcd60e51b815260206004820152601660248201527554726164696e67206973206e6f74206163746976652160501b6044820152606401610807565b60095460ff1680156115c15750600e54600160a01b900460ff165b15611884576005546001600160a01b038481169116148015906115f257506005546001600160a01b03838116911614155b801561160657506001600160a01b03821615155b801561161d57506001600160a01b03821661dead14155b80156116335750600654600160a01b900460ff16155b15611884576001600160a01b03831660009081526019602052604090205460ff16801561167957506001600160a01b03821660009081526018602052604090205460ff16155b1561175057600b548111156116e15760405162461bcd60e51b815260206004820152602860248201527f427579207472616e7366657220616d6f756e74206578636565647320746865206044820152673a3c2634b6b4ba1760c11b6064820152608401610807565b600a546001600160a01b03831660009081526020819052604090205461170790836121b0565b111561174b5760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610807565b611884565b6001600160a01b03821660009081526019602052604090205460ff16801561179157506001600160a01b03831660009081526018602052604090205460ff16155b156117fa57600b5481111561174b5760405162461bcd60e51b815260206004820152602960248201527f53656c6c207472616e7366657220616d6f756e74206578636565647320746865604482015268103a3c2634b6b4ba1760b91b6064820152608401610807565b6001600160a01b03821660009081526018602052604090205460ff1661188457600a546001600160a01b03831660009081526020819052604090205461184090836121b0565b11156118845760405162461bcd60e51b815260206004820152601360248201527213585e081dd85b1b195d08195e18d959591959606a1b6044820152606401610807565b30600090815260208190526040902054600754811080159081906118b15750600654600160a81b900460ff165b80156118c75750600654600160a01b900460ff16155b80156118eb57506001600160a01b03841660009081526019602052604090205460ff165b80156118f8575060075483115b801561191d57506001600160a01b03851660009081526017602052604090205460ff16155b801561194257506001600160a01b03841660009081526017602052604090205460ff16155b15611970576006805460ff60a01b1916600160a01b179055611962611c90565b6006805460ff60a01b191690555b6006546001600160a01b03861660009081526017602052604090205460ff600160a01b9092048216159116806119be57506001600160a01b03851660009081526017602052604090205460ff165b156119c7575060005b60008115611b52576001600160a01b03861660009081526019602052604090205460ff1680156119f957506000601254115b15611a8757611a1e6064611a1860125488611d8a90919063ffffffff16565b90611d9d565b905060125460145482611a3191906121c3565b611a3b919061218e565b60166000828254611a4c91906121b0565b9091555050601254601354611a6190836121c3565b611a6b919061218e565b60156000828254611a7c91906121b0565b90915550611b349050565b6001600160a01b03871660009081526019602052604090205460ff168015611ab157506000600f54115b15611b3457611ad06064611a18600f5488611d8a90919063ffffffff16565b9050600f5460115482611ae391906121c3565b611aed919061218e565b60166000828254611afe91906121b0565b9091555050600f54601054611b1390836121c3565b611b1d919061218e565b60156000828254611b2e91906121b0565b90915550505b8015611b4557611b45873083611b66565b611b4f8186612225565b94505b611b5d878787611b66565b50505050505050565b6001600160a01b038316611b91578060026000828254611b8691906121b0565b90915550611c039050565b6001600160a01b03831660009081526020819052604090205481811015611be45760405163391434e360e21b81526001600160a01b03851660048201526024810182905260448101839052606401610807565b6001600160a01b03841660009081526020819052604090209082900390555b6001600160a01b038216611c1f57600280548290039055611c3e565b6001600160a01b03821660009081526020819052604090208054820190555b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611c8391815260200190565b60405180910390a3505050565b3060009081526020819052604081205490506000601654601554611cb491906121b0565b90506000600754831115611cc85760075492505b47611cd284611da9565b6000611cde4783611f69565b90506000611cfb85611a1860165485611d8a90919063ffffffff16565b600e546040519192506001600160a01b0316908290600081818185875af1925050503d8060008114611d49576040519150601f19603f3d011682016040523d82523d6000602084013e611d4e565b606091505b5050600d546040519195506001600160a01b0316904780156108fc02916000818181858888f19350505050158015611b5d573d6000803e3d6000fd5b6000611d9682846121c3565b9392505050565b6000611d96828461218e565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110611dde57611dde612238565b60200260200101906001600160a01b031690816001600160a01b0316815250507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611e5c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e8091906121da565b81600181518110611e9357611e93612238565b60200260200101906001600160a01b031690816001600160a01b031681525050611ede307f000000000000000000000000000000000000000000000000000000000000000084611276565b60405163791ac94760e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063791ac94790611f3390859060009086903090429060040161224e565b600060405180830381600087803b158015611f4d57600080fd5b505af1158015611f61573d6000803e3d6000fd5b505050505050565b6000611d968284612225565b600060208083528351808285015260005b81811015611fa257858101830151858201604001528201611f86565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b038116811461118b57600080fd5b60008060408385031215611feb57600080fd5b8235611ff681611fc3565b946020939093013593505050565b60006020828403121561201657600080fd5b5035919050565b60008060006060848603121561203257600080fd5b833561203d81611fc3565b9250602084013561204d81611fc3565b929592945050506040919091013590565b6000806040838503121561207157600080fd5b823561207c81611fc3565b91506020830135801515811461209157600080fd5b809150509250929050565b600080604083850312156120af57600080fd5b50508035926020909101359150565b6000602082840312156120d057600080fd5b8135611d9681611fc3565b600080604083850312156120ee57600080fd5b82356120f981611fc3565b9150602083013561209181611fc3565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600181811c9082168061215257607f821691505b60208210810361217257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6000826121ab57634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156108c6576108c6612178565b80820281158282048414176108c6576108c6612178565b6000602082840312156121ec57600080fd5b8151611d9681611fc3565b60008060006060848603121561220c57600080fd5b8351925060208401519150604084015190509250925092565b818103818111156108c6576108c6612178565b634e487b7160e01b600052603260045260246000fd5b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561229e5784516001600160a01b031683529383019391830191600101612279565b50506001600160a01b0396909616606085015250505060800152939250505056fea264697066735822122095a889404e4d82cd54b6df2f4d47990414de2bb29c2cc20bf19a2965c5682cb864736f6c634300081300334f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572