├── .gitignore ├── README.md ├── contracts ├── AIFlowAgent.sol ├── AIFlowAgentToken.sol └── AIFlowOracle.sol ├── hardhat.config.ts ├── ignition ├── deployments │ └── chain-97 │ │ ├── artifacts │ │ ├── AIFlow#AIFlowAgent.dbg.json │ │ ├── AIFlow#AIFlowAgent.json │ │ ├── AIFlow#AIFlowOracle.dbg.json │ │ └── AIFlow#AIFlowOracle.json │ │ ├── build-info │ │ └── f01b05c60fb76ee67a36dad0561a2af2.json │ │ ├── deployed_addresses.json │ │ └── journal.jsonl └── modules │ └── AIFlow.ts ├── package-lock.json ├── package.json ├── test └── AIFlowOracle.test.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | .env 3 | 4 | # Hardhat files 5 | /cache 6 | /artifacts 7 | 8 | # TypeChain files 9 | /typechain 10 | /typechain-types 11 | 12 | # solidity-coverage files 13 | /coverage 14 | /coverage.json 15 | 16 | # Hardhat Ignition default folder for deployments against a local node 17 | ignition/deployments/chain-31337 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AI Flow Contracts 2 | 3 | ## Introduction 4 | 5 | The AI Flow Contracts are the foundational smart contracts enabling the seamless integration and interaction of AI services within the blockchain ecosystem. These contracts form the core of the on-chain AI Oracle infrastructure, ensuring secure, efficient, and transparent communication between users and AI systems. 6 | 7 | ## Components 8 | 9 | ### AI Oracle 10 | 11 | The AI Oracle acts as the critical bridge between the blockchain and AI services. It is responsible for: 12 | 13 | 1. Request Initiation: Accepting and processing AI-related requests from the blockchain. 14 | 2. Response Delivery: Retrieving the AI-generated responses and securely bringing them back to the blockchain. 15 | 3. Data Integrity: Ensuring the authenticity and accuracy of data exchanged between the blockchain and AI systems. 16 | 17 | The Oracle is designed to handle high-volume transactions while maintaining decentralized trust and efficiency. 18 | 19 | ### AI Oracle Payment 20 | 21 | The AI Oracle Payment system underpins the financial operations of the Oracle ecosystem, offering: 22 | 23 | 1. Transaction Facilitation: Managing payments for AI requests and responses. 24 | 2. User-Friendly Interfaces: Simplifying the payment process for users while maintaining transparency. 25 | 3. Automated Settlements: Utilizing smart contracts to automate payment settlements, reducing delays and manual intervention. 26 | 27 | This system ensures a smooth and dependable financial flow between users and the AI Oracle. 28 | 29 | ### AI Oracle Token 30 | 31 | The AI Oracle Token is the native utility token powering the AI Oracle ecosystem. Its key features include: 32 | 33 | 1. Medium of Exchange: Serving as the primary currency for all transactions within the AI Oracle framework. 34 | 2. Security: Utilizing blockchain technology to guarantee secure and tamper-proof transactions. 35 | 3. Scalability: Supporting high transaction throughput, ensuring efficient operation even as the ecosystem scales. 36 | 37 | The token is integral to maintaining the decentralized, transparent, and efficient nature of the AI Oracle ecosystem. 38 | 39 | --- 40 | 41 | Together, these components create a robust and scalable infrastructure for on-chain AI services, empowering decentralized applications (dApps) and developers to leverage advanced AI capabilities seamlessly. 42 | -------------------------------------------------------------------------------- /contracts/AIFlowAgent.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.22; 3 | 4 | import {ERC721} from "@openzeppelin/contracts/token/ERC721/ERC721.sol"; 5 | import {ERC721URIStorage} from "@openzeppelin/contracts/token/ERC721/extensions/ERC721URIStorage.sol"; 6 | import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; 7 | 8 | contract AIFlowAgent is ERC721, ERC721URIStorage, Ownable { 9 | uint256 private _nextTokenId = 1; 10 | 11 | constructor() ERC721("AI Flow Agent", "AIFA") Ownable(msg.sender) {} 12 | 13 | function safeMint( 14 | address to, 15 | string memory uri 16 | ) public onlyOwner returns (uint256) { 17 | uint256 tokenId = _nextTokenId++; 18 | _safeMint(to, tokenId); 19 | _setTokenURI(tokenId, uri); 20 | return tokenId; 21 | } 22 | 23 | function updateTokenURI( 24 | uint256 tokenId, 25 | string calldata newTokenUri 26 | ) external onlyOwner { 27 | super._setTokenURI(tokenId, newTokenUri); 28 | } 29 | 30 | function tokenURI( 31 | uint256 tokenId 32 | ) public view override(ERC721, ERC721URIStorage) returns (string memory) { 33 | return super.tokenURI(tokenId); 34 | } 35 | 36 | function supportsInterface( 37 | bytes4 interfaceId 38 | ) public view override(ERC721, ERC721URIStorage) returns (bool) { 39 | return super.supportsInterface(interfaceId); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /contracts/AIFlowAgentToken.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.22; 3 | 4 | import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 5 | import {ERC20Burnable} from "@openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol"; 6 | import {Ownable} from "@openzeppelin/contracts/access/Ownable.sol"; 7 | 8 | contract AIFlowAgentToken is ERC20, ERC20Burnable, Ownable { 9 | constructor( 10 | address initialOwner, 11 | string memory tokenName, 12 | string memory tokenSymbol 13 | ) ERC20(tokenName, tokenSymbol) Ownable(initialOwner) {} 14 | 15 | function mint(address to, uint256 amount) public onlyOwner { 16 | _mint(to, amount); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /contracts/AIFlowOracle.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.28; 3 | 4 | import "./AIFlowAgent.sol"; 5 | import "./AIFlowAgentToken.sol"; 6 | import "@openzeppelin/contracts/access/Ownable.sol"; 7 | 8 | contract AIFlowOracle is Ownable { 9 | struct Agent { 10 | uint256 agentId; 11 | address tokenAddress; 12 | } 13 | 14 | event AgentCreated(uint256 indexed agentId, address tokenAddress); 15 | 16 | AIFlowAgent private immutable _agentNft; 17 | /** 18 | * @dev `agentId` or `nft token Id` ==> Agent 19 | */ 20 | mapping(uint256 => Agent) private _agentOf; 21 | 22 | uint256 _nextQueryId = 1; 23 | 24 | /** 25 | * @dev `token address` => `agent id` 26 | */ 27 | mapping(address => uint256) private _tokenOf; 28 | 29 | constructor( 30 | address _agentNftAddress, 31 | address _initialOwner 32 | ) Ownable(_initialOwner) { 33 | _agentNft = AIFlowAgent(_agentNftAddress); 34 | } 35 | 36 | modifier onlyAgentOwner(uint256 agentId) { 37 | address agentOwner = _agentNft.ownerOf(agentId); 38 | require( 39 | msg.sender == agentOwner, 40 | "The caller must be the owner of this agent" 41 | ); 42 | _; 43 | } 44 | 45 | function createAgent( 46 | address to, 47 | string memory tokenUri, 48 | string calldata tokenName, 49 | string calldata tokenSymbol 50 | ) external onlyOwner returns (uint256 agentId, address tokenAddress) { 51 | agentId = _agentNft.safeMint(to, tokenUri); 52 | AIFlowAgentToken agentToken = new AIFlowAgentToken( 53 | address(this), 54 | tokenName, 55 | tokenSymbol 56 | ); 57 | 58 | tokenAddress = address(agentToken); 59 | 60 | _agentOf[agentId] = Agent({ 61 | agentId: agentId, 62 | tokenAddress: tokenAddress 63 | }); 64 | 65 | emit AgentCreated(agentId, tokenAddress); 66 | } 67 | 68 | function mintToken( 69 | uint256 agentId, 70 | address to, 71 | uint256 amount 72 | ) external onlyAgentOwner(agentId) { 73 | Agent memory agent = _agentOf[agentId]; 74 | address tokenAddress = agent.tokenAddress; 75 | AIFlowAgentToken token = AIFlowAgentToken(tokenAddress); 76 | token.mint(to, amount); 77 | } 78 | 79 | function updateAgentURI( 80 | uint256 agentId, 81 | string calldata newAgentURI 82 | ) external onlyAgentOwner(agentId) { 83 | _agentNft.updateTokenURI(agentId, newAgentURI); 84 | } 85 | 86 | function getAgentIdBy( 87 | address tokenAddress 88 | ) external view returns (uint256 agentId) { 89 | agentId = _tokenOf[tokenAddress]; 90 | } 91 | 92 | function getAgentBy( 93 | uint256 agentId 94 | ) external view returns (Agent memory agent) { 95 | agent = _agentOf[agentId]; 96 | } 97 | } 98 | -------------------------------------------------------------------------------- /hardhat.config.ts: -------------------------------------------------------------------------------- 1 | import { HardhatUserConfig } from "hardhat/config"; 2 | import "@nomicfoundation/hardhat-toolbox"; 3 | import "dotenv/config"; 4 | 5 | const config: HardhatUserConfig = { 6 | solidity: "0.8.28", 7 | networks: { 8 | bnbTestnet: { 9 | chainId: 97, 10 | accounts: [process.env.PRIVATE_KEY!], 11 | url: "https://bsc-testnet.bnbchain.org", 12 | }, 13 | }, 14 | }; 15 | 16 | export default config; 17 | -------------------------------------------------------------------------------- /ignition/deployments/chain-97/artifacts/AIFlow#AIFlowAgent.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../build-info/f01b05c60fb76ee67a36dad0561a2af2.json" 4 | } -------------------------------------------------------------------------------- /ignition/deployments/chain-97/artifacts/AIFlow#AIFlowAgent.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "AIFlowAgent", 4 | "sourceName": "contracts/AIFlowAgent.sol", 5 | "abi": [ 6 | { 7 | "inputs": [], 8 | "stateMutability": "nonpayable", 9 | "type": "constructor" 10 | }, 11 | { 12 | "inputs": [ 13 | { 14 | "internalType": "address", 15 | "name": "sender", 16 | "type": "address" 17 | }, 18 | { 19 | "internalType": "uint256", 20 | "name": "tokenId", 21 | "type": "uint256" 22 | }, 23 | { 24 | "internalType": "address", 25 | "name": "owner", 26 | "type": "address" 27 | } 28 | ], 29 | "name": "ERC721IncorrectOwner", 30 | "type": "error" 31 | }, 32 | { 33 | "inputs": [ 34 | { 35 | "internalType": "address", 36 | "name": "operator", 37 | "type": "address" 38 | }, 39 | { 40 | "internalType": "uint256", 41 | "name": "tokenId", 42 | "type": "uint256" 43 | } 44 | ], 45 | "name": "ERC721InsufficientApproval", 46 | "type": "error" 47 | }, 48 | { 49 | "inputs": [ 50 | { 51 | "internalType": "address", 52 | "name": "approver", 53 | "type": "address" 54 | } 55 | ], 56 | "name": "ERC721InvalidApprover", 57 | "type": "error" 58 | }, 59 | { 60 | "inputs": [ 61 | { 62 | "internalType": "address", 63 | "name": "operator", 64 | "type": "address" 65 | } 66 | ], 67 | "name": "ERC721InvalidOperator", 68 | "type": "error" 69 | }, 70 | { 71 | "inputs": [ 72 | { 73 | "internalType": "address", 74 | "name": "owner", 75 | "type": "address" 76 | } 77 | ], 78 | "name": "ERC721InvalidOwner", 79 | "type": "error" 80 | }, 81 | { 82 | "inputs": [ 83 | { 84 | "internalType": "address", 85 | "name": "receiver", 86 | "type": "address" 87 | } 88 | ], 89 | "name": "ERC721InvalidReceiver", 90 | "type": "error" 91 | }, 92 | { 93 | "inputs": [ 94 | { 95 | "internalType": "address", 96 | "name": "sender", 97 | "type": "address" 98 | } 99 | ], 100 | "name": "ERC721InvalidSender", 101 | "type": "error" 102 | }, 103 | { 104 | "inputs": [ 105 | { 106 | "internalType": "uint256", 107 | "name": "tokenId", 108 | "type": "uint256" 109 | } 110 | ], 111 | "name": "ERC721NonexistentToken", 112 | "type": "error" 113 | }, 114 | { 115 | "inputs": [ 116 | { 117 | "internalType": "address", 118 | "name": "owner", 119 | "type": "address" 120 | } 121 | ], 122 | "name": "OwnableInvalidOwner", 123 | "type": "error" 124 | }, 125 | { 126 | "inputs": [ 127 | { 128 | "internalType": "address", 129 | "name": "account", 130 | "type": "address" 131 | } 132 | ], 133 | "name": "OwnableUnauthorizedAccount", 134 | "type": "error" 135 | }, 136 | { 137 | "anonymous": false, 138 | "inputs": [ 139 | { 140 | "indexed": true, 141 | "internalType": "address", 142 | "name": "owner", 143 | "type": "address" 144 | }, 145 | { 146 | "indexed": true, 147 | "internalType": "address", 148 | "name": "approved", 149 | "type": "address" 150 | }, 151 | { 152 | "indexed": true, 153 | "internalType": "uint256", 154 | "name": "tokenId", 155 | "type": "uint256" 156 | } 157 | ], 158 | "name": "Approval", 159 | "type": "event" 160 | }, 161 | { 162 | "anonymous": false, 163 | "inputs": [ 164 | { 165 | "indexed": true, 166 | "internalType": "address", 167 | "name": "owner", 168 | "type": "address" 169 | }, 170 | { 171 | "indexed": true, 172 | "internalType": "address", 173 | "name": "operator", 174 | "type": "address" 175 | }, 176 | { 177 | "indexed": false, 178 | "internalType": "bool", 179 | "name": "approved", 180 | "type": "bool" 181 | } 182 | ], 183 | "name": "ApprovalForAll", 184 | "type": "event" 185 | }, 186 | { 187 | "anonymous": false, 188 | "inputs": [ 189 | { 190 | "indexed": false, 191 | "internalType": "uint256", 192 | "name": "_fromTokenId", 193 | "type": "uint256" 194 | }, 195 | { 196 | "indexed": false, 197 | "internalType": "uint256", 198 | "name": "_toTokenId", 199 | "type": "uint256" 200 | } 201 | ], 202 | "name": "BatchMetadataUpdate", 203 | "type": "event" 204 | }, 205 | { 206 | "anonymous": false, 207 | "inputs": [ 208 | { 209 | "indexed": false, 210 | "internalType": "uint256", 211 | "name": "_tokenId", 212 | "type": "uint256" 213 | } 214 | ], 215 | "name": "MetadataUpdate", 216 | "type": "event" 217 | }, 218 | { 219 | "anonymous": false, 220 | "inputs": [ 221 | { 222 | "indexed": true, 223 | "internalType": "address", 224 | "name": "previousOwner", 225 | "type": "address" 226 | }, 227 | { 228 | "indexed": true, 229 | "internalType": "address", 230 | "name": "newOwner", 231 | "type": "address" 232 | } 233 | ], 234 | "name": "OwnershipTransferred", 235 | "type": "event" 236 | }, 237 | { 238 | "anonymous": false, 239 | "inputs": [ 240 | { 241 | "indexed": true, 242 | "internalType": "address", 243 | "name": "from", 244 | "type": "address" 245 | }, 246 | { 247 | "indexed": true, 248 | "internalType": "address", 249 | "name": "to", 250 | "type": "address" 251 | }, 252 | { 253 | "indexed": true, 254 | "internalType": "uint256", 255 | "name": "tokenId", 256 | "type": "uint256" 257 | } 258 | ], 259 | "name": "Transfer", 260 | "type": "event" 261 | }, 262 | { 263 | "inputs": [ 264 | { 265 | "internalType": "address", 266 | "name": "to", 267 | "type": "address" 268 | }, 269 | { 270 | "internalType": "uint256", 271 | "name": "tokenId", 272 | "type": "uint256" 273 | } 274 | ], 275 | "name": "approve", 276 | "outputs": [], 277 | "stateMutability": "nonpayable", 278 | "type": "function" 279 | }, 280 | { 281 | "inputs": [ 282 | { 283 | "internalType": "address", 284 | "name": "owner", 285 | "type": "address" 286 | } 287 | ], 288 | "name": "balanceOf", 289 | "outputs": [ 290 | { 291 | "internalType": "uint256", 292 | "name": "", 293 | "type": "uint256" 294 | } 295 | ], 296 | "stateMutability": "view", 297 | "type": "function" 298 | }, 299 | { 300 | "inputs": [ 301 | { 302 | "internalType": "uint256", 303 | "name": "tokenId", 304 | "type": "uint256" 305 | } 306 | ], 307 | "name": "getApproved", 308 | "outputs": [ 309 | { 310 | "internalType": "address", 311 | "name": "", 312 | "type": "address" 313 | } 314 | ], 315 | "stateMutability": "view", 316 | "type": "function" 317 | }, 318 | { 319 | "inputs": [ 320 | { 321 | "internalType": "address", 322 | "name": "owner", 323 | "type": "address" 324 | }, 325 | { 326 | "internalType": "address", 327 | "name": "operator", 328 | "type": "address" 329 | } 330 | ], 331 | "name": "isApprovedForAll", 332 | "outputs": [ 333 | { 334 | "internalType": "bool", 335 | "name": "", 336 | "type": "bool" 337 | } 338 | ], 339 | "stateMutability": "view", 340 | "type": "function" 341 | }, 342 | { 343 | "inputs": [], 344 | "name": "name", 345 | "outputs": [ 346 | { 347 | "internalType": "string", 348 | "name": "", 349 | "type": "string" 350 | } 351 | ], 352 | "stateMutability": "view", 353 | "type": "function" 354 | }, 355 | { 356 | "inputs": [], 357 | "name": "owner", 358 | "outputs": [ 359 | { 360 | "internalType": "address", 361 | "name": "", 362 | "type": "address" 363 | } 364 | ], 365 | "stateMutability": "view", 366 | "type": "function" 367 | }, 368 | { 369 | "inputs": [ 370 | { 371 | "internalType": "uint256", 372 | "name": "tokenId", 373 | "type": "uint256" 374 | } 375 | ], 376 | "name": "ownerOf", 377 | "outputs": [ 378 | { 379 | "internalType": "address", 380 | "name": "", 381 | "type": "address" 382 | } 383 | ], 384 | "stateMutability": "view", 385 | "type": "function" 386 | }, 387 | { 388 | "inputs": [], 389 | "name": "renounceOwnership", 390 | "outputs": [], 391 | "stateMutability": "nonpayable", 392 | "type": "function" 393 | }, 394 | { 395 | "inputs": [ 396 | { 397 | "internalType": "address", 398 | "name": "to", 399 | "type": "address" 400 | }, 401 | { 402 | "internalType": "string", 403 | "name": "uri", 404 | "type": "string" 405 | } 406 | ], 407 | "name": "safeMint", 408 | "outputs": [ 409 | { 410 | "internalType": "uint256", 411 | "name": "", 412 | "type": "uint256" 413 | } 414 | ], 415 | "stateMutability": "nonpayable", 416 | "type": "function" 417 | }, 418 | { 419 | "inputs": [ 420 | { 421 | "internalType": "address", 422 | "name": "from", 423 | "type": "address" 424 | }, 425 | { 426 | "internalType": "address", 427 | "name": "to", 428 | "type": "address" 429 | }, 430 | { 431 | "internalType": "uint256", 432 | "name": "tokenId", 433 | "type": "uint256" 434 | } 435 | ], 436 | "name": "safeTransferFrom", 437 | "outputs": [], 438 | "stateMutability": "nonpayable", 439 | "type": "function" 440 | }, 441 | { 442 | "inputs": [ 443 | { 444 | "internalType": "address", 445 | "name": "from", 446 | "type": "address" 447 | }, 448 | { 449 | "internalType": "address", 450 | "name": "to", 451 | "type": "address" 452 | }, 453 | { 454 | "internalType": "uint256", 455 | "name": "tokenId", 456 | "type": "uint256" 457 | }, 458 | { 459 | "internalType": "bytes", 460 | "name": "data", 461 | "type": "bytes" 462 | } 463 | ], 464 | "name": "safeTransferFrom", 465 | "outputs": [], 466 | "stateMutability": "nonpayable", 467 | "type": "function" 468 | }, 469 | { 470 | "inputs": [ 471 | { 472 | "internalType": "address", 473 | "name": "operator", 474 | "type": "address" 475 | }, 476 | { 477 | "internalType": "bool", 478 | "name": "approved", 479 | "type": "bool" 480 | } 481 | ], 482 | "name": "setApprovalForAll", 483 | "outputs": [], 484 | "stateMutability": "nonpayable", 485 | "type": "function" 486 | }, 487 | { 488 | "inputs": [ 489 | { 490 | "internalType": "bytes4", 491 | "name": "interfaceId", 492 | "type": "bytes4" 493 | } 494 | ], 495 | "name": "supportsInterface", 496 | "outputs": [ 497 | { 498 | "internalType": "bool", 499 | "name": "", 500 | "type": "bool" 501 | } 502 | ], 503 | "stateMutability": "view", 504 | "type": "function" 505 | }, 506 | { 507 | "inputs": [], 508 | "name": "symbol", 509 | "outputs": [ 510 | { 511 | "internalType": "string", 512 | "name": "", 513 | "type": "string" 514 | } 515 | ], 516 | "stateMutability": "view", 517 | "type": "function" 518 | }, 519 | { 520 | "inputs": [ 521 | { 522 | "internalType": "uint256", 523 | "name": "tokenId", 524 | "type": "uint256" 525 | } 526 | ], 527 | "name": "tokenURI", 528 | "outputs": [ 529 | { 530 | "internalType": "string", 531 | "name": "", 532 | "type": "string" 533 | } 534 | ], 535 | "stateMutability": "view", 536 | "type": "function" 537 | }, 538 | { 539 | "inputs": [ 540 | { 541 | "internalType": "address", 542 | "name": "from", 543 | "type": "address" 544 | }, 545 | { 546 | "internalType": "address", 547 | "name": "to", 548 | "type": "address" 549 | }, 550 | { 551 | "internalType": "uint256", 552 | "name": "tokenId", 553 | "type": "uint256" 554 | } 555 | ], 556 | "name": "transferFrom", 557 | "outputs": [], 558 | "stateMutability": "nonpayable", 559 | "type": "function" 560 | }, 561 | { 562 | "inputs": [ 563 | { 564 | "internalType": "address", 565 | "name": "newOwner", 566 | "type": "address" 567 | } 568 | ], 569 | "name": "transferOwnership", 570 | "outputs": [], 571 | "stateMutability": "nonpayable", 572 | "type": "function" 573 | }, 574 | { 575 | "inputs": [ 576 | { 577 | "internalType": "uint256", 578 | "name": "tokenId", 579 | "type": "uint256" 580 | }, 581 | { 582 | "internalType": "string", 583 | "name": "newTokenUri", 584 | "type": "string" 585 | } 586 | ], 587 | "name": "updateTokenURI", 588 | "outputs": [], 589 | "stateMutability": "nonpayable", 590 | "type": "function" 591 | } 592 | ], 593 | "bytecode": "0x6080604052600160085534801561001557600080fd5b50336040518060400160405280600d81526020017f414920466c6f77204167656e74000000000000000000000000000000000000008152506040518060400160405280600481526020017f414946410000000000000000000000000000000000000000000000000000000081525081600090816100929190610442565b5080600190816100a29190610442565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101175760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161010e9190610555565b60405180910390fd5b6101268161012c60201b60201c565b50610570565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061027357607f821691505b6020821081036102865761028561022c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026102ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826102b1565b6102f886836102b1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061033f61033a61033584610310565b61031a565b610310565b9050919050565b6000819050919050565b61035983610324565b61036d61036582610346565b8484546102be565b825550505050565b600090565b610382610375565b61038d818484610350565b505050565b5b818110156103b1576103a660008261037a565b600181019050610393565b5050565b601f8211156103f6576103c78161028c565b6103d0846102a1565b810160208510156103df578190505b6103f36103eb856102a1565b830182610392565b50505b505050565b600082821c905092915050565b6000610419600019846008026103fb565b1980831691505092915050565b60006104328383610408565b9150826002028217905092915050565b61044b826101f2565b67ffffffffffffffff811115610464576104636101fd565b5b61046e825461025b565b6104798282856103b5565b600060209050601f8311600181146104ac576000841561049a578287015190505b6104a48582610426565b86555061050c565b601f1984166104ba8661028c565b60005b828110156104e2578489015182556001820191506020850194506020810190506104bd565b868310156104ff57848901516104fb601f891682610408565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061053f82610514565b9050919050565b61054f81610534565b82525050565b600060208201905061056a6000830184610546565b92915050565b6127e58061057f6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde146102cb578063c87b56dd146102e7578063d204c45e14610317578063e985e9c514610347578063f2fde38b1461037757610116565b8063715018a6146102695780638da5cb5b1461027357806395d89b4114610291578063a22cb465146102af57610116565b806318e97fd1116100e957806318e97fd1146101b557806323b872dd146101d157806342842e0e146101ed5780636352211e1461020957806370a082311461023957610116565b806301ffc9a71461011b57806306fdde031461014b578063081812fc14610169578063095ea7b314610199575b600080fd5b61013560048036038101906101309190611b7d565b610393565b6040516101429190611bc5565b60405180910390f35b6101536103a5565b6040516101609190611c70565b60405180910390f35b610183600480360381019061017e9190611cc8565b610437565b6040516101909190611d36565b60405180910390f35b6101b360048036038101906101ae9190611d7d565b610453565b005b6101cf60048036038101906101ca9190611e22565b610469565b005b6101eb60048036038101906101e69190611e82565b6104c4565b005b61020760048036038101906102029190611e82565b6105c6565b005b610223600480360381019061021e9190611cc8565b6105e6565b6040516102309190611d36565b60405180910390f35b610253600480360381019061024e9190611ed5565b6105f8565b6040516102609190611f11565b60405180910390f35b6102716106b2565b005b61027b6106c6565b6040516102889190611d36565b60405180910390f35b6102996106f0565b6040516102a69190611c70565b60405180910390f35b6102c960048036038101906102c49190611f58565b610782565b005b6102e560048036038101906102e091906120c8565b610798565b005b61030160048036038101906102fc9190611cc8565b6107bd565b60405161030e9190611c70565b60405180910390f35b610331600480360381019061032c91906121ec565b6107cf565b60405161033e9190611f11565b60405180910390f35b610361600480360381019061035c9190612248565b610812565b60405161036e9190611bc5565b60405180910390f35b610391600480360381019061038c9190611ed5565b6108a6565b005b600061039e8261092c565b9050919050565b6060600080546103b4906122b7565b80601f01602080910402602001604051908101604052809291908181526020018280546103e0906122b7565b801561042d5780601f106104025761010080835404028352916020019161042d565b820191906000526020600020905b81548152906001019060200180831161041057829003601f168201915b5050505050905090565b60006104428261098d565b5061044c82610a15565b9050919050565b6104658282610460610a52565b610a5a565b5050565b610471610a6c565b6104bf8383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610af3565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105365760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161052d9190611d36565b60405180910390fd5b600061054a8383610545610a52565b610b4f565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105c0578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016105b7939291906122e8565b60405180910390fd5b50505050565b6105e183838360405180602001604052806000815250610798565b505050565b60006105f18261098d565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361066b5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016106629190611d36565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106ba610a6c565b6106c46000610d69565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546106ff906122b7565b80601f016020809104026020016040519081016040528092919081815260200182805461072b906122b7565b80156107785780601f1061074d57610100808354040283529160200191610778565b820191906000526020600020905b81548152906001019060200180831161075b57829003601f168201915b5050505050905090565b61079461078d610a52565b8383610e2f565b5050565b6107a38484846104c4565b6107b76107ae610a52565b85858585610f9e565b50505050565b60606107c88261114f565b9050919050565b60006107d9610a6c565b6000600860008154809291906107ee9061234e565b9190505590506107fe8482611262565b6108088184610af3565b8091505092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6108ae610a6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109205760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016109179190611d36565b60405180910390fd5b61092981610d69565b50565b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610986575061098582611280565b5b9050919050565b60008061099983611362565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a0c57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610a039190611f11565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b610a67838383600161139f565b505050565b610a74610a52565b73ffffffffffffffffffffffffffffffffffffffff16610a926106c6565b73ffffffffffffffffffffffffffffffffffffffff1614610af157610ab5610a52565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610ae89190611d36565b60405180910390fd5b565b80600660008481526020019081526020016000209081610b139190612542565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce782604051610b439190611f11565b60405180910390a15050565b600080610b5b84611362565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610b9d57610b9c818486611564565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c2e57610bdf60008560008061139f565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610cb1576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ea057816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610e979190611d36565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f919190611bc5565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611148578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401610ffd9493929190612669565b6020604051808303816000875af192505050801561103957506040513d601f19601f8201168201806040525081019061103691906126ca565b60015b6110bd573d8060008114611069576040519150601f19603f3d011682016040523d82523d6000602084013e61106e565b606091505b5060008151036110b557836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016110ac9190611d36565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461114657836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161113d9190611d36565b60405180910390fd5b505b5050505050565b606061115a8261098d565b50600060066000848152602001908152602001600020805461117b906122b7565b80601f01602080910402602001604051908101604052809291908181526020018280546111a7906122b7565b80156111f45780601f106111c9576101008083540402835291602001916111f4565b820191906000526020600020905b8154815290600101906020018083116111d757829003601f168201915b505050505090506000611205611628565b9050600081510361121a57819250505061125d565b60008251111561124f578082604051602001611237929190612733565b6040516020818303038152906040529250505061125d565b6112588461163f565b925050505b919050565b61127c8282604051806020016040528060008152506116a8565b5050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061134b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061135b575061135a826116cc565b5b9050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806113d85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561150c5760006113e88461098d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561145357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561146657506114648184610812565b155b156114a857826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161149f9190611d36565b60405180910390fd5b811561150a57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61156f838383611736565b61162357600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e457806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016115db9190611f11565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161161a929190612757565b60405180910390fd5b505050565b606060405180602001604052806000815250905090565b606061164a8261098d565b506000611655611628565b9050600081511161167557604051806020016040528060008152506116a0565b8061167f846117f7565b604051602001611690929190612733565b6040516020818303038152906040525b915050919050565b6116b283836118c5565b6116c76116bd610a52565b6000858585610f9e565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ee57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117af57506117ae8484610812565b5b806117ed57508273ffffffffffffffffffffffffffffffffffffffff166117d583610a15565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b606060006001611806846119be565b01905060008167ffffffffffffffff81111561182557611824611f9d565b5b6040519080825280601f01601f1916602001820160405280156118575781602001600182028036833780820191505090505b509050600082602001820190505b6001156118ba578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816118ae576118ad612780565b5b04945060008503611865575b819350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119375760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161192e9190611d36565b60405180910390fd5b600061194583836000610b4f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119b95760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016119b09190611d36565b60405180910390fd5b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611a1c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611a1257611a11612780565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611a59576d04ee2d6d415b85acef81000000008381611a4f57611a4e612780565b5b0492506020810190505b662386f26fc100008310611a8857662386f26fc100008381611a7e57611a7d612780565b5b0492506010810190505b6305f5e1008310611ab1576305f5e1008381611aa757611aa6612780565b5b0492506008810190505b6127108310611ad6576127108381611acc57611acb612780565b5b0492506004810190505b60648310611af95760648381611aef57611aee612780565b5b0492506002810190505b600a8310611b08576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611b5a81611b25565b8114611b6557600080fd5b50565b600081359050611b7781611b51565b92915050565b600060208284031215611b9357611b92611b1b565b5b6000611ba184828501611b68565b91505092915050565b60008115159050919050565b611bbf81611baa565b82525050565b6000602082019050611bda6000830184611bb6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c1a578082015181840152602081019050611bff565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4282611be0565b611c4c8185611beb565b9350611c5c818560208601611bfc565b611c6581611c26565b840191505092915050565b60006020820190508181036000830152611c8a8184611c37565b905092915050565b6000819050919050565b611ca581611c92565b8114611cb057600080fd5b50565b600081359050611cc281611c9c565b92915050565b600060208284031215611cde57611cdd611b1b565b5b6000611cec84828501611cb3565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d2082611cf5565b9050919050565b611d3081611d15565b82525050565b6000602082019050611d4b6000830184611d27565b92915050565b611d5a81611d15565b8114611d6557600080fd5b50565b600081359050611d7781611d51565b92915050565b60008060408385031215611d9457611d93611b1b565b5b6000611da285828601611d68565b9250506020611db385828601611cb3565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112611de257611de1611dbd565b5b8235905067ffffffffffffffff811115611dff57611dfe611dc2565b5b602083019150836001820283011115611e1b57611e1a611dc7565b5b9250929050565b600080600060408486031215611e3b57611e3a611b1b565b5b6000611e4986828701611cb3565b935050602084013567ffffffffffffffff811115611e6a57611e69611b20565b5b611e7686828701611dcc565b92509250509250925092565b600080600060608486031215611e9b57611e9a611b1b565b5b6000611ea986828701611d68565b9350506020611eba86828701611d68565b9250506040611ecb86828701611cb3565b9150509250925092565b600060208284031215611eeb57611eea611b1b565b5b6000611ef984828501611d68565b91505092915050565b611f0b81611c92565b82525050565b6000602082019050611f266000830184611f02565b92915050565b611f3581611baa565b8114611f4057600080fd5b50565b600081359050611f5281611f2c565b92915050565b60008060408385031215611f6f57611f6e611b1b565b5b6000611f7d85828601611d68565b9250506020611f8e85828601611f43565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611fd582611c26565b810181811067ffffffffffffffff82111715611ff457611ff3611f9d565b5b80604052505050565b6000612007611b11565b90506120138282611fcc565b919050565b600067ffffffffffffffff82111561203357612032611f9d565b5b61203c82611c26565b9050602081019050919050565b82818337600083830152505050565b600061206b61206684612018565b611ffd565b90508281526020810184848401111561208757612086611f98565b5b612092848285612049565b509392505050565b600082601f8301126120af576120ae611dbd565b5b81356120bf848260208601612058565b91505092915050565b600080600080608085870312156120e2576120e1611b1b565b5b60006120f087828801611d68565b945050602061210187828801611d68565b935050604061211287828801611cb3565b925050606085013567ffffffffffffffff81111561213357612132611b20565b5b61213f8782880161209a565b91505092959194509250565b600067ffffffffffffffff82111561216657612165611f9d565b5b61216f82611c26565b9050602081019050919050565b600061218f61218a8461214b565b611ffd565b9050828152602081018484840111156121ab576121aa611f98565b5b6121b6848285612049565b509392505050565b600082601f8301126121d3576121d2611dbd565b5b81356121e384826020860161217c565b91505092915050565b6000806040838503121561220357612202611b1b565b5b600061221185828601611d68565b925050602083013567ffffffffffffffff81111561223257612231611b20565b5b61223e858286016121be565b9150509250929050565b6000806040838503121561225f5761225e611b1b565b5b600061226d85828601611d68565b925050602061227e85828601611d68565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122cf57607f821691505b6020821081036122e2576122e1612288565b5b50919050565b60006060820190506122fd6000830186611d27565b61230a6020830185611f02565b6123176040830184611d27565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061235982611c92565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361238b5761238a61231f565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026123f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826123bb565b61240286836123bb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061243f61243a61243584611c92565b61241a565b611c92565b9050919050565b6000819050919050565b61245983612424565b61246d61246582612446565b8484546123c8565b825550505050565b600090565b612482612475565b61248d818484612450565b505050565b5b818110156124b1576124a660008261247a565b600181019050612493565b5050565b601f8211156124f6576124c781612396565b6124d0846123ab565b810160208510156124df578190505b6124f36124eb856123ab565b830182612492565b50505b505050565b600082821c905092915050565b6000612519600019846008026124fb565b1980831691505092915050565b60006125328383612508565b9150826002028217905092915050565b61254b82611be0565b67ffffffffffffffff81111561256457612563611f9d565b5b61256e82546122b7565b6125798282856124b5565b600060209050601f8311600181146125ac576000841561259a578287015190505b6125a48582612526565b86555061260c565b601f1984166125ba86612396565b60005b828110156125e2578489015182556001820191506020850194506020810190506125bd565b868310156125ff57848901516125fb601f891682612508565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b600061263b82612614565b612645818561261f565b9350612655818560208601611bfc565b61265e81611c26565b840191505092915050565b600060808201905061267e6000830187611d27565b61268b6020830186611d27565b6126986040830185611f02565b81810360608301526126aa8184612630565b905095945050505050565b6000815190506126c481611b51565b92915050565b6000602082840312156126e0576126df611b1b565b5b60006126ee848285016126b5565b91505092915050565b600081905092915050565b600061270d82611be0565b61271781856126f7565b9350612727818560208601611bfc565b80840191505092915050565b600061273f8285612702565b915061274b8284612702565b91508190509392505050565b600060408201905061276c6000830185611d27565b6127796020830184611f02565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea26469706673582212200db5cfaa0d7a5a1fbdd1fda10c44c020d99952357058df1e0b671eb7dfb67eec64736f6c634300081c0033", 594 | "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde146102cb578063c87b56dd146102e7578063d204c45e14610317578063e985e9c514610347578063f2fde38b1461037757610116565b8063715018a6146102695780638da5cb5b1461027357806395d89b4114610291578063a22cb465146102af57610116565b806318e97fd1116100e957806318e97fd1146101b557806323b872dd146101d157806342842e0e146101ed5780636352211e1461020957806370a082311461023957610116565b806301ffc9a71461011b57806306fdde031461014b578063081812fc14610169578063095ea7b314610199575b600080fd5b61013560048036038101906101309190611b7d565b610393565b6040516101429190611bc5565b60405180910390f35b6101536103a5565b6040516101609190611c70565b60405180910390f35b610183600480360381019061017e9190611cc8565b610437565b6040516101909190611d36565b60405180910390f35b6101b360048036038101906101ae9190611d7d565b610453565b005b6101cf60048036038101906101ca9190611e22565b610469565b005b6101eb60048036038101906101e69190611e82565b6104c4565b005b61020760048036038101906102029190611e82565b6105c6565b005b610223600480360381019061021e9190611cc8565b6105e6565b6040516102309190611d36565b60405180910390f35b610253600480360381019061024e9190611ed5565b6105f8565b6040516102609190611f11565b60405180910390f35b6102716106b2565b005b61027b6106c6565b6040516102889190611d36565b60405180910390f35b6102996106f0565b6040516102a69190611c70565b60405180910390f35b6102c960048036038101906102c49190611f58565b610782565b005b6102e560048036038101906102e091906120c8565b610798565b005b61030160048036038101906102fc9190611cc8565b6107bd565b60405161030e9190611c70565b60405180910390f35b610331600480360381019061032c91906121ec565b6107cf565b60405161033e9190611f11565b60405180910390f35b610361600480360381019061035c9190612248565b610812565b60405161036e9190611bc5565b60405180910390f35b610391600480360381019061038c9190611ed5565b6108a6565b005b600061039e8261092c565b9050919050565b6060600080546103b4906122b7565b80601f01602080910402602001604051908101604052809291908181526020018280546103e0906122b7565b801561042d5780601f106104025761010080835404028352916020019161042d565b820191906000526020600020905b81548152906001019060200180831161041057829003601f168201915b5050505050905090565b60006104428261098d565b5061044c82610a15565b9050919050565b6104658282610460610a52565b610a5a565b5050565b610471610a6c565b6104bf8383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610af3565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105365760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161052d9190611d36565b60405180910390fd5b600061054a8383610545610a52565b610b4f565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105c0578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016105b7939291906122e8565b60405180910390fd5b50505050565b6105e183838360405180602001604052806000815250610798565b505050565b60006105f18261098d565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361066b5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016106629190611d36565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106ba610a6c565b6106c46000610d69565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546106ff906122b7565b80601f016020809104026020016040519081016040528092919081815260200182805461072b906122b7565b80156107785780601f1061074d57610100808354040283529160200191610778565b820191906000526020600020905b81548152906001019060200180831161075b57829003601f168201915b5050505050905090565b61079461078d610a52565b8383610e2f565b5050565b6107a38484846104c4565b6107b76107ae610a52565b85858585610f9e565b50505050565b60606107c88261114f565b9050919050565b60006107d9610a6c565b6000600860008154809291906107ee9061234e565b9190505590506107fe8482611262565b6108088184610af3565b8091505092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6108ae610a6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109205760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016109179190611d36565b60405180910390fd5b61092981610d69565b50565b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610986575061098582611280565b5b9050919050565b60008061099983611362565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a0c57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610a039190611f11565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b610a67838383600161139f565b505050565b610a74610a52565b73ffffffffffffffffffffffffffffffffffffffff16610a926106c6565b73ffffffffffffffffffffffffffffffffffffffff1614610af157610ab5610a52565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610ae89190611d36565b60405180910390fd5b565b80600660008481526020019081526020016000209081610b139190612542565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce782604051610b439190611f11565b60405180910390a15050565b600080610b5b84611362565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610b9d57610b9c818486611564565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c2e57610bdf60008560008061139f565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610cb1576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ea057816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610e979190611d36565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f919190611bc5565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611148578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401610ffd9493929190612669565b6020604051808303816000875af192505050801561103957506040513d601f19601f8201168201806040525081019061103691906126ca565b60015b6110bd573d8060008114611069576040519150601f19603f3d011682016040523d82523d6000602084013e61106e565b606091505b5060008151036110b557836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016110ac9190611d36565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461114657836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161113d9190611d36565b60405180910390fd5b505b5050505050565b606061115a8261098d565b50600060066000848152602001908152602001600020805461117b906122b7565b80601f01602080910402602001604051908101604052809291908181526020018280546111a7906122b7565b80156111f45780601f106111c9576101008083540402835291602001916111f4565b820191906000526020600020905b8154815290600101906020018083116111d757829003601f168201915b505050505090506000611205611628565b9050600081510361121a57819250505061125d565b60008251111561124f578082604051602001611237929190612733565b6040516020818303038152906040529250505061125d565b6112588461163f565b925050505b919050565b61127c8282604051806020016040528060008152506116a8565b5050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061134b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061135b575061135a826116cc565b5b9050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806113d85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561150c5760006113e88461098d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561145357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561146657506114648184610812565b155b156114a857826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161149f9190611d36565b60405180910390fd5b811561150a57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61156f838383611736565b61162357600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e457806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016115db9190611f11565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161161a929190612757565b60405180910390fd5b505050565b606060405180602001604052806000815250905090565b606061164a8261098d565b506000611655611628565b9050600081511161167557604051806020016040528060008152506116a0565b8061167f846117f7565b604051602001611690929190612733565b6040516020818303038152906040525b915050919050565b6116b283836118c5565b6116c76116bd610a52565b6000858585610f9e565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ee57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117af57506117ae8484610812565b5b806117ed57508273ffffffffffffffffffffffffffffffffffffffff166117d583610a15565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b606060006001611806846119be565b01905060008167ffffffffffffffff81111561182557611824611f9d565b5b6040519080825280601f01601f1916602001820160405280156118575781602001600182028036833780820191505090505b509050600082602001820190505b6001156118ba578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816118ae576118ad612780565b5b04945060008503611865575b819350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119375760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161192e9190611d36565b60405180910390fd5b600061194583836000610b4f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119b95760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016119b09190611d36565b60405180910390fd5b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611a1c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611a1257611a11612780565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611a59576d04ee2d6d415b85acef81000000008381611a4f57611a4e612780565b5b0492506020810190505b662386f26fc100008310611a8857662386f26fc100008381611a7e57611a7d612780565b5b0492506010810190505b6305f5e1008310611ab1576305f5e1008381611aa757611aa6612780565b5b0492506008810190505b6127108310611ad6576127108381611acc57611acb612780565b5b0492506004810190505b60648310611af95760648381611aef57611aee612780565b5b0492506002810190505b600a8310611b08576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611b5a81611b25565b8114611b6557600080fd5b50565b600081359050611b7781611b51565b92915050565b600060208284031215611b9357611b92611b1b565b5b6000611ba184828501611b68565b91505092915050565b60008115159050919050565b611bbf81611baa565b82525050565b6000602082019050611bda6000830184611bb6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c1a578082015181840152602081019050611bff565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4282611be0565b611c4c8185611beb565b9350611c5c818560208601611bfc565b611c6581611c26565b840191505092915050565b60006020820190508181036000830152611c8a8184611c37565b905092915050565b6000819050919050565b611ca581611c92565b8114611cb057600080fd5b50565b600081359050611cc281611c9c565b92915050565b600060208284031215611cde57611cdd611b1b565b5b6000611cec84828501611cb3565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d2082611cf5565b9050919050565b611d3081611d15565b82525050565b6000602082019050611d4b6000830184611d27565b92915050565b611d5a81611d15565b8114611d6557600080fd5b50565b600081359050611d7781611d51565b92915050565b60008060408385031215611d9457611d93611b1b565b5b6000611da285828601611d68565b9250506020611db385828601611cb3565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112611de257611de1611dbd565b5b8235905067ffffffffffffffff811115611dff57611dfe611dc2565b5b602083019150836001820283011115611e1b57611e1a611dc7565b5b9250929050565b600080600060408486031215611e3b57611e3a611b1b565b5b6000611e4986828701611cb3565b935050602084013567ffffffffffffffff811115611e6a57611e69611b20565b5b611e7686828701611dcc565b92509250509250925092565b600080600060608486031215611e9b57611e9a611b1b565b5b6000611ea986828701611d68565b9350506020611eba86828701611d68565b9250506040611ecb86828701611cb3565b9150509250925092565b600060208284031215611eeb57611eea611b1b565b5b6000611ef984828501611d68565b91505092915050565b611f0b81611c92565b82525050565b6000602082019050611f266000830184611f02565b92915050565b611f3581611baa565b8114611f4057600080fd5b50565b600081359050611f5281611f2c565b92915050565b60008060408385031215611f6f57611f6e611b1b565b5b6000611f7d85828601611d68565b9250506020611f8e85828601611f43565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611fd582611c26565b810181811067ffffffffffffffff82111715611ff457611ff3611f9d565b5b80604052505050565b6000612007611b11565b90506120138282611fcc565b919050565b600067ffffffffffffffff82111561203357612032611f9d565b5b61203c82611c26565b9050602081019050919050565b82818337600083830152505050565b600061206b61206684612018565b611ffd565b90508281526020810184848401111561208757612086611f98565b5b612092848285612049565b509392505050565b600082601f8301126120af576120ae611dbd565b5b81356120bf848260208601612058565b91505092915050565b600080600080608085870312156120e2576120e1611b1b565b5b60006120f087828801611d68565b945050602061210187828801611d68565b935050604061211287828801611cb3565b925050606085013567ffffffffffffffff81111561213357612132611b20565b5b61213f8782880161209a565b91505092959194509250565b600067ffffffffffffffff82111561216657612165611f9d565b5b61216f82611c26565b9050602081019050919050565b600061218f61218a8461214b565b611ffd565b9050828152602081018484840111156121ab576121aa611f98565b5b6121b6848285612049565b509392505050565b600082601f8301126121d3576121d2611dbd565b5b81356121e384826020860161217c565b91505092915050565b6000806040838503121561220357612202611b1b565b5b600061221185828601611d68565b925050602083013567ffffffffffffffff81111561223257612231611b20565b5b61223e858286016121be565b9150509250929050565b6000806040838503121561225f5761225e611b1b565b5b600061226d85828601611d68565b925050602061227e85828601611d68565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122cf57607f821691505b6020821081036122e2576122e1612288565b5b50919050565b60006060820190506122fd6000830186611d27565b61230a6020830185611f02565b6123176040830184611d27565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061235982611c92565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361238b5761238a61231f565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026123f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826123bb565b61240286836123bb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061243f61243a61243584611c92565b61241a565b611c92565b9050919050565b6000819050919050565b61245983612424565b61246d61246582612446565b8484546123c8565b825550505050565b600090565b612482612475565b61248d818484612450565b505050565b5b818110156124b1576124a660008261247a565b600181019050612493565b5050565b601f8211156124f6576124c781612396565b6124d0846123ab565b810160208510156124df578190505b6124f36124eb856123ab565b830182612492565b50505b505050565b600082821c905092915050565b6000612519600019846008026124fb565b1980831691505092915050565b60006125328383612508565b9150826002028217905092915050565b61254b82611be0565b67ffffffffffffffff81111561256457612563611f9d565b5b61256e82546122b7565b6125798282856124b5565b600060209050601f8311600181146125ac576000841561259a578287015190505b6125a48582612526565b86555061260c565b601f1984166125ba86612396565b60005b828110156125e2578489015182556001820191506020850194506020810190506125bd565b868310156125ff57848901516125fb601f891682612508565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b600061263b82612614565b612645818561261f565b9350612655818560208601611bfc565b61265e81611c26565b840191505092915050565b600060808201905061267e6000830187611d27565b61268b6020830186611d27565b6126986040830185611f02565b81810360608301526126aa8184612630565b905095945050505050565b6000815190506126c481611b51565b92915050565b6000602082840312156126e0576126df611b1b565b5b60006126ee848285016126b5565b91505092915050565b600081905092915050565b600061270d82611be0565b61271781856126f7565b9350612727818560208601611bfc565b80840191505092915050565b600061273f8285612702565b915061274b8284612702565b91508190509392505050565b600060408201905061276c6000830185611d27565b6127796020830184611f02565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea26469706673582212200db5cfaa0d7a5a1fbdd1fda10c44c020d99952357058df1e0b671eb7dfb67eec64736f6c634300081c0033", 595 | "linkReferences": {}, 596 | "deployedLinkReferences": {} 597 | } -------------------------------------------------------------------------------- /ignition/deployments/chain-97/artifacts/AIFlow#AIFlowOracle.dbg.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-dbg-1", 3 | "buildInfo": "../build-info/f01b05c60fb76ee67a36dad0561a2af2.json" 4 | } -------------------------------------------------------------------------------- /ignition/deployments/chain-97/artifacts/AIFlow#AIFlowOracle.json: -------------------------------------------------------------------------------- 1 | { 2 | "_format": "hh-sol-artifact-1", 3 | "contractName": "AIFlowOracle", 4 | "sourceName": "contracts/AIFlowOracle.sol", 5 | "abi": [ 6 | { 7 | "inputs": [ 8 | { 9 | "internalType": "address", 10 | "name": "_agentNftAddress", 11 | "type": "address" 12 | }, 13 | { 14 | "internalType": "address", 15 | "name": "_initialOwner", 16 | "type": "address" 17 | } 18 | ], 19 | "stateMutability": "nonpayable", 20 | "type": "constructor" 21 | }, 22 | { 23 | "inputs": [ 24 | { 25 | "internalType": "address", 26 | "name": "owner", 27 | "type": "address" 28 | } 29 | ], 30 | "name": "OwnableInvalidOwner", 31 | "type": "error" 32 | }, 33 | { 34 | "inputs": [ 35 | { 36 | "internalType": "address", 37 | "name": "account", 38 | "type": "address" 39 | } 40 | ], 41 | "name": "OwnableUnauthorizedAccount", 42 | "type": "error" 43 | }, 44 | { 45 | "anonymous": false, 46 | "inputs": [ 47 | { 48 | "indexed": true, 49 | "internalType": "uint256", 50 | "name": "agentId", 51 | "type": "uint256" 52 | }, 53 | { 54 | "indexed": false, 55 | "internalType": "address", 56 | "name": "tokenAddress", 57 | "type": "address" 58 | } 59 | ], 60 | "name": "AgentCreated", 61 | "type": "event" 62 | }, 63 | { 64 | "anonymous": false, 65 | "inputs": [ 66 | { 67 | "indexed": true, 68 | "internalType": "address", 69 | "name": "previousOwner", 70 | "type": "address" 71 | }, 72 | { 73 | "indexed": true, 74 | "internalType": "address", 75 | "name": "newOwner", 76 | "type": "address" 77 | } 78 | ], 79 | "name": "OwnershipTransferred", 80 | "type": "event" 81 | }, 82 | { 83 | "inputs": [ 84 | { 85 | "internalType": "address", 86 | "name": "to", 87 | "type": "address" 88 | }, 89 | { 90 | "internalType": "string", 91 | "name": "tokenUri", 92 | "type": "string" 93 | }, 94 | { 95 | "internalType": "string", 96 | "name": "tokenName", 97 | "type": "string" 98 | }, 99 | { 100 | "internalType": "string", 101 | "name": "tokenSymbol", 102 | "type": "string" 103 | } 104 | ], 105 | "name": "createAgent", 106 | "outputs": [ 107 | { 108 | "internalType": "uint256", 109 | "name": "agentId", 110 | "type": "uint256" 111 | }, 112 | { 113 | "internalType": "address", 114 | "name": "tokenAddress", 115 | "type": "address" 116 | } 117 | ], 118 | "stateMutability": "nonpayable", 119 | "type": "function" 120 | }, 121 | { 122 | "inputs": [ 123 | { 124 | "internalType": "uint256", 125 | "name": "agentId", 126 | "type": "uint256" 127 | } 128 | ], 129 | "name": "getAgentBy", 130 | "outputs": [ 131 | { 132 | "components": [ 133 | { 134 | "internalType": "uint256", 135 | "name": "agentId", 136 | "type": "uint256" 137 | }, 138 | { 139 | "internalType": "address", 140 | "name": "tokenAddress", 141 | "type": "address" 142 | } 143 | ], 144 | "internalType": "struct AIFlowOracle.Agent", 145 | "name": "agent", 146 | "type": "tuple" 147 | } 148 | ], 149 | "stateMutability": "view", 150 | "type": "function" 151 | }, 152 | { 153 | "inputs": [ 154 | { 155 | "internalType": "address", 156 | "name": "tokenAddress", 157 | "type": "address" 158 | } 159 | ], 160 | "name": "getAgentIdBy", 161 | "outputs": [ 162 | { 163 | "internalType": "uint256", 164 | "name": "agentId", 165 | "type": "uint256" 166 | } 167 | ], 168 | "stateMutability": "view", 169 | "type": "function" 170 | }, 171 | { 172 | "inputs": [ 173 | { 174 | "internalType": "uint256", 175 | "name": "agentId", 176 | "type": "uint256" 177 | }, 178 | { 179 | "internalType": "address", 180 | "name": "to", 181 | "type": "address" 182 | }, 183 | { 184 | "internalType": "uint256", 185 | "name": "amount", 186 | "type": "uint256" 187 | } 188 | ], 189 | "name": "mintToken", 190 | "outputs": [], 191 | "stateMutability": "nonpayable", 192 | "type": "function" 193 | }, 194 | { 195 | "inputs": [], 196 | "name": "owner", 197 | "outputs": [ 198 | { 199 | "internalType": "address", 200 | "name": "", 201 | "type": "address" 202 | } 203 | ], 204 | "stateMutability": "view", 205 | "type": "function" 206 | }, 207 | { 208 | "inputs": [], 209 | "name": "renounceOwnership", 210 | "outputs": [], 211 | "stateMutability": "nonpayable", 212 | "type": "function" 213 | }, 214 | { 215 | "inputs": [ 216 | { 217 | "internalType": "address", 218 | "name": "newOwner", 219 | "type": "address" 220 | } 221 | ], 222 | "name": "transferOwnership", 223 | "outputs": [], 224 | "stateMutability": "nonpayable", 225 | "type": "function" 226 | }, 227 | { 228 | "inputs": [ 229 | { 230 | "internalType": "uint256", 231 | "name": "agentId", 232 | "type": "uint256" 233 | }, 234 | { 235 | "internalType": "string", 236 | "name": "newAgentURI", 237 | "type": "string" 238 | } 239 | ], 240 | "name": "updateAgentURI", 241 | "outputs": [], 242 | "stateMutability": "nonpayable", 243 | "type": "function" 244 | } 245 | ], 246 | "bytecode": "0x60a0604052600160025534801561001557600080fd5b50604051612ecf380380612ecf8339818101604052810190610037919061021c565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100aa5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100a1919061026b565b60405180910390fd5b6100b9816100f560201b60201c565b508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050610286565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101e9826101be565b9050919050565b6101f9816101de565b811461020457600080fd5b50565b600081519050610216816101f0565b92915050565b60008060408385031215610233576102326101b9565b5b600061024185828601610207565b925050602061025285828601610207565b9150509250929050565b610265816101de565b82525050565b6000602082019050610280600083018461025c565b92915050565b608051612c196102b6600039600081816101f0015281816103ac015281816104b601526105630152612c196000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637811a5bf1161005b5780637811a5bf146101145780638da5cb5b14610130578063a9fc03941461014e578063f2fde38b1461017e57610088565b80630d6f41281461008d57806313478a34146100bd5780636b595822146100ee578063715018a61461010a575b600080fd5b6100a760048036038101906100a29190610ab0565b61019a565b6040516100b49190610af6565b60405180910390f35b6100d760048036038101906100d29190610cb7565b6101e3565b6040516100e5929190610d89565b60405180910390f35b61010860048036038101906101039190610dde565b6103a7565b005b61011261054a565b005b61012e60048036038101906101299190610e3e565b61055e565b005b610138610772565b6040516101459190610e91565b60405180910390f35b61016860048036038101906101639190610eac565b61079b565b6040516101759190610f26565b60405180910390f35b61019860048036038101906101939190610ab0565b610828565b005b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806101ee6108ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d204c45e89896040518363ffffffff1660e01b8152600401610249929190610fc0565b6020604051808303816000875af1158015610268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611005565b9150600030878787876040516102a190610a01565b6102af95949392919061105f565b604051809103906000f0801580156102cb573d6000803e3d6000fd5b50905080915060405180604001604052808481526020018373ffffffffffffffffffffffffffffffffffffffff16815250600160008581526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050827fa70099852e9c3325724165514adc9d6f8dd55c4708c923dbf3219c4fc6f8aefc836040516103939190610e91565b60405180910390a250965096945050505050565b8260007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016104039190610af6565b602060405180830381865afa158015610420573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044491906110bd565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ab9061115c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318e97fd18686866040518463ffffffff1660e01b81526004016105119392919061117c565b600060405180830381600087803b15801561052b57600080fd5b505af115801561053f573d6000803e3d6000fd5b505050505050505050565b6105526108ae565b61055c6000610935565b565b8260007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016105ba9190610af6565b602060405180830381865afa1580156105d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fb91906110bd565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106629061115c565b60405180910390fd5b600060016000878152602001908152602001600020604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905060008160200151905060008190508073ffffffffffffffffffffffffffffffffffffffff166340c10f1988886040518363ffffffff1660e01b81526004016107369291906111ae565b600060405180830381600087803b15801561075057600080fd5b505af1158015610764573d6000803e3d6000fd5b505050505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107a3610a0e565b60016000838152602001908152602001600020604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b6108306108ae565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108a25760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016108999190610e91565b60405180910390fd5b6108ab81610935565b50565b6108b66109f9565b73ffffffffffffffffffffffffffffffffffffffff166108d4610772565b73ffffffffffffffffffffffffffffffffffffffff1614610933576108f76109f9565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161092a9190610e91565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b611a0c806111d883390190565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610a7d82610a52565b9050919050565b610a8d81610a72565b8114610a9857600080fd5b50565b600081359050610aaa81610a84565b92915050565b600060208284031215610ac657610ac5610a48565b5b6000610ad484828501610a9b565b91505092915050565b6000819050919050565b610af081610add565b82525050565b6000602082019050610b0b6000830184610ae7565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610b6482610b1b565b810181811067ffffffffffffffff82111715610b8357610b82610b2c565b5b80604052505050565b6000610b96610a3e565b9050610ba28282610b5b565b919050565b600067ffffffffffffffff821115610bc257610bc1610b2c565b5b610bcb82610b1b565b9050602081019050919050565b82818337600083830152505050565b6000610bfa610bf584610ba7565b610b8c565b905082815260208101848484011115610c1657610c15610b16565b5b610c21848285610bd8565b509392505050565b600082601f830112610c3e57610c3d610b11565b5b8135610c4e848260208601610be7565b91505092915050565b600080fd5b600080fd5b60008083601f840112610c7757610c76610b11565b5b8235905067ffffffffffffffff811115610c9457610c93610c57565b5b602083019150836001820283011115610cb057610caf610c5c565b5b9250929050565b60008060008060008060808789031215610cd457610cd3610a48565b5b6000610ce289828a01610a9b565b965050602087013567ffffffffffffffff811115610d0357610d02610a4d565b5b610d0f89828a01610c29565b955050604087013567ffffffffffffffff811115610d3057610d2f610a4d565b5b610d3c89828a01610c61565b9450945050606087013567ffffffffffffffff811115610d5f57610d5e610a4d565b5b610d6b89828a01610c61565b92509250509295509295509295565b610d8381610a72565b82525050565b6000604082019050610d9e6000830185610ae7565b610dab6020830184610d7a565b9392505050565b610dbb81610add565b8114610dc657600080fd5b50565b600081359050610dd881610db2565b92915050565b600080600060408486031215610df757610df6610a48565b5b6000610e0586828701610dc9565b935050602084013567ffffffffffffffff811115610e2657610e25610a4d565b5b610e3286828701610c61565b92509250509250925092565b600080600060608486031215610e5757610e56610a48565b5b6000610e6586828701610dc9565b9350506020610e7686828701610a9b565b9250506040610e8786828701610dc9565b9150509250925092565b6000602082019050610ea66000830184610d7a565b92915050565b600060208284031215610ec257610ec1610a48565b5b6000610ed084828501610dc9565b91505092915050565b610ee281610add565b82525050565b610ef181610a72565b82525050565b604082016000820151610f0d6000850182610ed9565b506020820151610f206020850182610ee8565b50505050565b6000604082019050610f3b6000830184610ef7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f7b578082015181840152602081019050610f60565b60008484015250505050565b6000610f9282610f41565b610f9c8185610f4c565b9350610fac818560208601610f5d565b610fb581610b1b565b840191505092915050565b6000604082019050610fd56000830185610d7a565b8181036020830152610fe78184610f87565b90509392505050565b600081519050610fff81610db2565b92915050565b60006020828403121561101b5761101a610a48565b5b600061102984828501610ff0565b91505092915050565b600061103e8385610f4c565b935061104b838584610bd8565b61105483610b1b565b840190509392505050565b60006060820190506110746000830188610d7a565b8181036020830152611087818688611032565b9050818103604083015261109c818486611032565b90509695505050505050565b6000815190506110b781610a84565b92915050565b6000602082840312156110d3576110d2610a48565b5b60006110e1848285016110a8565b91505092915050565b7f5468652063616c6c6572206d75737420626520746865206f776e6572206f662060008201527f74686973206167656e7400000000000000000000000000000000000000000000602082015250565b6000611146602a83610f4c565b9150611151826110ea565b604082019050919050565b6000602082019050818103600083015261117581611139565b9050919050565b60006040820190506111916000830186610ae7565b81810360208301526111a4818486611032565b9050949350505050565b60006040820190506111c36000830185610d7a565b6111d06020830184610ae7565b939250505056fe608060405234801561001057600080fd5b50604051611a0c380380611a0c8339818101604052810190610032919061037a565b82828281600390816100449190610626565b5080600490816100549190610626565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c95760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100c09190610707565b60405180910390fd5b6100d8816100e160201b60201c565b50505050610722565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101e6826101bb565b9050919050565b6101f6816101db565b811461020157600080fd5b50565b600081519050610213816101ed565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61026c82610223565b810181811067ffffffffffffffff8211171561028b5761028a610234565b5b80604052505050565b600061029e6101a7565b90506102aa8282610263565b919050565b600067ffffffffffffffff8211156102ca576102c9610234565b5b6102d382610223565b9050602081019050919050565b60005b838110156102fe5780820151818401526020810190506102e3565b60008484015250505050565b600061031d610318846102af565b610294565b9050828152602081018484840111156103395761033861021e565b5b6103448482856102e0565b509392505050565b600082601f83011261036157610360610219565b5b815161037184826020860161030a565b91505092915050565b600080600060608486031215610393576103926101b1565b5b60006103a186828701610204565b935050602084015167ffffffffffffffff8111156103c2576103c16101b6565b5b6103ce8682870161034c565b925050604084015167ffffffffffffffff8111156103ef576103ee6101b6565b5b6103fb8682870161034c565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061045757607f821691505b60208210810361046a57610469610410565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026104d27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610495565b6104dc8683610495565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061052361051e610519846104f4565b6104fe565b6104f4565b9050919050565b6000819050919050565b61053d83610508565b6105516105498261052a565b8484546104a2565b825550505050565b600090565b610566610559565b610571818484610534565b505050565b5b818110156105955761058a60008261055e565b600181019050610577565b5050565b601f8211156105da576105ab81610470565b6105b484610485565b810160208510156105c3578190505b6105d76105cf85610485565b830182610576565b50505b505050565b600082821c905092915050565b60006105fd600019846008026105df565b1980831691505092915050565b600061061683836105ec565b9150826002028217905092915050565b61062f82610405565b67ffffffffffffffff81111561064857610647610234565b5b610652825461043f565b61065d828285610599565b600060209050601f831160018114610690576000841561067e578287015190505b610688858261060a565b8655506106f0565b601f19841661069e86610470565b60005b828110156106c6578489015182556001820191506020850194506020810190506106a1565b868310156106e357848901516106df601f8916826105ec565b8355505b6001600288020188555050505b505050505050565b610701816101db565b82525050565b600060208201905061071c60008301846106f8565b92915050565b6112db806107316000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a082311161009757806395d89b411161006657806395d89b4114610260578063a9059cbb1461027e578063dd62ed3e146102ae578063f2fde38b146102de576100f5565b806370a08231146101ec578063715018a61461021c57806379cc6790146102265780638da5cb5b14610242576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806340c10f19146101b457806342966c68146101d0576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b6101026102fa565b60405161010f9190610f02565b60405180910390f35b610132600480360381019061012d9190610fbd565b61038c565b60405161013f9190611018565b60405180910390f35b6101506103af565b60405161015d9190611042565b60405180910390f35b610180600480360381019061017b919061105d565b6103b9565b60405161018d9190611018565b60405180910390f35b61019e6103e8565b6040516101ab91906110cc565b60405180910390f35b6101ce60048036038101906101c99190610fbd565b6103f1565b005b6101ea60048036038101906101e591906110e7565b610407565b005b61020660048036038101906102019190611114565b61041b565b6040516102139190611042565b60405180910390f35b610224610463565b005b610240600480360381019061023b9190610fbd565b610477565b005b61024a610497565b6040516102579190611150565b60405180910390f35b6102686104c1565b6040516102759190610f02565b60405180910390f35b61029860048036038101906102939190610fbd565b610553565b6040516102a59190611018565b60405180910390f35b6102c860048036038101906102c3919061116b565b610576565b6040516102d59190611042565b60405180910390f35b6102f860048036038101906102f39190611114565b6105fd565b005b606060038054610309906111da565b80601f0160208091040260200160405190810160405280929190818152602001828054610335906111da565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b5050505050905090565b600080610397610683565b90506103a481858561068b565b600191505092915050565b6000600254905090565b6000806103c4610683565b90506103d185828561069d565b6103dc858585610731565b60019150509392505050565b60006012905090565b6103f9610825565b61040382826108ac565b5050565b610418610412610683565b8261092e565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61046b610825565b61047560006109b0565b565b61048982610483610683565b8361069d565b610493828261092e565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104d0906111da565b80601f01602080910402602001604051908101604052809291908181526020018280546104fc906111da565b80156105495780601f1061051e57610100808354040283529160200191610549565b820191906000526020600020905b81548152906001019060200180831161052c57829003601f168201915b5050505050905090565b60008061055e610683565b905061056b818585610731565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610605610825565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106775760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161066e9190611150565b60405180910390fd5b610680816109b0565b50565b600033905090565b6106988383836001610a76565b505050565b60006106a98484610576565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461072b578181101561071b578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016107129392919061120b565b60405180910390fd5b61072a84848484036000610a76565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107a35760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161079a9190611150565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108155760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161080c9190611150565b60405180910390fd5b610820838383610c4d565b505050565b61082d610683565b73ffffffffffffffffffffffffffffffffffffffff1661084b610497565b73ffffffffffffffffffffffffffffffffffffffff16146108aa5761086e610683565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108a19190611150565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361091e5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109159190611150565b60405180910390fd5b61092a60008383610c4d565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109a05760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109979190611150565b60405180910390fd5b6109ac82600083610c4d565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ae85760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610adf9190611150565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b5a5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610b519190611150565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610c47578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c3e9190611042565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c9f578060026000828254610c939190611271565b92505081905550610d72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d2b578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610d229392919061120b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dbb5780600260008282540392505081905550610e08565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e659190611042565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610eac578082015181840152602081019050610e91565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ed482610e72565b610ede8185610e7d565b9350610eee818560208601610e8e565b610ef781610eb8565b840191505092915050565b60006020820190508181036000830152610f1c8184610ec9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f5482610f29565b9050919050565b610f6481610f49565b8114610f6f57600080fd5b50565b600081359050610f8181610f5b565b92915050565b6000819050919050565b610f9a81610f87565b8114610fa557600080fd5b50565b600081359050610fb781610f91565b92915050565b60008060408385031215610fd457610fd3610f24565b5b6000610fe285828601610f72565b9250506020610ff385828601610fa8565b9150509250929050565b60008115159050919050565b61101281610ffd565b82525050565b600060208201905061102d6000830184611009565b92915050565b61103c81610f87565b82525050565b60006020820190506110576000830184611033565b92915050565b60008060006060848603121561107657611075610f24565b5b600061108486828701610f72565b935050602061109586828701610f72565b92505060406110a686828701610fa8565b9150509250925092565b600060ff82169050919050565b6110c6816110b0565b82525050565b60006020820190506110e160008301846110bd565b92915050565b6000602082840312156110fd576110fc610f24565b5b600061110b84828501610fa8565b91505092915050565b60006020828403121561112a57611129610f24565b5b600061113884828501610f72565b91505092915050565b61114a81610f49565b82525050565b60006020820190506111656000830184611141565b92915050565b6000806040838503121561118257611181610f24565b5b600061119085828601610f72565b92505060206111a185828601610f72565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111f257607f821691505b602082108103611205576112046111ab565b5b50919050565b60006060820190506112206000830186611141565b61122d6020830185611033565b61123a6040830184611033565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061127c82610f87565b915061128783610f87565b925082820190508082111561129f5761129e611242565b5b9291505056fea26469706673582212207771d29590f915d3071a9f2057e68b63c61d427874c2b0f4f2b541a63c47f62c64736f6c634300081c0033a2646970667358221220cec495f6b23445270704b6859bb7f0cc1a546cfc4f489d6d99f09c6f48e8ee9564736f6c634300081c0033", 247 | "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100885760003560e01c80637811a5bf1161005b5780637811a5bf146101145780638da5cb5b14610130578063a9fc03941461014e578063f2fde38b1461017e57610088565b80630d6f41281461008d57806313478a34146100bd5780636b595822146100ee578063715018a61461010a575b600080fd5b6100a760048036038101906100a29190610ab0565b61019a565b6040516100b49190610af6565b60405180910390f35b6100d760048036038101906100d29190610cb7565b6101e3565b6040516100e5929190610d89565b60405180910390f35b61010860048036038101906101039190610dde565b6103a7565b005b61011261054a565b005b61012e60048036038101906101299190610e3e565b61055e565b005b610138610772565b6040516101459190610e91565b60405180910390f35b61016860048036038101906101639190610eac565b61079b565b6040516101759190610f26565b60405180910390f35b61019860048036038101906101939190610ab0565b610828565b005b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806101ee6108ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d204c45e89896040518363ffffffff1660e01b8152600401610249929190610fc0565b6020604051808303816000875af1158015610268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611005565b9150600030878787876040516102a190610a01565b6102af95949392919061105f565b604051809103906000f0801580156102cb573d6000803e3d6000fd5b50905080915060405180604001604052808481526020018373ffffffffffffffffffffffffffffffffffffffff16815250600160008581526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050827fa70099852e9c3325724165514adc9d6f8dd55c4708c923dbf3219c4fc6f8aefc836040516103939190610e91565b60405180910390a250965096945050505050565b8260007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016104039190610af6565b602060405180830381865afa158015610420573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044491906110bd565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ab9061115c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318e97fd18686866040518463ffffffff1660e01b81526004016105119392919061117c565b600060405180830381600087803b15801561052b57600080fd5b505af115801561053f573d6000803e3d6000fd5b505050505050505050565b6105526108ae565b61055c6000610935565b565b8260007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016105ba9190610af6565b602060405180830381865afa1580156105d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fb91906110bd565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106629061115c565b60405180910390fd5b600060016000878152602001908152602001600020604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905060008160200151905060008190508073ffffffffffffffffffffffffffffffffffffffff166340c10f1988886040518363ffffffff1660e01b81526004016107369291906111ae565b600060405180830381600087803b15801561075057600080fd5b505af1158015610764573d6000803e3d6000fd5b505050505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107a3610a0e565b60016000838152602001908152602001600020604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b6108306108ae565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108a25760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016108999190610e91565b60405180910390fd5b6108ab81610935565b50565b6108b66109f9565b73ffffffffffffffffffffffffffffffffffffffff166108d4610772565b73ffffffffffffffffffffffffffffffffffffffff1614610933576108f76109f9565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161092a9190610e91565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b611a0c806111d883390190565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610a7d82610a52565b9050919050565b610a8d81610a72565b8114610a9857600080fd5b50565b600081359050610aaa81610a84565b92915050565b600060208284031215610ac657610ac5610a48565b5b6000610ad484828501610a9b565b91505092915050565b6000819050919050565b610af081610add565b82525050565b6000602082019050610b0b6000830184610ae7565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610b6482610b1b565b810181811067ffffffffffffffff82111715610b8357610b82610b2c565b5b80604052505050565b6000610b96610a3e565b9050610ba28282610b5b565b919050565b600067ffffffffffffffff821115610bc257610bc1610b2c565b5b610bcb82610b1b565b9050602081019050919050565b82818337600083830152505050565b6000610bfa610bf584610ba7565b610b8c565b905082815260208101848484011115610c1657610c15610b16565b5b610c21848285610bd8565b509392505050565b600082601f830112610c3e57610c3d610b11565b5b8135610c4e848260208601610be7565b91505092915050565b600080fd5b600080fd5b60008083601f840112610c7757610c76610b11565b5b8235905067ffffffffffffffff811115610c9457610c93610c57565b5b602083019150836001820283011115610cb057610caf610c5c565b5b9250929050565b60008060008060008060808789031215610cd457610cd3610a48565b5b6000610ce289828a01610a9b565b965050602087013567ffffffffffffffff811115610d0357610d02610a4d565b5b610d0f89828a01610c29565b955050604087013567ffffffffffffffff811115610d3057610d2f610a4d565b5b610d3c89828a01610c61565b9450945050606087013567ffffffffffffffff811115610d5f57610d5e610a4d565b5b610d6b89828a01610c61565b92509250509295509295509295565b610d8381610a72565b82525050565b6000604082019050610d9e6000830185610ae7565b610dab6020830184610d7a565b9392505050565b610dbb81610add565b8114610dc657600080fd5b50565b600081359050610dd881610db2565b92915050565b600080600060408486031215610df757610df6610a48565b5b6000610e0586828701610dc9565b935050602084013567ffffffffffffffff811115610e2657610e25610a4d565b5b610e3286828701610c61565b92509250509250925092565b600080600060608486031215610e5757610e56610a48565b5b6000610e6586828701610dc9565b9350506020610e7686828701610a9b565b9250506040610e8786828701610dc9565b9150509250925092565b6000602082019050610ea66000830184610d7a565b92915050565b600060208284031215610ec257610ec1610a48565b5b6000610ed084828501610dc9565b91505092915050565b610ee281610add565b82525050565b610ef181610a72565b82525050565b604082016000820151610f0d6000850182610ed9565b506020820151610f206020850182610ee8565b50505050565b6000604082019050610f3b6000830184610ef7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f7b578082015181840152602081019050610f60565b60008484015250505050565b6000610f9282610f41565b610f9c8185610f4c565b9350610fac818560208601610f5d565b610fb581610b1b565b840191505092915050565b6000604082019050610fd56000830185610d7a565b8181036020830152610fe78184610f87565b90509392505050565b600081519050610fff81610db2565b92915050565b60006020828403121561101b5761101a610a48565b5b600061102984828501610ff0565b91505092915050565b600061103e8385610f4c565b935061104b838584610bd8565b61105483610b1b565b840190509392505050565b60006060820190506110746000830188610d7a565b8181036020830152611087818688611032565b9050818103604083015261109c818486611032565b90509695505050505050565b6000815190506110b781610a84565b92915050565b6000602082840312156110d3576110d2610a48565b5b60006110e1848285016110a8565b91505092915050565b7f5468652063616c6c6572206d75737420626520746865206f776e6572206f662060008201527f74686973206167656e7400000000000000000000000000000000000000000000602082015250565b6000611146602a83610f4c565b9150611151826110ea565b604082019050919050565b6000602082019050818103600083015261117581611139565b9050919050565b60006040820190506111916000830186610ae7565b81810360208301526111a4818486611032565b9050949350505050565b60006040820190506111c36000830185610d7a565b6111d06020830184610ae7565b939250505056fe608060405234801561001057600080fd5b50604051611a0c380380611a0c8339818101604052810190610032919061037a565b82828281600390816100449190610626565b5080600490816100549190610626565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c95760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100c09190610707565b60405180910390fd5b6100d8816100e160201b60201c565b50505050610722565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101e6826101bb565b9050919050565b6101f6816101db565b811461020157600080fd5b50565b600081519050610213816101ed565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61026c82610223565b810181811067ffffffffffffffff8211171561028b5761028a610234565b5b80604052505050565b600061029e6101a7565b90506102aa8282610263565b919050565b600067ffffffffffffffff8211156102ca576102c9610234565b5b6102d382610223565b9050602081019050919050565b60005b838110156102fe5780820151818401526020810190506102e3565b60008484015250505050565b600061031d610318846102af565b610294565b9050828152602081018484840111156103395761033861021e565b5b6103448482856102e0565b509392505050565b600082601f83011261036157610360610219565b5b815161037184826020860161030a565b91505092915050565b600080600060608486031215610393576103926101b1565b5b60006103a186828701610204565b935050602084015167ffffffffffffffff8111156103c2576103c16101b6565b5b6103ce8682870161034c565b925050604084015167ffffffffffffffff8111156103ef576103ee6101b6565b5b6103fb8682870161034c565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061045757607f821691505b60208210810361046a57610469610410565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026104d27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610495565b6104dc8683610495565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061052361051e610519846104f4565b6104fe565b6104f4565b9050919050565b6000819050919050565b61053d83610508565b6105516105498261052a565b8484546104a2565b825550505050565b600090565b610566610559565b610571818484610534565b505050565b5b818110156105955761058a60008261055e565b600181019050610577565b5050565b601f8211156105da576105ab81610470565b6105b484610485565b810160208510156105c3578190505b6105d76105cf85610485565b830182610576565b50505b505050565b600082821c905092915050565b60006105fd600019846008026105df565b1980831691505092915050565b600061061683836105ec565b9150826002028217905092915050565b61062f82610405565b67ffffffffffffffff81111561064857610647610234565b5b610652825461043f565b61065d828285610599565b600060209050601f831160018114610690576000841561067e578287015190505b610688858261060a565b8655506106f0565b601f19841661069e86610470565b60005b828110156106c6578489015182556001820191506020850194506020810190506106a1565b868310156106e357848901516106df601f8916826105ec565b8355505b6001600288020188555050505b505050505050565b610701816101db565b82525050565b600060208201905061071c60008301846106f8565b92915050565b6112db806107316000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a082311161009757806395d89b411161006657806395d89b4114610260578063a9059cbb1461027e578063dd62ed3e146102ae578063f2fde38b146102de576100f5565b806370a08231146101ec578063715018a61461021c57806379cc6790146102265780638da5cb5b14610242576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806340c10f19146101b457806342966c68146101d0576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b6101026102fa565b60405161010f9190610f02565b60405180910390f35b610132600480360381019061012d9190610fbd565b61038c565b60405161013f9190611018565b60405180910390f35b6101506103af565b60405161015d9190611042565b60405180910390f35b610180600480360381019061017b919061105d565b6103b9565b60405161018d9190611018565b60405180910390f35b61019e6103e8565b6040516101ab91906110cc565b60405180910390f35b6101ce60048036038101906101c99190610fbd565b6103f1565b005b6101ea60048036038101906101e591906110e7565b610407565b005b61020660048036038101906102019190611114565b61041b565b6040516102139190611042565b60405180910390f35b610224610463565b005b610240600480360381019061023b9190610fbd565b610477565b005b61024a610497565b6040516102579190611150565b60405180910390f35b6102686104c1565b6040516102759190610f02565b60405180910390f35b61029860048036038101906102939190610fbd565b610553565b6040516102a59190611018565b60405180910390f35b6102c860048036038101906102c3919061116b565b610576565b6040516102d59190611042565b60405180910390f35b6102f860048036038101906102f39190611114565b6105fd565b005b606060038054610309906111da565b80601f0160208091040260200160405190810160405280929190818152602001828054610335906111da565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b5050505050905090565b600080610397610683565b90506103a481858561068b565b600191505092915050565b6000600254905090565b6000806103c4610683565b90506103d185828561069d565b6103dc858585610731565b60019150509392505050565b60006012905090565b6103f9610825565b61040382826108ac565b5050565b610418610412610683565b8261092e565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61046b610825565b61047560006109b0565b565b61048982610483610683565b8361069d565b610493828261092e565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104d0906111da565b80601f01602080910402602001604051908101604052809291908181526020018280546104fc906111da565b80156105495780601f1061051e57610100808354040283529160200191610549565b820191906000526020600020905b81548152906001019060200180831161052c57829003601f168201915b5050505050905090565b60008061055e610683565b905061056b818585610731565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610605610825565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106775760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161066e9190611150565b60405180910390fd5b610680816109b0565b50565b600033905090565b6106988383836001610a76565b505050565b60006106a98484610576565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461072b578181101561071b578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016107129392919061120b565b60405180910390fd5b61072a84848484036000610a76565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107a35760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161079a9190611150565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108155760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161080c9190611150565b60405180910390fd5b610820838383610c4d565b505050565b61082d610683565b73ffffffffffffffffffffffffffffffffffffffff1661084b610497565b73ffffffffffffffffffffffffffffffffffffffff16146108aa5761086e610683565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108a19190611150565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361091e5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109159190611150565b60405180910390fd5b61092a60008383610c4d565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109a05760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109979190611150565b60405180910390fd5b6109ac82600083610c4d565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ae85760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610adf9190611150565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b5a5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610b519190611150565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610c47578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c3e9190611042565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c9f578060026000828254610c939190611271565b92505081905550610d72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d2b578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610d229392919061120b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dbb5780600260008282540392505081905550610e08565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e659190611042565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610eac578082015181840152602081019050610e91565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ed482610e72565b610ede8185610e7d565b9350610eee818560208601610e8e565b610ef781610eb8565b840191505092915050565b60006020820190508181036000830152610f1c8184610ec9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f5482610f29565b9050919050565b610f6481610f49565b8114610f6f57600080fd5b50565b600081359050610f8181610f5b565b92915050565b6000819050919050565b610f9a81610f87565b8114610fa557600080fd5b50565b600081359050610fb781610f91565b92915050565b60008060408385031215610fd457610fd3610f24565b5b6000610fe285828601610f72565b9250506020610ff385828601610fa8565b9150509250929050565b60008115159050919050565b61101281610ffd565b82525050565b600060208201905061102d6000830184611009565b92915050565b61103c81610f87565b82525050565b60006020820190506110576000830184611033565b92915050565b60008060006060848603121561107657611075610f24565b5b600061108486828701610f72565b935050602061109586828701610f72565b92505060406110a686828701610fa8565b9150509250925092565b600060ff82169050919050565b6110c6816110b0565b82525050565b60006020820190506110e160008301846110bd565b92915050565b6000602082840312156110fd576110fc610f24565b5b600061110b84828501610fa8565b91505092915050565b60006020828403121561112a57611129610f24565b5b600061113884828501610f72565b91505092915050565b61114a81610f49565b82525050565b60006020820190506111656000830184611141565b92915050565b6000806040838503121561118257611181610f24565b5b600061119085828601610f72565b92505060206111a185828601610f72565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111f257607f821691505b602082108103611205576112046111ab565b5b50919050565b60006060820190506112206000830186611141565b61122d6020830185611033565b61123a6040830184611033565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061127c82610f87565b915061128783610f87565b925082820190508082111561129f5761129e611242565b5b9291505056fea26469706673582212207771d29590f915d3071a9f2057e68b63c61d427874c2b0f4f2b541a63c47f62c64736f6c634300081c0033a2646970667358221220cec495f6b23445270704b6859bb7f0cc1a546cfc4f489d6d99f09c6f48e8ee9564736f6c634300081c0033", 248 | "linkReferences": {}, 249 | "deployedLinkReferences": {} 250 | } -------------------------------------------------------------------------------- /ignition/deployments/chain-97/deployed_addresses.json: -------------------------------------------------------------------------------- 1 | { 2 | "AIFlow#AIFlowAgent": "0xbBda36bE1c43662A29478fb3D08F1fDd710eA0a8", 3 | "AIFlow#AIFlowOracle": "0x7c3F6c94cEE8285e5eFb08a599AEe02383a0a3d1" 4 | } 5 | -------------------------------------------------------------------------------- /ignition/deployments/chain-97/journal.jsonl: -------------------------------------------------------------------------------- 1 | 2 | {"chainId":97,"type":"DEPLOYMENT_INITIALIZE"} 3 | {"artifactId":"AIFlow#AIFlowAgent","constructorArgs":[],"contractName":"AIFlowAgent","dependencies":[],"from":"0xd3f3e6745ac2136af7ba807ba6da26809703c890","futureId":"AIFlow#AIFlowAgent","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} 4 | {"futureId":"AIFlow#AIFlowAgent","networkInteraction":{"data":"0x6080604052600160085534801561001557600080fd5b50336040518060400160405280600d81526020017f414920466c6f77204167656e74000000000000000000000000000000000000008152506040518060400160405280600481526020017f414946410000000000000000000000000000000000000000000000000000000081525081600090816100929190610442565b5080600190816100a29190610442565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036101175760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161010e9190610555565b60405180910390fd5b6101268161012c60201b60201c565b50610570565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061027357607f821691505b6020821081036102865761028561022c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026102ee7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826102b1565b6102f886836102b1565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061033f61033a61033584610310565b61031a565b610310565b9050919050565b6000819050919050565b61035983610324565b61036d61036582610346565b8484546102be565b825550505050565b600090565b610382610375565b61038d818484610350565b505050565b5b818110156103b1576103a660008261037a565b600181019050610393565b5050565b601f8211156103f6576103c78161028c565b6103d0846102a1565b810160208510156103df578190505b6103f36103eb856102a1565b830182610392565b50505b505050565b600082821c905092915050565b6000610419600019846008026103fb565b1980831691505092915050565b60006104328383610408565b9150826002028217905092915050565b61044b826101f2565b67ffffffffffffffff811115610464576104636101fd565b5b61046e825461025b565b6104798282856103b5565b600060209050601f8311600181146104ac576000841561049a578287015190505b6104a48582610426565b86555061050c565b601f1984166104ba8661028c565b60005b828110156104e2578489015182556001820191506020850194506020810190506104bd565b868310156104ff57848901516104fb601f891682610408565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061053f82610514565b9050919050565b61054f81610534565b82525050565b600060208201905061056a6000830184610546565b92915050565b6127e58061057f6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c8063715018a6116100a2578063b88d4fde11610071578063b88d4fde146102cb578063c87b56dd146102e7578063d204c45e14610317578063e985e9c514610347578063f2fde38b1461037757610116565b8063715018a6146102695780638da5cb5b1461027357806395d89b4114610291578063a22cb465146102af57610116565b806318e97fd1116100e957806318e97fd1146101b557806323b872dd146101d157806342842e0e146101ed5780636352211e1461020957806370a082311461023957610116565b806301ffc9a71461011b57806306fdde031461014b578063081812fc14610169578063095ea7b314610199575b600080fd5b61013560048036038101906101309190611b7d565b610393565b6040516101429190611bc5565b60405180910390f35b6101536103a5565b6040516101609190611c70565b60405180910390f35b610183600480360381019061017e9190611cc8565b610437565b6040516101909190611d36565b60405180910390f35b6101b360048036038101906101ae9190611d7d565b610453565b005b6101cf60048036038101906101ca9190611e22565b610469565b005b6101eb60048036038101906101e69190611e82565b6104c4565b005b61020760048036038101906102029190611e82565b6105c6565b005b610223600480360381019061021e9190611cc8565b6105e6565b6040516102309190611d36565b60405180910390f35b610253600480360381019061024e9190611ed5565b6105f8565b6040516102609190611f11565b60405180910390f35b6102716106b2565b005b61027b6106c6565b6040516102889190611d36565b60405180910390f35b6102996106f0565b6040516102a69190611c70565b60405180910390f35b6102c960048036038101906102c49190611f58565b610782565b005b6102e560048036038101906102e091906120c8565b610798565b005b61030160048036038101906102fc9190611cc8565b6107bd565b60405161030e9190611c70565b60405180910390f35b610331600480360381019061032c91906121ec565b6107cf565b60405161033e9190611f11565b60405180910390f35b610361600480360381019061035c9190612248565b610812565b60405161036e9190611bc5565b60405180910390f35b610391600480360381019061038c9190611ed5565b6108a6565b005b600061039e8261092c565b9050919050565b6060600080546103b4906122b7565b80601f01602080910402602001604051908101604052809291908181526020018280546103e0906122b7565b801561042d5780601f106104025761010080835404028352916020019161042d565b820191906000526020600020905b81548152906001019060200180831161041057829003601f168201915b5050505050905090565b60006104428261098d565b5061044c82610a15565b9050919050565b6104658282610460610a52565b610a5a565b5050565b610471610a6c565b6104bf8383838080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050610af3565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036105365760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161052d9190611d36565b60405180910390fd5b600061054a8383610545610a52565b610b4f565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146105c0578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016105b7939291906122e8565b60405180910390fd5b50505050565b6105e183838360405180602001604052806000815250610798565b505050565b60006105f18261098d565b9050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361066b5760006040517f89c62b640000000000000000000000000000000000000000000000000000000081526004016106629190611d36565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6106ba610a6c565b6106c46000610d69565b565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600180546106ff906122b7565b80601f016020809104026020016040519081016040528092919081815260200182805461072b906122b7565b80156107785780601f1061074d57610100808354040283529160200191610778565b820191906000526020600020905b81548152906001019060200180831161075b57829003601f168201915b5050505050905090565b61079461078d610a52565b8383610e2f565b5050565b6107a38484846104c4565b6107b76107ae610a52565b85858585610f9e565b50505050565b60606107c88261114f565b9050919050565b60006107d9610a6c565b6000600860008154809291906107ee9061234e565b9190505590506107fe8482611262565b6108088184610af3565b8091505092915050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6108ae610a6c565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036109205760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016109179190611d36565b60405180910390fd5b61092981610d69565b50565b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610986575061098582611280565b5b9050919050565b60008061099983611362565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610a0c57826040517f7e273289000000000000000000000000000000000000000000000000000000008152600401610a039190611f11565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b610a67838383600161139f565b505050565b610a74610a52565b73ffffffffffffffffffffffffffffffffffffffff16610a926106c6565b73ffffffffffffffffffffffffffffffffffffffff1614610af157610ab5610a52565b6040517f118cdaa7000000000000000000000000000000000000000000000000000000008152600401610ae89190611d36565b60405180910390fd5b565b80600660008481526020019081526020016000209081610b139190612542565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce782604051610b439190611f11565b60405180910390a15050565b600080610b5b84611362565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610b9d57610b9c818486611564565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610c2e57610bdf60008560008061139f565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614610cb1576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b6000600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610ea057816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401610e979190611d36565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051610f919190611bc5565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611148578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02868685856040518563ffffffff1660e01b8152600401610ffd9493929190612669565b6020604051808303816000875af192505050801561103957506040513d601f19601f8201168201806040525081019061103691906126ca565b60015b6110bd573d8060008114611069576040519150601f19603f3d011682016040523d82523d6000602084013e61106e565b606091505b5060008151036110b557836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016110ac9190611d36565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461114657836040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161113d9190611d36565b60405180910390fd5b505b5050505050565b606061115a8261098d565b50600060066000848152602001908152602001600020805461117b906122b7565b80601f01602080910402602001604051908101604052809291908181526020018280546111a7906122b7565b80156111f45780601f106111c9576101008083540402835291602001916111f4565b820191906000526020600020905b8154815290600101906020018083116111d757829003601f168201915b505050505090506000611205611628565b9050600081510361121a57819250505061125d565b60008251111561124f578082604051602001611237929190612733565b6040516020818303038152906040529250505061125d565b6112588461163f565b925050505b919050565b61127c8282604051806020016040528060008152506116a8565b5050565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061134b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061135b575061135a826116cc565b5b9050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806113d85750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561150c5760006113e88461098d565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561145357508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b801561146657506114648184610812565b155b156114a857826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161149f9190611d36565b60405180910390fd5b811561150a57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b61156f838383611736565b61162357600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036115e457806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016115db9190611f11565b60405180910390fd5b81816040517f177e802f00000000000000000000000000000000000000000000000000000000815260040161161a929190612757565b60405180910390fd5b505050565b606060405180602001604052806000815250905090565b606061164a8261098d565b506000611655611628565b9050600081511161167557604051806020016040528060008152506116a0565b8061167f846117f7565b604051602001611690929190612733565b6040516020818303038152906040525b915050919050565b6116b283836118c5565b6116c76116bd610a52565b6000858585610f9e565b505050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156117ee57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614806117af57506117ae8484610812565b5b806117ed57508273ffffffffffffffffffffffffffffffffffffffff166117d583610a15565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b606060006001611806846119be565b01905060008167ffffffffffffffff81111561182557611824611f9d565b5b6040519080825280601f01601f1916602001820160405280156118575781602001600182028036833780820191505090505b509050600082602001820190505b6001156118ba578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816118ae576118ad612780565b5b04945060008503611865575b819350505050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119375760006040517f64a0ae9200000000000000000000000000000000000000000000000000000000815260040161192e9190611d36565b60405180910390fd5b600061194583836000610b4f565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119b95760006040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016119b09190611d36565b60405180910390fd5b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611a1c577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611a1257611a11612780565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611a59576d04ee2d6d415b85acef81000000008381611a4f57611a4e612780565b5b0492506020810190505b662386f26fc100008310611a8857662386f26fc100008381611a7e57611a7d612780565b5b0492506010810190505b6305f5e1008310611ab1576305f5e1008381611aa757611aa6612780565b5b0492506008810190505b6127108310611ad6576127108381611acc57611acb612780565b5b0492506004810190505b60648310611af95760648381611aef57611aee612780565b5b0492506002810190505b600a8310611b08576001810190505b80915050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611b5a81611b25565b8114611b6557600080fd5b50565b600081359050611b7781611b51565b92915050565b600060208284031215611b9357611b92611b1b565b5b6000611ba184828501611b68565b91505092915050565b60008115159050919050565b611bbf81611baa565b82525050565b6000602082019050611bda6000830184611bb6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611c1a578082015181840152602081019050611bff565b60008484015250505050565b6000601f19601f8301169050919050565b6000611c4282611be0565b611c4c8185611beb565b9350611c5c818560208601611bfc565b611c6581611c26565b840191505092915050565b60006020820190508181036000830152611c8a8184611c37565b905092915050565b6000819050919050565b611ca581611c92565b8114611cb057600080fd5b50565b600081359050611cc281611c9c565b92915050565b600060208284031215611cde57611cdd611b1b565b5b6000611cec84828501611cb3565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611d2082611cf5565b9050919050565b611d3081611d15565b82525050565b6000602082019050611d4b6000830184611d27565b92915050565b611d5a81611d15565b8114611d6557600080fd5b50565b600081359050611d7781611d51565b92915050565b60008060408385031215611d9457611d93611b1b565b5b6000611da285828601611d68565b9250506020611db385828601611cb3565b9150509250929050565b600080fd5b600080fd5b600080fd5b60008083601f840112611de257611de1611dbd565b5b8235905067ffffffffffffffff811115611dff57611dfe611dc2565b5b602083019150836001820283011115611e1b57611e1a611dc7565b5b9250929050565b600080600060408486031215611e3b57611e3a611b1b565b5b6000611e4986828701611cb3565b935050602084013567ffffffffffffffff811115611e6a57611e69611b20565b5b611e7686828701611dcc565b92509250509250925092565b600080600060608486031215611e9b57611e9a611b1b565b5b6000611ea986828701611d68565b9350506020611eba86828701611d68565b9250506040611ecb86828701611cb3565b9150509250925092565b600060208284031215611eeb57611eea611b1b565b5b6000611ef984828501611d68565b91505092915050565b611f0b81611c92565b82525050565b6000602082019050611f266000830184611f02565b92915050565b611f3581611baa565b8114611f4057600080fd5b50565b600081359050611f5281611f2c565b92915050565b60008060408385031215611f6f57611f6e611b1b565b5b6000611f7d85828601611d68565b9250506020611f8e85828601611f43565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611fd582611c26565b810181811067ffffffffffffffff82111715611ff457611ff3611f9d565b5b80604052505050565b6000612007611b11565b90506120138282611fcc565b919050565b600067ffffffffffffffff82111561203357612032611f9d565b5b61203c82611c26565b9050602081019050919050565b82818337600083830152505050565b600061206b61206684612018565b611ffd565b90508281526020810184848401111561208757612086611f98565b5b612092848285612049565b509392505050565b600082601f8301126120af576120ae611dbd565b5b81356120bf848260208601612058565b91505092915050565b600080600080608085870312156120e2576120e1611b1b565b5b60006120f087828801611d68565b945050602061210187828801611d68565b935050604061211287828801611cb3565b925050606085013567ffffffffffffffff81111561213357612132611b20565b5b61213f8782880161209a565b91505092959194509250565b600067ffffffffffffffff82111561216657612165611f9d565b5b61216f82611c26565b9050602081019050919050565b600061218f61218a8461214b565b611ffd565b9050828152602081018484840111156121ab576121aa611f98565b5b6121b6848285612049565b509392505050565b600082601f8301126121d3576121d2611dbd565b5b81356121e384826020860161217c565b91505092915050565b6000806040838503121561220357612202611b1b565b5b600061221185828601611d68565b925050602083013567ffffffffffffffff81111561223257612231611b20565b5b61223e858286016121be565b9150509250929050565b6000806040838503121561225f5761225e611b1b565b5b600061226d85828601611d68565b925050602061227e85828601611d68565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806122cf57607f821691505b6020821081036122e2576122e1612288565b5b50919050565b60006060820190506122fd6000830186611d27565b61230a6020830185611f02565b6123176040830184611d27565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061235982611c92565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361238b5761238a61231f565b5b600182019050919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026123f87fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826123bb565b61240286836123bb565b95508019841693508086168417925050509392505050565b6000819050919050565b600061243f61243a61243584611c92565b61241a565b611c92565b9050919050565b6000819050919050565b61245983612424565b61246d61246582612446565b8484546123c8565b825550505050565b600090565b612482612475565b61248d818484612450565b505050565b5b818110156124b1576124a660008261247a565b600181019050612493565b5050565b601f8211156124f6576124c781612396565b6124d0846123ab565b810160208510156124df578190505b6124f36124eb856123ab565b830182612492565b50505b505050565b600082821c905092915050565b6000612519600019846008026124fb565b1980831691505092915050565b60006125328383612508565b9150826002028217905092915050565b61254b82611be0565b67ffffffffffffffff81111561256457612563611f9d565b5b61256e82546122b7565b6125798282856124b5565b600060209050601f8311600181146125ac576000841561259a578287015190505b6125a48582612526565b86555061260c565b601f1984166125ba86612396565b60005b828110156125e2578489015182556001820191506020850194506020810190506125bd565b868310156125ff57848901516125fb601f891682612508565b8355505b6001600288020188555050505b505050505050565b600081519050919050565b600082825260208201905092915050565b600061263b82612614565b612645818561261f565b9350612655818560208601611bfc565b61265e81611c26565b840191505092915050565b600060808201905061267e6000830187611d27565b61268b6020830186611d27565b6126986040830185611f02565b81810360608301526126aa8184612630565b905095945050505050565b6000815190506126c481611b51565b92915050565b6000602082840312156126e0576126df611b1b565b5b60006126ee848285016126b5565b91505092915050565b600081905092915050565b600061270d82611be0565b61271781856126f7565b9350612727818560208601611bfc565b80840191505092915050565b600061273f8285612702565b915061274b8284612702565b91508190509392505050565b600060408201905061276c6000830185611d27565b6127796020830184611f02565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fdfea26469706673582212200db5cfaa0d7a5a1fbdd1fda10c44c020d99952357058df1e0b671eb7dfb67eec64736f6c634300081c0033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} 5 | {"futureId":"AIFlow#AIFlowAgent","networkInteractionId":1,"nonce":54,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"10000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"10000000000"}},"hash":"0xf0c158dd4ee06e113c7446d428345d4398d648bd3d8babd2b9f630bcbf8a8377"},"type":"TRANSACTION_SEND"} 6 | {"futureId":"AIFlow#AIFlowAgent","hash":"0xf0c158dd4ee06e113c7446d428345d4398d648bd3d8babd2b9f630bcbf8a8377","networkInteractionId":1,"receipt":{"blockHash":"0x558d5f0e2618aff0a46d53d914989a42e4685782dc7e3580442df612f718cd42","blockNumber":47889627,"contractAddress":"0xbBda36bE1c43662A29478fb3D08F1fDd710eA0a8","logs":[{"address":"0xbBda36bE1c43662A29478fb3D08F1fDd710eA0a8","data":"0x","logIndex":0,"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000d3f3e6745ac2136af7ba807ba6da26809703c890"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} 7 | {"futureId":"AIFlow#AIFlowAgent","result":{"address":"0xbBda36bE1c43662A29478fb3D08F1fDd710eA0a8","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} 8 | {"artifactId":"AIFlow#AIFlowOracle","constructorArgs":["0xbBda36bE1c43662A29478fb3D08F1fDd710eA0a8","0xd3f3e6745ac2136af7ba807ba6da26809703c890"],"contractName":"AIFlowOracle","dependencies":["AIFlow#AIFlowAgent"],"from":"0xd3f3e6745ac2136af7ba807ba6da26809703c890","futureId":"AIFlow#AIFlowOracle","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} 9 | {"futureId":"AIFlow#AIFlowOracle","networkInteraction":{"data":"0x60a0604052600160025534801561001557600080fd5b50604051612ecf380380612ecf8339818101604052810190610037919061021c565b80600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100aa5760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100a1919061026b565b60405180910390fd5b6100b9816100f560201b60201c565b508173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250505050610286565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101e9826101be565b9050919050565b6101f9816101de565b811461020457600080fd5b50565b600081519050610216816101f0565b92915050565b60008060408385031215610233576102326101b9565b5b600061024185828601610207565b925050602061025285828601610207565b9150509250929050565b610265816101de565b82525050565b6000602082019050610280600083018461025c565b92915050565b608051612c196102b6600039600081816101f0015281816103ac015281816104b601526105630152612c196000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c80637811a5bf1161005b5780637811a5bf146101145780638da5cb5b14610130578063a9fc03941461014e578063f2fde38b1461017e57610088565b80630d6f41281461008d57806313478a34146100bd5780636b595822146100ee578063715018a61461010a575b600080fd5b6100a760048036038101906100a29190610ab0565b61019a565b6040516100b49190610af6565b60405180910390f35b6100d760048036038101906100d29190610cb7565b6101e3565b6040516100e5929190610d89565b60405180910390f35b61010860048036038101906101039190610dde565b6103a7565b005b61011261054a565b005b61012e60048036038101906101299190610e3e565b61055e565b005b610138610772565b6040516101459190610e91565b60405180910390f35b61016860048036038101906101639190610eac565b61079b565b6040516101759190610f26565b60405180910390f35b61019860048036038101906101939190610ab0565b610828565b005b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000806101ee6108ae565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d204c45e89896040518363ffffffff1660e01b8152600401610249929190610fc0565b6020604051808303816000875af1158015610268573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061028c9190611005565b9150600030878787876040516102a190610a01565b6102af95949392919061105f565b604051809103906000f0801580156102cb573d6000803e3d6000fd5b50905080915060405180604001604052808481526020018373ffffffffffffffffffffffffffffffffffffffff16815250600160008581526020019081526020016000206000820151816000015560208201518160010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550905050827fa70099852e9c3325724165514adc9d6f8dd55c4708c923dbf3219c4fc6f8aefc836040516103939190610e91565b60405180910390a250965096945050505050565b8260007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016104039190610af6565b602060405180830381865afa158015610420573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061044491906110bd565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146104b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016104ab9061115c565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166318e97fd18686866040518463ffffffff1660e01b81526004016105119392919061117c565b600060405180830381600087803b15801561052b57600080fd5b505af115801561053f573d6000803e3d6000fd5b505050505050505050565b6105526108ae565b61055c6000610935565b565b8260007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16636352211e836040518263ffffffff1660e01b81526004016105ba9190610af6565b602060405180830381865afa1580156105d7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fb91906110bd565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106629061115c565b60405180910390fd5b600060016000878152602001908152602001600020604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681525050905060008160200151905060008190508073ffffffffffffffffffffffffffffffffffffffff166340c10f1988886040518363ffffffff1660e01b81526004016107369291906111ae565b600060405180830381600087803b15801561075057600080fd5b505af1158015610764573d6000803e3d6000fd5b505050505050505050505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6107a3610a0e565b60016000838152602001908152602001600020604051806040016040529081600082015481526020016001820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815250509050919050565b6108306108ae565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036108a25760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016108999190610e91565b60405180910390fd5b6108ab81610935565b50565b6108b66109f9565b73ffffffffffffffffffffffffffffffffffffffff166108d4610772565b73ffffffffffffffffffffffffffffffffffffffff1614610933576108f76109f9565b6040517f118cdaa700000000000000000000000000000000000000000000000000000000815260040161092a9190610e91565b60405180910390fd5b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600033905090565b611a0c806111d883390190565b604051806040016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681525090565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610a7d82610a52565b9050919050565b610a8d81610a72565b8114610a9857600080fd5b50565b600081359050610aaa81610a84565b92915050565b600060208284031215610ac657610ac5610a48565b5b6000610ad484828501610a9b565b91505092915050565b6000819050919050565b610af081610add565b82525050565b6000602082019050610b0b6000830184610ae7565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610b6482610b1b565b810181811067ffffffffffffffff82111715610b8357610b82610b2c565b5b80604052505050565b6000610b96610a3e565b9050610ba28282610b5b565b919050565b600067ffffffffffffffff821115610bc257610bc1610b2c565b5b610bcb82610b1b565b9050602081019050919050565b82818337600083830152505050565b6000610bfa610bf584610ba7565b610b8c565b905082815260208101848484011115610c1657610c15610b16565b5b610c21848285610bd8565b509392505050565b600082601f830112610c3e57610c3d610b11565b5b8135610c4e848260208601610be7565b91505092915050565b600080fd5b600080fd5b60008083601f840112610c7757610c76610b11565b5b8235905067ffffffffffffffff811115610c9457610c93610c57565b5b602083019150836001820283011115610cb057610caf610c5c565b5b9250929050565b60008060008060008060808789031215610cd457610cd3610a48565b5b6000610ce289828a01610a9b565b965050602087013567ffffffffffffffff811115610d0357610d02610a4d565b5b610d0f89828a01610c29565b955050604087013567ffffffffffffffff811115610d3057610d2f610a4d565b5b610d3c89828a01610c61565b9450945050606087013567ffffffffffffffff811115610d5f57610d5e610a4d565b5b610d6b89828a01610c61565b92509250509295509295509295565b610d8381610a72565b82525050565b6000604082019050610d9e6000830185610ae7565b610dab6020830184610d7a565b9392505050565b610dbb81610add565b8114610dc657600080fd5b50565b600081359050610dd881610db2565b92915050565b600080600060408486031215610df757610df6610a48565b5b6000610e0586828701610dc9565b935050602084013567ffffffffffffffff811115610e2657610e25610a4d565b5b610e3286828701610c61565b92509250509250925092565b600080600060608486031215610e5757610e56610a48565b5b6000610e6586828701610dc9565b9350506020610e7686828701610a9b565b9250506040610e8786828701610dc9565b9150509250925092565b6000602082019050610ea66000830184610d7a565b92915050565b600060208284031215610ec257610ec1610a48565b5b6000610ed084828501610dc9565b91505092915050565b610ee281610add565b82525050565b610ef181610a72565b82525050565b604082016000820151610f0d6000850182610ed9565b506020820151610f206020850182610ee8565b50505050565b6000604082019050610f3b6000830184610ef7565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610f7b578082015181840152602081019050610f60565b60008484015250505050565b6000610f9282610f41565b610f9c8185610f4c565b9350610fac818560208601610f5d565b610fb581610b1b565b840191505092915050565b6000604082019050610fd56000830185610d7a565b8181036020830152610fe78184610f87565b90509392505050565b600081519050610fff81610db2565b92915050565b60006020828403121561101b5761101a610a48565b5b600061102984828501610ff0565b91505092915050565b600061103e8385610f4c565b935061104b838584610bd8565b61105483610b1b565b840190509392505050565b60006060820190506110746000830188610d7a565b8181036020830152611087818688611032565b9050818103604083015261109c818486611032565b90509695505050505050565b6000815190506110b781610a84565b92915050565b6000602082840312156110d3576110d2610a48565b5b60006110e1848285016110a8565b91505092915050565b7f5468652063616c6c6572206d75737420626520746865206f776e6572206f662060008201527f74686973206167656e7400000000000000000000000000000000000000000000602082015250565b6000611146602a83610f4c565b9150611151826110ea565b604082019050919050565b6000602082019050818103600083015261117581611139565b9050919050565b60006040820190506111916000830186610ae7565b81810360208301526111a4818486611032565b9050949350505050565b60006040820190506111c36000830185610d7a565b6111d06020830184610ae7565b939250505056fe608060405234801561001057600080fd5b50604051611a0c380380611a0c8339818101604052810190610032919061037a565b82828281600390816100449190610626565b5080600490816100549190610626565b505050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036100c95760006040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016100c09190610707565b60405180910390fd5b6100d8816100e160201b60201c565b50505050610722565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006101e6826101bb565b9050919050565b6101f6816101db565b811461020157600080fd5b50565b600081519050610213816101ed565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61026c82610223565b810181811067ffffffffffffffff8211171561028b5761028a610234565b5b80604052505050565b600061029e6101a7565b90506102aa8282610263565b919050565b600067ffffffffffffffff8211156102ca576102c9610234565b5b6102d382610223565b9050602081019050919050565b60005b838110156102fe5780820151818401526020810190506102e3565b60008484015250505050565b600061031d610318846102af565b610294565b9050828152602081018484840111156103395761033861021e565b5b6103448482856102e0565b509392505050565b600082601f83011261036157610360610219565b5b815161037184826020860161030a565b91505092915050565b600080600060608486031215610393576103926101b1565b5b60006103a186828701610204565b935050602084015167ffffffffffffffff8111156103c2576103c16101b6565b5b6103ce8682870161034c565b925050604084015167ffffffffffffffff8111156103ef576103ee6101b6565b5b6103fb8682870161034c565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061045757607f821691505b60208210810361046a57610469610410565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026104d27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610495565b6104dc8683610495565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b600061052361051e610519846104f4565b6104fe565b6104f4565b9050919050565b6000819050919050565b61053d83610508565b6105516105498261052a565b8484546104a2565b825550505050565b600090565b610566610559565b610571818484610534565b505050565b5b818110156105955761058a60008261055e565b600181019050610577565b5050565b601f8211156105da576105ab81610470565b6105b484610485565b810160208510156105c3578190505b6105d76105cf85610485565b830182610576565b50505b505050565b600082821c905092915050565b60006105fd600019846008026105df565b1980831691505092915050565b600061061683836105ec565b9150826002028217905092915050565b61062f82610405565b67ffffffffffffffff81111561064857610647610234565b5b610652825461043f565b61065d828285610599565b600060209050601f831160018114610690576000841561067e578287015190505b610688858261060a565b8655506106f0565b601f19841661069e86610470565b60005b828110156106c6578489015182556001820191506020850194506020810190506106a1565b868310156106e357848901516106df601f8916826105ec565b8355505b6001600288020188555050505b505050505050565b610701816101db565b82525050565b600060208201905061071c60008301846106f8565b92915050565b6112db806107316000396000f3fe608060405234801561001057600080fd5b50600436106100f55760003560e01c806370a082311161009757806395d89b411161006657806395d89b4114610260578063a9059cbb1461027e578063dd62ed3e146102ae578063f2fde38b146102de576100f5565b806370a08231146101ec578063715018a61461021c57806379cc6790146102265780638da5cb5b14610242576100f5565b806323b872dd116100d357806323b872dd14610166578063313ce5671461019657806340c10f19146101b457806342966c68146101d0576100f5565b806306fdde03146100fa578063095ea7b31461011857806318160ddd14610148575b600080fd5b6101026102fa565b60405161010f9190610f02565b60405180910390f35b610132600480360381019061012d9190610fbd565b61038c565b60405161013f9190611018565b60405180910390f35b6101506103af565b60405161015d9190611042565b60405180910390f35b610180600480360381019061017b919061105d565b6103b9565b60405161018d9190611018565b60405180910390f35b61019e6103e8565b6040516101ab91906110cc565b60405180910390f35b6101ce60048036038101906101c99190610fbd565b6103f1565b005b6101ea60048036038101906101e591906110e7565b610407565b005b61020660048036038101906102019190611114565b61041b565b6040516102139190611042565b60405180910390f35b610224610463565b005b610240600480360381019061023b9190610fbd565b610477565b005b61024a610497565b6040516102579190611150565b60405180910390f35b6102686104c1565b6040516102759190610f02565b60405180910390f35b61029860048036038101906102939190610fbd565b610553565b6040516102a59190611018565b60405180910390f35b6102c860048036038101906102c3919061116b565b610576565b6040516102d59190611042565b60405180910390f35b6102f860048036038101906102f39190611114565b6105fd565b005b606060038054610309906111da565b80601f0160208091040260200160405190810160405280929190818152602001828054610335906111da565b80156103825780601f1061035757610100808354040283529160200191610382565b820191906000526020600020905b81548152906001019060200180831161036557829003601f168201915b5050505050905090565b600080610397610683565b90506103a481858561068b565b600191505092915050565b6000600254905090565b6000806103c4610683565b90506103d185828561069d565b6103dc858585610731565b60019150509392505050565b60006012905090565b6103f9610825565b61040382826108ac565b5050565b610418610412610683565b8261092e565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61046b610825565b61047560006109b0565b565b61048982610483610683565b8361069d565b610493828261092e565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600480546104d0906111da565b80601f01602080910402602001604051908101604052809291908181526020018280546104fc906111da565b80156105495780601f1061051e57610100808354040283529160200191610549565b820191906000526020600020905b81548152906001019060200180831161052c57829003601f168201915b5050505050905090565b60008061055e610683565b905061056b818585610731565b600191505092915050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b610605610825565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036106775760006040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161066e9190611150565b60405180910390fd5b610680816109b0565b50565b600033905090565b6106988383836001610a76565b505050565b60006106a98484610576565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461072b578181101561071b578281836040517ffb8f41b20000000000000000000000000000000000000000000000000000000081526004016107129392919061120b565b60405180910390fd5b61072a84848484036000610a76565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036107a35760006040517f96c6fd1e00000000000000000000000000000000000000000000000000000000815260040161079a9190611150565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036108155760006040517fec442f0500000000000000000000000000000000000000000000000000000000815260040161080c9190611150565b60405180910390fd5b610820838383610c4d565b505050565b61082d610683565b73ffffffffffffffffffffffffffffffffffffffff1661084b610497565b73ffffffffffffffffffffffffffffffffffffffff16146108aa5761086e610683565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016108a19190611150565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361091e5760006040517fec442f050000000000000000000000000000000000000000000000000000000081526004016109159190611150565b60405180910390fd5b61092a60008383610c4d565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109a05760006040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016109979190611150565b60405180910390fd5b6109ac82600083610c4d565b5050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603610ae85760006040517fe602df05000000000000000000000000000000000000000000000000000000008152600401610adf9190611150565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610b5a5760006040517f94280d62000000000000000000000000000000000000000000000000000000008152600401610b519190611150565b60405180910390fd5b81600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508015610c47578273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610c3e9190611042565b60405180910390a35b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610c9f578060026000828254610c939190611271565b92505081905550610d72565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015610d2b578381836040517fe450d38c000000000000000000000000000000000000000000000000000000008152600401610d229392919061120b565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610dbb5780600260008282540392505081905550610e08565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610e659190611042565b60405180910390a3505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015610eac578082015181840152602081019050610e91565b60008484015250505050565b6000601f19601f8301169050919050565b6000610ed482610e72565b610ede8185610e7d565b9350610eee818560208601610e8e565b610ef781610eb8565b840191505092915050565b60006020820190508181036000830152610f1c8184610ec9565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610f5482610f29565b9050919050565b610f6481610f49565b8114610f6f57600080fd5b50565b600081359050610f8181610f5b565b92915050565b6000819050919050565b610f9a81610f87565b8114610fa557600080fd5b50565b600081359050610fb781610f91565b92915050565b60008060408385031215610fd457610fd3610f24565b5b6000610fe285828601610f72565b9250506020610ff385828601610fa8565b9150509250929050565b60008115159050919050565b61101281610ffd565b82525050565b600060208201905061102d6000830184611009565b92915050565b61103c81610f87565b82525050565b60006020820190506110576000830184611033565b92915050565b60008060006060848603121561107657611075610f24565b5b600061108486828701610f72565b935050602061109586828701610f72565b92505060406110a686828701610fa8565b9150509250925092565b600060ff82169050919050565b6110c6816110b0565b82525050565b60006020820190506110e160008301846110bd565b92915050565b6000602082840312156110fd576110fc610f24565b5b600061110b84828501610fa8565b91505092915050565b60006020828403121561112a57611129610f24565b5b600061113884828501610f72565b91505092915050565b61114a81610f49565b82525050565b60006020820190506111656000830184611141565b92915050565b6000806040838503121561118257611181610f24565b5b600061119085828601610f72565b92505060206111a185828601610f72565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806111f257607f821691505b602082108103611205576112046111ab565b5b50919050565b60006060820190506112206000830186611141565b61122d6020830185611033565b61123a6040830184611033565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061127c82610f87565b915061128783610f87565b925082820190508082111561129f5761129e611242565b5b9291505056fea26469706673582212207771d29590f915d3071a9f2057e68b63c61d427874c2b0f4f2b541a63c47f62c64736f6c634300081c0033a2646970667358221220cec495f6b23445270704b6859bb7f0cc1a546cfc4f489d6d99f09c6f48e8ee9564736f6c634300081c0033000000000000000000000000bbda36be1c43662a29478fb3d08f1fdd710ea0a8000000000000000000000000d3f3e6745ac2136af7ba807ba6da26809703c890","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} 10 | {"futureId":"AIFlow#AIFlowOracle","networkInteractionId":1,"nonce":55,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"10000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"10000000000"}},"hash":"0x7b5a6b76846ac889f9cb14d767323a71bd3f524a94faf42ea1548c72faaf1df4"},"type":"TRANSACTION_SEND"} 11 | {"futureId":"AIFlow#AIFlowOracle","hash":"0x7b5a6b76846ac889f9cb14d767323a71bd3f524a94faf42ea1548c72faaf1df4","networkInteractionId":1,"receipt":{"blockHash":"0x645e306328721677a0c164ffa0068d47f984d0fd5d315bdea6776c77ebd5a959","blockNumber":47889633,"contractAddress":"0x7c3F6c94cEE8285e5eFb08a599AEe02383a0a3d1","logs":[{"address":"0x7c3F6c94cEE8285e5eFb08a599AEe02383a0a3d1","data":"0x","logIndex":0,"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x0000000000000000000000000000000000000000000000000000000000000000","0x000000000000000000000000d3f3e6745ac2136af7ba807ba6da26809703c890"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} 12 | {"futureId":"AIFlow#AIFlowOracle","result":{"address":"0x7c3F6c94cEE8285e5eFb08a599AEe02383a0a3d1","type":"SUCCESS"},"type":"DEPLOYMENT_EXECUTION_STATE_COMPLETE"} 13 | {"args":["0x7c3F6c94cEE8285e5eFb08a599AEe02383a0a3d1"],"artifactId":"AIFlow#AIFlowAgent","contractAddress":"0xbBda36bE1c43662A29478fb3D08F1fDd710eA0a8","dependencies":["AIFlow#AIFlowAgent","AIFlow#AIFlowOracle"],"from":"0xd3f3e6745ac2136af7ba807ba6da26809703c890","functionName":"transferOwnership","futureId":"AIFlow#AIFlowAgent.transferOwnership","strategy":"basic","strategyConfig":{},"type":"CALL_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} 14 | {"futureId":"AIFlow#AIFlowAgent.transferOwnership","networkInteraction":{"data":"0xf2fde38b0000000000000000000000007c3f6c94cee8285e5efb08a599aee02383a0a3d1","id":1,"to":"0xbBda36bE1c43662A29478fb3D08F1fDd710eA0a8","type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} 15 | {"futureId":"AIFlow#AIFlowAgent.transferOwnership","networkInteractionId":1,"nonce":56,"transaction":{"fees":{"maxFeePerGas":{"_kind":"bigint","value":"10000000000"},"maxPriorityFeePerGas":{"_kind":"bigint","value":"10000000000"}},"hash":"0x232969099c5a9b7f4055de2ce1e3c490d7b7a40f51ff5a4f3fce0c4145c077a2"},"type":"TRANSACTION_SEND"} 16 | {"futureId":"AIFlow#AIFlowAgent.transferOwnership","hash":"0x232969099c5a9b7f4055de2ce1e3c490d7b7a40f51ff5a4f3fce0c4145c077a2","networkInteractionId":1,"receipt":{"blockHash":"0x5d9c63df7d6c83a7425376b5f5a99ce17a1bc98c2fd7c4c40c46c4a13b322c60","blockNumber":47889639,"logs":[{"address":"0xbBda36bE1c43662A29478fb3D08F1fDd710eA0a8","data":"0x","logIndex":0,"topics":["0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0","0x000000000000000000000000d3f3e6745ac2136af7ba807ba6da26809703c890","0x0000000000000000000000007c3f6c94cee8285e5efb08a599aee02383a0a3d1"]}],"status":"SUCCESS"},"type":"TRANSACTION_CONFIRM"} 17 | {"futureId":"AIFlow#AIFlowAgent.transferOwnership","result":{"type":"SUCCESS"},"type":"CALL_EXECUTION_STATE_COMPLETE"} -------------------------------------------------------------------------------- /ignition/modules/AIFlow.ts: -------------------------------------------------------------------------------- 1 | import { buildModule } from "@nomicfoundation/hardhat-ignition/modules"; 2 | 3 | export default buildModule("AIFlow", (m) => { 4 | const aiAgent = m.contract("AIFlowAgent"); 5 | const msgSender = m.getAccount(0); 6 | const aiOracle = m.contract("AIFlowOracle", [aiAgent, msgSender]); 7 | m.call(aiAgent, "transferOwnership", [aiOracle]); 8 | 9 | return { aiAgent, aiOracle }; 10 | }); 11 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "hardhat-project", 3 | "devDependencies": { 4 | "@nomicfoundation/hardhat-toolbox": "^5.0.0", 5 | "hardhat": "^2.22.17" 6 | }, 7 | "dependencies": { 8 | "@openzeppelin/contracts": "^5.1.0", 9 | "@openzeppelin/contracts-upgradeable": "^5.1.0", 10 | "dotenv": "^16.4.7" 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /test/AIFlowOracle.test.ts: -------------------------------------------------------------------------------- 1 | import hre, { ethers } from "hardhat"; 2 | import { loadFixture } from "@nomicfoundation/hardhat-toolbox/network-helpers"; 3 | import { expect } from "chai"; 4 | 5 | describe("AIFlowOracle", () => { 6 | async function deployContracts() { 7 | const aiAgents = await hre.ethers.deployContract("AIFlowAgent"); 8 | const aiAgentsAddress = await aiAgents.getAddress(); 9 | const [owner] = await ethers.getSigners(); 10 | const aiOracle = await hre.ethers.deployContract("AIFlowOracle", [ 11 | aiAgentsAddress, 12 | owner.address, 13 | ]); 14 | const aiOracleAddress = await aiOracle.getAddress(); 15 | await aiAgents.transferOwnership(aiOracleAddress); 16 | 17 | return { aiAgents, aiOracle }; 18 | } 19 | 20 | it("should have ownership", async () => { 21 | const { aiAgents, aiOracle } = await loadFixture(deployContracts); 22 | const [deployer] = await hre.ethers.getSigners(); 23 | const aiOracleOwner = await aiOracle.owner(); 24 | expect(deployer.address).to.be.equals(aiOracleOwner); 25 | 26 | const aiAgentsOwner = await aiAgents.owner(); 27 | const aiOracleAddress = await aiOracle.getAddress(); 28 | expect(aiAgentsOwner).to.be.equals(aiOracleAddress); 29 | }); 30 | 31 | it("should successfully create the AI Agent.", async () => { 32 | const { aiAgents, aiOracle } = await loadFixture(deployContracts); 33 | const [deployer, signer] = await hre.ethers.getSigners(); 34 | 35 | const agentOwner = signer.address; 36 | const testTokenUri = "Test Token URI"; 37 | const testTokenName = "Test Token Name"; 38 | const testTokenSymbol = "TTN"; 39 | const response = await aiOracle.createAgent( 40 | agentOwner, 41 | testTokenUri, 42 | testTokenName, 43 | testTokenSymbol 44 | ); 45 | const receipt = await response.wait(); 46 | const agent = await aiOracle.getAgentBy(1); 47 | const agentTokenAddress = agent.tokenAddress; 48 | 49 | await expect(receipt) 50 | .to.emit(aiOracle, "AgentCreated") 51 | .withArgs(1, agentTokenAddress); 52 | 53 | const balance = await aiAgents.balanceOf(signer.address); 54 | expect(balance).to.be.equals(1); 55 | const queriedAgentOwner = await aiAgents.ownerOf(1); 56 | expect(queriedAgentOwner).to.be.equals(agentOwner); 57 | }); 58 | 59 | it("should successfully update the agent URI", async () => { 60 | const { aiAgents, aiOracle } = await loadFixture(deployContracts); 61 | const [owner, oeprator] = await ethers.getSigners(); 62 | const testTokenUriV1 = "Test Token URI V1"; 63 | const testTokenName = "Test Token Name"; 64 | const testTokenSymbol = "TTT"; 65 | 66 | await aiOracle.createAgent( 67 | owner, 68 | testTokenUriV1, 69 | testTokenName, 70 | testTokenSymbol 71 | ); 72 | 73 | let tokenUri = await aiAgents.tokenURI(1); 74 | expect(tokenUri).to.be.equals(testTokenUriV1); 75 | 76 | const testTokenUriV2 = "Test Token URI V2"; 77 | await aiOracle.updateAgentURI(1, testTokenUriV2); 78 | tokenUri = await aiAgents.tokenURI(1); 79 | expect(tokenUri).to.be.equals(testTokenUriV2); 80 | 81 | await expect(aiOracle.connect(oeprator).updateAgentURI(1, testTokenUriV2)) 82 | .to.be.rejected; 83 | }); 84 | }); 85 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es2020", 4 | "module": "commonjs", 5 | "esModuleInterop": true, 6 | "forceConsistentCasingInFileNames": true, 7 | "strict": true, 8 | "skipLibCheck": true, 9 | "resolveJsonModule": true 10 | } 11 | } 12 | --------------------------------------------------------------------------------