UNPKG

zic-tron-sdk

Version:
1,012 lines 2.06 MB
{ "contractName": "ZebecCard", "abi": [ { "inputs": [ { "internalType": "address", "name": "target", "type": "address" } ], "name": "AddressEmptyCode", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "AddressInsufficientBalance", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "implementation", "type": "address" } ], "name": "ERC1967InvalidImplementation", "type": "error" }, { "inputs": [], "name": "ERC1967NonPayable", "type": "error" }, { "inputs": [], "name": "FailedInnerCall", "type": "error" }, { "inputs": [], "name": "InvalidInitialization", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "requiredBalance", "type": "uint256" }, { "internalType": "uint256", "name": "currentBalance", "type": "uint256" } ], "name": "NotEnoughBalance", "type": "error" }, { "inputs": [], "name": "NotInitializing", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "token", "type": "address" } ], "name": "SafeERC20FailedOperation", "type": "error" }, { "inputs": [], "name": "UUPSUnauthorizedCallContext", "type": "error" }, { "inputs": [ { "internalType": "bytes32", "name": "slot", "type": "bytes32" } ], "name": "UUPSUnsupportedProxiableUUID", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "id", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "userEmail", "type": "string" }, { "indexed": false, "internalType": "uint256", "name": "purchasedAt", "type": "uint256" } ], "name": "CardPurchased", "type": "event", "signature": "0xce9df9676b8ff95985927db077a18e692c06c1ecfa2abae6db585c4aedfbc909", "stateMutability": "nonpayable" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "Deposited", "type": "event", "signature": "0x2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4", "stateMutability": "nonpayable" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint64", "name": "version", "type": "uint64" } ], "name": "Initialized", "type": "event", "signature": "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2", "stateMutability": "nonpayable" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event", "signature": "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "stateMutability": "nonpayable" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "srcToken", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "spentAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "returnAmount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "feeAmount", "type": "uint256" } ], "name": "Swapped", "type": "event", "signature": "0xd8066379a11f110d1eb579110571ce47b1557c623d7ae29f423d92cd6dd953be", "stateMutability": "nonpayable" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "implementation", "type": "address" } ], "name": "Upgraded", "type": "event", "signature": "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", "stateMutability": "nonpayable" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "withdrawnAmount", "type": "uint256" } ], "name": "WithdrawYield", "type": "event", "signature": "0xf09b3678dd1b265d3e2d9f681481c92d1cdd81b6e19fa43651707dedf99263a8", "stateMutability": "nonpayable" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "withdrawnAmount", "type": "uint256" } ], "name": "Withdrawn", "type": "event", "signature": "0x7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5", "stateMutability": "nonpayable" }, { "inputs": [], "name": "UPGRADE_INTERFACE_VERSION", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function", "constant": true, "signature": "0xad3cb1cc" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "string", "name": "userEmail", "type": "string" } ], "name": "buyCard", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0x69a34653" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "cardBalances", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true, "signature": "0xf076a846" }, { "inputs": [], "name": "cardConfig", "outputs": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "nonNativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "revenueFee", "type": "uint256" }, { "internalType": "uint256", "name": "counter", "type": "uint256" }, { "internalType": "address", "name": "cardVault", "type": "address" }, { "internalType": "address", "name": "revenueVault", "type": "address" }, { "internalType": "address", "name": "usdcAddress", "type": "address" }, { "internalType": "uint256", "name": "minCardAmount", "type": "uint256" }, { "internalType": "uint256", "name": "maxCardAmount", "type": "uint256" }, { "internalType": "uint256", "name": "dailyCardBuyLimit", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true, "signature": "0x37cf5331" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "cardPurchases", "outputs": [ { "internalType": "uint256", "name": "unixInRecord", "type": "uint256" }, { "internalType": "uint256", "name": "totalCardBoughtPerDay", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true, "signature": "0xa5b7ac7e" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "depositUsdc", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0x2357928e" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "feeTiers", "outputs": [ { "internalType": "uint256", "name": "minAmount", "type": "uint256" }, { "internalType": "uint256", "name": "maxAmount", "type": "uint256" }, { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true, "signature": "0x230ed44a" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "getFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function", "constant": true, "signature": "0xfcee45f4" }, { "inputs": [], "name": "getFeeTiers", "outputs": [ { "components": [ { "internalType": "uint256", "name": "minAmount", "type": "uint256" }, { "internalType": "uint256", "name": "maxAmount", "type": "uint256" }, { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "internalType": "struct ZebecCard.FeeTier[]", "name": "", "type": "tuple[]" } ], "stateMutability": "view", "type": "function", "constant": true, "signature": "0xe9a4d24f" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "nonNativeFee", "type": "uint256" }, { "internalType": "uint256", "name": "revenueFee", "type": "uint256" }, { "internalType": "uint256", "name": "counter", "type": "uint256" }, { "internalType": "address", "name": "cardVault", "type": "address" }, { "internalType": "address", "name": "revenueVault", "type": "address" }, { "internalType": "address", "name": "usdcAddress", "type": "address" }, { "internalType": "uint256", "name": "minCardAmount", "type": "uint256" }, { "internalType": "uint256", "name": "maxCardAmount", "type": "uint256" }, { "internalType": "uint256", "name": "dailyCardBuyLimit", "type": "uint256" } ], "internalType": "struct ZebecCard.CardConfig", "name": "card_config", "type": "tuple" }, { "components": [ { "internalType": "uint256", "name": "minAmount", "type": "uint256" }, { "internalType": "uint256", "name": "maxAmount", "type": "uint256" }, { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "internalType": "struct ZebecCard.FeeTier[]", "name": "fee_tiers", "type": "tuple[]" }, { "internalType": "address", "name": "sun_swap_router", "type": "address" }, { "internalType": "address", "name": "wrapped_trx", "type": "address" } ], "name": "initialize", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0x569b5dbf" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true, "signature": "0x8da5cb5b" }, { "inputs": [], "name": "proxiableUUID", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function", "constant": true, "signature": "0x52d1902d" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0x715018a6" }, { "inputs": [ { "internalType": "address", "name": "cardVault", "type": "address" } ], "name": "setCardVault", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0xd895a46b" }, { "inputs": [ { "internalType": "uint256", "name": "dailyCardBuyLimit", "type": "uint256" } ], "name": "setDailyCardBuyLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0xbea9c43e" }, { "inputs": [ { "internalType": "uint256", "name": "minAmount", "type": "uint256" }, { "internalType": "uint256", "name": "maxAmount", "type": "uint256" }, { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "name": "setFee", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0x5b65b9ab" }, { "inputs": [ { "components": [ { "internalType": "uint256", "name": "minAmount", "type": "uint256" }, { "internalType": "uint256", "name": "maxAmount", "type": "uint256" }, { "internalType": "uint256", "name": "fee", "type": "uint256" } ], "internalType": "struct ZebecCard.FeeTier[]", "name": "newTiers", "type": "tuple[]" } ], "name": "setFeeArray", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0x166dbb73" }, { "inputs": [ { "internalType": "uint256", "name": "maxAmount", "type": "uint256" } ], "name": "setMaxCardAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0xb0d097de" }, { "inputs": [ { "internalType": "uint256", "name": "minAmount", "type": "uint256" } ], "name": "setMinCardAmount", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0x48455ff0" }, { "inputs": [ { "internalType": "uint256", "name": "nativeFee", "type": "uint256" } ], "name": "setNativeFee", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0xb91a1e8f" }, { "inputs": [ { "internalType": "uint256", "name": "nonNativeFee", "type": "uint256" } ], "name": "setNonNativeFee", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0xe591f2ff" }, { "inputs": [ { "internalType": "uint256", "name": "revenueFee", "type": "uint256" } ], "name": "setRevenueFee", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0x14435445" }, { "inputs": [ { "internalType": "address", "name": "revenueVault", "type": "address" } ], "name": "setRevenueVault", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0x4d68e925" }, { "inputs": [ { "internalType": "address", "name": "usdcAddress", "type": "address" } ], "name": "setUsdcAddress", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0xd38bcdee" }, { "inputs": [], "name": "sunSwapRouter", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true, "signature": "0x22e41dc4" }, { "inputs": [ { "internalType": "address[]", "name": "path", "type": "address[]" }, { "internalType": "string[]", "name": "poolVersion", "type": "string[]" }, { "internalType": "uint256[]", "name": "versionLen", "type": "uint256[]" }, { "internalType": "uint24[]", "name": "fees", "type": "uint24[]" }, { "components": [ { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, { "internalType": "uint256", "name": "amountOutMin", "type": "uint256" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" } ], "internalType": "struct ISmartRouter.SwapData", "name": "data", "type": "tuple" } ], "name": "swapAndDeposit", "outputs": [], "stateMutability": "payable", "type": "function", "payable": true, "signature": "0xce82f2b3" }, { "inputs": [ { "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "transferOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0xf2fde38b" }, { "inputs": [ { "internalType": "address", "name": "newImplementation", "type": "address" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "upgradeToAndCall", "outputs": [], "stateMutability": "payable", "type": "function", "payable": true, "signature": "0x4f1ef286" }, { "inputs": [], "name": "wTrx", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function", "constant": true, "signature": "0x2a780067" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function", "signature": "0x2e1a7d4d" } ], "bytecode": "0x60a06040523060805234801561001457600080fd5b50d3801561002157600080fd5b50d2801561002e57600080fd5b50608051612f0e61005860003960008181611c8f01528181611cb80152611df90152612f0e6000f3fe6080604052600436106101cd5760003560e01c8063715018a6116100f7578063ce82f2b311610095578063e9a4d24f11610064578063e9a4d24f1461087d578063f076a846146108b9578063f2fde38b14610900578063fcee45f41461093a57600080fd5b8063ce82f2b3146107bc578063d38bcdee146107cf578063d895a46b14610809578063e591f2ff1461084357600080fd5b8063ad3cb1cc116100d1578063ad3cb1cc146106b6578063b0d097de1461070e578063b91a1e8f14610748578063bea9c43e1461078257600080fd5b8063715018a6146105cd5780638da5cb5b146105fc578063a5b7ac7e1461065357600080fd5b806337cf53311161016f57806352d1902d1161013e57806352d1902d146104e2578063569b5dbf1461051f5780635b65b9ab1461055957806369a346531461059357600080fd5b806337cf5331146103a257806348455ff01461045b5780634d68e925146104955780634f1ef286146104cf57600080fd5b8063230ed44a116101ab578063230ed44a1461029f5780632357928e146102f45780632a7800671461032e5780632e1a7d4d1461036857600080fd5b806314435445146101d2578063166dbb731461020e57806322e41dc414610248575b600080fd5b3480156101de57600080fd5b50d380156101eb57600080fd5b50d280156101f857600080fd5b5061020c610207366004612444565b610974565b005b34801561021a57600080fd5b50d3801561022757600080fd5b50d2801561023457600080fd5b5061020c6102433660046125aa565b610981565b34801561025457600080fd5b50d3801561026157600080fd5b50d2801561026e57600080fd5b50600a54610282906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102ab57600080fd5b50d380156102b857600080fd5b50d280156102c557600080fd5b506102d96102d4366004612444565b610a0b565b60408051938452602084019290925290820152606001610296565b34801561030057600080fd5b50d3801561030d57600080fd5b50d2801561031a57600080fd5b5061020c610329366004612444565b610a3e565b34801561033a57600080fd5b50d3801561034757600080fd5b50d2801561035457600080fd5b50600b54610282906001600160a01b031681565b34801561037457600080fd5b50d3801561038157600080fd5b50d2801561038e57600080fd5b5061020c61039d366004612444565b610bf3565b3480156103ae57600080fd5b50d380156103bb57600080fd5b50d280156103c857600080fd5b5060005460015460025460035460045460055460065460075460085460095461040599989796956001600160a01b0390811695811694169291908a565b604080519a8b5260208b01999099529789019690965260608801949094526001600160a01b03928316608088015290821660a08701521660c085015260e084015261010083015261012082015261014001610296565b34801561046757600080fd5b50d3801561047457600080fd5b50d2801561048157600080fd5b5061020c610490366004612444565b610d70565b3480156104a157600080fd5b50d380156104ae57600080fd5b50d280156104bb57600080fd5b5061020c6104ca36600461260e565b610d7d565b61020c6104dd366004612680565b610da7565b3480156104ee57600080fd5b50d380156104fb57600080fd5b50d2801561050857600080fd5b50610511610dc2565b604051908152602001610296565b34801561052b57600080fd5b50d3801561053857600080fd5b50d2801561054557600080fd5b5061020c6105543660046126e1565b610ddf565b34801561056557600080fd5b50d3801561057257600080fd5b50d2801561057f57600080fd5b5061020c61058e3660046127d8565b611018565b34801561059f57600080fd5b50d380156105ac57600080fd5b50d280156105b957600080fd5b5061020c6105c8366004612804565b61117f565b3480156105d957600080fd5b50d380156105e657600080fd5b50d280156105f357600080fd5b5061020c6114ee565b34801561060857600080fd5b50d3801561061557600080fd5b50d2801561062257600080fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610282565b34801561065f57600080fd5b50d3801561066c57600080fd5b50d2801561067957600080fd5b506106a161068836600461260e565b600c602052600090815260409020805460019091015482565b60408051928352602083019190915201610296565b3480156106c257600080fd5b50d380156106cf57600080fd5b50d280156106dc57600080fd5b50610701604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102969190612884565b34801561071a57600080fd5b50d3801561072757600080fd5b50d2801561073457600080fd5b5061020c610743366004612444565b611502565b34801561075457600080fd5b50d3801561076157600080fd5b50d2801561076e57600080fd5b5061020c61077d366004612444565b61150f565b34801561078e57600080fd5b50d3801561079b57600080fd5b50d280156107a857600080fd5b5061020c6107b7366004612444565b61151c565b61020c6107ca3660046128db565b611529565b3480156107db57600080fd5b50d380156107e857600080fd5b50d280156107f557600080fd5b5061020c61080436600461260e565b61193c565b34801561081557600080fd5b50d3801561082257600080fd5b50d2801561082f57600080fd5b5061020c61083e36600461260e565b611966565b34801561084f57600080fd5b50d3801561085c57600080fd5b50d2801561086957600080fd5b5061020c610878366004612444565b611990565b34801561088957600080fd5b50d3801561089657600080fd5b50d280156108a357600080fd5b506108ac61199d565b60405161029691906129ba565b3480156108c557600080fd5b50d380156108d257600080fd5b50d280156108df57600080fd5b506105116108ee36600461260e565b600d6020526000908152604090205481565b34801561090c57600080fd5b50d3801561091957600080fd5b50d2801561092657600080fd5b5061020c61093536600461260e565b611a1a565b34801561094657600080fd5b50d3801561095357600080fd5b50d2801561096057600080fd5b5061051161096f366004612444565b611a58565b61097c611b41565b600255565b610989611b41565b610995600e6000612402565b60005b8151811015610a0757600e8282815181106109b5576109b5612a13565b60209081029190910181015182546001818101855560009485529383902082516003909202019081559181015192820192909255604090910151600290910155806109ff81612a3f565b915050610998565b5050565b600e8181548110610a1b57600080fd5b600091825260209091206003909102018054600182015460029092015490925083565b600654604051636eb1769f60e11b8152336004820152306024820152829182916001600160a01b039091169063dd62ed3e90604401602060405180830381865afa158015610a90573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ab49190612a58565b1015610b005760405162461bcd60e51b8152602060048201526016602482015275496e73756666696369656e7420616c6c6f77616e636560501b60448201526064015b60405180910390fd5b6006546001600160a01b03166000839003610b4e5760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610af7565b610b636001600160a01b038216333086611b9c565b336000908152600d60205260408120548190610b7f9086611c03565b9150915081610ba05760405162461bcd60e51b8152600401610af790612a71565b336000818152600d602052604090819020839055517f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c490610be49088815260200190565b60405180910390a25050505050565b6006546001600160a01b0316336000839003610c425760405162461bcd60e51b815260206004820152600e60248201526d125b9d985b1a5908185b5bdd5b9d60921b6044820152606401610af7565b6001600160a01b038116610c8a5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610af7565b6001600160a01b0381166000908152600d602052604090205483811015610cce57604051634787a10360e11b81526004810185905260248101829052604401610af7565b600080610cdb8387611c2c565b9150915081610cfc5760405162461bcd60e51b8152600401610af790612a71565b6001600160a01b038085166000908152600d60205260409020829055610d259086168588611c4e565b836001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d587604051610d6091815260200190565b60405180910390a2505050505050565b610d78611b41565b600755565b610d85611b41565b600580546001600160a01b0319166001600160a01b0392909216919091179055565b610daf611c84565b610db882611d29565b610a078282611d31565b6000610dcc611dee565b50600080516020612eb983398151915290565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610e245750825b90506000826001600160401b03166001148015610e405750303b155b905081158015610e4e575080155b15610e6c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610e9657845460ff60401b1916600160401b1785555b600a80546001600160a01b03808a166001600160a01b0319928316179092558a5160005560208b015160015560408b015160025560608b015160035560808b01516004805491841691831691909117905560a08b01516005805491841691831691909117905560c08b01516006805491909316911617905560e0890151600755610100890151600855610120890151600955610f30611e37565b610f3933611e3f565b600b80546001600160a01b0319166001600160a01b03881617905560005b8851811015610fc657600e898281518110610f7457610f74612a13565b6020908102919091018101518254600181810185556000948552938390208251600390920201908155918101519282019290925560409091015160029091015580610fbe81612a3f565b915050610f57565b50831561100d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b611020611b41565b6000805b600e548110156110cf57600e818154811061104157611041612a13565b90600052602060002090600302016000015485101580156110865750600e818154811061107057611070612a13565b9060005260206000209060030201600101548511155b156110bd5782600e828154811061109f5761109f612a13565b906000526020600020906003020160020181905550600191506110cf565b806110c781612a3f565b915050611024565b5080611179576040805160608101825285815260208101858152918101848152600e805460018101825560009190915291517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd60039093029283015591517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fe82015590517fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3ff909101555b50505050565b6006546001600160a01b0316336111ca5760405162461bcd60e51b815260206004820152600f60248201526e496e76616c6964206164647265737360881b6044820152606401610af7565b60075483108015906111de57506008548311155b61122a5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206e6f742077697468696e20627579696e672072616e676521006044820152606401610af7565b336000908152600d602052604090205483111561127657336000908152600d602052604090819020549051634787a10360e11b8152610af7918591600401918252602082015260400190565b600061128184611a58565b905060006127106112928387612a9f565b61129c9190612acc565b90506000806112ab8784611c2c565b91509150816112cc5760405162461bcd60e51b8152600401610af790612a71565b336000908152600d602052604081205481906112e8908a611c2c565b91509150816113095760405162461bcd60e51b8152600401610af790612a71565b336000908152600d60205260408120829055600380549161132983612a3f565b90915550429050896000808061133e85611e50565b336000908152600c60205260408120549396509194509250908190819061136490611e50565b9250925092506000838714801561137a57508286145b801561138557508185145b905080156113e657336000908152600c602052604081206001015481906113ac908b611c03565b91509150816113cd5760405162461bcd60e51b8152600401610af790612a71565b336000908152600c6020526040902060010155506113ff565b336000908152600c602052604090208981556001018890555b5050600954336000908152600c60205260409020600101541115945061146c93505050505760405162461bcd60e51b815260206004820152601e60248201527f4461696c79204361726420427579204c696d69742045786365656465642100006044820152606401610af7565b600554611486906001600160a01b038b8116911689611c4e565b6004546114a0906001600160a01b038b8116911687611c4e565b60035460405133907fce9df9676b8ff95985927db077a18e692c06c1ecfa2abae6db585c4aedfbc909906114d9908f908f908890612ae0565b60405180910390a35050505050505050505050565b6114f6611b41565b6115006000611e76565b565b61150a611b41565b600855565b611517611b41565b600055565b611524611b41565b600955565b3061153a606083016040840161260e565b6001600160a01b0316146115905760405162461bcd60e51b815260206004820152601c60248201527f496e76616c69642064657374696e6174696f6e207265636569766572000000006044820152606401610af7565b6000898960008181106115a5576115a5612a13565b90506020020160208101906115ba919061260e565b600b549091508235906001600160a01b038084169116148015906116a2576115ed6001600160a01b038416333085611b9c565b600a5460405163095ea7b360e01b81526001600160a01b039182166004820152602481018490529084169063095ea7b3906044016020604051808303816000875af1158015611640573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116649190612b09565b6116a25760405162461bcd60e51b815260206004820152600f60248201526e105c1c1c9bdd985b0819985a5b1959608a1b6044820152606401610af7565b6000600a60009054906101000a90046001600160a01b03166001600160a01b031663cef95229348f8f8f8f8f8f8f8f8f6040518b63ffffffff1660e01b81526004016116f699989796959493929190612c04565b60006040518083038185885af1158015611714573d6000803e3d6000fd5b50505050506040513d6000823e601f3d908101601f1916820160405261173d9190810190612d27565b905060005b81518110156117ab5761179960405180604001604052806012815260200171616d6f756e74734f75745b25645d3a20257360701b8152508284848151811061178c5761178c612a13565b6020026020010151611ee7565b806117a381612a3f565b915050611742565b50600081600183516117bd9190612db7565b815181106117cd576117cd612a13565b60200260200101519050600081116118155760405162461bcd60e51b815260206004820152600b60248201526a14ddd85c0819985a5b195960aa1b6044820152606401610af7565b6000806127106118258285612a9f565b61182f9190612acc565b905060008061183e8584611c2c565b915091508161185f5760405162461bcd60e51b8152600401610af790612a71565b60065460055482916001600160a01b03908116916118809183911687611c4e565b336000908152600d6020526040812054819061189c9085611c03565b91509150816118bd5760405162461bcd60e51b8152600401610af790612a71565b336000818152600d602090815260409182902084905581518f81529081018f90529081018b9052606081018990526001600160a01b038f1691907fd8066379a11f110d1eb579110571ce47b1557c623d7ae29f423d92cd6dd953be9060800160405180910390a350505050505050505050505050505050505050505050565b611944611b41565b600680546001600160a01b0319166001600160a01b0392909216919091179055565b61196e611b41565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b611998611b41565b600155565b6060600e805480602002602001604051908101604052809291908181526020016000905b82821015611a1157838290600052602060002090600302016040518060600160405290816000820154815260200160018201548152602001600282015481525050815260200190600101906119c1565b50505050905090565b611a22611b41565b6001600160a01b038116611a4c57604051631e4fbdf760e01b815260006004820152602401610af7565b611a5581611e76565b50565b6000805b600e54811015611b0257600e8181548110611a7957611a79612a13565b9060005260206000209060030201600001548310158015611abe5750600e8181548110611aa857611aa8612a13565b9060005260206000209060030201600101548311155b15611af057600e8181548110611ad657611ad6612a13565b906000526020600020906003020160020154915050919050565b80611afa81612a3f565b915050611a5c565b5060405162461bcd60e51b8152602060048201526013602482015272416d6f756e74206f7574206f662072616e676560681b6044820152606401610af7565b33611b737f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146115005760405163118cdaa760e01b8152336004820152602401610af7565b6040516001600160a01b0384811660248301528381166044830152606482018390526111799186918216906323b872dd906084015b604051602081830303815290604052915060e01b6020820180516001600160e01b038381831617835250505050611f2e565b60008083830184811015611c1e576000809250925050611c25565b6001925090505b9250929050565b60008083831115611c4257506000905080611c25565b50600193919092039150565b6040516001600160a01b03838116602483015260448201839052611c7f91859182169063a9059cbb90606401611bd1565b505050565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611d0b57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611cff600080516020612eb9833981519152546001600160a01b031690565b6001600160a01b031614155b156115005760405163703e46dd60e11b815260040160405180910390fd5b611a55611b41565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611d8b575060408051601f3d908101601f19168201909252611d8891810190612a58565b60015b611db357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610af7565b600080516020612eb98339815191528114611de457604051632a87526960e21b815260048101829052602401610af7565b611c7f8383611f91565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146115005760405163703e46dd60e11b815260040160405180910390fd5b611500611fe7565b611e47611fe7565b611a5581612030565b60008080611e69611e646201518086612acc565b612038565b9196909550909350915050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a3505050565b611c7f838383604051602401611eff93929190612dca565b60408051601f198184030181529190526020810180516001600160e01b031663ca47c4eb60e01b1790526121ac565b6000611f436001600160a01b038416836121cd565b90508051600014158015611f68575080806020019051810190611f669190612b09565b155b15611c7f57604051635274afe760e01b81526001600160a01b0384166004820152602401610af7565b611f9a826121e4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a2805115611fdf57611c7f8282612249565b610a076122bf565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661150057604051631afcd79f60e31b815260040160405180910390fd5b611a22611fe7565b60008080838162253d8c61204f8362010bd9612def565b6120599190612def565b9050600062023ab161206c836004612e17565b6120769190612e47565b905060046120878262023ab1612e17565b612092906003612def565b61209c9190612e47565b6120a69083612e75565b9150600062164b096120b9846001612def565b6120c590610fa0612e17565b6120cf9190612e47565b905060046120df826105b5612e17565b6120e99190612e47565b6120f39084612e75565b6120fe90601f612def565b9250600061098f612110856050612e17565b61211a9190612e47565b90506000605061212c8361098f612e17565b6121369190612e47565b6121409086612e75565b905061214d600b83612e47565b945061215a85600c612e17565b612165836002612def565b61216f9190612e75565b9150848361217e603187612e75565b612189906064612e17565b6121939190612def565b61219d9190612def565b9a919950975095505050505050565b80516a636f6e736f6c652e6c6f67602083016000808483855afa5050505050565b60606121db838360006122de565b90505b92915050565b806001600160a01b03163b60000361221a57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610af7565b600080516020612eb983398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b6060600080846001600160a01b0316846040516122669190612e9c565b600060405180830381855af49150503d80600081146122a1576040519150601f19603f3d011682016040523d82523d6000602084013e6122a6565b606091505b50915091506122b685838361237d565b95945050505050565b34156115005760405163b398979f60e01b815260040160405180910390fd5b6060814710156123035760405163cd78605960e01b8152306004820152602401610af7565b600080856001600160a01b0316848660405161231f9190612e9c565b60006040518083038185875af1925050503d806000811461235c576040519150601f19603f3d011682016040523d82523d6000602084013e612361565b606091505b509150915061237186838361237d565b925050505b9392505050565b6060826123925761238d826123d9565b612376565b81511580156123a957506001600160a01b0384163b155b156123d257604051639996b31560e01b81526001600160a01b0385166004820152602401610af7565b5080612376565b8051156123e95780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b5080546000825560030290600052602060002090810190611a5591905b