[ { "inputs": [ { "internalType": "contract IAIOracle", "name": "_aiOracle", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721IncorrectOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721InsufficientApproval", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "approver", "type": "address" } ], "name": "ERC721InvalidApprover", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" } ], "name": "ERC721InvalidOperator", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "ERC721InvalidOwner", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" } ], "name": "ERC721InvalidReceiver", "type": "error" }, { "inputs": [ { "internalType": "address", "name": "sender", "type": "address" } ], "name": "ERC721InvalidSender", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ERC721NonexistentToken", "type": "error" }, { "inputs": [ { "internalType": "contract IAIOracle", "name": "expected", "type": "address" }, { "internalType": "contract IAIOracle", "name": "found", "type": "address" } ], "name": "UnauthorizedCallbackSource", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "indexed": true, "internalType": "bytes", "name": "prompt", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "aigcData", "type": "bytes" }, { "indexed": false, "internalType": "bytes", "name": "proof", "type": "bytes" } ], "name": "AigcData", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "ApprovalForAll", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "nestedRequestId", "type": "uint256" }, { "indexed": false, "internalType": "address", "name": "sender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "modelId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "prompt", "type": "string" } ], "name": "promptRequest", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "modelId", "type": "uint256" }, { "indexed": false, "internalType": "string", "name": "input", "type": "string" }, { "indexed": false, "internalType": "string", "name": "output", "type": "string" }, { "indexed": false, "internalType": "bytes", "name": "callbackData", "type": "bytes" } ], "name": "promptsUpdated", "type": "event" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "prompt", "type": "bytes" }, { "internalType": "bytes", "name": "aigcData", "type": "bytes" }, { "internalType": "bytes", "name": "proof", "type": "bytes" } ], "name": "addAigcData", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "aiOracle", "outputs": [ { "internalType": "contract IAIOracle", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "requestId", "type": "uint256" }, { "internalType": "bytes", "name": "output", "type": "bytes" }, { "internalType": "bytes", "name": "callbackData", "type": "bytes" } ], "name": "aiOracleCallback", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "aigcData", "outputs": [ { "internalType": "bytes", "name": "fortune", "type": "bytes" }, { "internalType": "bytes", "name": "imageCID", "type": "bytes" }, { "internalType": "address", "name": "author", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "approve", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "string", "name": "prompt", "type": "string" } ], "name": "calculateAIResult", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "payable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "callbackGasLimit", "outputs": [ { "internalType": "uint64", "name": "", "type": "uint64" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "modelId", "type": "uint256" } ], "name": "estimateFee", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "modelId", "type": "uint256" }, { "internalType": "string", "name": "prompt", "type": "string" } ], "name": "getAIResult", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "getApproved", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "getOwnedTokens", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "operator", "type": "address" } ], "name": "isApprovedForAll", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "requestId", "type": "uint256" } ], "name": "isFinalized", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "llamaId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "ownedTokens", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "owner", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "ownerOf", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "name": "promptToTokenId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" }, { "internalType": "string", "name": "", "type": "string" } ], "name": "prompts", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "requestOutputs", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "requests", "outputs": [ { "internalType": "address", "name": "sender", "type": "address" }, { "internalType": "uint256", "name": "modelId", "type": "uint256" }, { "internalType": "bytes", "name": "input", "type": "bytes" }, { "internalType": "bytes", "name": "output", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "safeTransferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "sdId", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "operator", "type": "address" }, { "internalType": "bool", "name": "approved", "type": "bool" } ], "name": "setApprovalForAll", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "modelId", "type": "uint256" }, { "internalType": "uint64", "name": "gasLimit", "type": "uint64" } ], "name": "setCallbackGasLimit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" } ], "name": "supportsInterface", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "tokenIdToPrompt", "outputs": [ { "internalType": "bytes", "name": "", "type": "bytes" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "tokenURI", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "tokenId", "type": "uint256" } ], "name": "transferFrom", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "bytes", "name": "prompt", "type": "bytes" }, { "internalType": "bytes", "name": "aigcData", "type": "bytes" }, { "internalType": "bytes", "name": "proof", "type": "bytes" } ], "name": "verify", "outputs": [ { "internalType": "bool", "name": "success", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address payable", "name": "recipient", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "withdrawExcessFunds", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ]
60a060405234801561001057600080fd5b5060405161365238038061365283398101604081905261002f9161012e565b60408051808201825260128152714f6e2d636861696e204149204f7261636c6560701b602080830191909152825180840190935260038352624f414f60e81b908301526001600160a01b03831660805290600061008c83826101fd565b50600161009982826101fd565b5050600b80546001600160a01b03191633178155600c5550506101f7600d819055600f6020527f0db0e9d5a07148aa3e0acc10f721b78526b53a3f4f3d07794be76568de7347c580546001600160401b0319908116624c4b40179091556000919091527f87f739e929d7e291bc6d7485affd847354810e9e1ce72a9c290de92663c527d380549091166207a1201790556102bb565b60006020828403121561014057600080fd5b81516001600160a01b038116811461015757600080fd5b9392505050565b634e487b7160e01b600052604160045260246000fd5b600181811c9082168061018857607f821691505b6020821081036101a857634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156101f857806000526020600020601f840160051c810160208510156101d55750805b601f840160051c820191505b818110156101f557600081556001016101e1565b50505b505050565b81516001600160401b038111156102165761021661015e565b61022a816102248454610174565b846101ae565b6020601f82116001811461025e57600083156102465750848201515b600019600385901b1c1916600184901b1784556101f5565b600084815260208120601f198516915b8281101561028e578785015182556020948501946001909201910161026e565b50848210156102ac5786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b608051613352610300600039600081816103a90152818161088d01528181610a6d0152818161110e015281816112320152818161126f01526113a601526133526000f3fe60806040526004361061020f5760003560e01c806381d12c5811610118578063aa2e084e116100a0578063c87b56dd1161006f578063c87b56dd1461067a578063d9d616551461069a578063de8f50a1146106c7578063e149f036146106ee578063e985e9c51461070e57600080fd5b8063aa2e084e146105de578063aea3050714610616578063b03478141461063a578063b88d4fde1461065a57600080fd5b806395d89b41116100e757806395d89b411461056a578063964eb50e1461057f578063a22cb46514610595578063a2677754146105b5578063aa22cf01146105c857600080fd5b806381d12c58146104cb5780638a86a6c3146104fb5780638cbc52d91461052a5780638da5cb5b1461054a57600080fd5b806331b221cd1161019b57806362349de91161016a57806362349de91461042b5780636352211e1461044b57806364d172da1461046b57806370a082311461048b578063813d1e15146104ab57600080fd5b806331b221cd1461039757806333727c4d146103cb5780633d837bf8146103eb57806342842e0e1461040b57600080fd5b8063127e8e4d116101e2578063127e8e4d146102c557806318160ddd146102f357806320f387181461030957806323b872dd146103575780632c6296b71461037757600080fd5b806301ffc9a71461021457806306fdde0314610249578063081812fc1461026b578063095ea7b3146102a3575b600080fd5b34801561022057600080fd5b5061023461022f36600461228d565b61072e565b60405190151581526020015b60405180910390f35b34801561025557600080fd5b5061025e61078f565b6040516102409190612301565b34801561027757600080fd5b5061028b610286366004612314565b610821565b6040516001600160a01b039091168152602001610240565b3480156102af57600080fd5b506102c36102be366004612342565b61084a565b005b3480156102d157600080fd5b506102e56102e0366004612314565b610859565b604051908152602001610240565b3480156102ff57600080fd5b506102e560065481565b34801561031557600080fd5b5061033f610324366004612314565b600f602052600090815260409020546001600160401b031681565b6040516001600160401b039091168152602001610240565b34801561036357600080fd5b506102c361037236600461236e565b6108ff565b34801561038357600080fd5b5061025e6103923660046123f7565b61098f565b3480156103a357600080fd5b5061028b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156103d757600080fd5b506102346103e6366004612314565b610a54565b3480156103f757600080fd5b5061025e610406366004612314565b610ae0565b34801561041757600080fd5b506102c361042636600461236e565b610b7a565b34801561043757600080fd5b5061025e610446366004612314565b610b9a565b34801561045757600080fd5b5061028b610466366004612314565b610bb3565b34801561047757600080fd5b506102c3610486366004612342565b610bbe565b34801561049757600080fd5b506102e56104a6366004612442565b610c9a565b3480156104b757600080fd5b506102c36104c636600461245f565b610ce2565b3480156104d757600080fd5b506104eb6104e6366004612314565b610d58565b604051610240949392919061249b565b34801561050757600080fd5b5061051b61051636600461258d565b610e9b565b604051610240939291906125c1565b34801561053657600080fd5b5061025e6105453660046125ff565b610fe1565b34801561055657600080fd5b50600b5461028b906001600160a01b031681565b34801561057657600080fd5b5061025e611016565b34801561058b57600080fd5b506102e5600c5481565b3480156105a157600080fd5b506102c36105b0366004612667565b611025565b6102e56105c3366004612695565b611030565b3480156105d457600080fd5b506102e5600d5481565b3480156105ea57600080fd5b506102e56105f936600461258d565b8051602081830181018051600a8252928201919093012091525481565b34801561062257600080fd5b506102c36106313660046126d6565b50505050505050565b34801561064657600080fd5b506102c3610655366004612783565b611227565b34801561066657600080fd5b506102c3610675366004612800565b611646565b34801561068657600080fd5b5061025e610695366004612314565b61165d565b3480156106a657600080fd5b506106ba6106b5366004612442565b6117c9565b604051610240919061286b565b3480156106d357600080fd5b506102346106e23660046128ae565b60009695505050505050565b3480156106fa57600080fd5b506102e5610709366004612342565b611835565b34801561071a57600080fd5b50610234610729366004612951565b611866565b60006001600160e01b031982166301ffc9a760e01b148061075f57506001600160e01b0319821663da0d82f560e01b145b8061077a57506001600160e01b03198216635b5e139f60e01b145b80610789575061078982611894565b92915050565b60606000805461079e9061297f565b80601f01602080910402602001604051908101604052809291908181526020018280546107ca9061297f565b80156108175780601f106107ec57610100808354040283529160200191610817565b820191906000526020600020905b8154815290600101906020018083116107fa57829003601f168201915b5050505050905090565b600061082c826118e4565b506000828152600460205260409020546001600160a01b0316610789565b61085582823361191d565b5050565b6000818152600f6020526040808220549051620e1d8d60e41b8152600481018490526001600160401b0390911660248201527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169062e1d8d090604401602060405180830381865afa1580156108db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078991906129b9565b6001600160a01b03821661092e57604051633250574960e11b8152600060048201526024015b60405180910390fd5b600061093b83833361192a565b9050836001600160a01b0316816001600160a01b031614610989576040516364283d7b60e01b81526001600160a01b0380861660048301526024820184905282166044820152606401610925565b50505050565b60606010600085815260200190815260200160002083836040516109b49291906129d2565b908152602001604051809103902080546109cd9061297f565b80601f01602080910402602001604051908101604052809291908181526020018280546109f99061297f565b8015610a465780601f10610a1b57610100808354040283529160200191610a46565b820191906000526020600020905b815481529060010190602001808311610a2957829003601f168201915b505050505090509392505050565b6040516333727c4d60e01b8152600481018290526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906333727c4d90602401602060405180830381865afa158015610abc573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061078991906129e2565b60086020526000908152604090208054610af99061297f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b259061297f565b8015610b725780601f10610b4757610100808354040283529160200191610b72565b820191906000526020600020905b815481529060010190602001808311610b5557829003601f168201915b505050505081565b610b9583838360405180602001604052806000815250611646565b505050565b60116020526000908152604090208054610af99061297f565b6000610789826118e4565b600b546001600160a01b03163314610c055760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606401610925565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610c52576040519150601f19603f3d011682016040523d82523d6000602084013e610c57565b606091505b5050905080610b955760405162461bcd60e51b815260206004820152600f60248201526e15da5d1a191c985dc819985a5b1959608a1b6044820152606401610925565b60006001600160a01b038216610cc6576040516322718ad960e21b815260006004820152602401610925565b506001600160a01b031660009081526003602052604090205490565b600b546001600160a01b03163314610d295760405162461bcd60e51b815260206004820152600a60248201526927b7363c9037bbb732b960b11b6044820152606401610925565b6000918252600f6020526040909120805467ffffffffffffffff19166001600160401b03909216919091179055565b600e602052600090815260409020805460018201546002830180546001600160a01b03909316939192610d8a9061297f565b80601f0160208091040260200160405190810160405280929190818152602001828054610db69061297f565b8015610e035780601f10610dd857610100808354040283529160200191610e03565b820191906000526020600020905b815481529060010190602001808311610de657829003601f168201915b505050505090806003018054610e189061297f565b80601f0160208091040260200160405190810160405280929190818152602001828054610e449061297f565b8015610e915780601f10610e6657610100808354040283529160200191610e91565b820191906000526020600020905b815481529060010190602001808311610e7457829003601f168201915b5050505050905084565b8051602081830181018051600782529282019190930120915280548190610ec19061297f565b80601f0160208091040260200160405190810160405280929190818152602001828054610eed9061297f565b8015610f3a5780601f10610f0f57610100808354040283529160200191610f3a565b820191906000526020600020905b815481529060010190602001808311610f1d57829003601f168201915b505050505090806001018054610f4f9061297f565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7b9061297f565b8015610fc85780601f10610f9d57610100808354040283529160200191610fc8565b820191906000526020600020905b815481529060010190602001808311610fab57829003601f168201915b505050600290930154919250506001600160a01b031683565b6010602090815260009283526040909220815180830184018051928152908401929093019190912091528054610af99061297f565b60606001805461079e9061297f565b610855338383611a23565b60008083838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250600c549495509361107a935091506108599050565b90506000611089600d54610859565b90506110958183612a15565b34116110e35760405162461bcd60e51b815260206004820152601f60248201527f466f7274756e6554656c6c65723a20496e73756666696369656e7420666565006044820152606401610925565b600c546000818152600f6020526040808220549051632dca9c0360e11b815291926001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692635b9538069287926111539290918a9130916001600160401b031690600401612a28565b60206040518083038185885af1158015611171573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061119691906129b9565b90506111a28787611ac2565b6000818152600e60205260409020600281016111be8682612ac1565b5080546001600160a01b031916339081178255600c54600183018190556040517f483692d839733bfb07b2d29b4df6fbf290ff389290da74e018a21180f1269aab9261121492869260009291908e908e90612ba8565b60405180910390a1509695505050505050565b336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001681146112a45760405163432e033760e11b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000008116600483015282166024820152604401610925565b6000868152600e6020526040902080546001600160a01b03166113025760405162461bcd60e51b81526020600482015260166024820152751c995c5d595cdd08191bd95cc81b9bdd08195e1a5cdd60521b6044820152606401610925565b60038101611311868883612be8565b50858560106000846001015481526020019081526020016000208360020160405161133c9190612d19565b90815260200160405180910390209182611357929190612be8565b5060008390036115b05785856007836002016040516113769190612d19565b90815260405190819003602001902091611391919083612be8565b50600061139f600d54610859565b90506000807f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031683600d548b8b30600f6000600d54815260200190815260200160002060009054906101000a90046001600160401b03168a6002016040516020016114129190612da7565b60408051601f1981840301815290829052611434969594939291602401612dba565b60408051601f198184030181529181526020820180516001600160e01b0316632dca9c0360e11b179052516114699190612e11565b60006040518083038185875af1925050503d80600081146114a6576040519150601f19603f3d011682016040523d82523d6000602084013e6114ab565b606091505b5091509150816114fd5760405162461bcd60e51b815260206004820152601f60248201527f6661696c656420746f2063616c6c206e657374656420696e666572656e6365006044820152606401610925565b60008180602001905181019061151391906129b9565b6000818152600e60205260409020909150600281016115338b8d83612be8565b5080546001600160a01b031916339081178255600d5460018301819055604080518f81526020810186905290810192909252606082015260a0608082018190526000908201527f483692d839733bfb07b2d29b4df6fbf290ff389290da74e018a21180f1269aab9060c00160405180910390a150505050506115f3565b60006115be8486018661258d565b905086866007836040516115d29190612e11565b908152602001604051809103902060010191826115f0929190612be8565b50505b7faf2b2381ddcb18a2b18a7826186fd216acdd9c852a8c7a9a49e7eab127f96ccf87826001015483600201898989896040516116359796959493929190612e2d565b60405180910390a150505050505050565b6116518484846108ff565b61098984848484611c06565b60008181526008602052604081208054606092919061167b9061297f565b80601f01602080910402602001604051908101604052809291908181526020018280546116a79061297f565b80156116f45780601f106116c9576101008083540402835291602001916116f4565b820191906000526020600020905b8154815290600101906020018083116116d757829003601f168201915b50505050509050600061179e846007846040516117119190612e11565b90815260200160405180910390206000016117566007866040516117359190612e11565b908152604051908190036020019020600201546001600160a01b0316611d2f565b6007866040516117669190612e11565b908152602001604051809103902060010160405160200161178a9493929190612e82565b604051602081830303815290604052611e6f565b90506000816040516020016117b39190613057565b60408051601f1981840301905252509392505050565b6001600160a01b03811660009081526009602090815260409182902080548351818402810184019094528084526060939283018282801561182957602002820191906000526020600020905b815481526020019060010190808311611815575b50505050509050919050565b6009602052816000526040600020818154811061185157600080fd5b90600052602060002001600091509150505481565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b60006001600160e01b031982166380ac58cd60e01b14806118c557506001600160e01b03198216635b5e139f60e01b145b8061078957506301ffc9a760e01b6001600160e01b0319831614610789565b6000818152600260205260408120546001600160a01b03168061078957604051637e27328960e01b815260048101849052602401610925565b610b958383836001611fd8565b6000828152600260205260408120546001600160a01b0390811690831615611957576119578184866120de565b6001600160a01b0381161561199557611974600085600080611fd8565b6001600160a01b038116600090815260036020526040902080546000190190555b6001600160a01b038516156119c4576001600160a01b0385166000908152600360205260409020805460010190555b60008481526002602052604080822080546001600160a01b0319166001600160a01b0389811691821790925591518793918516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4949350505050565b6001600160a01b038216611a5557604051630b61174360e31b81526001600160a01b0383166004820152602401610925565b6001600160a01b03838116600081815260056020908152604080832094871680845294825291829020805460ff191686151590811790915591519182527f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a3505050565b600a8282604051611ad49291906129d2565b908152602001604051809103902054600014611b325760405162461bcd60e51b815260206004820152601860248201527f70726f6d707420697320616c7265616479206d696e74656400000000000000006044820152606401610925565b600654600a8383604051611b479291906129d2565b9081526040805160209281900383019020929092556006546000908152600890915220611b75828483612be8565b503360078383604051611b899291906129d2565b908152604080516020928190038301902060020180546001600160a01b0319166001600160a01b039490941693909317909255336000818152600983529283206006805482546001810184559286529390942001919091559054611bed9190612142565b60068054906000611bfd8361309c565b91905055505050565b6001600160a01b0383163b1561098957604051630a85bd0160e11b81526001600160a01b0384169063150b7a0290611c489033908890879087906004016130b5565b6020604051808303816000875af1925050508015611c83575060408051601f3d908101601f19168201909252611c80918101906130f2565b60015b611cec573d808015611cb1576040519150601f19603f3d011682016040523d82523d6000602084013e611cb6565b606091505b508051600003611ce457604051633250574960e11b81526001600160a01b0385166004820152602401610925565b805181602001fd5b6001600160e01b03198116630a85bd0160e11b14611d2857604051633250574960e11b81526001600160a01b0385166004820152602401610925565b5050505050565b60408051602880825260608281019093526000919060208201818036833701905050905060005b6014811015611e68576000611d6c82601361310f565b611d77906008613122565b611d82906002613220565b611d95906001600160a01b038716613242565b60f81b9050600060108260f81c611dac9190613256565b60f81b905060008160f81c6010611dc39190613278565b8360f81c611dd19190613294565b60f81b9050611ddf8261215c565b85611deb866002613122565b81518110611dfb57611dfb6132ad565b60200101906001600160f81b031916908160001a905350611e1b8161215c565b85611e27866002613122565b611e32906001612a15565b81518110611e4257611e426132ad565b60200101906001600160f81b031916908160001a9053505060019092019150611d569050565b5092915050565b80516060906000819003611e93575050604080516020810190915260008152919050565b60006003611ea2836002612a15565b611eac9190613242565b611eb7906004613122565b90506000611ec6826020612a15565b6001600160401b03811115611edd57611edd6124df565b6040519080825280601f01601f191660200182016040528015611f07576020820181803683370190505b50905060006040518060600160405280604081526020016132dd604091399050600181016020830160005b86811015611f93576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101611f32565b506003860660018114611fad5760028114611fbe57611fca565b613d3d60f01b600119830152611fca565b603d60f81b6000198301525b505050918152949350505050565b8080611fec57506001600160a01b03821615155b156120ae576000611ffc846118e4565b90506001600160a01b038316158015906120285750826001600160a01b0316816001600160a01b031614155b801561203b57506120398184611866565b155b156120645760405163a9fbf51f60e01b81526001600160a01b0384166004820152602401610925565b81156120ac5783856001600160a01b0316826001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b5050600090815260046020526040902080546001600160a01b0319166001600160a01b0392909216919091179055565b6120e9838383612192565b610b95576001600160a01b03831661211757604051637e27328960e01b815260048101829052602401610925565b60405163177e802f60e01b81526001600160a01b038316600482015260248101829052604401610925565b6108558282604051806020016040528060008152506121f8565b6000600a60f883901c10156121835761217a60f883901c60306132c3565b60f81b92915050565b61217a60f883901c60576132c3565b60006001600160a01b038316158015906121f05750826001600160a01b0316846001600160a01b031614806121cc57506121cc8484611866565b806121f057506000828152600460205260409020546001600160a01b038481169116145b949350505050565b612202838361220f565b610b956000848484611c06565b6001600160a01b03821661223957604051633250574960e11b815260006004820152602401610925565b60006122478383600061192a565b90506001600160a01b03811615610b95576040516339e3563760e11b815260006004820152602401610925565b6001600160e01b03198116811461228a57600080fd5b50565b60006020828403121561229f57600080fd5b81356122aa81612274565b9392505050565b60005b838110156122cc5781810151838201526020016122b4565b50506000910152565b600081518084526122ed8160208601602086016122b1565b601f01601f19169290920160200192915050565b6020815260006122aa60208301846122d5565b60006020828403121561232657600080fd5b5035919050565b6001600160a01b038116811461228a57600080fd5b6000806040838503121561235557600080fd5b82356123608161232d565b946020939093013593505050565b60008060006060848603121561238357600080fd5b833561238e8161232d565b9250602084013561239e8161232d565b929592945050506040919091013590565b60008083601f8401126123c157600080fd5b5081356001600160401b038111156123d857600080fd5b6020830191508360208285010111156123f057600080fd5b9250929050565b60008060006040848603121561240c57600080fd5b8335925060208401356001600160401b0381111561242957600080fd5b612435868287016123af565b9497909650939450505050565b60006020828403121561245457600080fd5b81356122aa8161232d565b6000806040838503121561247257600080fd5b8235915060208301356001600160401b038116811461249057600080fd5b809150509250929050565b60018060a01b03851681528360208201526080604082015260006124c260808301856122d5565b82810360608401526124d481856122d5565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6000806001600160401b0384111561250f5761250f6124df565b50604051601f19601f85018116603f011681018181106001600160401b038211171561253d5761253d6124df565b60405283815290508082840185101561255557600080fd5b83836020830137600060208583010152509392505050565b600082601f83011261257e57600080fd5b6122aa838335602085016124f5565b60006020828403121561259f57600080fd5b81356001600160401b038111156125b557600080fd5b6121f08482850161256d565b6060815260006125d460608301866122d5565b82810360208401526125e681866122d5565b91505060018060a01b0383166040830152949350505050565b6000806040838503121561261257600080fd5b8235915060208301356001600160401b0381111561262f57600080fd5b8301601f8101851361264057600080fd5b61264f858235602084016124f5565b9150509250929050565b801515811461228a57600080fd5b6000806040838503121561267a57600080fd5b82356126858161232d565b9150602083013561249081612659565b600080602083850312156126a857600080fd5b82356001600160401b038111156126be57600080fd5b6126ca858286016123af565b90969095509350505050565b60008060008060008060006080888a0312156126f157600080fd5b8735965060208801356001600160401b0381111561270e57600080fd5b61271a8a828b016123af565b90975095505060408801356001600160401b0381111561273957600080fd5b6127458a828b016123af565b90955093505060608801356001600160401b0381111561276457600080fd5b6127708a828b016123af565b989b979a50959850939692959293505050565b60008060008060006060868803121561279b57600080fd5b8535945060208601356001600160401b038111156127b857600080fd5b6127c4888289016123af565b90955093505060408601356001600160401b038111156127e357600080fd5b6127ef888289016123af565b969995985093965092949392505050565b6000806000806080858703121561281657600080fd5b84356128218161232d565b935060208501356128318161232d565b92506040850135915060608501356001600160401b0381111561285357600080fd5b61285f8782880161256d565b91505092959194509250565b602080825282518282018190526000918401906040840190835b818110156128a3578351835260209384019390920191600101612885565b509095945050505050565b600080600080600080606087890312156128c757600080fd5b86356001600160401b038111156128dd57600080fd5b6128e989828a016123af565b90975095505060208701356001600160401b0381111561290857600080fd5b61291489828a016123af565b90955093505060408701356001600160401b0381111561293357600080fd5b61293f89828a016123af565b979a9699509497509295939492505050565b6000806040838503121561296457600080fd5b823561296f8161232d565b915060208301356124908161232d565b600181811c9082168061299357607f821691505b6020821081036129b357634e487b7160e01b600052602260045260246000fd5b50919050565b6000602082840312156129cb57600080fd5b5051919050565b8183823760009101908152919050565b6000602082840312156129f457600080fd5b81516122aa81612659565b634e487b7160e01b600052601160045260246000fd5b80820180821115610789576107896129ff565b84815260a060208201526000612a4160a08301866122d5565b6001600160a01b03949094166040830152506001600160401b039190911660608201528082036080909101526000815260200192915050565b601f821115610b9557806000526020600020601f840160051c81016020851015612aa15750805b601f840160051c820191505b81811015611d285760008155600101612aad565b81516001600160401b03811115612ada57612ada6124df565b612aee81612ae8845461297f565b84612a7a565b6020601f821160018114612b225760008315612b0a5750848201515b600019600385901b1c1916600184901b178455611d28565b600084815260208120601f198516915b82811015612b525787850151825560209485019460019092019101612b32565b5084821015612b705786840151600019600387901b60f8161c191681555b50505050600190811b01905550565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b86815285602082015260018060a01b038516604082015283606082015260a060808201526000612bdc60a083018486612b7f565b98975050505050505050565b6001600160401b03831115612bff57612bff6124df565b612c1383612c0d835461297f565b83612a7a565b6000601f841160018114612c475760008515612c2f5750838201355b600019600387901b1c1916600186901b178355611d28565b600083815260209020601f19861690835b82811015612c785786850135825560209485019460019092019101612c58565b5086821015612c955760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b60008154612cb48161297f565b600182168015612ccb5760018114612ce057612d10565b60ff1983168652811515820286019350612d10565b84600052602060002060005b83811015612d0857815488820152600190910190602001612cec565b505081860193505b50505092915050565b60006122aa8284612ca7565b60008154612d328161297f565b808552600182168015612d4c5760018114612d6857612d10565b60ff1983166020870152602082151560051b8701019350612d10565b84600052602060002060005b83811015612d965781546020828a010152600182019150602081019050612d74565b870160200194505050505092915050565b6020815260006122aa6020830184612d25565b86815260a060208201526000612dd460a083018789612b7f565b6001600160a01b03861660408401526001600160401b03851660608401528281036080840152612e0481856122d5565b9998505050505050505050565b60008251612e238184602087016122b1565b9190910192915050565b87815286602082015260a060408201526000612e4c60a0830188612d25565b8281036060840152612e5f818789612b7f565b90508281036080840152612e74818587612b7f565b9a9950505050505050505050565b6e7b226e616d65223a22746f6b656e2360881b8152600f81018590527f222c202261747472696275746573223a205b7b2274726169745f74797065223a602f8201527510113337b93a3ab732911610113b30b63ab2911d101160511b604f8201526000612ef26065830186612ca7565b7f227d2c207b2274726169745f74797065223a2022617574686f72222c202276618152680d8eaca4474404460f60bb1b60208201528451612f3a8160298401602089016122b1565b7f227d2c207b2274726169745f74797065223a20226d6f64656c222c202276616c602992909101918201527f7565223a2022537461626c6520446966667573696f6e227d5d2c20226465736360498201527f72697074696f6e223a2022466f7274756e6554656c6c6572207574696c69736560698201527f73204f524173204149204f7261636c6520746f206d696e742041494743204e4660898201527f54732061626f7574206561636820706c617965727320666f7274756e652e222c60a98201527f2022696d616765223a202268747470733a2f2f676174657761792e70696e617460c98201526c612e636c6f75642f697066732f60981b60e98201526124d461304960f6830186612ca7565b61227d60f01b815260020190565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c00000081526000825161308f81601d8501602087016122b1565b91909101601d0192915050565b6000600182016130ae576130ae6129ff565b5060010190565b6001600160a01b03858116825284166020820152604081018390526080606082018190526000906130e8908301846122d5565b9695505050505050565b60006020828403121561310457600080fd5b81516122aa81612274565b81810381811115610789576107896129ff565b8082028115828204841417610789576107896129ff565b6001815b600184111561317457808504811115613158576131586129ff565b600184161561316657908102905b60019390931c92800261313d565b935093915050565b60008261318b57506001610789565b8161319857506000610789565b81600181146131ae57600281146131b8576131d4565b6001915050610789565b60ff8411156131c9576131c96129ff565b50506001821b610789565b5060208310610133831016604e8410600b84101617156131f7575081810a610789565b6132046000198484613139565b8060001904821115613218576132186129ff565b029392505050565b60006122aa838361317c565b634e487b7160e01b600052601260045260246000fd5b6000826132515761325161322c565b500490565b600060ff8316806132695761326961322c565b8060ff84160491505092915050565b60ff8181168382160290811690818114611e6857611e686129ff565b60ff8281168282160390811115610789576107896129ff565b634e487b7160e01b600052603260045260246000fd5b60ff8181168382160190811115610789576107896129ff56fe4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2fa264697066735822122012572521164ebf81f0edb3cdc942dfd2960ce39007091209e6a6f4b1d3a9eff764736f6c634300081a00330000000000000000000000000a0f4321214bb6c7811dd8a71cf587bdaf03f0a0
0x0000000000000000000000000a0f4321214bb6c7811dd8a71cf587bdaf03f0a0
----Decoded View------------Arg [0] : _aiOracle (address): 0x0A0f4321214BB6C7811dD8a71cF587bdaF03f0A0
----Encoded View------------Arg [0] : 0x0000000000000000000000000a0f4321214bb6c7811dd8a71cf587bdaf03f0a0