[ { "inputs": [ { "internalType": "address", "name": "_marketContract", "type": "address" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "symbol", "type": "string" }, { "internalType": "uint256", "name": "_expirationTime", "type": "uint256" }, { "internalType": "uint256", "name": "_marketId", "type": "uint256" }, { "internalType": "uint256", "name": "_optionId", "type": "uint256" }, { "internalType": "address", "name": "_creator", "type": "address" }, { "internalType": "address", "name": "_platform", "type": "address" }, { "internalType": "enum BondingCurveToken.Mode", "name": "_mode", "type": "uint8" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "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" }, { "inputs": [], "name": "EnforcedPause", "type": "error" }, { "inputs": [], "name": "ExpectedPause", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "OwnableInvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "OwnableUnauthorizedAccount", "type": "error" }, { "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": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newBasePrice", "type": "uint256" } ], "name": "BasePriceChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "walletAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "eth", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "avgPrice", "type": "uint256" } ], "name": "BuyToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newFeePercentage", "type": "uint256" } ], "name": "FeePercentageChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "creatorFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "platformFee", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "actionType", "type": "string" } ], "name": "FeeTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "previousOwner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "newOwner", "type": "address" } ], "name": "OwnershipTransferred", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Paused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newPrice", "type": "uint256" } ], "name": "PriceChange", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "walletAddress", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "eth", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "avgPrice", "type": "uint256" } ], "name": "SellToken", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "newSlope", "type": "uint256" } ], "name": "SlopeChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" } ], "name": "TradingPaused", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "marketId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "optionId", "type": "uint256" } ], "name": "TradingResumed", "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": false, "internalType": "address", "name": "account", "type": "address" } ], "name": "Unpaused", "type": "event" }, { "inputs": [], "name": "DECIMALS", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "DECIMAL_FACTOR", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "autoSellTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "basePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "buy", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" }, { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "buyFromContract", "outputs": [], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "calculateBuyTokenAmountAddFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "supply", "type": "uint256" } ], "name": "calculatePrice", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "calculateSellTokenAmountAddFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "ethAmount", "type": "uint256" } ], "name": "calculateTokenAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "calculateTotalCost", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "calculateTotalProceeds", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "calculateTotalProceedsWithoutFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "checkTradingStatus", "outputs": [], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "creator", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "expirationTime", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "feePercentage", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketContract", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "marketResolved", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "mode", "outputs": [ { "internalType": "enum BondingCurveToken.Mode", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "optionId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "pauseTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "paused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "platform", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "renounceOwnership", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "resumeTrading", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "resumeTradingTimestamp", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "sell", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "sellFromContract", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sendLoseOptionPriceTo0Event", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_autoSellTime", "type": "uint256" } ], "name": "setAutoSellTime", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newBasePrice", "type": "uint256" } ], "name": "setBasePrice", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "_feePercentage", "type": "uint256" } ], "name": "setFeePercentage", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bool", "name": "_resolved", "type": "bool" } ], "name": "setMarketResolved", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_platform", "type": "address" } ], "name": "setPlatform", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "timestamp", "type": "uint256" } ], "name": "setResumeTradingTimestamp", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "newSlope", "type": "uint256" } ], "name": "setSlope", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "slope", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "tradingPaused", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "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": [ { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
6101006040523461057657612bab8038038061001a8161057b565b9283398101906101208183031261057657610034816105a0565b60208201519092906001600160401b03811161057657816100569184016105b4565b604083015190916001600160401b038211610576576100769184016105b4565b6060830151608084015160a08501519161009260c087016105a0565b936101006100a260e089016105a0565b970151956001871015610576578051906001600160401b0382116104735760035490600182811c9216801561056c575b60208310146104535781601f8493116104fc575b50602090601f831160011461049457600092610489575b50508160011b916000199060031b1c1916176003555b8051906001600160401b0382116104735760045490600182811c92168015610469575b60208310146104535781601f8493116103e3575b50602090601f831160011461037b57600092610370575b50508160011b916000199060031b1c1916176004555b331561035a576005546040519790336001600160a01b0382167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0600080a36001600160a81b03199081163360ff60a01b191617600555600f6006556406fc23ac00600781905560085560809190915260a091825260c09290925260e092909252600b80546001600160a01b0319166001600160a01b03948516179055600c805490911694909216939093179190921b60ff60a01b16179055600019600a5561258b908161062082396080518181816102700152818161079b015281816108ff01528181610d3101528181610de901528181610f1c01528181610fa00152818161127b0152818161141c015281816115c30152818161166c015281816117660152818161198501528181611bd60152611def015260a0518181816109fd0152611e2b015260c0518181816102f8015281816105e9015281816108150152818161095a01528181610aa001528181610e4401528181611219015281816114600152818161161e015281816119cc0152611c38015260e05181818161031a0152818161060b0152818161083a0152818161093901528181610ac201528181610e2301528181610e9201528181611483015281816115fd015281816119ef0152611c5b0152f35b631e4fbdf760e01b600052600060045260246000fd5b015190503880610161565b600460009081528281209350601f198516905b8181106103cb57509084600195949392106103b2575b505050811b01600455610177565b015160001960f88460031b161c191690553880806103a4565b9293602060018192878601518155019501930161038e565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c81019160208510610449575b90601f859493920160051c01905b81811061043a575061014a565b6000815584935060010161042d565b909150819061041f565b634e487b7160e01b600052602260045260246000fd5b91607f1691610136565b634e487b7160e01b600052604160045260246000fd5b0151905038806100fd565b600360009081528281209350601f198516905b8181106104e457509084600195949392106104cb575b505050811b01600355610113565b015160001960f88460031b161c191690553880806104bd565b929360206001819287860151815501950193016104a7565b60036000529091507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f840160051c81019160208510610562575b90601f859493920160051c01905b81811061055357506100e6565b60008155849350600101610546565b9091508190610538565b91607f16916100d2565b600080fd5b6040519190601f01601f191682016001600160401b0381118382101761047357604052565b51906001600160a01b038216820361057657565b81601f82011215610576578051906001600160401b038211610473576105e3601f8301601f191660200161057b565b92828452602083830101116105765760005b82811061060a57505060206000918301015290565b806020809284010151828287010152016105f556fe608080604052600436101561001357600080fd5b600090813560e01c90816302d05d3f14611c83575080630694db1e14611bbf57806306fdde0314611b02578063095ea7b314611a585780630e120fa114611a3a5780631031e36e1461196e57806310cc58921461195257806318160ddd1461193457806323b872dd14611854578063295a5212146118115780632e0f2625146117335780632e1a7d4d1461174f578063313ce5671461173357806333fdbbe51461171057806334618c4d146116f25780634bde38c8146116c957806353e23e2e146116a3578063541ec31714611654578063569e3e02146115845780635b573962146114dd5780635c975abb146114b757806366410994146114055780636810209d146112cc5780636945c5ea1461125b5780636e9ec2d91461123c5780636ed71ede1461120157806370a08231146111c9578063715018a61461116c578063769aee831461114d57806383caf2751461112f578063853fd421146111095780638da5cb5b146110e057806395d89b4114610fd75780639666de2314610f8857806398efca5414610f69578063a001ecdd14610f4b578063a1794bcd14610f06578063a24bcf4614610ee7578063a9059cbb14610eb5578063ad27179614610e7a578063ae06c1b714610daa578063ae10426514610d83578063b575b73814610d0c578063c7876ea414610cee578063d96a094a14610a20578063da284dcc146109e5578063dd62ed3e14610990578063de4b3262146108c0578063e12a43e714610789578063e4849b32146104cf578063f2fde38b146104465763fa64ef501461025d57600080fd5b34610443576020366003190112610443577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03811691600435916102a9338514611d22565b838252816020526102c0836040842054101561226e565b6102c98361211a565b926102d6844710156122ba565b6102e081836124b4565b8280808087819981159a8b61043a575bf11561042f577f0000000000000000000000000000000000000000000000000000000000000000947f000000000000000000000000000000000000000000000000000000000000000093670de0b6b3a7640000860291868304670de0b6b3a764000014171561041b575084602096936103da8461039e60008051602061253683398151915298967f9649ad0ee23296902c3e5aeea5c80cb0eae49caf2ca5404f032ba7707a7d5df996611faf565b60408051898152602081018990526001600160a01b03909516908501526060840194909452608083015260a082019290925290819060c0820190565b0390a16104106103eb600254612252565b6040519384934291859094939260609260808301968352602083015260408201520152565b0390a1604051908152f35b634e487b7160e01b81526011600452602490fd5b6040513d84823e3d90fd5b506108fc6102f0565b80fd5b503461044357602036600319011261044357610460611cf1565b61046861240d565b6001600160a01b031680156104bb57600580546001600160a01b0319811683179091556001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08380a380f35b631e4fbdf760e01b82526004829052602482fd5b5034610443576020366003190112610443576004356104ec612436565b6104f4611dc7565b3382528160205261050b816040842054101561226e565b6105148161207f565b906103e882028215938382046103e81485171561041b5760065491826103e8036103e88111610775576105576103e8926105518661056a94611f8f565b90611faf565b93826105638287611f9c565b0494611f9c565b049261058a476105838661057e878a611dba565b611dba565b11156122ba565b61059481336124b4565b8180868861076b575b8280929181923390f11561074c57818080808660018060a01b03600b5416828215610762575bf11561074c57818080808760018060a01b03600c5416828215610759575bf11561074c577f0000000000000000000000000000000000000000000000000000000000000000957f000000000000000000000000000000000000000000000000000000000000000092670de0b6b3a7640000870291878304670de0b6b3a764000014171561041b575092602096927f9649ad0ee23296902c3e5aeea5c80cb0eae49caf2ca5404f032ba7707a7d5df9836106a07f0baf2218b55f879cd170b80e18a05568de52b011d16e0edcfe666deec1d36981989560e098611faf565b60408051888152602081018690523391810191909152606081018b9052608081019290925260a082015260c090a16000805160206125368339815191526107116106eb600254612252565b60405191829142868a859094939260609260808301968352602083015260408201520152565b0390a1604051938452878401526040830152606082015260a06080820152600460a0820152631cd95b1b60e21b60c0820152a1604051908152f35b50604051903d90823e3d90fd5b506108fc6105e1565b506108fc6105c3565b6108fc915061059d565b634e487b7160e01b83526011600452602483fd5b506040366003190112610443576024357f00000000000000000000000000000000000000000000000000000000000000006004356107d1336001600160a01b03841614611d22565b82341061087b577fb461cb86c12522dc130fc68e82c7889ec2ad77139953bf116fab36f27768a543600080516020612536833981519152936108138385612456565b7f0000000000000000000000000000000000000000000000000000000000000000936108647f00000000000000000000000000000000000000000000000000000000000000009461039e8185611faf565b0390a16108756103eb600254612252565b0390a180f35b60405162461bcd60e51b815260206004820152601860248201527f496e636f7272656374207061796d656e7420616d6f756e7400000000000000006044820152606490fd5b5034610443576020366003190112610443577fc8feb121a4b9a3f31571b042fd0ec0fcc7f4bec75a956abaaa63bed559d5555361087560043561092d337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611d22565b806007556040519182917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846040919493926060820195825260208201520152565b50346104435760403660031901126104435760406109ac611cf1565b916109b5611d0c565b9260018060a01b031681526001602052209060018060a01b03166000526020526020604060002054604051908152f35b503461044357806003193601126104435760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b50602036600319011261044357600435610a38612436565b610a40611dc7565b610a498161213a565b90813410610cb25760065491610a5f8382611f9c565b836103e80190816103e811610c9e5790610551610a83610a94936105518885611dba565b95610a8e8186611f9c565b92611dba565b610a9e8333612456565b7f0000000000000000000000000000000000000000000000000000000000000000917f000000000000000000000000000000000000000000000000000000000000000093670de0b6b3a76400008202828104670de0b6b3a76400001483151715610c8a5781610b308994937fb461cb86c12522dc130fc68e82c7889ec2ad77139953bf116fab36f27768a54393611faf565b60408051888152602081018a9052339181019190915260608101859052608081019290925260a082015260c090a1600080516020612536833981519152610ba1610b7b600254612252565b604051918291428a8a859094939260609260808301968352602083015260408201520152565b0390a1803411610c5d575b508080808760018060a01b03600b5416828215610c54575bf115610c4057848080808460018060a01b03600c5416828215610c4b575bf115610c40577f0baf2218b55f879cd170b80e18a05568de52b011d16e0edcfe666deec1d369819360e09360405193845260208401526040830152606082015260a06080820152600360a08201526262757960e81b60c0820152a180f35b6040513d86823e3d90fd5b506108fc610be2565b506108fc610bc4565b8180610c6a819334611f8f565b818115610c81575b3390f115610c40578438610bac565b506108fc610c72565b634e487b7160e01b88526011600452602488fd5b634e487b7160e01b86526011600452602486fd5b60405162461bcd60e51b8152602060048201526014602482015273125b9cdd59999a58da595b9d081c185e5b595b9d60621b6044820152606490fd5b50346104435780600319360112610443576020600754604051908152f35b503461044357602036600319011261044357600435801515809103610d7f57610d5f337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611d22565b6005805460ff60b01b191660b09290921b60ff60b01b1691909117905580f35b5080fd5b5034610443576020366003190112610443576020610da2600435612252565b604051908152f35b5034610443576020366003190112610443577fe86172c8481ff859d5211e22882c6c71449a420da0c7b9d689e68b081d9a59da610875600435610e17337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611d22565b806006556040519182917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846040919493926060820195825260208201520152565b503461044357806003193601126104435760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b503461044357604036600319011261044357610edc610ed2611cf1565b6024359033612306565b602060405160018152f35b5034610443576020366003190112610443576020610da260043561219c565b50346104435780600319360112610443576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346104435780600319360112610443576020600654604051908152f35b5034610443576020366003190112610443576020610da260043561213a565b503461044357602036600319011261044357610fce337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611d22565b60043560095580f35b50346104435780600319360112610443576040519080600454908160011c916001811680156110d6575b6020841081146110c25783865290811561109b575060011461103e575b61103a8461102e81860382611d82565b60405191829182611ca8565b0390f35b600481527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b939250905b8082106110815750909150810160200161102e8261101e565b919260018160209254838588010152019101909291611068565b60ff191660208087019190915292151560051b8501909201925061102e915083905061101e565b634e487b7160e01b83526022600452602483fd5b92607f1692611001565b50346104435780600319360112610443576005546040516001600160a01b039091168152602090f35b5034610443578060031936011261044357602060ff60055460b01c166040519015158152f35b50346104435780600319360112610443576020600854604051908152f35b5034610443576020366003190112610443576020610da260043561211a565b503461044357806003193601126104435761118561240d565b600580546001600160a01b0319811690915581906001600160a01b03167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08280a380f35b5034610443576020366003190112610443576020906040906001600160a01b036111f1611cf1565b1681528083522054604051908152f35b503461044357806003193601126104435760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b5034610443576020366003190112610443576020610da260043561207f565b503461044357602036600319011261044357611275611cf1565b6112a9337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611d22565b60018060a01b03166bffffffffffffffffffffffff60a01b600c541617600c5580f35b503461044357602036600319011261044357600435600254906008549161130d670de0b6b3a76400006113038560011c9386611f9c565b0460075490611dba565b916103e88102908082046103e814901517156113f1576006546001600160ff1b0381168103610c9e5760011b6103e80190816103e811610c9e579061135191611faf565b61135b8380611f9c565b916001600160fe1b038116036113f1579161139361138e6113989361138888966003198960011b16611f9c565b90611dba565b6123cb565b611f8f565b91600119169261041b57506113ae821515611fcf565b670de0b6b3a7640000810290808204670de0b6b3a764000014901517156113db57602091610da291611faf565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b85526011600452602485fd5b503461044357806003193601126104435761144a337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611d22565b60008051602061253683398151915260806040517f000000000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006020820152426040820152836060820152a180f35b5034610443578060031936011261044357602060ff60055460a01c166040519015158152f35b503461044357602036600319011261044357600654806103e8036103e88111610775576115106103e89261151892611f8f565b600435611f9c565b04600254906008549161153b670de0b6b3a76400006113038560011c9386611f9c565b916115468380611f9c565b916001600160fe1b038116036113f15761138e6115729392611388611393936003198860011b16611f9c565b906001191691506113ae821515611fcf565b5034610443576020366003190112610443577fb4c5c83aff60e77a0838320a228e9da812a84a9dc369946909d9ef62cb248b4e6108756004356115f1337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611d22565b806008556040519182917f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000846040919493926060820195825260208201520152565b50346104435760203660031901126104435761169a337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611d22565b600435600a5580f35b5034610443578060031936011261044357602060ff60055460a81c166040519015158152f35b5034610443578060031936011261044357600c546040516001600160a01b039091168152602090f35b50346104435780600319360112610443576020600954604051908152f35b50346104435780600319360112610443576020604051670de0b6b3a76400008152f35b5034610443578060031936011261044357602060405160128152f35b5034610443576020366003190112610443576004357f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611799338214611d22565b4782116117cc578280809381938282156117c3575bf1156117b75780f35b604051903d90823e3d90fd5b506108fc6117ae565b60405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e7420726573657276652062616c616e6365000000006044820152606490fd5b503461044357806003193601126104435760ff600c5460a01c1660405190600181101561184057602092508152f35b634e487b7160e01b83526021600452602483fd5b50346104435760603660031901126104435761186e611cf1565b611876611d0c565b6001600160a01b0382168084526001602081815260408087203388529091528520546044359492909182016118b2575b5050610edc9350612306565b8482106119195780156119055733156118f1576040868692610edc9852600160205281812060018060a01b0333168252602052209103905538806118a6565b634a1406b160e11b86526004869052602486fd5b63e602df0560e01b86526004869052602486fd5b6064868684637dc7a0d960e11b835233600452602452604452fd5b50346104435780600319360112610443576020600254604051908152f35b503461044357806003193601126104435761196b611dc7565b80f35b50346104435780600319360112610443576119b3337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611d22565b6005805460ff60a81b1916600160a81b179055604080517f000000000000000000000000000000000000000000000000000000000000000081527f000000000000000000000000000000000000000000000000000000000000000060208201527f09897bb64196ad96c20605d3138c3db57e1beb240a07d42daeed0565b1d046ad9190a180f35b50346104435780600319360112610443576020600a54604051908152f35b503461044357604036600319011261044357611a72611cf1565b602435903315611aee576001600160a01b0316918215611ada5760408291338152600160205281812085825260205220556040519081527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560203392a3602060405160018152f35b634a1406b160e11b81526004819052602490fd5b63e602df0560e01b83526004839052602483fd5b50346104435780600319360112610443576040519080600354908160011c91600181168015611bb5575b6020841081146110c25783865290811561109b5750600114611b585761103a8461102e81860382611d82565b600381527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b939250905b808210611b9b5750909150810160200161102e8261101e565b919260018160209254838588010152019101909291611b82565b92607f1692611b2c565b5034610443578060031936011261044357611c04337f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031614611d22565b60ff60a81b19600554166005557fd1677f71a0b86e781379c353f2195da5af2e70e5c7a148f31fcbc45d26997d22604080517f000000000000000000000000000000000000000000000000000000000000000081527f00000000000000000000000000000000000000000000000000000000000000006020820152a180f35b905034610d7f5781600319360112610d7f57600b546001600160a01b03168152602090f35b91909160208152825180602083015260005b818110611cdb575060409293506000838284010152601f8019910116010190565b8060208092870101516040828601015201611cba565b600435906001600160a01b0382168203611d0757565b600080fd5b602435906001600160a01b0382168203611d0757565b15611d2957565b60405162461bcd60e51b815260206004820152602b60248201527f4f6e6c79206d61726b657420636f6e74726163742063616e2063616c6c20746860448201526a34b990333ab731ba34b7b760a91b6064820152608490fd5b90601f8019910116810190811067ffffffffffffffff821117611da457604052565b634e487b7160e01b600052604160045260246000fd5b919082018092116113db57565b60055460ff8160b01c1615600014611f245760405163a65726c560e01b8152906020826004817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa918215611f1857600092611ee4575b507f000000000000000000000000000000000000000000000000000000000000000091824210928315611ecf575b505081611ec0575b5015611e6657565b60405162461bcd60e51b815260206004820152602c60248201527f4d61726b6574206973206578706972656420616e642074726164696e6720697360448201526b081b9bdd08185b1b1bddd95960a21b6064820152608490fd5b60ff915060a81c161538611e5e565b611eda929350611dba565b4211903880611e56565b9091506020813d602011611f10575b81611f0060209383611d82565b81010312611d0757519038611e28565b3d9150611ef3565b6040513d6000823e3d90fd5b506009544210611f3057565b60405162461bcd60e51b815260206004820152603160248201527f4d61726b6574206973207265736f6c76656420616e642074726164696e6720696044820152701cc81b9bdd08185b1b1bddd959081e595d607a1b6064820152608490fd5b919082039182116113db57565b818102929181159184041417156113db57565b8115611fb9570490565b634e487b7160e01b600052601260045260246000fd5b15611fd657565b60405162461bcd60e51b815260206004820152602560248201527f44656e6f6d696e61746f72206d7573742062652067726561746572207468616e604482015264207a65726f60d81b6064820152608490fd5b1561203057565b60405162461bcd60e51b815260206004820152602160248201527f546f6b656e20616d6f756e74206578636565647320746f74616c20737570706c6044820152607960f81b6064820152608490fd5b6120f261211791670de0b6b3a76400006120eb600254926120a284821115612029565b6120e5671bc16d674ec800006120db856120d36120cd86836120c682600754611f9c565b049a611f8f565b86611f9c565b049380611f9c565b0460085492611dba565b90611f9c565b0490611dba565b6121116006546103e86120eb816121098487611f9c565b049285611f9c565b90611f8f565b90565b61211790670de0b6b3a76400006120eb600254926120a284821115612029565b61217690670de0b6b3a76400006120eb600254926120e5671bc16d674ec800006120db856120d38161216e87600754611f9c565b049886611f9c565b8060011b90808204600214811517156113db576103e86120eb6121179360065490611f9c565b6000811561224d5760025491600854926121c6670de0b6b3a76400006113038660011c9387611f9c565b916121d18380611f9c565b916001600160fe1b038116036122395761138e6121fd9392611388611393936003198960011b16611f9c565b9160011916905061220f811515611fcf565b670de0b6b3a7640000820291808304670de0b6b3a764000014901517156113db5761211791611faf565b634e487b7160e01b84526011600452602484fd5b905090565b61211790670de0b6b3a76400006120eb60075492600854611f9c565b1561227557565b60405162461bcd60e51b815260206004820152601c60248201527f496e73756666696369656e742062616c616e636520746f2073656c6c000000006044820152606490fd5b156122c157565b60405162461bcd60e51b815260206004820152601f60248201527f496e73756666696369656e74207265736572766520746f20706179206f7574006044820152606490fd5b6001600160a01b03169081156123b5576001600160a01b031691821561239f5760008281528060205260408120548281106123855791604082827fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef958760209652828652038282205586815280845220818154019055604051908152a3565b916064928463391434e360e21b8452600452602452604452fd5b63ec442f0560e01b600052600060045260246000fd5b634b637e8f60e11b600052600060045260246000fd5b801561240757600181018082116113db5760011c815b8282106123ed57505090565b9091506123fe8261057e8184611faf565b60011c906123e1565b50600090565b6005546001600160a01b0316330361242157565b63118cdaa760e01b6000523360045260246000fd5b60ff60055460a01c1661244557565b63d93c066560e01b60005260046000fd5b6001600160a01b031690811561239f5761247281600254611dba565b6002557fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602060009284845283825260408420818154019055604051908152a3565b6001600160a01b031680156123b55760009181835282602052604083205481811061251c57817fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef926020928587528684520360408620558060025403600255604051908152a3565b6064939263391434e360e21b8452600452602452604452fdfe11db4f8d26695a880a9a2ce8b75c6f8165386916a5143ff81f66886967aabbd0a26469706673582212201c4b18fcb1c56fba73a396d44bb93625a14312ffc53a4eab8eefee2f06f78a5d64736f6c634300081a003300000000000000000000000061ff953769b682357d909abc1620c03db4d9e87d000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000066e46f90000000000000000000000000000000000000000000000000000000000000006200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000b71c70b4f482c428d2de5057969860aebd749ea00000000000000000000000078200f6a304e216268bed6fc5289bde077fd758300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004434154490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044341544900000000000000000000000000000000000000000000000000000000