From 9e640f409fe69bac9f4209cde04ac0458c9e1dd3 Mon Sep 17 00:00:00 2001 From: erhant Date: Mon, 23 Dec 2024 16:09:45 +0300 Subject: [PATCH 1/3] better abi exporter todo using `forge inspect` --- .vscode/settings.json | 6 ++++- README.md | 26 ++++++++++++++----- abis/parseAbi.cjs | 24 ----------------- {deployment => deployments}/.gitignore | 0 {deployment => deployments}/84532.json | 0 .../abis/LLMOracleCoordinator.abi.json | 0 deployments/abis/LLMOracleCoordinator.json | 1 + .../abis/LLMOracleRegistry.abi.json | 2 +- deployments/abis/LLMOracleRegistry.json | 1 + export-abis.sh | 8 ------ foundry.toml | 2 +- post-deploy.sh | 10 +++++++ script/Helper.s.sol | 4 +-- 13 files changed, 41 insertions(+), 43 deletions(-) delete mode 100644 abis/parseAbi.cjs rename {deployment => deployments}/.gitignore (100%) rename {deployment => deployments}/84532.json (100%) rename abis/LLMOracleCoordinator.json => deployments/abis/LLMOracleCoordinator.abi.json (100%) create mode 100644 deployments/abis/LLMOracleCoordinator.json rename abis/LLMOracleRegistry.json => deployments/abis/LLMOracleRegistry.abi.json (99%) create mode 100644 deployments/abis/LLMOracleRegistry.json delete mode 100755 export-abis.sh create mode 100755 post-deploy.sh diff --git a/.vscode/settings.json b/.vscode/settings.json index 07e8ca4..c97b5f4 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,4 +1,5 @@ { + // solidity "solidity.packageDefaultDependenciesContractsDirectory": "src", "solidity.packageDefaultDependenciesDirectory": "lib", "editor.formatOnSave": true, @@ -7,5 +8,8 @@ }, "solidity.formatter": "forge", "solidity.compileUsingRemoteVersion": "v0.8.26", - "solidity.defaultCompiler": "localFile" + "solidity.defaultCompiler": "localFile", + "material-icon-theme.files.associations": { + ".gas-snapshot": "bench-ts" + } } diff --git a/README.md b/README.md index 515b0ca..abda868 100644 --- a/README.md +++ b/README.md @@ -116,7 +116,7 @@ forge script ./script/Deploy.s.sol:Deploy \ --broadcast ``` -You can see deployed contract addresses under the `deployment/.json` +You can see deployed contract addresses under the [`deployments/.json`](./deployments/) You can verify the contract during deployment by adding the verification arguments as well: @@ -150,18 +150,32 @@ Note that the `--verifier-url` value should be the target explorer's homepage UR > > The `--verifier` can accept any of the following: `etherscan`, `blockscout`, `sourcify`, `oklink`. We are using Blockscout most of the time. -### Generate ABIs +After deployment, we need to take care of two things: -To interact with the contracts, you need the contract ABIs. We store the ABIs under the [`abis`](./abis/) folder, and these can be generated using the following script: +- **ABIs**: to interact with the contracts +- **Artifacts**: required if we need to upgrade in future + +We have a post-deployment script that outputs these files under the [`deployments/abis`](./deployments/abis/) folder: ```sh -./export-abis.sh +# requires NodeJS +./post-deploy.sh ``` ### Upgrade Contract Upgrading an existing contract is done as per the instructions in [openzeppelin-foundry-upgrades](https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades) repository. -The `--sender
` field is required when deploying a contract, + +To upgrade, you must + +> [!NOTE] +> +> The `--sender
` field is mandatory when deploying a contract, it can be obtained with: +> +> ```sh +> # will prompt for password +> cast wallet address --account +> ``` ## Testing & Diagnostics @@ -225,7 +239,7 @@ forge fmt ./src/**/*.sol ./script/**/*.sol If you have solhint installed, you can lint all contracts with: ```sh -solhint 'contracts/**/*.sol' +solhint 'src/**/*.sol' ``` ## Documentation diff --git a/abis/parseAbi.cjs b/abis/parseAbi.cjs deleted file mode 100644 index 7c0de5e..0000000 --- a/abis/parseAbi.cjs +++ /dev/null @@ -1,24 +0,0 @@ -const fs = require("fs"); - -if (process.argv.length < 3) { - console.error("Please provide a filename as a parameter."); - process.exit(1); -} - -const filename = process.argv[2]; - -const data = fs.readFileSync(filename, "utf8"); -try { - const jsonData = JSON.parse(data); - const abi = jsonData.abi; - if (!abi) { - console.error("No `abi` field found in the JSON data."); - process.exit(1); - } - - fs.writeFileSync(filename, JSON.stringify(abi, null, 2)); - console.log("ABI extracted and written to", filename); -} catch (parseErr) { - console.error(`Error parsing JSON: ${parseErr}`); - process.exit(1); -} diff --git a/deployment/.gitignore b/deployments/.gitignore similarity index 100% rename from deployment/.gitignore rename to deployments/.gitignore diff --git a/deployment/84532.json b/deployments/84532.json similarity index 100% rename from deployment/84532.json rename to deployments/84532.json diff --git a/abis/LLMOracleCoordinator.json b/deployments/abis/LLMOracleCoordinator.abi.json similarity index 100% rename from abis/LLMOracleCoordinator.json rename to deployments/abis/LLMOracleCoordinator.abi.json diff --git a/deployments/abis/LLMOracleCoordinator.json b/deployments/abis/LLMOracleCoordinator.json new file mode 100644 index 0000000..d3df830 --- /dev/null +++ b/deployments/abis/LLMOracleCoordinator.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"feeToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ERC20"}],"stateMutability":"view"},{"type":"function","name":"generationDeviationFactor","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"generationFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBestResponse","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct LLMOracleTask.TaskResponse","components":[{"name":"responder","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"score","type":"uint256","internalType":"uint256"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"metadata","type":"bytes","internalType":"bytes"}]}],"stateMutability":"view"},{"type":"function","name":"getFee","inputs":[{"name":"parameters","type":"tuple","internalType":"struct LLMOracleTaskParameters","components":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}]}],"outputs":[{"name":"totalFee","type":"uint256","internalType":"uint256"},{"name":"generatorFee","type":"uint256","internalType":"uint256"},{"name":"validatorFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getResponses","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct LLMOracleTask.TaskResponse[]","components":[{"name":"responder","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"score","type":"uint256","internalType":"uint256"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"metadata","type":"bytes","internalType":"bytes"}]}],"stateMutability":"view"},{"type":"function","name":"getValidations","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct LLMOracleTask.TaskValidation[]","components":[{"name":"validator","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"scores","type":"uint256[]","internalType":"uint256[]"},{"name":"metadata","type":"bytes","internalType":"bytes"}]}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_oracleRegistry","type":"address","internalType":"address"},{"name":"_feeToken","type":"address","internalType":"address"},{"name":"_platformFee","type":"uint256","internalType":"uint256"},{"name":"_generationFee","type":"uint256","internalType":"uint256"},{"name":"_validationFee","type":"uint256","internalType":"uint256"},{"name":"_minScore","type":"uint256","internalType":"uint256"},{"name":"_maxScore","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxScore","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maximumParameters","inputs":[],"outputs":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}],"stateMutability":"view"},{"type":"function","name":"minScore","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minimumParameters","inputs":[],"outputs":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}],"stateMutability":"view"},{"type":"function","name":"nextTaskId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"platformFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"platformFeeBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract LLMOracleRegistry"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"request","inputs":[{"name":"protocol","type":"bytes32","internalType":"bytes32"},{"name":"input","type":"bytes","internalType":"bytes"},{"name":"models","type":"bytes","internalType":"bytes"},{"name":"parameters","type":"tuple","internalType":"struct LLMOracleTaskParameters","components":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"requests","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"protocol","type":"bytes32","internalType":"bytes32"},{"name":"parameters","type":"tuple","internalType":"struct LLMOracleTaskParameters","components":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}]},{"name":"status","type":"uint8","internalType":"enum LLMOracleTask.TaskStatus"},{"name":"generatorFee","type":"uint256","internalType":"uint256"},{"name":"validatorFee","type":"uint256","internalType":"uint256"},{"name":"platformFee","type":"uint256","internalType":"uint256"},{"name":"input","type":"bytes","internalType":"bytes"},{"name":"models","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"respond","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"metadata","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"responses","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"responder","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"score","type":"uint256","internalType":"uint256"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"metadata","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"setFees","inputs":[{"name":"_platformFee","type":"uint256","internalType":"uint256"},{"name":"_generationFee","type":"uint256","internalType":"uint256"},{"name":"_validationFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGenerationDeviationFactor","inputs":[{"name":"_generationDeviationFactor","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setParameters","inputs":[{"name":"minimums","type":"tuple","internalType":"struct LLMOracleTaskParameters","components":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}]},{"name":"maximums","type":"tuple","internalType":"struct LLMOracleTaskParameters","components":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"validate","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"scores","type":"uint256[]","internalType":"uint256[]"},{"name":"metadata","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validationFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validations","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"validator","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"metadata","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"withdrawPlatformFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Request","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"protocol","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Response","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"responder","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StatusUpdate","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"protocol","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"statusBefore","type":"uint8","indexed":false,"internalType":"enum LLMOracleTask.TaskStatus"},{"name":"statusAfter","type":"uint8","indexed":false,"internalType":"enum LLMOracleTask.TaskStatus"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Validation","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"validator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyResponded","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"oracle","type":"address","internalType":"address"}]},{"type":"error","name":"ComputeError","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientFees","inputs":[{"name":"have","type":"uint256","internalType":"uint256"},{"name":"want","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidInput","inputs":[]},{"type":"error","name":"InvalidNonce","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidParameterRange","inputs":[{"name":"have","type":"uint256","internalType":"uint256"},{"name":"min","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidTaskStatus","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"have","type":"uint8","internalType":"enum LLMOracleTask.TaskStatus"},{"name":"want","type":"uint8","internalType":"enum LLMOracleTask.TaskStatus"}]},{"type":"error","name":"InvalidValidation","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"validator","type":"address","internalType":"address"}]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotRegistered","inputs":[{"name":"oracle","type":"address","internalType":"address"}]},{"type":"error","name":"NotWhitelisted","inputs":[{"name":"validator","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613e966100f95f395f81816122d4015281816122fd01526124410152613e965ff3fe6080604052600436106101e5575f3560e01c806381d12c5811610108578063cec10c111161009d578063e9ca8b461161006d578063e9ca8b461461060b578063edbf4ac21461062a578063f2fde38b14610649578063f8bbf27e14610668578063fdc3d8d71461067d575f80fd5b8063cec10c11146105a4578063d0b7830b146105c3578063e3c98ba0146105d7578063e76aec11146105ec575f80fd5b8063b13fc8f4116100d8578063b13fc8f4146104f5578063b584e6171461052f578063b84b8ac71461054e578063ca287c351461056d575f80fd5b806381d12c581461045b5780638da5cb5b1461048f5780639a1b4b38146104a3578063ad3cb1cc146104b8575f80fd5b80634b5a82d11161017e5780636b4d5bfc1161014e5780636b4d5bfc146103dd578063715018a6146103fc57806371ee2ce1146104105780637b1039991461043c575f80fd5b80634b5a82d11461034f5780634f1ef2861461037d57806352d1902d14610392578063647846a5146103a6575f80fd5b806326232a2e116101b957806326232a2e146102b25780632bafb614146102c657806332f77659146102f7578063434dbaee14610323575f80fd5b806257efc2146101e95780630566f18a1461022257806313c2bedc146102455780631da7bc9a1461025a575b5f80fd5b3480156101f4575f80fd5b506102086102033660046131f2565b610692565b604051610219959493929190613240565b60405180910390f35b34801561022d575f80fd5b5061023760015481565b604051908152602001610219565b348015610250575f80fd5b5061023760065481565b348015610265575f80fd5b5060055461028b9060ff81169064ffffffffff6101008204811691600160301b90041683565b6040805160ff909416845264ffffffffff9283166020850152911690820152606001610219565b3480156102bd575f80fd5b506102375f5481565b3480156102d1575f80fd5b5060045461028b9060ff81169064ffffffffff6101008204811691600160301b90041683565b348015610302575f80fd5b5061031661031136600461328a565b6107f4565b60405161021991906132f4565b34801561032e575f80fd5b5061034261033d36600461328a565b610aaa565b6040516102199190613306565b34801561035a575f80fd5b5061036e6103693660046131f2565b610c12565b604051610219939291906133da565b61039061038b3660046134c1565b610ce2565b005b34801561039d575f80fd5b50610237610d01565b3480156103b1575f80fd5b506009546103c5906001600160a01b031681565b6040516001600160a01b039091168152602001610219565b3480156103e8575f80fd5b506103906103f7366004613548565b610d1c565b348015610407575f80fd5b50610390611263565b34801561041b575f80fd5b5061042f61042a36600461328a565b611276565b60405161021991906135f9565b348015610447575f80fd5b506008546103c5906001600160a01b031681565b348015610466575f80fd5b5061047a61047536600461328a565b611424565b60405161021999989796959493929190613678565b34801561049a575f80fd5b506103c56115c4565b3480156104ae575f80fd5b5061023760075481565b3480156104c3575f80fd5b506104e8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102199190613710565b348015610500575f80fd5b5061051461050f366004613738565b6115f2565b60408051938452602084019290925290820152606001610219565b34801561053a575f80fd5b50610390610549366004613752565b61168f565b348015610559575f80fd5b506103906105683660046137b4565b611a63565b348015610578575f80fd5b5060035461058c906001600160401b031681565b6040516001600160401b039091168152602001610219565b3480156105af575f80fd5b506103906105be3660046137e7565b611a8e565b3480156105ce575f80fd5b50610390611aa3565b3480156105e2575f80fd5b50610237600e5481565b3480156105f7575f80fd5b50610237610606366004613810565b611b3a565b348015610616575f80fd5b5061039061062536600461388d565b61210e565b348015610635575f80fd5b506103906106443660046138b3565b612139565b348015610654575f80fd5b5061039061066336600461390c565b61228c565b348015610673575f80fd5b5061023760025481565b348015610688575f80fd5b50610237600a5481565b600c602052815f5260405f2081815481106106ab575f80fd5b5f91825260209091206005909102018054600182015460028301546003840180546001600160a01b03909416965091945092916106e790613925565b80601f016020809104026020016040519081016040528092919081815260200182805461071390613925565b801561075e5780601f106107355761010080835404028352916020019161075e565b820191905f5260205f20905b81548152906001019060200180831161074157829003601f168201915b50505050509080600401805461077390613925565b80601f016020809104026020016040519081016040528092919081815260200182805461079f90613925565b80156107ea5780601f106107c1576101008083540402835291602001916107ea565b820191905f5260205f20905b8154815290600101906020018083116107cd57829003601f168201915b5050505050905085565b61082c6040518060a001604052805f6001600160a01b031681526020015f81526020015f815260200160608152602001606081525090565b5f828152600c60209081526040808320600b90925290912060039081015460ff168181111561085d5761085d613650565b146108a0575f838152600b602052604090819020600390810154915163091e2f1760e31b815261089792869260ff90911691600401613957565b60405180910390fd5b5f815f815481106108b3576108b3613980565b5f9182526020909120600590910201600281015490915060015b835481101561094c57818482815481106108e9576108e9613980565b905f5260205f2090600502016002015411156109445783818154811061091157610911613980565b905f5260205f20906005020160020154915083818154811061093557610935613980565b905f5260205f20906005020192505b6001016108cd565b506040805160a08101825283546001600160a01b03168152600184015460208201526002840154918101919091526003830180548491606084019161099090613925565b80601f01602080910402602001604051908101604052809291908181526020018280546109bc90613925565b8015610a075780601f106109de57610100808354040283529160200191610a07565b820191905f5260205f20905b8154815290600101906020018083116109ea57829003601f168201915b50505050508152602001600482018054610a2090613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90613925565b8015610a975780601f10610a6e57610100808354040283529160200191610a97565b820191905f5260205f20905b815481529060010190602001808311610a7a57829003601f168201915b5050505050815250509350505050919050565b6060600d5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c07575f848152602090819020604080516080810182526004860290920180546001600160a01b031683526001810154838501526002810180548351818702810187018552818152949592949386019392830182828015610b5f57602002820191905f5260205f20905b815481526020019060010190808311610b4b575b50505050508152602001600382018054610b7890613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba490613925565b8015610bef5780601f10610bc657610100808354040283529160200191610bef565b820191905f5260205f20905b815481529060010190602001808311610bd257829003601f168201915b50505050508152505081526020019060010190610adc565b505050509050919050565b600d602052815f5260405f208181548110610c2b575f80fd5b5f9182526020909120600490910201805460018201546003830180546001600160a01b03909316955090935090610c6190613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8d90613925565b8015610cd85780601f10610caf57610100808354040283529160200191610cd8565b820191905f5260205f20905b815481529060010190602001808311610cbb57829003601f168201915b5050505050905083565b610cea6122c9565b610cf38261236d565b610cfd8282612375565b5050565b5f610d0a612436565b505f80516020613e4183398151915290565b600854604051635f5b248b60e01b81526001916001600160a01b031690635f5b248b90610d4f9033908590600401613994565b602060405180830381865afa158015610d6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8e91906139c1565b610dad5760405163bfc6c33760e01b8152336004820152602401610897565b866002805f838152600b6020526040902060039081015460ff1690811115610dd757610dd7613650565b14610e11575f828152600b60205260409081902060030154905163091e2f1760e31b815261089791849160ff909116908490600401613957565b600854604051633af32abf60e01b81523360048201819052916001600160a01b031690633af32abf90602401602060405180830381865afa158015610e58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7c91906139c1565b610ea457604051636f8bf18b60e11b81526001600160a01b0382166004820152602401610897565b5f8a8152600b602052604090206002810154610100900464ffffffffff168814610eea576040516355c56a4560e11b8152600481018c9052336024820152604401610897565b5f5b88811015610f8c576007548a8a83818110610f0957610f09613980565b905060200201351180610f3557506006548a8a83818110610f2c57610f2c613980565b90506020020135105b15610f8457898982818110610f4c57610f4c613980565b6007546006546040516371a6675960e11b81526020909302949094013560048301526024820152604481019290925250606401610897565b600101610eec565b505f5b6002820154610100900464ffffffffff16811015611011575f8c8152600c60205260409020805433919083908110610fc957610fc9613980565b5f9182526020909120600590910201546001600160a01b031603611009576040516301011bf360e71b8152600481018d9052336024820152604401610897565b600101610f8f565b505f5b5f8c8152600d6020526040902054811015611093575f8c8152600d6020526040902080543391908390811061104b5761104b613980565b5f9182526020909120600490910201546001600160a01b03160361108b576040516301011bf360e71b8152600481018d9052336024820152604401610897565b600101611014565b5061109f8b828c61247f565b600d5f8c81526020019081526020015f206040518060800160405280336001600160a01b031681526020018c81526020018b8b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250505090825250604080516020601f8c018190048102820181019092528a815291810191908b908b90819084018382808284375f920182905250939094525050835460018082018655948252602091829020845160049092020180546001600160a01b0319166001600160a01b0390921691909117815583820151948101949094556040830151805193949361119e935060028501929190910190613195565b50606082015160038201906111b39082613a2b565b50506040513391508c907fa1afe65d2285036595be8f15025c4421a593141666e15e5a980e742920646b1e905f90a360028101545f8c8152600d6020526040902054600160301b90910464ffffffffff16148015611255576003828101805460ff1916600183021790555081600101548c5f80516020613e2183398151915260026003604051611244929190613ae5565b60405180910390a36112558c6124f8565b505050505050505050505050565b61126b612912565b6112745f612944565b565b6060600c5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c07575f8481526020908190206040805160a0810182526005860290920180546001600160a01b0316835260018101549383019390935260028301549082015260038201805491929160608401919061130590613925565b80601f016020809104026020016040519081016040528092919081815260200182805461133190613925565b801561137c5780601f106113535761010080835404028352916020019161137c565b820191905f5260205f20905b81548152906001019060200180831161135f57829003601f168201915b5050505050815260200160048201805461139590613925565b80601f01602080910402602001604051908101604052809291908181526020018280546113c190613925565b801561140c5780601f106113e35761010080835404028352916020019161140c565b820191905f5260205f20905b8154815290600101906020018083116113ef57829003601f168201915b505050505081525050815260200190600101906112a8565b600b60209081525f918252604091829020805460018201548451606081018652600284015460ff808216835264ffffffffff6101008304811697840197909752600160301b9091049095169581019590955260038301546004840154600585015460068601546007870180546001600160a01b03909716999598959794909516959294919390929091906114b790613925565b80601f01602080910402602001604051908101604052809291908181526020018280546114e390613925565b801561152e5780601f106115055761010080835404028352916020019161152e565b820191905f5260205f20905b81548152906001019060200180831161151157829003601f168201915b50505050509080600801805461154390613925565b80601f016020809104026020016040519081016040528092919081815260200182805461156f90613925565b80156115ba5780601f10611591576101008083540402835291602001916115ba565b820191905f5260205f20905b81548152906001019060200180831161159d57829003601f168201915b5050505050905089565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f8080806116036020860186613b0e565b60ff166002901b90506001548161161a9190613b3d565b92506002548161162a9190613b3d565b91508161163d6060870160408801613b66565b64ffffffffff1661164e9190613b3d565b6116589084613b81565b6116686040870160208801613b66565b64ffffffffff166116799190613b3d565b5f546116859190613b81565b9350509193909250565b600854604051635f5b248b60e01b81525f916001600160a01b031690635f5b248b906116c19033908590600401613994565b602060405180830381865afa1580156116dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170091906139c1565b61171f5760405163bfc6c33760e01b8152336004820152602401610897565b866001805f838152600b6020526040902060039081015460ff169081111561174957611749613650565b14611783575f828152600b60205260409081902060030154905163091e2f1760e31b815261089791849160ff909116908490600401613957565b5f898152600b60205260408120905b5f8b8152600c6020526040902054811015611811575f8b8152600c602052604090208054339190839081106117c9576117c9613980565b5f9182526020909120600590910201546001600160a01b031603611809576040516301011bf360e71b8152600481018c9052336024820152604401610897565b600101611792565b5061181d8a828b61247f565b5f6040518060a00160405280336001600160a01b031681526020018b81526020015f81526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a90819084018382808284375f9201829052509390945250508d8152600c6020908152604080832080546001808201835591855293839020865160059095020180546001600160a01b0319166001600160a01b03909516949094178455918501519183019190915583015160028201556060830151929350839290915060038201906119289082613a2b565b506080820151600482019061193d9082613a2b565b50506040513391508c907f6c809136a3b8faf74ae9e955b7e7b758baa66bde976764a29fa74a4eb1e3702e905f90a36002820154600160301b900464ffffffffff165f03611993576119933383600401546129b4565b60028201545f8c8152600c602052604090205461010090910464ffffffffff16148015611255576002830154600160301b900464ffffffffff165f03611a15576003838101805460ff19168217905560018085015460405190928f925f80516020613e2183398151915292611a089290613ae5565b60405180910390a3611255565b60038301805460ff1916600290811790915560018085015460405190928f925f80516020613e2183398151915292611a4d9290613ae5565b60405180910390a3505050505050505050505050565b611a6b612912565b816004611a788282613b94565b508190506005611a888282613b94565b50505050565b611a96612912565b5f92909255600155600255565b611aab612912565b6009546001600160a01b031663a9059cbb611ac46115c4565b600e546040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611b0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3391906139c1565b505f600e55565b6004545f90829060ff16611b516020830183613b0e565b60ff161080611b73575060055460ff16611b6e6020830183613b0e565b60ff16115b15611bbe57611b856020820182613b0e565b600480546005546040516371a6675960e11b815260ff948516938101939093529083166024830152919091166044820152606401610897565b600454610100900464ffffffffff16611bdd6040830160208401613b66565b64ffffffffff161080611c135750600554610100900464ffffffffff16611c0a6040830160208401613b66565b64ffffffffff16115b15611c6b57611c286040820160208301613b66565b600480546005546040516371a6675960e11b815264ffffffffff948516938101939093526101009182900484166024840152049091166044820152606401610897565b600454600160301b900464ffffffffff16611c8c6060830160408401613b66565b64ffffffffff161080611cc45750600554600160301b900464ffffffffff16611cbb6060830160408401613b66565b64ffffffffff16115b15611d1e57611cd96060820160408301613b66565b600480546005546040516371a6675960e11b815264ffffffffff94851693810193909352600160301b9182900484166024840152049091166044820152606401610897565b5f805f611d2a866115f2565b92509250925087515f03611d515760405163b4fa3fb360e01b815260040160405180910390fd5b600954604051636eb1769f60e11b81523360048201523060248201525f916001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015611d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc19190613c19565b905083811015611dee576040516311e9ebaf60e31b81526004810182905260248101859052604401610897565b6009546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e589190613c19565b905084811015611e85576040516311e9ebaf60e31b81526004810182905260248101869052604401610897565b5f54600e5f828254611e979190613b81565b90915550506009546040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015611ef0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1491906139c1565b50600a8054600181019091556040518c90339083907f7f371482986a3450b759cc4a079353a8eaa36a650b5eba1fb9c00693026f254a905f90a46040805161012081018252338152602081018e9052908101611f75368c90038c018c613c30565b8152602001600181526020018681526020018581526020015f5481526020018c81526020018b815250600b5f8381526020019081526020015f205f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101556040820151816002015f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548164ffffffffff021916908364ffffffffff1602179055506040820151815f0160066101000a81548164ffffffffff021916908364ffffffffff16021790555050506060820151816003015f6101000a81548160ff0219169083600381111561208557612085613650565b02179055506080820151600482015560a0820151600582015560c0820151600682015560e082015160078201906120bc9082613a2b565b5061010082015160088201906120d29082613a2b565b509050508b815f80516020613e218339815191525f60016040516120f7929190613ae5565b60405180910390a39b9a5050505050505050505050565b612116612912565b6003805467ffffffffffffffff19166001600160401b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561217d5750825b90505f826001600160401b031660011480156121985750303b155b9050811580156121a6575080155b156121c45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156121ee57845460ff60401b1916600160401b1785555b6121f733612aa8565b6122048a8a8a8a8a612ab9565b600880546001600160a01b03808f166001600160a01b03199283161790925560098054928e16929091169190911790556001600a55831561125557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050505050505050565b612294612912565b6001600160a01b0381166122bd57604051631e4fbdf760e01b81525f6004820152602401610897565b6122c681612944565b50565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061234f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123435f80516020613e41833981519152546001600160a01b031690565b6001600160a01b031614155b156112745760405163703e46dd60e11b815260040160405180910390fd5b6122c6612912565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156123cf575060408051601f3d908101601f191682019092526123cc91810190613c19565b60015b6123f757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610897565b5f80516020613e41833981519152811461242757604051632a87526960e21b815260048101829052602401610897565b6124318383612b56565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112745760405163703e46dd60e11b815260040160405180910390fd5b81546040515f916124a991869160078701916001600160a01b039091169033908790602001613ca1565b60408051601f198184030181529190526002840154815160208301209192505f1960ff9091161c11611a88576040516306427aeb60e01b81526004810185905260248101839052604401610897565b5f818152600b60205260408120905b6002820154610100900464ffffffffff168110156127545760028201545f90600160301b900464ffffffffff166001600160401b0381111561254b5761254b613424565b604051908082528060200260200182016040528015612574578160200160208202803683370190505b5090505f5b6002840154600160301b900464ffffffffff16811015612600575f858152600d602052604090208054829081106125b2576125b2613980565b905f5260205f20906004020160020183815481106125d2576125d2613980565b905f5260205f2001548282815181106125ed576125ed613980565b6020908102919091010152600101612579565b505f8061260c83612bab565b915091505f805f5b6002880154600160301b900464ffffffffff168110156126f2575f670de0b6b3a764000087838151811061264a5761264a613980565b602002602001015161265c9190613b3d565b9050846126698783613b81565b10158015612680575061267c8686613b81565b8111155b156126e95761268f8185613b81565b93508261269b81613d6a565b9350506126e9600d5f8c81526020019081526020015f2083815481106126c3576126c3613980565b5f91825260209091206004909102015460058b01546001600160a01b03909116906129b4565b50600101612614565b505f8115612709576127048284613d96565b61270b565b5f5b5f8a8152600c60205260409020805491925082918990811061272f5761272f613980565b5f91825260209091206002600590920201015550506001909401935061250792505050565b5060028101545f90610100900464ffffffffff166001600160401b0381111561277f5761277f613424565b6040519080825280602002602001820160405280156127a8578160200160208202803683370190505b5090505f5b6002830154610100900464ffffffffff16811015612819575f848152600c602052604090208054829081106127e4576127e4613980565b905f5260205f2090600502016002015482828151811061280657612806613980565b60209081029190910101526001016127ad565b505f8061282583612bab565b915091505f5b6002850154610100900464ffffffffff1681101561290a57600354829061285c9085906001600160401b0316613b3d565b670de0b6b3a764000086848151811061287757612877613980565b60200260200101516128899190613b3d565b6128939190613b81565b106128e7575f868152600c6020526040902080546128e29190839081106128bc576128bc613980565b5f91825260209091206005909102015460048701546001600160a01b03909116906129b4565b612902565b8460040154600e5f8282546128fc9190613b81565b90915550505b60010161282b565b505050505050565b3361291b6115c4565b6001600160a01b0316146112745760405163118cdaa760e01b8152336004820152602401610897565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b600954604051636eb1769f60e11b81523060048201526001600160a01b0384811660248301529091169063095ea7b39084908490849063dd62ed3e90604401602060405180830381865afa158015612a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a329190613c19565b612a3c9190613b81565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015612a84573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243191906139c1565b612ab0612c09565b6122c681612c52565b612ac1612c09565b60038054600167ffffffffffffffff19909116811790915560408051606080820183528382526020808301949094525f91830191909152600480546101016affffffffffffffffffffff199182161790915582519182018352600a80835293820184905291019190915260058054909116660a000000000a0a179055612b48858585611a8e565b600691909155600755505050565b612b5f82612c5a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612ba3576124318282612cbd565b610cfd612d31565b5f805f80612bb885612d50565b915091508092505f80612bd384670de0b6b3a7640000612e23565b9150915081612bf557604051630e9e2ceb60e11b815260040160405180910390fd5b612bfe81612e6a565b955050505050915091565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661127457604051631afcd79f60e31b815260040160405180910390fd5b612294612c09565b806001600160a01b03163b5f03612c8f57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610897565b5f80516020613e4183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051612cd99190613db5565b5f60405180830381855af49150503d805f8114612d11576040519150601f19603f3d011682016040523d82523d5f602084013e612d16565b606091505b5091509150612d26858383612fbd565b925050505b92915050565b34156112745760405163b398979f60e01b815260040160405180910390fd5b5f80612d5b8361301c565b90505f805b8451811015612dd5575f670de0b6b3a7640000868381518110612d8557612d85613980565b6020026020010151612d979190613b3d565b90505f612da48583613dcb565b9050612dbf612db38280613df1565b60ff81901d9081011890565b612dc99085613b81565b93505050600101612d60565b505f80612deb8651670de0b6b3a7640000612e23565b9150915081612e0d57604051630e9e2ceb60e11b815260040160405180910390fd5b612e198360018361308c565b9450505050915091565b5f80835f03612e375750600190505f612e63565b83830283858281612e4a57612e4a613d82565b0414612e5c575f809250925050612e63565b6001925090505b9250929050565b5f60018211612e77575090565b816001600160801b8210612e905760809190911c9060401b5b600160401b8210612ea65760409190911c9060201b5b6401000000008210612ebd5760209190911c9060101b5b620100008210612ed25760109190911c9060081b5b6101008210612ee65760089190911c9060041b5b60108210612ef95760049190911c9060021b5b60048210612f055760011b5b600302600190811c90818581612f1d57612f1d613d82565b048201901c90506001818581612f3557612f35613d82565b048201901c90506001818581612f4d57612f4d613d82565b048201901c90506001818581612f6557612f65613d82565b048201901c90506001818581612f7d57612f7d613d82565b048201901c90506001818581612f9557612f95613d82565b048201901c9050612fb4818581612fae57612fae613d82565b04821190565b90039392505050565b606082612fd257612fcd82613142565b613015565b8151158015612fe957506001600160a01b0384163b155b1561301257604051639996b31560e01b81526001600160a01b0385166004820152602401610897565b50805b9392505050565b5f80805b835181101561307b575f8061304e86848151811061304057613040613980565b60200260200101518561316b565b915091508161307057604051630e9e2ceb60e11b815260040160405180910390fd5b925050600101613020565b5061301581670de0b6b3a764000085515b5f838302815f1985870982811083820303915050805f036130c0578382816130b6576130b6613d82565b0492505050613015565b8084116130d7576130d76003851502601118613184565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b8051156131525780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8083830184811015612e5c575f809250925050612e63565b634e487b715f52806020526024601cfd5b828054828255905f5260205f209081019282156131ce579160200282015b828111156131ce5782518255916020019190600101906131b3565b506131da9291506131de565b5090565b5b808211156131da575f81556001016131df565b5f8060408385031215613203575f80fd5b50508035926020909101359150565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b038616815284602082015283604082015260a060608201525f61326c60a0830185613212565b828103608084015261327e8185613212565b98975050505050505050565b5f6020828403121561329a575f80fd5b5035919050565b60018060a01b03815116825260208101516020830152604081015160408301525f606082015160a060608501526132db60a0850182613212565b905060808301518482036080860152612d268282613212565b602081525f61301560208301846132a1565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133ce57868503603f19018452815180516001600160a01b031686526020808201518188015260408083015160809189018290528051918901829052909101905f9060a08901905b8083101561339b5783518252602082019150602084019350600183019250613378565b506060840151935088810360608a01526133b58185613212565b985050506020958601959390930192505060010161332c565b50929695505050505050565b60018060a01b0384168152826020820152606060408201525f6134006060830184613212565b95945050505050565b80356001600160a01b038116811461341f575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613447575f80fd5b81356001600160401b0381111561346057613460613424565b604051601f8201601f19908116603f011681016001600160401b038111828210171561348e5761348e613424565b6040528181528382016020018510156134a5575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156134d2575f80fd5b6134db83613409565b915060208301356001600160401b038111156134f5575f80fd5b61350185828601613438565b9150509250929050565b5f8083601f84011261351b575f80fd5b5081356001600160401b03811115613531575f80fd5b602083019150836020828501011115612e63575f80fd5b5f805f805f806080878903121561355d575f80fd5b863595506020870135945060408701356001600160401b03811115613580575f80fd5b8701601f81018913613590575f80fd5b80356001600160401b038111156135a5575f80fd5b8960208260051b84010111156135b9575f80fd5b6020919091019450925060608701356001600160401b038111156135db575f80fd5b6135e789828a0161350b565b979a9699509497509295939492505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133ce57603f1987860301845261363b8583516132a1565b9450602093840193919091019060010161361f565b634e487b7160e01b5f52602160045260245ffd5b6004811061367457613674613650565b9052565b60018060a01b038a16815288602082015260ff885116604082015264ffffffffff602089015116606082015264ffffffffff60408901511660808201526136c260a0820188613664565b8560c08201528460e0820152836101008201526101606101208201525f6136ed610160830185613212565b8281036101408401526137008185613212565b9c9b505050505050505050505050565b602081525f6130156020830184613212565b5f60608284031215613732575f80fd5b50919050565b5f60608284031215613748575f80fd5b6130158383613722565b5f805f805f8060808789031215613767575f80fd5b863595506020870135945060408701356001600160401b0381111561378a575f80fd5b61379689828a0161350b565b90955093505060608701356001600160401b038111156135db575f80fd5b5f8060c083850312156137c5575f80fd5b6137cf8484613722565b91506137de8460608501613722565b90509250929050565b5f805f606084860312156137f9575f80fd5b505081359360208301359350604090920135919050565b5f805f8060c08587031215613823575f80fd5b8435935060208501356001600160401b0381111561383f575f80fd5b61384b87828801613438565b93505060408501356001600160401b03811115613866575f80fd5b61387287828801613438565b9250506138828660608701613722565b905092959194509250565b5f6020828403121561389d575f80fd5b81356001600160401b0381168114613015575f80fd5b5f805f805f805f60e0888a0312156138c9575f80fd5b6138d288613409565b96506138e060208901613409565b96999698505050506040850135946060810135946080820135945060a0820135935060c0909101359150565b5f6020828403121561391c575f80fd5b61301582613409565b600181811c9082168061393957607f821691505b60208210810361373257634e487b7160e01b5f52602260045260245ffd5b8381526060810161396b6020830185613664565b6139786040830184613664565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b038316815260408101600283106139b4576139b4613650565b8260208301529392505050565b5f602082840312156139d1575f80fd5b81518015158114613015575f80fd5b601f82111561243157805f5260205f20601f840160051c81016020851015613a055750805b601f840160051c820191505b81811015613a24575f8155600101613a11565b5050505050565b81516001600160401b03811115613a4457613a44613424565b613a5881613a528454613925565b846139e0565b6020601f821160018114613a8a575f8315613a735750848201515b5f19600385901b1c1916600184901b178455613a24565b5f84815260208120601f198516915b82811015613ab95787850151825560209485019460019092019101613a99565b5084821015613ad657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60408101613af38285613664565b6130156020830184613664565b60ff811681146122c6575f80fd5b5f60208284031215613b1e575f80fd5b813561301581613b00565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417612d2b57612d2b613b29565b64ffffffffff811681146122c6575f80fd5b5f60208284031215613b76575f80fd5b813561301581613b54565b80820180821115612d2b57612d2b613b29565b8135613b9f81613b00565b60ff8116905081548160ff1982161783556020840135613bbe81613b54565b65ffffffffff008160081b169050808365ffffffffffff198416171784556040850135613bea81613b54565b6affffffffff0000000000008160301b16846affffffffffffffffffffff198516178317178555505050505050565b5f60208284031215613c29575f80fd5b5051919050565b5f6060828403128015613c41575f80fd5b50604051606081016001600160401b0381118282101715613c6457613c64613424565b6040528235613c7281613b00565b81526020830135613c8281613b54565b60208201526040830135613c9581613b54565b60408201529392505050565b8581525f808654613cb181613925565b600182168015613cc85760018114613ce357613d19565b60ff1983166020870152602082151583028701019350613d19565b895f5260205f205f5b83811015613d0e5781546020828a010152600182019150602081019050613cec565b505060208287010193505b505050613d37818760601b6bffffffffffffffffffffffff19169052565b613d55601482018660601b6bffffffffffffffffffffffff19169052565b60288101939093525050604801949350505050565b5f60018201613d7b57613d7b613b29565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f82613db057634e487b7160e01b5f52601260045260245ffd5b500490565b5f82518060208501845e5f920191825250919050565b8181035f831280158383131683831282161715613dea57613dea613b29565b5092915050565b8082025f8212600160ff1b84141615613e0c57613e0c613b29565b8181058314821517612d2b57612d2b613b2956fe1c0a5e4b371d60717068c91e93b5e94c91d4c6d6c3fab36082a78f987e5a69f5360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220ea436402179790a4a9250d2b1104e8d30c1c11b00b6a847c700996129c68e59064736f6c634300081a0033","sourceMap":"656:19220:60:-:0;;;1171:4:21;1128:48;;5086:53:60;;;;;;;;;-1:-1:-1;5110:22:60;:20;:22::i;:::-;656:19220;;7711:422:20;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:20;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:20;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:20;-1:-1:-1;;;;;8035:33:20;;;;;8087:29;;158:50:66;;;8087:29:20;;146:2:66;131:18;8087:29:20;;;;;;;7981:146;7760:373;7711:422::o;14:200:66:-;656:19220:60;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101e5575f3560e01c806381d12c5811610108578063cec10c111161009d578063e9ca8b461161006d578063e9ca8b461461060b578063edbf4ac21461062a578063f2fde38b14610649578063f8bbf27e14610668578063fdc3d8d71461067d575f80fd5b8063cec10c11146105a4578063d0b7830b146105c3578063e3c98ba0146105d7578063e76aec11146105ec575f80fd5b8063b13fc8f4116100d8578063b13fc8f4146104f5578063b584e6171461052f578063b84b8ac71461054e578063ca287c351461056d575f80fd5b806381d12c581461045b5780638da5cb5b1461048f5780639a1b4b38146104a3578063ad3cb1cc146104b8575f80fd5b80634b5a82d11161017e5780636b4d5bfc1161014e5780636b4d5bfc146103dd578063715018a6146103fc57806371ee2ce1146104105780637b1039991461043c575f80fd5b80634b5a82d11461034f5780634f1ef2861461037d57806352d1902d14610392578063647846a5146103a6575f80fd5b806326232a2e116101b957806326232a2e146102b25780632bafb614146102c657806332f77659146102f7578063434dbaee14610323575f80fd5b806257efc2146101e95780630566f18a1461022257806313c2bedc146102455780631da7bc9a1461025a575b5f80fd5b3480156101f4575f80fd5b506102086102033660046131f2565b610692565b604051610219959493929190613240565b60405180910390f35b34801561022d575f80fd5b5061023760015481565b604051908152602001610219565b348015610250575f80fd5b5061023760065481565b348015610265575f80fd5b5060055461028b9060ff81169064ffffffffff6101008204811691600160301b90041683565b6040805160ff909416845264ffffffffff9283166020850152911690820152606001610219565b3480156102bd575f80fd5b506102375f5481565b3480156102d1575f80fd5b5060045461028b9060ff81169064ffffffffff6101008204811691600160301b90041683565b348015610302575f80fd5b5061031661031136600461328a565b6107f4565b60405161021991906132f4565b34801561032e575f80fd5b5061034261033d36600461328a565b610aaa565b6040516102199190613306565b34801561035a575f80fd5b5061036e6103693660046131f2565b610c12565b604051610219939291906133da565b61039061038b3660046134c1565b610ce2565b005b34801561039d575f80fd5b50610237610d01565b3480156103b1575f80fd5b506009546103c5906001600160a01b031681565b6040516001600160a01b039091168152602001610219565b3480156103e8575f80fd5b506103906103f7366004613548565b610d1c565b348015610407575f80fd5b50610390611263565b34801561041b575f80fd5b5061042f61042a36600461328a565b611276565b60405161021991906135f9565b348015610447575f80fd5b506008546103c5906001600160a01b031681565b348015610466575f80fd5b5061047a61047536600461328a565b611424565b60405161021999989796959493929190613678565b34801561049a575f80fd5b506103c56115c4565b3480156104ae575f80fd5b5061023760075481565b3480156104c3575f80fd5b506104e8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102199190613710565b348015610500575f80fd5b5061051461050f366004613738565b6115f2565b60408051938452602084019290925290820152606001610219565b34801561053a575f80fd5b50610390610549366004613752565b61168f565b348015610559575f80fd5b506103906105683660046137b4565b611a63565b348015610578575f80fd5b5060035461058c906001600160401b031681565b6040516001600160401b039091168152602001610219565b3480156105af575f80fd5b506103906105be3660046137e7565b611a8e565b3480156105ce575f80fd5b50610390611aa3565b3480156105e2575f80fd5b50610237600e5481565b3480156105f7575f80fd5b50610237610606366004613810565b611b3a565b348015610616575f80fd5b5061039061062536600461388d565b61210e565b348015610635575f80fd5b506103906106443660046138b3565b612139565b348015610654575f80fd5b5061039061066336600461390c565b61228c565b348015610673575f80fd5b5061023760025481565b348015610688575f80fd5b50610237600a5481565b600c602052815f5260405f2081815481106106ab575f80fd5b5f91825260209091206005909102018054600182015460028301546003840180546001600160a01b03909416965091945092916106e790613925565b80601f016020809104026020016040519081016040528092919081815260200182805461071390613925565b801561075e5780601f106107355761010080835404028352916020019161075e565b820191905f5260205f20905b81548152906001019060200180831161074157829003601f168201915b50505050509080600401805461077390613925565b80601f016020809104026020016040519081016040528092919081815260200182805461079f90613925565b80156107ea5780601f106107c1576101008083540402835291602001916107ea565b820191905f5260205f20905b8154815290600101906020018083116107cd57829003601f168201915b5050505050905085565b61082c6040518060a001604052805f6001600160a01b031681526020015f81526020015f815260200160608152602001606081525090565b5f828152600c60209081526040808320600b90925290912060039081015460ff168181111561085d5761085d613650565b146108a0575f838152600b602052604090819020600390810154915163091e2f1760e31b815261089792869260ff90911691600401613957565b60405180910390fd5b5f815f815481106108b3576108b3613980565b5f9182526020909120600590910201600281015490915060015b835481101561094c57818482815481106108e9576108e9613980565b905f5260205f2090600502016002015411156109445783818154811061091157610911613980565b905f5260205f20906005020160020154915083818154811061093557610935613980565b905f5260205f20906005020192505b6001016108cd565b506040805160a08101825283546001600160a01b03168152600184015460208201526002840154918101919091526003830180548491606084019161099090613925565b80601f01602080910402602001604051908101604052809291908181526020018280546109bc90613925565b8015610a075780601f106109de57610100808354040283529160200191610a07565b820191905f5260205f20905b8154815290600101906020018083116109ea57829003601f168201915b50505050508152602001600482018054610a2090613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90613925565b8015610a975780601f10610a6e57610100808354040283529160200191610a97565b820191905f5260205f20905b815481529060010190602001808311610a7a57829003601f168201915b5050505050815250509350505050919050565b6060600d5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c07575f848152602090819020604080516080810182526004860290920180546001600160a01b031683526001810154838501526002810180548351818702810187018552818152949592949386019392830182828015610b5f57602002820191905f5260205f20905b815481526020019060010190808311610b4b575b50505050508152602001600382018054610b7890613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba490613925565b8015610bef5780601f10610bc657610100808354040283529160200191610bef565b820191905f5260205f20905b815481529060010190602001808311610bd257829003601f168201915b50505050508152505081526020019060010190610adc565b505050509050919050565b600d602052815f5260405f208181548110610c2b575f80fd5b5f9182526020909120600490910201805460018201546003830180546001600160a01b03909316955090935090610c6190613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8d90613925565b8015610cd85780601f10610caf57610100808354040283529160200191610cd8565b820191905f5260205f20905b815481529060010190602001808311610cbb57829003601f168201915b5050505050905083565b610cea6122c9565b610cf38261236d565b610cfd8282612375565b5050565b5f610d0a612436565b505f80516020613e4183398151915290565b600854604051635f5b248b60e01b81526001916001600160a01b031690635f5b248b90610d4f9033908590600401613994565b602060405180830381865afa158015610d6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8e91906139c1565b610dad5760405163bfc6c33760e01b8152336004820152602401610897565b866002805f838152600b6020526040902060039081015460ff1690811115610dd757610dd7613650565b14610e11575f828152600b60205260409081902060030154905163091e2f1760e31b815261089791849160ff909116908490600401613957565b600854604051633af32abf60e01b81523360048201819052916001600160a01b031690633af32abf90602401602060405180830381865afa158015610e58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7c91906139c1565b610ea457604051636f8bf18b60e11b81526001600160a01b0382166004820152602401610897565b5f8a8152600b602052604090206002810154610100900464ffffffffff168814610eea576040516355c56a4560e11b8152600481018c9052336024820152604401610897565b5f5b88811015610f8c576007548a8a83818110610f0957610f09613980565b905060200201351180610f3557506006548a8a83818110610f2c57610f2c613980565b90506020020135105b15610f8457898982818110610f4c57610f4c613980565b6007546006546040516371a6675960e11b81526020909302949094013560048301526024820152604481019290925250606401610897565b600101610eec565b505f5b6002820154610100900464ffffffffff16811015611011575f8c8152600c60205260409020805433919083908110610fc957610fc9613980565b5f9182526020909120600590910201546001600160a01b031603611009576040516301011bf360e71b8152600481018d9052336024820152604401610897565b600101610f8f565b505f5b5f8c8152600d6020526040902054811015611093575f8c8152600d6020526040902080543391908390811061104b5761104b613980565b5f9182526020909120600490910201546001600160a01b03160361108b576040516301011bf360e71b8152600481018d9052336024820152604401610897565b600101611014565b5061109f8b828c61247f565b600d5f8c81526020019081526020015f206040518060800160405280336001600160a01b031681526020018c81526020018b8b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250505090825250604080516020601f8c018190048102820181019092528a815291810191908b908b90819084018382808284375f920182905250939094525050835460018082018655948252602091829020845160049092020180546001600160a01b0319166001600160a01b0390921691909117815583820151948101949094556040830151805193949361119e935060028501929190910190613195565b50606082015160038201906111b39082613a2b565b50506040513391508c907fa1afe65d2285036595be8f15025c4421a593141666e15e5a980e742920646b1e905f90a360028101545f8c8152600d6020526040902054600160301b90910464ffffffffff16148015611255576003828101805460ff1916600183021790555081600101548c5f80516020613e2183398151915260026003604051611244929190613ae5565b60405180910390a36112558c6124f8565b505050505050505050505050565b61126b612912565b6112745f612944565b565b6060600c5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c07575f8481526020908190206040805160a0810182526005860290920180546001600160a01b0316835260018101549383019390935260028301549082015260038201805491929160608401919061130590613925565b80601f016020809104026020016040519081016040528092919081815260200182805461133190613925565b801561137c5780601f106113535761010080835404028352916020019161137c565b820191905f5260205f20905b81548152906001019060200180831161135f57829003601f168201915b5050505050815260200160048201805461139590613925565b80601f01602080910402602001604051908101604052809291908181526020018280546113c190613925565b801561140c5780601f106113e35761010080835404028352916020019161140c565b820191905f5260205f20905b8154815290600101906020018083116113ef57829003601f168201915b505050505081525050815260200190600101906112a8565b600b60209081525f918252604091829020805460018201548451606081018652600284015460ff808216835264ffffffffff6101008304811697840197909752600160301b9091049095169581019590955260038301546004840154600585015460068601546007870180546001600160a01b03909716999598959794909516959294919390929091906114b790613925565b80601f01602080910402602001604051908101604052809291908181526020018280546114e390613925565b801561152e5780601f106115055761010080835404028352916020019161152e565b820191905f5260205f20905b81548152906001019060200180831161151157829003601f168201915b50505050509080600801805461154390613925565b80601f016020809104026020016040519081016040528092919081815260200182805461156f90613925565b80156115ba5780601f10611591576101008083540402835291602001916115ba565b820191905f5260205f20905b81548152906001019060200180831161159d57829003601f168201915b5050505050905089565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f8080806116036020860186613b0e565b60ff166002901b90506001548161161a9190613b3d565b92506002548161162a9190613b3d565b91508161163d6060870160408801613b66565b64ffffffffff1661164e9190613b3d565b6116589084613b81565b6116686040870160208801613b66565b64ffffffffff166116799190613b3d565b5f546116859190613b81565b9350509193909250565b600854604051635f5b248b60e01b81525f916001600160a01b031690635f5b248b906116c19033908590600401613994565b602060405180830381865afa1580156116dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170091906139c1565b61171f5760405163bfc6c33760e01b8152336004820152602401610897565b866001805f838152600b6020526040902060039081015460ff169081111561174957611749613650565b14611783575f828152600b60205260409081902060030154905163091e2f1760e31b815261089791849160ff909116908490600401613957565b5f898152600b60205260408120905b5f8b8152600c6020526040902054811015611811575f8b8152600c602052604090208054339190839081106117c9576117c9613980565b5f9182526020909120600590910201546001600160a01b031603611809576040516301011bf360e71b8152600481018c9052336024820152604401610897565b600101611792565b5061181d8a828b61247f565b5f6040518060a00160405280336001600160a01b031681526020018b81526020015f81526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a90819084018382808284375f9201829052509390945250508d8152600c6020908152604080832080546001808201835591855293839020865160059095020180546001600160a01b0319166001600160a01b03909516949094178455918501519183019190915583015160028201556060830151929350839290915060038201906119289082613a2b565b506080820151600482019061193d9082613a2b565b50506040513391508c907f6c809136a3b8faf74ae9e955b7e7b758baa66bde976764a29fa74a4eb1e3702e905f90a36002820154600160301b900464ffffffffff165f03611993576119933383600401546129b4565b60028201545f8c8152600c602052604090205461010090910464ffffffffff16148015611255576002830154600160301b900464ffffffffff165f03611a15576003838101805460ff19168217905560018085015460405190928f925f80516020613e2183398151915292611a089290613ae5565b60405180910390a3611255565b60038301805460ff1916600290811790915560018085015460405190928f925f80516020613e2183398151915292611a4d9290613ae5565b60405180910390a3505050505050505050505050565b611a6b612912565b816004611a788282613b94565b508190506005611a888282613b94565b50505050565b611a96612912565b5f92909255600155600255565b611aab612912565b6009546001600160a01b031663a9059cbb611ac46115c4565b600e546040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611b0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3391906139c1565b505f600e55565b6004545f90829060ff16611b516020830183613b0e565b60ff161080611b73575060055460ff16611b6e6020830183613b0e565b60ff16115b15611bbe57611b856020820182613b0e565b600480546005546040516371a6675960e11b815260ff948516938101939093529083166024830152919091166044820152606401610897565b600454610100900464ffffffffff16611bdd6040830160208401613b66565b64ffffffffff161080611c135750600554610100900464ffffffffff16611c0a6040830160208401613b66565b64ffffffffff16115b15611c6b57611c286040820160208301613b66565b600480546005546040516371a6675960e11b815264ffffffffff948516938101939093526101009182900484166024840152049091166044820152606401610897565b600454600160301b900464ffffffffff16611c8c6060830160408401613b66565b64ffffffffff161080611cc45750600554600160301b900464ffffffffff16611cbb6060830160408401613b66565b64ffffffffff16115b15611d1e57611cd96060820160408301613b66565b600480546005546040516371a6675960e11b815264ffffffffff94851693810193909352600160301b9182900484166024840152049091166044820152606401610897565b5f805f611d2a866115f2565b92509250925087515f03611d515760405163b4fa3fb360e01b815260040160405180910390fd5b600954604051636eb1769f60e11b81523360048201523060248201525f916001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015611d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc19190613c19565b905083811015611dee576040516311e9ebaf60e31b81526004810182905260248101859052604401610897565b6009546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e589190613c19565b905084811015611e85576040516311e9ebaf60e31b81526004810182905260248101869052604401610897565b5f54600e5f828254611e979190613b81565b90915550506009546040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015611ef0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1491906139c1565b50600a8054600181019091556040518c90339083907f7f371482986a3450b759cc4a079353a8eaa36a650b5eba1fb9c00693026f254a905f90a46040805161012081018252338152602081018e9052908101611f75368c90038c018c613c30565b8152602001600181526020018681526020018581526020015f5481526020018c81526020018b815250600b5f8381526020019081526020015f205f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101556040820151816002015f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548164ffffffffff021916908364ffffffffff1602179055506040820151815f0160066101000a81548164ffffffffff021916908364ffffffffff16021790555050506060820151816003015f6101000a81548160ff0219169083600381111561208557612085613650565b02179055506080820151600482015560a0820151600582015560c0820151600682015560e082015160078201906120bc9082613a2b565b5061010082015160088201906120d29082613a2b565b509050508b815f80516020613e218339815191525f60016040516120f7929190613ae5565b60405180910390a39b9a5050505050505050505050565b612116612912565b6003805467ffffffffffffffff19166001600160401b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561217d5750825b90505f826001600160401b031660011480156121985750303b155b9050811580156121a6575080155b156121c45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156121ee57845460ff60401b1916600160401b1785555b6121f733612aa8565b6122048a8a8a8a8a612ab9565b600880546001600160a01b03808f166001600160a01b03199283161790925560098054928e16929091169190911790556001600a55831561125557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050505050505050565b612294612912565b6001600160a01b0381166122bd57604051631e4fbdf760e01b81525f6004820152602401610897565b6122c681612944565b50565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061234f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123435f80516020613e41833981519152546001600160a01b031690565b6001600160a01b031614155b156112745760405163703e46dd60e11b815260040160405180910390fd5b6122c6612912565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156123cf575060408051601f3d908101601f191682019092526123cc91810190613c19565b60015b6123f757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610897565b5f80516020613e41833981519152811461242757604051632a87526960e21b815260048101829052602401610897565b6124318383612b56565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112745760405163703e46dd60e11b815260040160405180910390fd5b81546040515f916124a991869160078701916001600160a01b039091169033908790602001613ca1565b60408051601f198184030181529190526002840154815160208301209192505f1960ff9091161c11611a88576040516306427aeb60e01b81526004810185905260248101839052604401610897565b5f818152600b60205260408120905b6002820154610100900464ffffffffff168110156127545760028201545f90600160301b900464ffffffffff166001600160401b0381111561254b5761254b613424565b604051908082528060200260200182016040528015612574578160200160208202803683370190505b5090505f5b6002840154600160301b900464ffffffffff16811015612600575f858152600d602052604090208054829081106125b2576125b2613980565b905f5260205f20906004020160020183815481106125d2576125d2613980565b905f5260205f2001548282815181106125ed576125ed613980565b6020908102919091010152600101612579565b505f8061260c83612bab565b915091505f805f5b6002880154600160301b900464ffffffffff168110156126f2575f670de0b6b3a764000087838151811061264a5761264a613980565b602002602001015161265c9190613b3d565b9050846126698783613b81565b10158015612680575061267c8686613b81565b8111155b156126e95761268f8185613b81565b93508261269b81613d6a565b9350506126e9600d5f8c81526020019081526020015f2083815481106126c3576126c3613980565b5f91825260209091206004909102015460058b01546001600160a01b03909116906129b4565b50600101612614565b505f8115612709576127048284613d96565b61270b565b5f5b5f8a8152600c60205260409020805491925082918990811061272f5761272f613980565b5f91825260209091206002600590920201015550506001909401935061250792505050565b5060028101545f90610100900464ffffffffff166001600160401b0381111561277f5761277f613424565b6040519080825280602002602001820160405280156127a8578160200160208202803683370190505b5090505f5b6002830154610100900464ffffffffff16811015612819575f848152600c602052604090208054829081106127e4576127e4613980565b905f5260205f2090600502016002015482828151811061280657612806613980565b60209081029190910101526001016127ad565b505f8061282583612bab565b915091505f5b6002850154610100900464ffffffffff1681101561290a57600354829061285c9085906001600160401b0316613b3d565b670de0b6b3a764000086848151811061287757612877613980565b60200260200101516128899190613b3d565b6128939190613b81565b106128e7575f868152600c6020526040902080546128e29190839081106128bc576128bc613980565b5f91825260209091206005909102015460048701546001600160a01b03909116906129b4565b612902565b8460040154600e5f8282546128fc9190613b81565b90915550505b60010161282b565b505050505050565b3361291b6115c4565b6001600160a01b0316146112745760405163118cdaa760e01b8152336004820152602401610897565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b600954604051636eb1769f60e11b81523060048201526001600160a01b0384811660248301529091169063095ea7b39084908490849063dd62ed3e90604401602060405180830381865afa158015612a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a329190613c19565b612a3c9190613b81565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015612a84573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243191906139c1565b612ab0612c09565b6122c681612c52565b612ac1612c09565b60038054600167ffffffffffffffff19909116811790915560408051606080820183528382526020808301949094525f91830191909152600480546101016affffffffffffffffffffff199182161790915582519182018352600a80835293820184905291019190915260058054909116660a000000000a0a179055612b48858585611a8e565b600691909155600755505050565b612b5f82612c5a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612ba3576124318282612cbd565b610cfd612d31565b5f805f80612bb885612d50565b915091508092505f80612bd384670de0b6b3a7640000612e23565b9150915081612bf557604051630e9e2ceb60e11b815260040160405180910390fd5b612bfe81612e6a565b955050505050915091565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661127457604051631afcd79f60e31b815260040160405180910390fd5b612294612c09565b806001600160a01b03163b5f03612c8f57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610897565b5f80516020613e4183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051612cd99190613db5565b5f60405180830381855af49150503d805f8114612d11576040519150601f19603f3d011682016040523d82523d5f602084013e612d16565b606091505b5091509150612d26858383612fbd565b925050505b92915050565b34156112745760405163b398979f60e01b815260040160405180910390fd5b5f80612d5b8361301c565b90505f805b8451811015612dd5575f670de0b6b3a7640000868381518110612d8557612d85613980565b6020026020010151612d979190613b3d565b90505f612da48583613dcb565b9050612dbf612db38280613df1565b60ff81901d9081011890565b612dc99085613b81565b93505050600101612d60565b505f80612deb8651670de0b6b3a7640000612e23565b9150915081612e0d57604051630e9e2ceb60e11b815260040160405180910390fd5b612e198360018361308c565b9450505050915091565b5f80835f03612e375750600190505f612e63565b83830283858281612e4a57612e4a613d82565b0414612e5c575f809250925050612e63565b6001925090505b9250929050565b5f60018211612e77575090565b816001600160801b8210612e905760809190911c9060401b5b600160401b8210612ea65760409190911c9060201b5b6401000000008210612ebd5760209190911c9060101b5b620100008210612ed25760109190911c9060081b5b6101008210612ee65760089190911c9060041b5b60108210612ef95760049190911c9060021b5b60048210612f055760011b5b600302600190811c90818581612f1d57612f1d613d82565b048201901c90506001818581612f3557612f35613d82565b048201901c90506001818581612f4d57612f4d613d82565b048201901c90506001818581612f6557612f65613d82565b048201901c90506001818581612f7d57612f7d613d82565b048201901c90506001818581612f9557612f95613d82565b048201901c9050612fb4818581612fae57612fae613d82565b04821190565b90039392505050565b606082612fd257612fcd82613142565b613015565b8151158015612fe957506001600160a01b0384163b155b1561301257604051639996b31560e01b81526001600160a01b0385166004820152602401610897565b50805b9392505050565b5f80805b835181101561307b575f8061304e86848151811061304057613040613980565b60200260200101518561316b565b915091508161307057604051630e9e2ceb60e11b815260040160405180910390fd5b925050600101613020565b5061301581670de0b6b3a764000085515b5f838302815f1985870982811083820303915050805f036130c0578382816130b6576130b6613d82565b0492505050613015565b8084116130d7576130d76003851502601118613184565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b8051156131525780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8083830184811015612e5c575f809250925050612e63565b634e487b715f52806020526024601cfd5b828054828255905f5260205f209081019282156131ce579160200282015b828111156131ce5782518255916020019190600101906131b3565b506131da9291506131de565b5090565b5b808211156131da575f81556001016131df565b5f8060408385031215613203575f80fd5b50508035926020909101359150565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b038616815284602082015283604082015260a060608201525f61326c60a0830185613212565b828103608084015261327e8185613212565b98975050505050505050565b5f6020828403121561329a575f80fd5b5035919050565b60018060a01b03815116825260208101516020830152604081015160408301525f606082015160a060608501526132db60a0850182613212565b905060808301518482036080860152612d268282613212565b602081525f61301560208301846132a1565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133ce57868503603f19018452815180516001600160a01b031686526020808201518188015260408083015160809189018290528051918901829052909101905f9060a08901905b8083101561339b5783518252602082019150602084019350600183019250613378565b506060840151935088810360608a01526133b58185613212565b985050506020958601959390930192505060010161332c565b50929695505050505050565b60018060a01b0384168152826020820152606060408201525f6134006060830184613212565b95945050505050565b80356001600160a01b038116811461341f575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613447575f80fd5b81356001600160401b0381111561346057613460613424565b604051601f8201601f19908116603f011681016001600160401b038111828210171561348e5761348e613424565b6040528181528382016020018510156134a5575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156134d2575f80fd5b6134db83613409565b915060208301356001600160401b038111156134f5575f80fd5b61350185828601613438565b9150509250929050565b5f8083601f84011261351b575f80fd5b5081356001600160401b03811115613531575f80fd5b602083019150836020828501011115612e63575f80fd5b5f805f805f806080878903121561355d575f80fd5b863595506020870135945060408701356001600160401b03811115613580575f80fd5b8701601f81018913613590575f80fd5b80356001600160401b038111156135a5575f80fd5b8960208260051b84010111156135b9575f80fd5b6020919091019450925060608701356001600160401b038111156135db575f80fd5b6135e789828a0161350b565b979a9699509497509295939492505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133ce57603f1987860301845261363b8583516132a1565b9450602093840193919091019060010161361f565b634e487b7160e01b5f52602160045260245ffd5b6004811061367457613674613650565b9052565b60018060a01b038a16815288602082015260ff885116604082015264ffffffffff602089015116606082015264ffffffffff60408901511660808201526136c260a0820188613664565b8560c08201528460e0820152836101008201526101606101208201525f6136ed610160830185613212565b8281036101408401526137008185613212565b9c9b505050505050505050505050565b602081525f6130156020830184613212565b5f60608284031215613732575f80fd5b50919050565b5f60608284031215613748575f80fd5b6130158383613722565b5f805f805f8060808789031215613767575f80fd5b863595506020870135945060408701356001600160401b0381111561378a575f80fd5b61379689828a0161350b565b90955093505060608701356001600160401b038111156135db575f80fd5b5f8060c083850312156137c5575f80fd5b6137cf8484613722565b91506137de8460608501613722565b90509250929050565b5f805f606084860312156137f9575f80fd5b505081359360208301359350604090920135919050565b5f805f8060c08587031215613823575f80fd5b8435935060208501356001600160401b0381111561383f575f80fd5b61384b87828801613438565b93505060408501356001600160401b03811115613866575f80fd5b61387287828801613438565b9250506138828660608701613722565b905092959194509250565b5f6020828403121561389d575f80fd5b81356001600160401b0381168114613015575f80fd5b5f805f805f805f60e0888a0312156138c9575f80fd5b6138d288613409565b96506138e060208901613409565b96999698505050506040850135946060810135946080820135945060a0820135935060c0909101359150565b5f6020828403121561391c575f80fd5b61301582613409565b600181811c9082168061393957607f821691505b60208210810361373257634e487b7160e01b5f52602260045260245ffd5b8381526060810161396b6020830185613664565b6139786040830184613664565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b038316815260408101600283106139b4576139b4613650565b8260208301529392505050565b5f602082840312156139d1575f80fd5b81518015158114613015575f80fd5b601f82111561243157805f5260205f20601f840160051c81016020851015613a055750805b601f840160051c820191505b81811015613a24575f8155600101613a11565b5050505050565b81516001600160401b03811115613a4457613a44613424565b613a5881613a528454613925565b846139e0565b6020601f821160018114613a8a575f8315613a735750848201515b5f19600385901b1c1916600184901b178455613a24565b5f84815260208120601f198516915b82811015613ab95787850151825560209485019460019092019101613a99565b5084821015613ad657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60408101613af38285613664565b6130156020830184613664565b60ff811681146122c6575f80fd5b5f60208284031215613b1e575f80fd5b813561301581613b00565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417612d2b57612d2b613b29565b64ffffffffff811681146122c6575f80fd5b5f60208284031215613b76575f80fd5b813561301581613b54565b80820180821115612d2b57612d2b613b29565b8135613b9f81613b00565b60ff8116905081548160ff1982161783556020840135613bbe81613b54565b65ffffffffff008160081b169050808365ffffffffffff198416171784556040850135613bea81613b54565b6affffffffff0000000000008160301b16846affffffffffffffffffffff198516178317178555505050505050565b5f60208284031215613c29575f80fd5b5051919050565b5f6060828403128015613c41575f80fd5b50604051606081016001600160401b0381118282101715613c6457613c64613424565b6040528235613c7281613b00565b81526020830135613c8281613b54565b60208201526040830135613c9581613b54565b60408201529392505050565b8581525f808654613cb181613925565b600182168015613cc85760018114613ce357613d19565b60ff1983166020870152602082151583028701019350613d19565b895f5260205f205f5b83811015613d0e5781546020828a010152600182019150602081019050613cec565b505060208287010193505b505050613d37818760601b6bffffffffffffffffffffffff19169052565b613d55601482018660601b6bffffffffffffffffffffffff19169052565b60288101939093525050604801949350505050565b5f60018201613d7b57613d7b613b29565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f82613db057634e487b7160e01b5f52601260045260245ffd5b500490565b5f82518060208501845e5f920191825250919050565b8181035f831280158383131683831282161715613dea57613dea613b29565b5092915050565b8082025f8212600160ff1b84141615613e0c57613e0c613b29565b8181058314821517612d2b57612d2b613b2956fe1c0a5e4b371d60717068c91e93b5e94c91d4c6d6c3fab36082a78f987e5a69f5360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220ea436402179790a4a9250d2b1104e8d30c1c11b00b6a847c700996129c68e59064736f6c634300081a0033","sourceMap":"656:19220:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3368:58;;;;;;;;;;-1:-1:-1;3368:58:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;1211:28:61;;;;;;;;;;;;;;;;;;;1428:25:66;;;1416:2;1401:18;1211:28:61;1282:177:66;1817:23:61;;;;;;;;;;;;;;;;1710:48;;;;;;;;;;-1:-1:-1;1710:48:61;;;;;;;;;;;;;;;-1:-1:-1;;;1710:48:61;;;;;;;;;1688:4:66;1676:17;;;1658:36;;1742:12;1730:25;;;1725:2;1710:18;;1703:53;1792:25;;1772:18;;;1765:53;1646:2;1631:18;1710:48:61;1464:360:66;1009:26:61;;;;;;;;;;;;;;;;1608:48;;;;;;;;;;-1:-1:-1;1608:48:61;;;;;;;;;;;;;;;-1:-1:-1;;;1608:48:61;;;;;19053:821:60;;;;;;;;;;-1:-1:-1;19053:821:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;18269:129::-;;;;;;;;;;-1:-1:-1;18269:129:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3485:62::-;;;;;;;;;;-1:-1:-1;3485:62:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;4152:214:21:-;;;;;;:::i;:::-;;:::i;:::-;;3699:134;;;;;;;;;;;;;:::i;2983:21:60:-;;;;;;;;;;-1:-1:-1;2983:21:60;;;;-1:-1:-1;;;;;2983:21:60;;;;;;-1:-1:-1;;;;;6798:32:66;;;6780:51;;6768:2;6753:18;2983:21:60;6619:218:66;11914:2083:60;;;;;;;;;;-1:-1:-1;11914:2083:60;;;;;:::i;:::-;;:::i;3155:101:19:-;;;;;;;;;;;;;:::i;17962:123:60:-;;;;;;;;;;-1:-1:-1;17962:123:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2889:33::-;;;;;;;;;;-1:-1:-1;2889:33:60;;;;-1:-1:-1;;;;;2889:33:60;;;3266:54;;;;;;;;;;-1:-1:-1;3266:54:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;2441:144:19:-;;;;;;;;;;;;;:::i;1898:23:61:-;;;;;;;;;;;;;;;;1819:58:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;5050:467:61:-;;;;;;;;;;-1:-1:-1;5050:467:61;;;;;:::i;:::-;;:::i;:::-;;;;11994:25:66;;;12050:2;12035:18;;12028:34;;;;12078:18;;;12071:34;11982:2;11967:18;5050:467:61;11792:319:66;9529:1880:60;;;;;;;;;;-1:-1:-1;9529:1880:60;;;;;:::i;:::-;;:::i;5734:229:61:-;;;;;;;;;;-1:-1:-1;5734:229:61;;;;;:::i;:::-;;:::i;1514:39::-;;;;;;;;;;-1:-1:-1;1514:39:61;;;;-1:-1:-1;;;;;1514:39:61;;;;;;-1:-1:-1;;;;;13666:31:66;;;13648:50;;13636:2;13621:18;1514:39:61;13504:200:66;4495:227:61;;;;;;;;;;-1:-1:-1;4495:227:61;;;;;:::i;:::-;;:::i;17640:144:60:-;;;;;;;;;;;;;:::i;3652:33::-;;;;;;;;;;;;;;;;7239:1728;;;;;;;;;;-1:-1:-1;7239:1728:60;;;;;:::i;:::-;;:::i;6158:161:61:-;;;;;;;;;;-1:-1:-1;6158:161:61;;;;;:::i;:::-;;:::i;6110:513:60:-;;;;;;;;;;-1:-1:-1;6110:513:60;;;;;:::i;:::-;;:::i;3405:215:19:-;;;;;;;;;;-1:-1:-1;3405:215:19;;;;;:::i;:::-;;:::i;1415:28:61:-;;;;;;;;;;;;;;;;3194:25:60;;;;;;;;;;;;;;;;3368:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3368:58:60;;;;-1:-1:-1;3368:58:60;;-1:-1:-1;3368:58:60;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19053:821::-;19117:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19117:19:60;19148:36;19187:17;;;:9;:17;;;;;;;;19260:8;:16;;;;;;19287:34;19260:23;;;;;;:61;;;;;;;;:::i;:::-;;19256:185;;19370:16;;;;:8;:16;;;;;;;:23;;;;;19344:86;;-1:-1:-1;;;19344:86:60;;;;19362:6;;19370:23;;;;;19344:86;;;:::i;:::-;;;;;;;;19256:185;19512:27;19542:13;19556:1;19542:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;19591:12;;;;19542:16;;-1:-1:-1;19630:1:60;19613:231;19637:20;;19633:24;;19613:231;;;19707:12;19682:13;19696:1;19682:16;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;:37;19678:156;;;19754:13;19768:1;19754:16;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;19739:37;;19803:13;19817:1;19803:16;;;;;;;;:::i;:::-;;;;;;;;;;;19794:25;;19678:156;19659:3;;19613:231;;;-1:-1:-1;19854:13:60;;;;;;;;;;-1:-1:-1;;;;;19854:13:60;;;;;;;;;;;;;;;;;;;;;;;;;;;19861:6;;19854:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19053:821;;;:::o;18269:129::-;18330:23;18372:11;:19;18384:6;18372:19;;;;;;;;;;;18365:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18365:26:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18269:129;;;:::o;3485:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3485:62:60;;;;-1:-1:-1;3485:62:60;;-1:-1:-1;3485:62:60;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4152:214:21:-;2655:13;:11;:13::i;:::-;4267:36:::1;4285:17;4267;:36::i;:::-;4313:46;4335:17;4354:4;4313:21;:46::i;:::-;4152:214:::0;;:::o;3699:134::-;3768:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3699:134:21;:::o;11914:2083:60:-;4001:8;;:39;;-1:-1:-1;;;4001:39:60;;12053:23;;-1:-1:-1;;;;;4001:8:60;;:21;;:39;;4023:10;;12053:23;;4001:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3996:181;;4141:25;;-1:-1:-1;;;4141:25:60;;4155:10;4141:25;;;6780:51:66;6753:18;;4141:25:60;6619:218:66;3996:181:60;12099:6;12107:28:::1;::::0;4331:16:::1;::::0;;;:8:::1;:16;::::0;;;;:23:::1;::::0;;::::1;::::0;::::1;;::::0;:33;::::1;;;;;;:::i;:::-;;4327:129;;4413:16;::::0;;;:8:::1;:16;::::0;;;;;;:23:::1;;::::0;4387:58;;-1:-1:-1;;;4387:58:60;;::::1;::::0;4405:6;;4413:23:::1;::::0;;::::1;::::0;4438:6;;4387:58:::1;;;:::i;4327:129::-;4536:8:::2;::::0;:31:::2;::::0;-1:-1:-1;;;4536:31:60;;12161:10:::2;4536:31;::::0;::::2;6780:51:66::0;;;12161:10:60;-1:-1:-1;;;;;4536:8:60::2;::::0;:22:::2;::::0;6753:18:66;;4536:31:60::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4531:103;;4590:33;::::0;-1:-1:-1;;;4590:33:60;;-1:-1:-1;;;;;6798:32:66;;4590:33:60::2;::::0;::::2;6780:51:66::0;6753:18;;4590:33:60::2;6619:218:66::0;4531:103:60::2;12187:24:::3;12214:16:::0;;;:8:::3;:16;::::0;;;;12317:15:::3;::::0;::::3;:30:::0;::::3;::::0;::::3;;;12300:47:::0;::::3;12296:122;;12370:37;::::0;-1:-1:-1;;;12370:37:60;;::::3;::::0;::::3;18007:25:66::0;;;12396:10:60::3;18048:18:66::0;;;18041:60;17980:18;;12370:37:60::3;17833:274:66::0;12296:122:60::3;12479:9;12474:210;12494:17:::0;;::::3;12474:210;;;12548:8;;12536:6;;12543:1;12536:9;;;;;;;:::i;:::-;;;;;;;:20;:44;;;;12572:8;;12560:6;;12567:1;12560:9;;;;;;;:::i;:::-;;;;;;;:20;12536:44;12532:142;;;12629:6;;12636:1;12629:9;;;;;;;:::i;:::-;12640:8;::::0;12650::::3;::::0;12607:52:::3;::::0;-1:-1:-1;;;12607:52:60;;12629:9:::3;::::0;;::::3;::::0;;;::::3;;12607:52;::::0;::::3;11994:25:66::0;12035:18;;;12028:34;12078:18;;;12071:34;;;;-1:-1:-1;11967:18:66;;12607:52:60::3;11792:319:66::0;12532:142:60::3;12513:3;;12474:210;;;;12761:9;12756:211;12780:15;::::0;::::3;:30:::0;::::3;::::0;::::3;;;12776:34:::0;::::3;12756:211;;;12835:17;::::0;;;:9:::3;:17;::::0;;;;:20;;12869:10:::3;::::0;12835:17;12853:1;;12835:20;::::3;;;;;:::i;:::-;;::::0;;;::::3;::::0;;;::::3;::::0;;::::3;;:30:::0;-1:-1:-1;;;;;12835:30:60::3;:44:::0;12831:126:::3;;12906:36;::::0;-1:-1:-1;;;12906:36:60;;::::3;::::0;::::3;18007:25:66::0;;;12931:10:60::3;18048:18:66::0;;;18041:60;17980:18;;12906:36:60::3;17833:274:66::0;12831:126:60::3;12812:3;;12756:211;;;;13037:9;13032:209;13056:19;::::0;;;:11:::3;:19;::::0;;;;:26;13052:30;::::3;13032:209;;;13107:19;::::0;;;:11:::3;:19;::::0;;;;:22;;13143:10:::3;::::0;13107:19;13127:1;;13107:22;::::3;;;;;:::i;:::-;;::::0;;;::::3;::::0;;;::::3;::::0;;::::3;;:32:::0;-1:-1:-1;;;;;13107:32:60::3;:46:::0;13103:128:::3;;13180:36;::::0;-1:-1:-1;;;13180:36:60;;::::3;::::0;::::3;18007:25:66::0;;;13205:10:60::3;18048:18:66::0;;;18041:60;17980:18;;13180:36:60::3;17833:274:66::0;13103:128:60::3;13084:3;;13032:209;;;;13290:37;13307:6;13315:4;13321:5;13290:16;:37::i;:::-;13374:11;:19;13386:6;13374:19;;;;;;;;;;;13412:89;;;;;;;;13489:10;-1:-1:-1::0;;;;;13412:89:60::3;;;;;13451:5;13412:89;;;;13436:6;;13412:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;;;13412:89:60;;;-1:-1:-1;13412:89:60::3;::::0;;::::3;;::::0;::::3;::::0;;::::3;::::0;::::3;::::0;;;;;;;;;;;;::::3;::::0;;13468:8;;;;;;13412:89;::::3;13468:8:::0;;;;13412:89;::::3;;::::0;::::3;::::0;;;-1:-1:-1;13412:89:60;;;;-1:-1:-1;;13374:137:60;;::::3;::::0;;::::3;::::0;;;;;::::3;::::0;;;;;;::::3;::::0;;::::3;;::::0;;-1:-1:-1;;;;;;13374:137:60::3;-1:-1:-1::0;;;;;13374:137:60;;::::3;::::0;;;::::3;::::0;;;;::::3;::::0;;;::::3;::::0;;;;::::3;::::0;::::3;::::0;;;;;;::::3;::::0;-1:-1:-1;13374:137:60::3;::::0;::::3;::::0;;;;::::3;::::0;::::3;:::i;:::-;-1:-1:-1::0;13374:137:60::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;;::::3;:::i;:::-;-1:-1:-1::0;;13560:30:60::3;::::0;13579:10:::3;::::0;-1:-1:-1;13571:6:60;;13560:30:::3;::::0;;;::::3;13686:15;::::0;::::3;:30:::0;13637:16:::3;13656:19:::0;;;:11:::3;:19;::::0;;;;:26;-1:-1:-1;;;13686:30:60;;::::3;;;13656:60;13726:265:::0;::::3;;;13771:20;13757:11:::0;;::::3;:34:::0;;-1:-1:-1;;13757:34:60::3;::::0;13771:20;13757:34:::3;;;;;13831:4;:13;;;13823:6;-1:-1:-1::0;;;;;;;;;;;13846:28:60::3;13876:20;13810:87;;;;;;;:::i;:::-;;;;;;;;13954:26;13973:6;13954:18;:26::i;:::-;12177:1820;;4465:1:::2;4186::::1;;11914:2083:::0;;;;;;;:::o;3155:101:19:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;17962:123:60:-;18021:21;18061:9;:17;18071:6;18061:17;;;;;;;;;;;18054:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18054:24:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3266:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3266:54:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3266:54:60;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2441:144:19:-;1313:22;2570:8;-1:-1:-1;;;;;2570:8:19;;2441:144::o;5050:467:61:-;5156:16;;;;5261:21;;;;:10;:21;:::i;:::-;5253:30;;5248:1;:35;;5232:52;;5316:13;;5309:4;:20;;;;:::i;:::-;5294:35;;5361:13;;5354:4;:20;;;;:::i;:::-;5339:35;-1:-1:-1;5339:35:61;5467:25;;;;;;;;:::i;:::-;:40;;;;;;:::i;:::-;5451:57;;:12;:57;:::i;:::-;5422:25;;;;;;;;:::i;:::-;:87;;;;;;:::i;:::-;5407:11;;:103;;;;:::i;:::-;5384:126;;5222:295;5050:467;;;;;:::o;9529:1880:60:-;4001:8;;:39;;-1:-1:-1;;;4001:39:60;;9663:23;;-1:-1:-1;;;;;4001:8:60;;:21;;:39;;4023:10;;9663:23;;4001:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3996:181;;4141:25;;-1:-1:-1;;;4141:25:60;;4155:10;4141:25;;;6780:51:66;6753:18;;4141:25:60;6619:218:66;3996:181:60;9709:6;9717:28:::1;::::0;4331:16:::1;::::0;;;:8:::1;:16;::::0;;;;:23:::1;::::0;;::::1;::::0;::::1;;::::0;:33;::::1;;;;;;:::i;:::-;;4327:129;;4413:16;::::0;;;:8:::1;:16;::::0;;;;;;:23:::1;;::::0;4387:58;;-1:-1:-1;;;4387:58:60;;::::1;::::0;4405:6;;4413:23:::1;::::0;;::::1;::::0;4438:6;;4387:58:::1;;;:::i;4327:129::-;9761:24:::2;9788:16:::0;;;:8:::2;:16;::::0;;;;;9870:205:::2;9894:17;::::0;;;:9:::2;:17;::::0;;;;:24;9890:28;::::2;9870:205;;;9943:17;::::0;;;:9:::2;:17;::::0;;;;:20;;9977:10:::2;::::0;9943:17;9961:1;;9943:20;::::2;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;::::2;::::0;;::::2;;:30:::0;-1:-1:-1;;;;;9943:30:60::2;:44:::0;9939:126:::2;;10014:36;::::0;-1:-1:-1;;;10014:36:60;;::::2;::::0;::::2;18007:25:66::0;;;10039:10:60::2;18048:18:66::0;;;18041:60;17980:18;;10014:36:60::2;17833:274:66::0;9939:126:60::2;9920:3;;9870:205;;;;10124:37;10141:6;10149:4;10155:5;10124:16;:37::i;:::-;10197:28;10240:97;;;;;;;;10265:10;-1:-1:-1::0;;;;;10240:97:60::2;;;;;10284:5;10240:97;;;;10334:1;10240:97;;;;10299:6;;10240:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;;;10240:97:60;;;-1:-1:-1;10240:97:60::2;::::0;;::::2;;::::0;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;;;;::::2;::::0;;10317:8;;;;;;10240:97;::::2;10317:8:::0;;;;10240:97;::::2;;::::0;::::2;::::0;;;-1:-1:-1;10240:97:60;;;;-1:-1:-1;;10347:17:60;;;:9:::2;:17;::::0;;;;;;;:32;;::::2;::::0;;::::2;::::0;;;;;;;;;;;::::2;::::0;;::::2;;::::0;;-1:-1:-1;;;;;;10347:32:60::2;-1:-1:-1::0;;;;;10347:32:60;;::::2;::::0;;;::::2;::::0;;;;::::2;::::0;;;::::2;::::0;;;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;-1:-1:-1;10347:32:60;;;;-1:-1:-1;10347:32:60::2;::::0;::::2;::::0;::::2;::::0;;::::2;:::i;:::-;-1:-1:-1::0;10347:32:60::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;:::i;:::-;-1:-1:-1::0;;10427:28:60::2;::::0;10444:10:::2;::::0;-1:-1:-1;10436:6:60;;10427:28:::2;::::0;;;::::2;10537:15;::::0;::::2;:30:::0;-1:-1:-1;;;10537:30:60;::::2;;;;:35:::0;10533:115:::2;;10588:49;10607:10;10619:4;:17;;;10588:18;:49::i;:::-;10788:15;::::0;::::2;:30:::0;10733:16:::2;10752:17:::0;;;:9:::2;:17;::::0;;;;:24;10788:30:::2;::::0;;::::2;;;10752:67;10829:574:::0;::::2;;;10864:15;::::0;::::2;:30:::0;-1:-1:-1;;;10864:30:60;::::2;;;;:35:::0;10860:533:::2;;10995:20;10981:11:::0;;::::2;:34:::0;;-1:-1:-1;;10981:34:60::2;::::0;::::2;::::0;;;11059:13;;::::2;::::0;11038:87:::2;::::0;11059:13;;11051:6;;-1:-1:-1;;;;;;;;;;;11038:87:60;::::2;::::0;10995:20;11038:87:::2;:::i;:::-;;;;;;;;10860:533;;;11218:11;::::0;::::2;:42:::0;;-1:-1:-1;;11218:42:60::2;11232:28;11218:42:::0;;::::2;::::0;;;;11304:13;;::::2;::::0;11283:95:::2;::::0;11304:13;;11296:6;;-1:-1:-1;;;;;;;;;;;11283:95:60;::::2;::::0;11232:28;11283:95:::2;:::i;:::-;;;;;;;;9751:1658;;;4186:1:::1;;9529:1880:::0;;;;;;;:::o;5734:229:61:-;2334:13:19;:11;:13::i;:::-;5910:8:61;5890:17:::1;:28;5910:8:::0;5890:17;:28:::1;:::i;:::-;-1:-1:-1::0;5948:8:61;;-1:-1:-1;5928:17:61::1;:28;5948:8:::0;5928:17;:28:::1;:::i;:::-;-1:-1:-1::0;;;;5734:229:61:o;4495:227::-;2334:13:19;:11;:13::i;:::-;4609:11:61::1;:26:::0;;;;4645:13:::1;:30:::0;4685:13:::1;:30:::0;4495:227::o;17640:144:60:-;2334:13:19;:11;:13::i;:::-;17699:8:60::1;::::0;-1:-1:-1;;;;;17699:8:60::1;:17;17717:7;:5;:7::i;:::-;17726:18;::::0;17699:46:::1;::::0;-1:-1:-1;;;;;;17699:46:60::1;::::0;;;;;;-1:-1:-1;;;;;22750:32:66;;;17699:46:60::1;::::0;::::1;22732:51:66::0;22799:18;;;22792:34;22705:18;;17699:46:60::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17776:1:60::1;17755:18;:22:::0;17640:144::o;7239:1728::-;3181:17:61;:28;7446:7:60;;7425:10;;3181:28:61;;3157:21;;;;7425:10:60;3157:21:61;:::i;:::-;:52;;;:108;;;-1:-1:-1;3237:17:61;:28;;;3213:21;;;;:10;:21;:::i;:::-;:52;;;3157:108;3140:302;;;3336:21;;;;:10;:21;:::i;:::-;3359:17;:28;;3389:17;:28;3297:134;;-1:-1:-1;;;3297:134:61;;3359:28;23051:17:66;;;3297:134:61;;;23033:36:66;;;;3359:28:61;;;23085:18:66;;;23078:45;3389:28:61;;;;23139:18:66;;;23132:45;23006:18;;3297:134:61;22837:346:66;3140:302:61;3529:17;:32;;;;;;3501:25;;;;;;;;:::i;:::-;:60;;;:140;;;-1:-1:-1;3609:17:61;:32;;;;;;3581:25;;;;;;;;:::i;:::-;:60;;;3501:140;3484:346;;;3712:25;;;;;;;;:::i;:::-;3739:17;:32;;3773:17;:32;3673:146;;-1:-1:-1;;;3673:146:61;;3739:32;23405:25:66;;;3673:146:61;;;23387:44:66;;;;3739:32:61;;;;;;;23447:18:66;;;23440:53;3773:32:61;;;;23509:18:66;;;23502:53;23360:18;;3673:146:61;23188:373:66;3484:346:61;3917:17;:32;-1:-1:-1;;;3917:32:61;;;;3889:25;;;;;;;;:::i;:::-;:60;;;:140;;;-1:-1:-1;3997:17:61;:32;-1:-1:-1;;;3997:32:61;;;;3969:25;;;;;;;;:::i;:::-;:60;;;3889:140;3872:346;;;4100:25;;;;;;;;:::i;:::-;4127:17;:32;;4161:17;:32;4061:146;;-1:-1:-1;;;4061:146:61;;4127:32;23405:25:66;;;4061:146:61;;;23387:44:66;;;;-1:-1:-1;;;4127:32:61;;;;;;23447:18:66;;;23440:53;4161:32:61;;;;23509:18:66;;;23502:53;23360:18;;4061:146:61;23188:373:66;3872:346:61;7466:16:60::1;7484:20:::0;7506::::1;7530:18;7537:10;7530:6;:18::i;:::-;7465:83;;;;;;7563:5;:12;7579:1;7563:17:::0;7559:69:::1;;7603:14;;-1:-1:-1::0;;;7603:14:60::1;;;;;;;;;;;7559:69;7698:8;::::0;:45:::1;::::0;-1:-1:-1;;;7698:45:60;;7717:10:::1;7698:45;::::0;::::1;23740:51:66::0;7737:4:60::1;23807:18:66::0;;;23800:60;7678:17:60::1;::::0;-1:-1:-1;;;;;7698:8:60::1;::::0;:18:::1;::::0;23713::66;;7698:45:60::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7678:65;;7769:8;7757:9;:20;7753:95;;;7800:37;::::0;-1:-1:-1;;;7800:37:60;;::::1;::::0;::::1;24234:25:66::0;;;24275:18;;;24268:34;;;24207:18;;7800:37:60::1;24060:248:66::0;7753:95:60::1;7918:8;::::0;:30:::1;::::0;-1:-1:-1;;;7918:30:60;;7937:10:::1;7918:30;::::0;::::1;6780:51:66::0;7900:15:60::1;::::0;-1:-1:-1;;;;;7918:8:60::1;::::0;:18:::1;::::0;6753::66;;7918:30:60::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7900:48;;7972:8;7962:7;:18;7958:91;;;8003:35;::::0;-1:-1:-1;;;8003:35:60;;::::1;::::0;::::1;24234:25:66::0;;;24275:18;;;24268:34;;;24207:18;;8003:35:60::1;24060:248:66::0;7958:91:60::1;8108:11;;8086:18;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8129:8:60::1;::::0;:58:::1;::::0;-1:-1:-1;;;8129:58:60;;8151:10:::1;8129:58;::::0;::::1;24515:51:66::0;8171:4:60::1;24582:18:66::0;;;24575:60;24651:18;;;24644:34;;;-1:-1:-1;;;;;8129:8:60;;::::1;::::0;:21:::1;::::0;24488:18:66;;8129:58:60::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8290:10:60::1;::::0;;8334:12:::1;::::0;::::1;::::0;;;8371:37:::1;::::0;8399:8;;8387:10:::1;::::0;8290;;8371:37:::1;::::0;8273:14:::1;::::0;8371:37:::1;8496:348;::::0;;::::1;::::0;::::1;::::0;;8533:10:::1;8496:348:::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;::::0;;::::1;::::0;::::1;8627:10:::0;8496:348:::1;:::i;:::-;::::0;;::::1;;8659:28;8496:348;;;;8715:12;8496:348;;;;8755:12;8496:348;;;;8794:11;;8496:348;;;;8596:5;8496:348;;;;8827:6;8496:348;;::::0;8477:8:::1;:16;8486:6;8477:16;;;;;;;;;;;:367;;;;;;;;;;;;;-1:-1:-1::0;;;;;8477:367:60::1;;;;;-1:-1:-1::0;;;;;8477:367:60::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;8477:367:60::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;8477:367:60::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;;;;;8880:8;8872:6;-1:-1:-1::0;;;;;;;;;;;8890:15:60::1;8907:28;8859:77;;;;;;;:::i;:::-;;;;;;;;8954:6:::0;7239:1728;-1:-1:-1;;;;;;;;;;;7239:1728:60:o;6158:161:61:-;2334:13:19;:11;:13::i;:::-;6258:25:61::1;:54:::0;;-1:-1:-1;;6258:54:61::1;-1:-1:-1::0;;;;;6258:54:61;;;::::1;::::0;;;::::1;::::0;;6158:161::o;6110:513:60:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;6373:26:60::1;6388:10;6373:14;:26::i;:::-;6409:91;6433:12;6447:14;6463;6479:9;6490;6409:23;:91::i;:::-;6510:8;:45:::0;;-1:-1:-1;;;;;6510:45:60;;::::1;-1:-1:-1::0;;;;;;6510:45:60;;::::1;;::::0;;;6565:8:::1;:27:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;6510:45;6602:10:::1;:14:::0;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13648:50:66;;5142:14:20;;13636:2:66;13621:18;5142:14:20;;;;;;;4092:1081;;;;;6110:513:60;;;;;;;:::o;3405:215:19:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:19;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:19;;3562:1:::1;3534:31;::::0;::::1;6780:51:66::0;6753:18;;3534:31:19::1;6619:218:66::0;3485:91:19::1;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;4594:316:21:-;4674:4;-1:-1:-1;;;;;4683:6:21;4666:23;;;:124;;;4784:6;-1:-1:-1;;;;;4748:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:28;-1:-1:-1;;;;;1519:53:28;;1441:138;4748:32:21;-1:-1:-1;;;;;4748:42:21;;;4666:124;4649:255;;;4864:29;;-1:-1:-1;;;4864:29:21;;;;;;;;;;;5477:140:60;2334:13:19;:11;:13::i;6052:538:21:-;6169:17;-1:-1:-1;;;;;6151:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:21;;;;;;;;-1:-1:-1;;6151:52:21;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:21;;-1:-1:-1;;;;;6798:32:66;;6513:60:21;;;6780:51:66;6753:18;;6513:60:21;6619:218:66;6147:437:21;-1:-1:-1;;;;;;;;;;;6245:40:21;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:21;;;;;1428:25:66;;;1401:18;;6312:34:21;1282:177:66;6241:120:21;6374:54;6404:17;6423:4;6374:29;:54::i;:::-;6204:235;6052:538;;:::o;5027:213::-;5101:4;-1:-1:-1;;;;;5110:6:21;5093:23;;5089:145;;5194:29;;-1:-1:-1;;;5194:29:21;;;;;;;;;;;14334:369:60;14501:14;;14464:71;;14441:20;;14464:71;;14481:6;;14489:10;;;;-1:-1:-1;;;;;14501:14:60;;;;14517:10;;14529:5;;14464:71;;;:::i;:::-;;;;-1:-1:-1;;14464:71:60;;;;;;;;;14609:15;;;:26;14557:18;;14464:71;14557:18;;;14464:71;;-1:-1:-1;;;14609:26:60;;;;14580:56;-1:-1:-1;14545:152:60;;14659:27;;-1:-1:-1;;;14659:27:60;;;;;24234:25:66;;;24275:18;;;24268:34;;;24207:18;;14659:27:60;24060:248:66;14890:2652:60;14952:24;14979:16;;;:8;:16;;;;;;15051:1562;15079:15;;;:30;;;;;;15073:36;;15051:1562;;;15266:15;;;:30;15226:23;;-1:-1:-1;;;15266:30:60;;;;-1:-1:-1;;;;;15252:45:60;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15252:45:60;;15226:71;;15316:11;15311:150;15339:15;;;:30;-1:-1:-1;;;15339:30:60;;;;15333:36;;15311:150;;;15410:19;;;;:11;:19;;;;;:24;;15430:3;;15410:24;;;;;;:::i;:::-;;;;;;;;;;;:31;;15442:3;15410:36;;;;;;;;:::i;:::-;;;;;;;;;15396:6;15403:3;15396:11;;;;;;;;:::i;:::-;;;;;;;;;;:50;15371:5;;15311:150;;;;15531:15;15548:13;15565:25;15583:6;15565:17;:25::i;:::-;15530:60;;;;15750:16;15784:18;15825:11;15820:571;15848:15;;;:30;-1:-1:-1;;;15848:30:60;;;;15842:36;;15820:571;;;15994:13;353:4:64;16010:6:60;16017:3;16010:11;;;;;;;;:::i;:::-;;;;;;;:39;;;;:::i;:::-;15994:55;-1:-1:-1;16091:5:60;16072:15;16080:7;15994:55;16072:15;:::i;:::-;:24;;16071:56;;;;-1:-1:-1;16111:15:60;16119:7;16111:5;:15;:::i;:::-;16102:5;:24;;16071:56;16067:310;;;16151:17;16163:5;16151:17;;:::i;:::-;;-1:-1:-1;16190:12:60;;;;:::i;:::-;;;;16285:73;16304:11;:19;16316:6;16304:19;;;;;;;;;;;16324:3;16304:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:34;16340:17;;;;-1:-1:-1;;;;;16304:34:60;;;;16285:18;:73::i;:::-;-1:-1:-1;15880:5:60;;15820:571;;;-1:-1:-1;16481:19:60;16503:15;;:43;;16525:21;16536:10;16525:8;:21;:::i;:::-;16503:43;;;16521:1;16503:43;16560:17;;;;:9;:17;;;;;:22;;16481:65;;-1:-1:-1;16481:65:60;;16578:3;;16560:22;;;;;;:::i;:::-;;;;;;;;;:28;:22;;;;;:28;:42;-1:-1:-1;;15111:5:60;;;;;-1:-1:-1;15051:1562:60;;-1:-1:-1;;;15051:1562:60;;-1:-1:-1;16800:15:60;;;:30;16750:33;;16800:30;;;;;-1:-1:-1;;;;;16786:45:60;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16786:45:60;;16750:81;;16846:11;16841:144;16869:15;;;:30;;;;;;16863:36;;16841:144;;;16946:17;;;;:9;:17;;;;;:22;;16964:3;;16946:22;;;;;;:::i;:::-;;;;;;;;;;;:28;;;16922:16;16939:3;16922:21;;;;;;;;:::i;:::-;;;;;;;;;;:52;16901:5;;16841:144;;;;17047:14;17063:12;17079:35;17097:16;17079:17;:35::i;:::-;17046:68;;;;17129:11;17124:412;17152:15;;;:30;;;;;;17146:36;;17124:412;;;17300:25;;17338:4;;17300:34;;17328:6;;-1:-1:-1;;;;;17300:25:60;:34;:::i;:::-;353:4:64;17247:16:60;17264:3;17247:21;;;;;;;;:::i;:::-;;;;;;;:49;;;;:::i;:::-;17246:88;;;;:::i;:::-;:96;17242:284;;17381:17;;;;:9;:17;;;;;:22;;17362:71;;17381:17;17399:3;;17381:22;;;;;;:::i;:::-;;;;;;;;;;;;;;:32;17415:17;;;;-1:-1:-1;;;;;17381:32:60;;;;17362:18;:71::i;:::-;17242:284;;;17494:4;:17;;;17472:18;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;17242:284:60;17184:5;;17124:412;;;;14942:2600;;;;14890:2652;:::o;2658:162:19:-;958:10:22;2717:7:19;:5;:7::i;:::-;-1:-1:-1;;;;;2717:23:19;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:19;;958:10:22;2763:40:19;;;6780:51:66;6753:18;;2763:40:19;6619:218:66;3774:248:19;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:19;;-1:-1:-1;;;;;3941:19:19;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;18615:165:60:-;18695:8;;18721:42;;-1:-1:-1;;;18721:42:60;;18748:4;18721:42;;;23740:51:66;-1:-1:-1;;;;;23827:32:66;;;23807:18;;;23800:60;18695:8:60;;;;:16;;18712:7;;18766:6;;18695:8;;18721:18;;23713::66;;18721:42:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;18695:78;;-1:-1:-1;;;;;;18695:78:60;;;;;;;-1:-1:-1;;;;;22750:32:66;;;18695:78:60;;;22732:51:66;22799:18;;;22792:34;22705:18;;18695:78:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1847:127:19:-;6931:20:20;:18;:20::i;:::-;1929:38:19::1;1954:12;1929:24;:38::i;2151:603:61:-:0;6931:20:20;:18;:20::i;:::-;2374:25:61::1;:29:::0;;2402:1:::1;-1:-1:-1::0;;2374:29:61;;::::1;::::0;::::1;::::0;;;2434:78:::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;2434:78:61;;;;;;;2414:17:::1;:98:::0;;;-1:-1:-1;;2414:98:61;;;;;;;2542:81;;;;::::1;::::0;;2579:2:::1;2542:81:::0;;;;;::::1;::::0;;;;;;;;;2522:17:::1;:101:::0;;;;;;;;;2634:53:::1;2642:12:::0;2656:14;2672;2634:7:::1;:53::i;:::-;2697:8;:20:::0;;;;2727:8:::1;:20:::0;-1:-1:-1;;;2151:603:61:o;2264:344:28:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:28;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;1803:378:64:-;1865:11;1878:12;1903:17;1922:13;1939:14;1948:4;1939:8;:14::i;:::-;1902:51;;;;1970:5;1963:12;;1986;2000:22;2026:38;2038:9;353:4;2026:11;:38::i;:::-;1985:79;;;;2079:7;2074:60;;2109:14;;-1:-1:-1;;;2109:14:64;;;;;;;;;;;2074:60;2149:25;2159:14;2149:9;:25::i;:::-;2143:31;;1892:289;;;;1803:378;;;:::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;1980:235:19;6931:20:20;:18;:20::i;1671:281:28:-;1748:17;-1:-1:-1;;;;;1748:29:28;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:28;;-1:-1:-1;;;;;6798:32:66;;1805:47:28;;;6780:51:66;6753:18;;1805:47:28;6619:218:66;1744:119:28;-1:-1:-1;;;;;;;;;;;1872:73:28;;-1:-1:-1;;;;;;1872:73:28;-1:-1:-1;;;;;1872:73:28;;;;;;;;;;1671:281::o;3899:253:38:-;3982:12;4007;4021:23;4048:6;-1:-1:-1;;;;;4048:19:38;4068:4;4048:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4006:67;;;;4090:55;4117:6;4125:7;4134:10;4090:26;:55::i;:::-;4083:62;;;;3899:253;;;;;:::o;6113:122:28:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:28;;;;;;;;;;;984:626:64;1048:11;1061:12;1092:9;1096:4;1092:3;:9::i;:::-;1085:16;;1112:11;1142:9;1137:270;1161:4;:11;1157:1;:15;1137:270;;;1193:18;353:4;1214;1219:1;1214:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;1193:45;-1:-1:-1;1301:11:64;1315:33;1343:4;1193:45;1315:33;:::i;:::-;1301:47;-1:-1:-1;1369:27:64;1384:11;1301:47;;1384:11;:::i;:::-;2436:3:46;2431:8;;;2576;;;2575:17;;1788:822;1369:27:64;1362:34;;;;:::i;:::-;;-1:-1:-1;;;1174:3:64;;1137:270;;;;1417:12;1431:15;1450:40;1462:4;:11;353:4;1450:11;:40::i;:::-;1416:74;;;;1505:7;1500:60;;1535:14;;-1:-1:-1;;;1535:14:64;;;;;;;;;;;1500:60;1575:28;1587:3;1592:1;1595:7;1575:11;:28::i;:::-;1569:34;;1075:535;;;984:626;;;:::o;1265:508:44:-;1326:12;1340:14;1624:1;1629;1624:6;1620:28;;-1:-1:-1;1640:4:44;;-1:-1:-1;1646:1:44;1632:16;;1620:28;1674:5;;;1678:1;1674;:5;:1;1697:5;;;;:::i;:::-;;:10;1693:33;;1717:5;1724:1;1709:17;;;;;;;1693:33;1748:4;;-1:-1:-1;1754:1:44;-1:-1:-1;1265:508:44;;;;;;:::o;18079:5181::-;18127:7;18245:1;18240;:6;18236:53;;-1:-1:-1;18273:1:44;18079:5181::o;18236:53::-;19229:1;19257;-1:-1:-1;;;19277:16:44;;19273:92;;19320:3;19313:10;;;;;19348:2;19341:9;19273:92;-1:-1:-1;;;19382:2:44;:15;19378:90;;19424:2;19417:9;;;;;19451:2;19444:9;19378:90;19492:7;19485:2;:15;19481:90;;19527:2;19520:9;;;;;19554:2;19547:9;19481:90;19595:7;19588:2;:15;19584:89;;19630:2;19623:9;;;;;19657:1;19650:8;19584:89;19697:6;19690:2;:14;19686:87;;19731:1;19724:8;;;;;19757:1;19750:8;19686:87;19797:6;19790:2;:14;19786:87;;19831:1;19824:8;;;;;19857:1;19850:8;19786:87;19897:6;19890:2;:14;19886:61;;19931:1;19924:8;19886:61;20373:1;:6;20384:1;20372:13;;;;;22283:1;20372:13;22283:6;;;;:::i;:::-;;22278:2;:11;22277:18;;22272:23;;22403:1;22396:2;22392:1;:6;;;;;:::i;:::-;;22387:2;:11;22386:18;;22381:23;;22514:1;22507:2;22503:1;:6;;;;;:::i;:::-;;22498:2;:11;22497:18;;22492:23;;22623:1;22616:2;22612:1;:6;;;;;:::i;:::-;;22607:2;:11;22606:18;;22601:23;;22733:1;22726:2;22722:1;:6;;;;;:::i;:::-;;22717:2;:11;22716:18;;22711:23;;22843:1;22836:2;22832:1;:6;;;;;:::i;:::-;;22827:2;:11;22826:18;;22821:23;;23215:28;23240:2;23236:1;:6;;;;;:::i;:::-;;23231:11;;;34795:145:45;23215:28:44;23210:33;;;18079:5181;-1:-1:-1;;;18079:5181:44:o;4420:580:38:-;4558:12;4591:7;4586:408;;4614:19;4622:10;4614:7;:19::i;:::-;4586:408;;;4838:17;;:22;:49;;;;-1:-1:-1;;;;;;4864:18:38;;;:23;4838:49;4834:119;;;4914:24;;-1:-1:-1;;;4914:24:38;;-1:-1:-1;;;;;6798:32:66;;4914:24:38;;;6780:51:66;6753:18;;4914:24:38;6619:218:66;4834:119:38;-1:-1:-1;4973:10:38;4586:408;4420:580;;;;;:::o;464:406:64:-;523:11;;;571:232;595:4;:11;591:1;:15;571:232;;;628:12;642:14;660:25;672:4;677:1;672:7;;;;;;;;:::i;:::-;;;;;;;681:3;660:11;:25::i;:::-;627:58;;;;704:7;699:68;;738:14;;-1:-1:-1;;;738:14:64;;;;;;;;;;;699:68;786:6;-1:-1:-1;;608:3:64;;571:232;;;;818:45;830:3;353:4;851;:11;4997:4226:44;5079:14;5450:5;;;5079:14;-1:-1:-1;;5454:1:44;5450;5622:20;5695:5;5691:2;5688:13;5680:5;5676:2;5672:14;5668:34;5659:43;;;5797:5;5806:1;5797:10;5793:368;;6135:11;6127:5;:19;;;;;:::i;:::-;;6120:26;;;;;;5793:368;6286:5;6271:11;:20;6267:143;;6311:84;3067:5;6331:16;;3066:36;940:4:41;3061:42:44;6311:11;:84::i;:::-;6665:17;6800:11;6797:1;6794;6787:25;7200:12;7230:15;;;7215:31;;7349:22;;;;;8095:1;8076;:15;;8075:21;;8328;;;8324:25;;8313:36;8398:21;;;8394:25;;8383:36;8470:21;;;8466:25;;8455:36;8541:21;;;8537:25;;8526:36;8614:21;;;8610:25;;8599:36;8688:21;;;8684:25;;;8673:36;7598:12;;;;7594:23;;;7619:1;7590:31;6914:20;;;6903:32;;;7710:12;;;;6961:21;;;;7447:16;;;;7701:21;;;;9164:15;;;;;-1:-1:-1;;4997:4226:44;;;;;:::o;5540:487:38:-;5671:17;;:21;5667:354;;5868:10;5862:17;5924:15;5911:10;5907:2;5903:19;5896:44;5667:354;5991:19;;-1:-1:-1;;;5991:19:38;;;;;;;;;;;587:231:44;648:12;;724:5;;;747;;;743:28;;;762:5;769:1;754:17;;;;;;;1776:194:41;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:346:66;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;204:23:66;;;324:2;309:18;;;296:32;;-1:-1:-1;14:346:66:o;365:288::-;406:3;444:5;438:12;471:6;466:3;459:19;527:6;520:4;513:5;509:16;502:4;497:3;493:14;487:47;579:1;572:4;563:6;558:3;554:16;550:27;543:38;642:4;635:2;631:7;626:2;618:6;614:15;610:29;605:3;601:39;597:50;590:57;;;365:288;;;;:::o;658:619::-;964:1;960;955:3;951:11;947:19;939:6;935:32;924:9;917:51;1004:6;999:2;988:9;984:18;977:34;1047:6;1042:2;1031:9;1027:18;1020:34;1090:3;1085:2;1074:9;1070:18;1063:31;898:4;1117:45;1157:3;1146:9;1142:19;1134:6;1117:45;:::i;:::-;1211:9;1203:6;1199:22;1193:3;1182:9;1178:19;1171:51;1239:32;1264:6;1256;1239:32;:::i;:::-;1231:40;658:619;-1:-1:-1;;;;;;;;658:619:66:o;1829:226::-;1888:6;1941:2;1929:9;1920:7;1916:23;1912:32;1909:52;;;1957:1;1954;1947:12;1909:52;-1:-1:-1;2002:23:66;;1829:226;-1:-1:-1;1829:226:66:o;2060:553::-;2180:1;2176;2171:3;2167:11;2163:19;2155:5;2149:12;2145:38;2140:3;2133:51;2233:4;2226:5;2222:16;2216:23;2209:4;2204:3;2200:14;2193:47;2289:4;2282:5;2278:16;2272:23;2265:4;2260:3;2256:14;2249:47;2115:3;2342:4;2335:5;2331:16;2325:23;2380:4;2373;2368:3;2364:14;2357:28;2406:46;2446:4;2441:3;2437:14;2423:12;2406:46;:::i;:::-;2394:58;;2500:4;2493:5;2489:16;2483:23;2548:3;2542:4;2538:14;2531:4;2526:3;2522:14;2515:38;2569;2602:4;2586:14;2569:38;:::i;2618:275::-;2809:2;2798:9;2791:21;2772:4;2829:58;2883:2;2872:9;2868:18;2860:6;2829:58;:::i;2898:1685::-;3106:4;3154:2;3143:9;3139:18;3184:2;3173:9;3166:21;3207:6;3242;3236:13;3273:6;3265;3258:22;3311:2;3300:9;3296:18;3289:25;;3373:2;3363:6;3360:1;3356:14;3345:9;3341:30;3337:39;3323:53;;3411:2;3403:6;3399:15;3432:1;3442:1112;3456:6;3453:1;3450:13;3442:1112;;;3521:22;;;-1:-1:-1;;3517:36:66;3505:49;;3577:13;;3666:9;;-1:-1:-1;;;;;3662:35:66;3647:51;;3749:2;3741:11;;;3735:18;3718:15;;;3711:43;3801:2;3793:11;;;3787:18;3629:4;3825:15;;;3818:29;;;3908:19;;3617:17;;;3940:24;;;4031:21;;;;-1:-1:-1;;3685:3:66;3986:16;;;4090:209;4106:8;4101:3;4098:17;4090:209;;;4189:8;4183:15;4176:5;4169:30;4236:2;4229:5;4225:14;4216:23;;4282:2;4272:8;4268:17;4256:29;;4134:1;4129:3;4125:11;4118:18;;4090:209;;;4094:3;4348:4;4344:2;4340:13;4334:20;4312:42;;4404:6;4397:5;4393:18;4386:4;4378:6;4374:17;4367:45;4435:39;4468:5;4452:14;4435:39;:::i;:::-;4425:49;-1:-1:-1;;;4509:2:66;4532:12;;;;4497:15;;;;;-1:-1:-1;;3478:1:66;3471:9;3442:1112;;;-1:-1:-1;4571:6:66;;2898:1685;-1:-1:-1;;;;;;2898:1685:66:o;4588:385::-;4820:1;4816;4811:3;4807:11;4803:19;4795:6;4791:32;4780:9;4773:51;4860:6;4855:2;4844:9;4840:18;4833:34;4903:2;4898;4887:9;4883:18;4876:30;4754:4;4923:44;4963:2;4952:9;4948:18;4940:6;4923:44;:::i;:::-;4915:52;4588:385;-1:-1:-1;;;;;4588:385:66:o;4978:173::-;5046:20;;-1:-1:-1;;;;;5095:31:66;;5085:42;;5075:70;;5141:1;5138;5131:12;5075:70;4978:173;;;:::o;5156:127::-;5217:10;5212:3;5208:20;5205:1;5198:31;5248:4;5245:1;5238:15;5272:4;5269:1;5262:15;5288:745;5330:5;5383:3;5376:4;5368:6;5364:17;5360:27;5350:55;;5401:1;5398;5391:12;5350:55;5441:6;5428:20;-1:-1:-1;;;;;5463:6:66;5460:30;5457:56;;;5493:18;;:::i;:::-;5562:2;5556:9;5654:2;5616:17;;-1:-1:-1;;5612:31:66;;;5645:2;5608:40;5604:54;5592:67;;-1:-1:-1;;;;;5674:34:66;;5710:22;;;5671:62;5668:88;;;5736:18;;:::i;:::-;5772:2;5765:22;5796;;;5837:19;;;5858:4;5833:30;5830:39;-1:-1:-1;5827:59:66;;;5882:1;5879;5872:12;5827:59;5946:6;5939:4;5931:6;5927:17;5920:4;5912:6;5908:17;5895:58;6001:1;5973:19;;;5994:4;5969:30;5962:41;;;;5977:6;5288:745;-1:-1:-1;;;5288:745:66:o;6038:394::-;6115:6;6123;6176:2;6164:9;6155:7;6151:23;6147:32;6144:52;;;6192:1;6189;6182:12;6144:52;6215:29;6234:9;6215:29;:::i;:::-;6205:39;;6295:2;6284:9;6280:18;6267:32;-1:-1:-1;;;;;6314:6:66;6311:30;6308:50;;;6354:1;6351;6344:12;6308:50;6377:49;6418:7;6409:6;6398:9;6394:22;6377:49;:::i;:::-;6367:59;;;6038:394;;;;;:::o;6842:347::-;6893:8;6903:6;6957:3;6950:4;6942:6;6938:17;6934:27;6924:55;;6975:1;6972;6965:12;6924:55;-1:-1:-1;6998:20:66;;-1:-1:-1;;;;;7030:30:66;;7027:50;;;7073:1;7070;7063:12;7027:50;7110:4;7102:6;7098:17;7086:29;;7162:3;7155:4;7146:6;7138;7134:19;7130:30;7127:39;7124:59;;;7179:1;7176;7169:12;7194:1148;7318:6;7326;7334;7342;7350;7358;7411:3;7399:9;7390:7;7386:23;7382:33;7379:53;;;7428:1;7425;7418:12;7379:53;7473:23;;;-1:-1:-1;7593:2:66;7578:18;;7565:32;;-1:-1:-1;7674:2:66;7659:18;;7646:32;-1:-1:-1;;;;;7690:30:66;;7687:50;;;7733:1;7730;7723:12;7687:50;7756:22;;7809:4;7801:13;;7797:27;-1:-1:-1;7787:55:66;;7838:1;7835;7828:12;7787:55;7878:2;7865:16;-1:-1:-1;;;;;7896:6:66;7893:30;7890:50;;;7936:1;7933;7926:12;7890:50;7989:7;7984:2;7974:6;7971:1;7967:14;7963:2;7959:23;7955:32;7952:45;7949:65;;;8010:1;8007;8000:12;7949:65;8041:2;8033:11;;;;;-1:-1:-1;8063:6:66;-1:-1:-1;8122:2:66;8107:18;;8094:32;-1:-1:-1;;;;;8138:32:66;;8135:52;;;8183:1;8180;8173:12;8135:52;8222:60;8274:7;8263:8;8252:9;8248:24;8222:60;:::i;:::-;7194:1148;;;;-1:-1:-1;7194:1148:66;;-1:-1:-1;7194:1148:66;;8301:8;;7194:1148;-1:-1:-1;;;7194:1148:66:o;8347:837::-;8551:4;8599:2;8588:9;8584:18;8629:2;8618:9;8611:21;8652:6;8687;8681:13;8718:6;8710;8703:22;8756:2;8745:9;8741:18;8734:25;;8818:2;8808:6;8805:1;8801:14;8790:9;8786:30;8782:39;8768:53;;8856:2;8848:6;8844:15;8877:1;8887:268;8901:6;8898:1;8895:13;8887:268;;;8994:2;8990:7;8978:9;8970:6;8966:22;8962:36;8957:3;8950:49;9022:53;9068:6;9059;9053:13;9022:53;:::i;:::-;9012:63;-1:-1:-1;9110:2:66;9133:12;;;;9098:15;;;;;8923:1;8916:9;8887:268;;9424:127;9485:10;9480:3;9476:20;9473:1;9466:31;9516:4;9513:1;9506:15;9540:4;9537:1;9530:15;9556:141;9638:1;9631:5;9628:12;9618:46;;9644:18;;:::i;:::-;9673;;9556:141::o;9702:1201::-;10218:1;10214;10209:3;10205:11;10201:19;10193:6;10189:32;10178:9;10171:51;10258:6;10253:2;10242:9;10238:18;10231:34;10320:4;10311:6;10305:13;10301:24;10296:2;10285:9;10281:18;10274:52;10390:12;10384:2;10376:6;10372:15;10366:22;10362:41;10357:2;10346:9;10342:18;10335:69;10469:12;10463:2;10455:6;10451:15;10445:22;10441:41;10435:3;10424:9;10420:19;10413:70;10492:55;10542:3;10531:9;10527:19;10519:6;10492:55;:::i;:::-;10584:6;10578:3;10567:9;10563:19;10556:35;10628:6;10622:3;10611:9;10607:19;10600:35;10672:6;10666:3;10655:9;10651:19;10644:35;10716:3;10710;10699:9;10695:19;10688:32;10152:4;10743:45;10783:3;10772:9;10768:19;10760:6;10743:45;:::i;:::-;10837:9;10829:6;10825:22;10819:3;10808:9;10804:19;10797:51;10865:32;10890:6;10882;10865:32;:::i;:::-;10857:40;9702:1201;-1:-1:-1;;;;;;;;;;;;9702:1201:66:o;11116:219::-;11265:2;11254:9;11247:21;11228:4;11285:44;11325:2;11314:9;11310:18;11302:6;11285:44;:::i;11340:171::-;11416:5;11461:2;11452:6;11447:3;11443:16;11439:25;11436:45;;;11477:1;11474;11467:12;11436:45;-1:-1:-1;11499:6:66;11340:171;-1:-1:-1;11340:171:66:o;11516:271::-;11619:6;11672:2;11660:9;11651:7;11647:23;11643:32;11640:52;;;11688:1;11685;11678:12;11640:52;11711:70;11773:7;11762:9;11711:70;:::i;12116:947::-;12224:6;12232;12240;12248;12256;12264;12317:3;12305:9;12296:7;12292:23;12288:33;12285:53;;;12334:1;12331;12324:12;12285:53;12379:23;;;-1:-1:-1;12499:2:66;12484:18;;12471:32;;-1:-1:-1;12580:2:66;12565:18;;12552:32;-1:-1:-1;;;;;12596:30:66;;12593:50;;;12639:1;12636;12629:12;12593:50;12678:58;12728:7;12719:6;12708:9;12704:22;12678:58;:::i;:::-;12755:8;;-1:-1:-1;12652:84:66;-1:-1:-1;;12843:2:66;12828:18;;12815:32;-1:-1:-1;;;;;12859:32:66;;12856:52;;;12904:1;12901;12894:12;13068:431;13224:6;13232;13285:3;13273:9;13264:7;13260:23;13256:33;13253:53;;;13302:1;13299;13292:12;13253:53;13325:70;13387:7;13376:9;13325:70;:::i;:::-;13315:80;;13414:79;13485:7;13480:2;13469:9;13465:18;13414:79;:::i;:::-;13404:89;;13068:431;;;;;:::o;13709:466::-;13786:6;13794;13802;13855:2;13843:9;13834:7;13830:23;13826:32;13823:52;;;13871:1;13868;13861:12;13823:52;-1:-1:-1;;13916:23:66;;;14036:2;14021:18;;14008:32;;-1:-1:-1;14139:2:66;14124:18;;;14111:32;;13709:466;-1:-1:-1;13709:466:66:o;14180:762::-;14328:6;14336;14344;14352;14405:3;14393:9;14384:7;14380:23;14376:33;14373:53;;;14422:1;14419;14412:12;14373:53;14458:9;14445:23;14435:33;;14519:2;14508:9;14504:18;14491:32;-1:-1:-1;;;;;14538:6:66;14535:30;14532:50;;;14578:1;14575;14568:12;14532:50;14601:49;14642:7;14633:6;14622:9;14618:22;14601:49;:::i;:::-;14591:59;;;14703:2;14692:9;14688:18;14675:32;-1:-1:-1;;;;;14722:8:66;14719:32;14716:52;;;14764:1;14761;14754:12;14716:52;14787:51;14830:7;14819:8;14808:9;14804:24;14787:51;:::i;:::-;14777:61;;;14857:79;14928:7;14923:2;14912:9;14908:18;14857:79;:::i;:::-;14847:89;;14180:762;;;;;;;:::o;14947:284::-;15005:6;15058:2;15046:9;15037:7;15033:23;15029:32;15026:52;;;15074:1;15071;15064:12;15026:52;15113:9;15100:23;-1:-1:-1;;;;;15156:5:66;15152:30;15145:5;15142:41;15132:69;;15197:1;15194;15187:12;15236:858;15349:6;15357;15365;15373;15381;15389;15397;15450:3;15438:9;15429:7;15425:23;15421:33;15418:53;;;15467:1;15464;15457:12;15418:53;15490:29;15509:9;15490:29;:::i;:::-;15480:39;;15538:38;15572:2;15561:9;15557:18;15538:38;:::i;:::-;15236:858;;15528:48;;-1:-1:-1;;;;15645:2:66;15630:18;;15617:32;;15746:2;15731:18;;15718:32;;15849:3;15834:19;;15821:33;;-1:-1:-1;15953:3:66;15938:19;;15925:33;;-1:-1:-1;16057:3:66;16042:19;;;16029:33;;-1:-1:-1;15236:858:66:o;16099:186::-;16158:6;16211:2;16199:9;16190:7;16186:23;16182:32;16179:52;;;16227:1;16224;16217:12;16179:52;16250:29;16269:9;16250:29;:::i;16290:380::-;16369:1;16365:12;;;;16412;;;16433:61;;16487:4;16479:6;16475:17;16465:27;;16433:61;16540:2;16532:6;16529:14;16509:18;16506:38;16503:161;;16586:10;16581:3;16577:20;16574:1;16567:31;16621:4;16618:1;16611:15;16649:4;16646:1;16639:15;16675:387;16905:25;;;16893:2;16878:18;;16939:54;16989:2;16974:18;;16966:6;16939:54;:::i;:::-;17002;17052:2;17041:9;17037:18;17029:6;17002:54;:::i;:::-;16675:387;;;;;;:::o;17067:127::-;17128:10;17123:3;17119:20;17116:1;17109:31;17159:4;17156:1;17149:15;17183:4;17180:1;17173:15;17199:347;-1:-1:-1;;;;;17408:32:66;;17390:51;;17378:2;17363:18;;17471:1;17460:13;;17450:47;;17477:18;;:::i;:::-;17533:6;17528:2;17517:9;17513:18;17506:34;17199:347;;;;;:::o;17551:277::-;17618:6;17671:2;17659:9;17650:7;17646:23;17642:32;17639:52;;;17687:1;17684;17677:12;17639:52;17719:9;17713:16;17772:5;17765:13;17758:21;17751:5;17748:32;17738:60;;17794:1;17791;17784:12;18237:517;18338:2;18333:3;18330:11;18327:421;;;18374:5;18371:1;18364:16;18418:4;18415:1;18405:18;18488:2;18476:10;18472:19;18469:1;18465:27;18459:4;18455:38;18524:4;18512:10;18509:20;18506:47;;;-1:-1:-1;18547:4:66;18506:47;18602:2;18597:3;18593:12;18590:1;18586:20;18580:4;18576:31;18566:41;;18657:81;18675:2;18668:5;18665:13;18657:81;;;18734:1;18720:16;;18701:1;18690:13;18657:81;;;18661:3;;18237:517;;;:::o;18930:1295::-;19054:3;19048:10;-1:-1:-1;;;;;19073:6:66;19070:30;19067:56;;;19103:18;;:::i;:::-;19132:96;19221:6;19181:38;19213:4;19207:11;19181:38;:::i;:::-;19175:4;19132:96;:::i;:::-;19277:4;19308:2;19297:14;;19325:1;19320:648;;;;20012:1;20029:6;20026:89;;;-1:-1:-1;20081:19:66;;;20075:26;20026:89;-1:-1:-1;;18887:1:66;18883:11;;;18879:24;18875:29;18865:40;18911:1;18907:11;;;18862:57;20128:81;;19290:929;;19320:648;18184:1;18177:14;;;18221:4;18208:18;;-1:-1:-1;;19356:20:66;;;19473:222;19487:7;19484:1;19481:14;19473:222;;;19569:19;;;19563:26;19548:42;;19676:4;19661:20;;;;19629:1;19617:14;;;;19503:12;19473:222;;;19477:3;19723:6;19714:7;19711:19;19708:201;;;19784:19;;;19778:26;-1:-1:-1;;19867:1:66;19863:14;;;19879:3;19859:24;19855:37;19851:42;19836:58;19821:74;;19708:201;-1:-1:-1;;;;19955:1:66;19939:14;;;19935:22;19922:36;;-1:-1:-1;18930:1295:66:o;20230:316::-;20420:2;20405:18;;20432:45;20409:9;20459:6;20432:45;:::i;:::-;20486:54;20536:2;20525:9;20521:18;20513:6;20486:54;:::i;20551:114::-;20635:4;20628:5;20624:16;20617:5;20614:27;20604:55;;20655:1;20652;20645:12;20670:243;20727:6;20780:2;20768:9;20759:7;20755:23;20751:32;20748:52;;;20796:1;20793;20786:12;20748:52;20835:9;20822:23;20854:29;20877:5;20854:29;:::i;20918:127::-;20979:10;20974:3;20970:20;20967:1;20960:31;21010:4;21007:1;21000:15;21034:4;21031:1;21024:15;21050:168;21123:9;;;21154;;21171:15;;;21165:22;;21151:37;21141:71;;21192:18;;:::i;21223:123::-;21308:12;21301:5;21297:24;21290:5;21287:35;21277:63;;21336:1;21333;21326:12;21351:245;21409:6;21462:2;21450:9;21441:7;21437:23;21433:32;21430:52;;;21478:1;21475;21468:12;21430:52;21517:9;21504:23;21536:30;21560:5;21536:30;:::i;21601:125::-;21666:9;;;21687:10;;;21684:36;;;21700:18;;:::i;21731:822::-;21930:5;21917:19;21945:31;21968:7;21945:31;:::i;:::-;22008:4;21999:7;21995:18;21985:28;;22038:4;22032:11;22087:2;22080:3;22076:8;22072:2;22068:17;22065:25;22059:4;22052:39;22139:2;22132:5;22128:14;22115:28;22152:32;22176:7;22152:32;:::i;:::-;22230:14;22220:7;22217:1;22213:15;22209:36;22193:52;;22308:8;22303:2;22285:14;22281:19;22277:2;22273:28;22270:36;22267:50;22261:4;22254:64;22366:2;22359:5;22355:14;22342:28;22379:32;22403:7;22379:32;:::i;:::-;22520:24;22510:7;22506:2;22502:16;22498:47;22492:2;22464:24;22460:29;22456:2;22452:38;22449:46;22439:8;22436:60;22433:113;22427:4;22420:127;;;;;21731:822;;:::o;23871:184::-;23941:6;23994:2;23982:9;23973:7;23969:23;23965:32;23962:52;;;24010:1;24007;24000:12;23962:52;-1:-1:-1;24033:16:66;;23871:184;-1:-1:-1;23871:184:66:o;24689:853::-;24790:6;24850:2;24838:9;24829:7;24825:23;24821:32;24865:2;24862:22;;;24880:1;24877;24870:12;24862:22;-1:-1:-1;24949:2:66;24943:9;24991:2;24979:15;;-1:-1:-1;;;;;25009:34:66;;25045:22;;;25006:62;25003:88;;;25071:18;;:::i;:::-;25107:2;25100:22;25144:23;;25176:29;25144:23;25176:29;:::i;:::-;25214:21;;25287:2;25272:18;;25259:32;25300;25259;25300;:::i;:::-;25360:2;25348:15;;25341:32;25425:2;25410:18;;25397:32;25438;25397;25438;:::i;:::-;25498:2;25486:15;;25479:32;25490:6;24689:853;-1:-1:-1;;;24689:853:66:o;26080:1102::-;26348:6;26343:3;26336:19;26318:3;26375:1;26408:6;26402:13;26438:36;26464:9;26438:36;:::i;:::-;26505:1;26490:17;;26516:151;;;;26681:1;26676:346;;;;26483:539;;26516:151;26577:3;26573:8;26562:9;26558:24;26553:2;26548:3;26544:12;26537:46;26654:2;26642:6;26635:14;26628:22;26620:6;26616:35;26611:3;26607:45;26603:54;26596:61;;26516:151;;26676:346;26707:6;26704:1;26697:17;26755:2;26752:1;26742:16;26780:1;26794:173;26808:6;26805:1;26802:13;26794:173;;;26901:7;26895:14;26890:2;26886:1;26881:3;26877:11;26873:20;26866:44;26951:1;26942:7;26938:15;26927:26;;26830:2;26827:1;26823:10;26818:15;;26794:173;;;26798:3;;27009:2;27000:6;26995:3;26991:16;26987:25;26980:32;;26483:539;;;;27031:31;27058:3;27050:6;26024:2;26020:14;-1:-1:-1;;26016:52:66;26004:65;;25950:125;27031:31;27071:40;27107:2;27102:3;27098:12;27090:6;26024:2;26020:14;-1:-1:-1;;26016:52:66;26004:65;;25950:125;27071:40;27136:2;27127:12;;27120:28;;;;-1:-1:-1;;27173:2:66;27164:12;;26080:1102;-1:-1:-1;;;;26080:1102:66:o;27187:135::-;27226:3;27247:17;;;27244:43;;27267:18;;:::i;:::-;-1:-1:-1;27314:1:66;27303:13;;27187:135::o;27327:127::-;27388:10;27383:3;27379:20;27376:1;27369:31;27419:4;27416:1;27409:15;27443:4;27440:1;27433:15;27459:217;27499:1;27525;27515:132;;27569:10;27564:3;27560:20;27557:1;27550:31;27604:4;27601:1;27594:15;27632:4;27629:1;27622:15;27515:132;-1:-1:-1;27661:9:66;;27459:217::o;27681:301::-;27810:3;27848:6;27842:13;27894:6;27887:4;27879:6;27875:17;27870:3;27864:37;27956:1;27920:16;;27945:13;;;-1:-1:-1;27920:16:66;27681:301;-1:-1:-1;27681:301:66:o;27987:200::-;28053:9;;;28026:4;28081:9;;28109:10;;28121:12;;;28105:29;28144:12;;;28136:21;;28102:56;28099:82;;;28161:18;;:::i;:::-;28099:82;27987:200;;;;:::o;28192:237::-;28264:9;;;28231:7;28289:9;;-1:-1:-1;;;28300:18:66;;28285:34;28282:60;;;28322:18;;:::i;:::-;28395:1;28386:7;28381:16;28378:1;28375:23;28371:1;28364:9;28361:38;28351:72;;28403:18;;:::i","linkReferences":{},"immutableReferences":{"36949":[{"start":8916,"length":32},{"start":8957,"length":32},{"start":9281,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","feeToken()":"647846a5","generationDeviationFactor()":"ca287c35","generationFee()":"0566f18a","getBestResponse(uint256)":"32f77659","getFee((uint8,uint40,uint40))":"b13fc8f4","getResponses(uint256)":"71ee2ce1","getValidations(uint256)":"434dbaee","initialize(address,address,uint256,uint256,uint256,uint256,uint256)":"edbf4ac2","maxScore()":"9a1b4b38","maximumParameters()":"1da7bc9a","minScore()":"13c2bedc","minimumParameters()":"2bafb614","nextTaskId()":"fdc3d8d7","owner()":"8da5cb5b","platformFee()":"26232a2e","platformFeeBalance()":"e3c98ba0","proxiableUUID()":"52d1902d","registry()":"7b103999","renounceOwnership()":"715018a6","request(bytes32,bytes,bytes,(uint8,uint40,uint40))":"e76aec11","requests(uint256)":"81d12c58","respond(uint256,uint256,bytes,bytes)":"b584e617","responses(uint256,uint256)":"0057efc2","setFees(uint256,uint256,uint256)":"cec10c11","setGenerationDeviationFactor(uint64)":"e9ca8b46","setParameters((uint8,uint40,uint40),(uint8,uint40,uint40))":"b84b8ac7","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","validate(uint256,uint256,uint256[],bytes)":"6b4d5bfc","validationFee()":"f8bbf27e","validations(uint256,uint256)":"4b5a82d1","withdrawPlatformFees()":"d0b7830b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"AlreadyResponded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ComputeError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"want\",\"type\":\"uint256\"}],\"name\":\"InsufficientFees\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInput\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"InvalidParameterRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"enum LLMOracleTask.TaskStatus\",\"name\":\"have\",\"type\":\"uint8\"},{\"internalType\":\"enum LLMOracleTask.TaskStatus\",\"name\":\"want\",\"type\":\"uint8\"}],\"name\":\"InvalidTaskStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"InvalidValidation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"NotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"NotWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"protocol\",\"type\":\"bytes32\"}],\"name\":\"Request\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"responder\",\"type\":\"address\"}],\"name\":\"Response\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"protocol\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum LLMOracleTask.TaskStatus\",\"name\":\"statusBefore\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum LLMOracleTask.TaskStatus\",\"name\":\"statusAfter\",\"type\":\"uint8\"}],\"name\":\"StatusUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Validation\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToken\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"generationDeviationFactor\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"generationFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"getBestResponse\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"responder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"struct LLMOracleTask.TaskResponse\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"internalType\":\"struct LLMOracleTaskParameters\",\"name\":\"parameters\",\"type\":\"tuple\"}],\"name\":\"getFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"generatorFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"getResponses\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"responder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"struct LLMOracleTask.TaskResponse[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"getValidations\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"scores\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"struct LLMOracleTask.TaskValidation[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oracleRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_feeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_platformFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_generationFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validationFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minScore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxScore\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maximumParameters\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumParameters\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextTaskId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"platformFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"platformFeeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract LLMOracleRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"protocol\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"models\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"internalType\":\"struct LLMOracleTaskParameters\",\"name\":\"parameters\",\"type\":\"tuple\"}],\"name\":\"request\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"requests\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"protocol\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"internalType\":\"struct LLMOracleTaskParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"enum LLMOracleTask.TaskStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"generatorFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"platformFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"models\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"respond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"responses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"responder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_generationFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validationFee\",\"type\":\"uint256\"}],\"name\":\"setFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_generationDeviationFactor\",\"type\":\"uint64\"}],\"name\":\"setGenerationDeviationFactor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"internalType\":\"struct LLMOracleTaskParameters\",\"name\":\"minimums\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"internalType\":\"struct LLMOracleTaskParameters\",\"name\":\"maximums\",\"type\":\"tuple\"}],\"name\":\"setParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"scores\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"validate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validationFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"validations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawPlatformFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Request(uint256,address,bytes32)\":{\"details\":\"`protocol` is a short 32-byte string (e.g., \\\"dria/1.0.0\\\").Using the protocol topic, listeners can filter by protocol.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"details\":\"[See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--).\"},\"getBestResponse(uint256)\":{\"details\":\"For invalid task IDs, the status check will fail.\",\"params\":{\"taskId\":\"The ID of the task to get the result for.\"},\"returns\":{\"_0\":\"The best performing response w.r.t validation scores.\"}},\"getFee((uint8,uint40,uint40))\":{\"params\":{\"parameters\":\"The task parameters.\"},\"returns\":{\"generatorFee\":\"The fee paid to each generator per generation.\",\"totalFee\":\"The total fee for the task.\",\"validatorFee\":\"The fee paid to each validator per validated generation.\"}},\"getResponses(uint256)\":{\"params\":{\"taskId\":\"The ID of the task to get responses for.\"},\"returns\":{\"_0\":\"The responses for the given taskId.\"}},\"getValidations(uint256)\":{\"params\":{\"taskId\":\"The ID of the task to get validations for.\"},\"returns\":{\"_0\":\"The validations for the given taskId.\"}},\"initialize(address,address,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"_feeToken\":\"The token (ERC20) to be used for fee payments (usually $BATCH).\",\"_generationFee\":\"The initial base fee for LLM generation.\",\"_oracleRegistry\":\"The Oracle Registry contract address.\",\"_platformFee\":\"The initial platform fee for each LLM generation.\",\"_validationFee\":\"The initial base fee for response validation.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"request(bytes32,bytes,bytes,(uint8,uint40,uint40))\":{\"details\":\"Input must be non-empty.Reverts if contract has not enough allowance for the fee.Reverts if difficulty is out of range.\",\"params\":{\"input\":\"The input data for the LLM generation.\",\"parameters\":\"The task parameters\",\"protocol\":\"The protocol string, should be a short 32-byte string (e.g., \\\"dria/1.0.0\\\").\"},\"returns\":{\"_0\":\"task id\"}},\"respond(uint256,uint256,bytes,bytes)\":{\"details\":\"Output must be non-empty.Reverts if the task is not pending generation.Reverts if the responder is not registered.Reverts if the responder has already responded to this task.Reverts if the nonce is not a valid proof-of-work.\",\"params\":{\"metadata\":\"Optional metadata for this output.\",\"nonce\":\"The proof-of-work nonce.\",\"output\":\"The output data for the LLM generation.\",\"taskId\":\"The task ID to respond to.\"}},\"setFees(uint256,uint256,uint256)\":{\"details\":\"To keep a fee unchanged, provide the same value.\",\"params\":{\"_generationFee\":\"The new generation fee\",\"_platformFee\":\"The new platform fee\",\"_validationFee\":\"The new validation fee\"}},\"setGenerationDeviationFactor(uint64)\":{\"details\":\"Provide the same value to keep it unchanged.\",\"params\":{\"_generationDeviationFactor\":\"The new generation deviation factor.\"}},\"setParameters((uint8,uint40,uint40),(uint8,uint40,uint40))\":{\"details\":\"Provide the same value to keep it unchanged.\",\"params\":{\"maximums\":\"The new maximum parameters.\",\"minimums\":\"The new minimum parameters.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"validate(uint256,uint256,uint256[],bytes)\":{\"details\":\"Reverts if the task is not pending validation.Reverts if the number of scores is not equal to the number of generations.Reverts if any score is greater than the maximum score.\",\"params\":{\"metadata\":\"Optional metadata for this validation.\",\"nonce\":\"The proof-of-work nonce.\",\"scores\":\"The validation scores for each generation.\",\"taskId\":\"The ID of the task to validate.\"}}},\"stateVariables\":{\"nextTaskId\":{\"details\":\"TaskId starts from 1, as 0 is reserved.0 can be used in to check that a request/response/validation has not been made.\"}},\"title\":\"LLM Oracle Coordinator\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyResponded(uint256,address)\":[{\"notice\":\"The oracle has already responded to this task.\"}],\"InsufficientFees(uint256,uint256)\":[{\"notice\":\"Not enough funds were provided for the task.\"}],\"InvalidInput()\":[{\"notice\":\"Input is Empty.\"}],\"InvalidNonce(uint256,uint256)\":[{\"notice\":\"The given nonce is not a valid proof-of-work.\"}],\"InvalidParameterRange(uint256,uint256,uint256)\":[{\"notice\":\"Given parameter is out of range.\"}],\"InvalidTaskStatus(uint256,uint8,uint8)\":[{\"notice\":\"Unexpected status for this task.\"}],\"InvalidValidation(uint256,address)\":[{\"notice\":\"The provided validation does not have a score for all responses.\"}],\"NotRegistered(address)\":[{\"notice\":\"The oracle is not registered.\"}],\"NotWhitelisted(address)\":[{\"notice\":\"Error to be thrown when a non-whitelisted address tries to access a function.\"}]},\"events\":{\"Request(uint256,address,bytes32)\":{\"notice\":\"Indicates a generation request for LLM.\"},\"Response(uint256,address)\":{\"notice\":\"Indicates a single Oracle response for a request.\"},\"StatusUpdate(uint256,bytes32,uint8,uint8)\":{\"notice\":\"Indicates the status change of an LLM generation request.\"},\"Validation(uint256,address)\":{\"notice\":\"Indicates a single Oracle response for a request.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Locks the contract, preventing any future re-initialization.\"},\"feeToken()\":{\"notice\":\"The token to be used for fee payments.\"},\"generationDeviationFactor()\":{\"notice\":\"The deviation factor for the generation scores.\"},\"generationFee()\":{\"notice\":\"The base fee factor for a generation of LLM generation.\"},\"getBestResponse(uint256)\":{\"notice\":\"Returns the best performing result of the given task.\"},\"getFee((uint8,uint40,uint40))\":{\"notice\":\"Get the total fee for a given task setting.\"},\"getResponses(uint256)\":{\"notice\":\"Returns the responses to a given taskId.\"},\"getValidations(uint256)\":{\"notice\":\"Returns the validations to a given taskId.\"},\"initialize(address,address,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"Initialize the contract.Sets the Oracle Registry & Oracle Fee Manager.\"},\"maxScore()\":{\"notice\":\"The maximum score for a generation.\"},\"maximumParameters()\":{\"notice\":\"Maximums for oracle parameters.\"},\"minScore()\":{\"notice\":\"The minimum score for a generation.\"},\"minimumParameters()\":{\"notice\":\"Minimums for oracle parameters.\"},\"nextTaskId()\":{\"notice\":\"The task ID counter.\"},\"platformFee()\":{\"notice\":\"A fixed fee paid for the platform.\"},\"platformFeeBalance()\":{\"notice\":\"To track the platform fees to be able to owner withdraw the correct amount of fee.\"},\"registry()\":{\"notice\":\"The Oracle Registry.\"},\"request(bytes32,bytes,bytes,(uint8,uint40,uint40))\":{\"notice\":\"Request LLM generation.\"},\"requests(uint256)\":{\"notice\":\"LLM generation requests.\"},\"respond(uint256,uint256,bytes,bytes)\":{\"notice\":\"Respond to an LLM generation.\"},\"responses(uint256,uint256)\":{\"notice\":\"LLM generation responses.\"},\"setFees(uint256,uint256,uint256)\":{\"notice\":\"Update Oracle fees.\"},\"setGenerationDeviationFactor(uint64)\":{\"notice\":\"Update generation deviation factor.\"},\"setParameters((uint8,uint40,uint40),(uint8,uint40,uint40))\":{\"notice\":\"Update Oracle parameters bounds.\"},\"validate(uint256,uint256,uint256[],bytes)\":{\"notice\":\"Validate requests for a given taskId.\"},\"validationFee()\":{\"notice\":\"The base fee factor for a generation of LLM validation.\"},\"validations(uint256,uint256)\":{\"notice\":\"LLM generation response validations.\"},\"withdrawPlatformFees()\":{\"notice\":\"Withdraw the platform fees & along with remaining fees within the contract.\"}},\"notice\":\"Responsible for coordinating the Oracle responses to LLM generation requests.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LLMOracleCoordinator.sol\":\"LLMOracleCoordinator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xaab065cbe0f562d1d7185da1e0def4e4ee026ed76da24895db0e02f68666e56e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e2161611bd6810eea79168fd56ffc55ae54ef9f7732bd751565f6324b19fbb5\",\"dweb:/ipfs/QmWHmc4rx1w96oCftjJvcUFgqs4Yo93FNGgQhc7yZBVHMa\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xc0ca0cf9ebb745f31e90584b1309c871a54d1c20c1bb09163ff5cc9083c1c929\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d45a6bcfbb149dad07bba6352fc8f0d90a09858c1dfba3044c4b12ed7e14f67\",\"dweb:/ipfs/QmPiyFySkJjcNfy4af42qQGcfi8DSNZXjSD1odjWRaHkPn\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x02caa0e5f7bade9a0d8ad6058467d641cb67697cd4678c7b1c170686bafe9128\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33b42a434f5d5fdc5071be05238059b9d8938bdab510071a5c300a975abc405a\",\"dweb:/ipfs/QmaThmoD3JMdHGhn4GUJbEGnKcojUG8PWMFoC7DFcQoeCw\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xd7c9f6f5f3386c29eee9321197fd83ac735c9c3c21431065f0e8e10fe3d0739c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://096db22b340a43c39b39383ca644dbe0a50c7984fe9cec6a0cf4c2ac8b985dd7\",\"dweb:/ipfs/QmNRjJL4pHyPd2eEbtdxhCTMK1xfSScGZ2RvEggnVdfrDN\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x68ae173e8ada4b8effc37f888cb937037aba3d2e45ce4becbc0c0c861e62da81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e295d0647e564d93e3b17e151c3b2be3609fac380a3f046d8defc268ca7cf9fb\",\"dweb:/ipfs/QmZVaD9YVT3Ss7s1vYSAW23xVLxh1LKSSVLwA8N7imeBRW\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x9a3edbfea14335a37f212fa3eef8fbc233a8c2987746485b9498992ab319500b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72f1e6ed540d8f61805a4256ad17e65cd92ff743d09666a33d2914f9fef040ba\",\"dweb:/ipfs/QmXbajpjWG7noYMsaGrhR9wnSnH7Dor8hcEZsSYbBM6tkr\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/LLMOracleCoordinator.sol\":{\"keccak256\":\"0xe83792d5104dc766420f5fd2a9eb2b6533d04e5dd5f77fb834178c7f8dee255a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://72e533f78b5cf14bf5b4ba8056d6c2319ef7bf4c4364250881620a892dea2fb1\",\"dweb:/ipfs/QmVYocVoA1xW53aHnZunqAiyNuSXba4VszkWrayjkw5ryL\"]},\"src/LLMOracleManager.sol\":{\"keccak256\":\"0x67af84266d6ace5562f957759d69b4eaebe1bd64e0ff974fc97cafcbe08116c8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7b72af58f286ce45b10d02a7722fd0760e0ed03e2f807ff9db93e797240f34b\",\"dweb:/ipfs/QmeFZc71QD3K77EgcWtu9BC62LB1YX1FitXJDN8VrHwmP1\"]},\"src/LLMOracleRegistry.sol\":{\"keccak256\":\"0xa99ae44652d1bf56511081741b6a5a0217668fc1eddfecc102fed914fecb4942\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://081d30ffb7d37e40dd85149a5751cd1305deebff21e2592606f2d9ca3c064eda\",\"dweb:/ipfs/QmcwNXEVtyTezGfrVx8Xe6pbMvzXaqyd7Hd7kRcsA2SN5W\"]},\"src/LLMOracleTask.sol\":{\"keccak256\":\"0x513e33afbc11d0938ef9240d7d595a7bc396af61e250f341c3fc6dd0b3e10cc5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://182b088ee206923289c93ebf5918470b8c89a19b4505f3e3af3eae660a621456\",\"dweb:/ipfs/QmVodUVJ8EUwdMjSJDfXRGqoA5UcdqaGUULFa4tQ9zusph\"]},\"src/Statistics.sol\":{\"keccak256\":\"0x2c8bdc72131f3e300adc0d8c3887f159daa6f1f95a64176f6dde26fdfecd1936\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3fe1b8370fc2c3bf2f849b5da6c9056b4f607ee3b71c391604de8f3497041b8f\",\"dweb:/ipfs/QmQH389E2gBCopZUbymMeSZeSgfy2UmbDy2xk6xV2wXHuf\"]},\"src/Whitelist.sol\":{\"keccak256\":\"0x10e850f4bd39e7ebffa6ee33f24026082f37cf0b78f2e86ff678266d51f046df\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5e139ccd80e55e2b5fa9490cc591d5f13364f712a68523ea93983406ad6c017e\",\"dweb:/ipfs/QmbzK1uXzyHBwr3i4EKMfEtz2qTbiiNWYkiCxWLtUiayfd\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"oracle","type":"address"}],"type":"error","name":"AlreadyResponded"},{"inputs":[],"type":"error","name":"ComputeError"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"want","type":"uint256"}],"type":"error","name":"InsufficientFees"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidInput"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"type":"error","name":"InvalidNonce"},{"inputs":[{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"InvalidParameterRange"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"enum LLMOracleTask.TaskStatus","name":"have","type":"uint8"},{"internalType":"enum LLMOracleTask.TaskStatus","name":"want","type":"uint8"}],"type":"error","name":"InvalidTaskStatus"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"validator","type":"address"}],"type":"error","name":"InvalidValidation"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"type":"error","name":"NotRegistered"},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"type":"error","name":"NotWhitelisted"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"bytes32","name":"protocol","type":"bytes32","indexed":true}],"type":"event","name":"Request","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"address","name":"responder","type":"address","indexed":true}],"type":"event","name":"Response","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"protocol","type":"bytes32","indexed":true},{"internalType":"enum LLMOracleTask.TaskStatus","name":"statusBefore","type":"uint8","indexed":false},{"internalType":"enum LLMOracleTask.TaskStatus","name":"statusAfter","type":"uint8","indexed":false}],"type":"event","name":"StatusUpdate","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"address","name":"validator","type":"address","indexed":true}],"type":"event","name":"Validation","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeToken","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"generationDeviationFactor","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"generationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBestResponse","outputs":[{"internalType":"struct LLMOracleTask.TaskResponse","name":"","type":"tuple","components":[{"internalType":"address","name":"responder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}]}]},{"inputs":[{"internalType":"struct LLMOracleTaskParameters","name":"parameters","type":"tuple","components":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]}],"stateMutability":"view","type":"function","name":"getFee","outputs":[{"internalType":"uint256","name":"totalFee","type":"uint256"},{"internalType":"uint256","name":"generatorFee","type":"uint256"},{"internalType":"uint256","name":"validatorFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getResponses","outputs":[{"internalType":"struct LLMOracleTask.TaskResponse[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"responder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}]}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getValidations","outputs":[{"internalType":"struct LLMOracleTask.TaskValidation[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"validator","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256[]","name":"scores","type":"uint256[]"},{"internalType":"bytes","name":"metadata","type":"bytes"}]}]},{"inputs":[{"internalType":"address","name":"_oracleRegistry","type":"address"},{"internalType":"address","name":"_feeToken","type":"address"},{"internalType":"uint256","name":"_platformFee","type":"uint256"},{"internalType":"uint256","name":"_generationFee","type":"uint256"},{"internalType":"uint256","name":"_validationFee","type":"uint256"},{"internalType":"uint256","name":"_minScore","type":"uint256"},{"internalType":"uint256","name":"_maxScore","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"maxScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maximumParameters","outputs":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minimumParameters","outputs":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextTaskId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"platformFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"platformFeeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"registry","outputs":[{"internalType":"contract LLMOracleRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"protocol","type":"bytes32"},{"internalType":"bytes","name":"input","type":"bytes"},{"internalType":"bytes","name":"models","type":"bytes"},{"internalType":"struct LLMOracleTaskParameters","name":"parameters","type":"tuple","components":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]}],"stateMutability":"nonpayable","type":"function","name":"request","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"view","type":"function","name":"requests","outputs":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"bytes32","name":"protocol","type":"bytes32"},{"internalType":"struct LLMOracleTaskParameters","name":"parameters","type":"tuple","components":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]},{"internalType":"enum LLMOracleTask.TaskStatus","name":"status","type":"uint8"},{"internalType":"uint256","name":"generatorFee","type":"uint256"},{"internalType":"uint256","name":"validatorFee","type":"uint256"},{"internalType":"uint256","name":"platformFee","type":"uint256"},{"internalType":"bytes","name":"input","type":"bytes"},{"internalType":"bytes","name":"models","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"respond"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"responses","outputs":[{"internalType":"address","name":"responder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"_platformFee","type":"uint256"},{"internalType":"uint256","name":"_generationFee","type":"uint256"},{"internalType":"uint256","name":"_validationFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setFees"},{"inputs":[{"internalType":"uint64","name":"_generationDeviationFactor","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setGenerationDeviationFactor"},{"inputs":[{"internalType":"struct LLMOracleTaskParameters","name":"minimums","type":"tuple","components":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]},{"internalType":"struct LLMOracleTaskParameters","name":"maximums","type":"tuple","components":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]}],"stateMutability":"nonpayable","type":"function","name":"setParameters"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256[]","name":"scores","type":"uint256[]"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"validate"},{"inputs":[],"stateMutability":"view","type":"function","name":"validationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"validations","outputs":[{"internalType":"address","name":"validator","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"metadata","type":"bytes"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdrawPlatformFees"}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor","details":"[See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--)."},"getBestResponse(uint256)":{"details":"For invalid task IDs, the status check will fail.","params":{"taskId":"The ID of the task to get the result for."},"returns":{"_0":"The best performing response w.r.t validation scores."}},"getFee((uint8,uint40,uint40))":{"params":{"parameters":"The task parameters."},"returns":{"generatorFee":"The fee paid to each generator per generation.","totalFee":"The total fee for the task.","validatorFee":"The fee paid to each validator per validated generation."}},"getResponses(uint256)":{"params":{"taskId":"The ID of the task to get responses for."},"returns":{"_0":"The responses for the given taskId."}},"getValidations(uint256)":{"params":{"taskId":"The ID of the task to get validations for."},"returns":{"_0":"The validations for the given taskId."}},"initialize(address,address,uint256,uint256,uint256,uint256,uint256)":{"params":{"_feeToken":"The token (ERC20) to be used for fee payments (usually $BATCH).","_generationFee":"The initial base fee for LLM generation.","_oracleRegistry":"The Oracle Registry contract address.","_platformFee":"The initial platform fee for each LLM generation.","_validationFee":"The initial base fee for response validation."}},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"request(bytes32,bytes,bytes,(uint8,uint40,uint40))":{"details":"Input must be non-empty.Reverts if contract has not enough allowance for the fee.Reverts if difficulty is out of range.","params":{"input":"The input data for the LLM generation.","parameters":"The task parameters","protocol":"The protocol string, should be a short 32-byte string (e.g., \"dria/1.0.0\")."},"returns":{"_0":"task id"}},"respond(uint256,uint256,bytes,bytes)":{"details":"Output must be non-empty.Reverts if the task is not pending generation.Reverts if the responder is not registered.Reverts if the responder has already responded to this task.Reverts if the nonce is not a valid proof-of-work.","params":{"metadata":"Optional metadata for this output.","nonce":"The proof-of-work nonce.","output":"The output data for the LLM generation.","taskId":"The task ID to respond to."}},"setFees(uint256,uint256,uint256)":{"details":"To keep a fee unchanged, provide the same value.","params":{"_generationFee":"The new generation fee","_platformFee":"The new platform fee","_validationFee":"The new validation fee"}},"setGenerationDeviationFactor(uint64)":{"details":"Provide the same value to keep it unchanged.","params":{"_generationDeviationFactor":"The new generation deviation factor."}},"setParameters((uint8,uint40,uint40),(uint8,uint40,uint40))":{"details":"Provide the same value to keep it unchanged.","params":{"maximums":"The new maximum parameters.","minimums":"The new minimum parameters."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"validate(uint256,uint256,uint256[],bytes)":{"details":"Reverts if the task is not pending validation.Reverts if the number of scores is not equal to the number of generations.Reverts if any score is greater than the maximum score.","params":{"metadata":"Optional metadata for this validation.","nonce":"The proof-of-work nonce.","scores":"The validation scores for each generation.","taskId":"The ID of the task to validate."}}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Locks the contract, preventing any future re-initialization."},"feeToken()":{"notice":"The token to be used for fee payments."},"generationDeviationFactor()":{"notice":"The deviation factor for the generation scores."},"generationFee()":{"notice":"The base fee factor for a generation of LLM generation."},"getBestResponse(uint256)":{"notice":"Returns the best performing result of the given task."},"getFee((uint8,uint40,uint40))":{"notice":"Get the total fee for a given task setting."},"getResponses(uint256)":{"notice":"Returns the responses to a given taskId."},"getValidations(uint256)":{"notice":"Returns the validations to a given taskId."},"initialize(address,address,uint256,uint256,uint256,uint256,uint256)":{"notice":"Initialize the contract.Sets the Oracle Registry & Oracle Fee Manager."},"maxScore()":{"notice":"The maximum score for a generation."},"maximumParameters()":{"notice":"Maximums for oracle parameters."},"minScore()":{"notice":"The minimum score for a generation."},"minimumParameters()":{"notice":"Minimums for oracle parameters."},"nextTaskId()":{"notice":"The task ID counter."},"platformFee()":{"notice":"A fixed fee paid for the platform."},"platformFeeBalance()":{"notice":"To track the platform fees to be able to owner withdraw the correct amount of fee."},"registry()":{"notice":"The Oracle Registry."},"request(bytes32,bytes,bytes,(uint8,uint40,uint40))":{"notice":"Request LLM generation."},"requests(uint256)":{"notice":"LLM generation requests."},"respond(uint256,uint256,bytes,bytes)":{"notice":"Respond to an LLM generation."},"responses(uint256,uint256)":{"notice":"LLM generation responses."},"setFees(uint256,uint256,uint256)":{"notice":"Update Oracle fees."},"setGenerationDeviationFactor(uint64)":{"notice":"Update generation deviation factor."},"setParameters((uint8,uint40,uint40),(uint8,uint40,uint40))":{"notice":"Update Oracle parameters bounds."},"validate(uint256,uint256,uint256[],bytes)":{"notice":"Validate requests for a given taskId."},"validationFee()":{"notice":"The base fee factor for a generation of LLM validation."},"validations(uint256,uint256)":{"notice":"LLM generation response validations."},"withdrawPlatformFees()":{"notice":"Withdraw the platform fees & along with remaining fees within the contract."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","@openzeppelin/foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LLMOracleCoordinator.sol":"LLMOracleCoordinator"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xaab065cbe0f562d1d7185da1e0def4e4ee026ed76da24895db0e02f68666e56e","urls":["bzz-raw://7e2161611bd6810eea79168fd56ffc55ae54ef9f7732bd751565f6324b19fbb5","dweb:/ipfs/QmWHmc4rx1w96oCftjJvcUFgqs4Yo93FNGgQhc7yZBVHMa"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xc0ca0cf9ebb745f31e90584b1309c871a54d1c20c1bb09163ff5cc9083c1c929","urls":["bzz-raw://7d45a6bcfbb149dad07bba6352fc8f0d90a09858c1dfba3044c4b12ed7e14f67","dweb:/ipfs/QmPiyFySkJjcNfy4af42qQGcfi8DSNZXjSD1odjWRaHkPn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x02caa0e5f7bade9a0d8ad6058467d641cb67697cd4678c7b1c170686bafe9128","urls":["bzz-raw://33b42a434f5d5fdc5071be05238059b9d8938bdab510071a5c300a975abc405a","dweb:/ipfs/QmaThmoD3JMdHGhn4GUJbEGnKcojUG8PWMFoC7DFcQoeCw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xd7c9f6f5f3386c29eee9321197fd83ac735c9c3c21431065f0e8e10fe3d0739c","urls":["bzz-raw://096db22b340a43c39b39383ca644dbe0a50c7984fe9cec6a0cf4c2ac8b985dd7","dweb:/ipfs/QmNRjJL4pHyPd2eEbtdxhCTMK1xfSScGZ2RvEggnVdfrDN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x68ae173e8ada4b8effc37f888cb937037aba3d2e45ce4becbc0c0c861e62da81","urls":["bzz-raw://e295d0647e564d93e3b17e151c3b2be3609fac380a3f046d8defc268ca7cf9fb","dweb:/ipfs/QmZVaD9YVT3Ss7s1vYSAW23xVLxh1LKSSVLwA8N7imeBRW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x9a3edbfea14335a37f212fa3eef8fbc233a8c2987746485b9498992ab319500b","urls":["bzz-raw://72f1e6ed540d8f61805a4256ad17e65cd92ff743d09666a33d2914f9fef040ba","dweb:/ipfs/QmXbajpjWG7noYMsaGrhR9wnSnH7Dor8hcEZsSYbBM6tkr"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/LLMOracleCoordinator.sol":{"keccak256":"0xe83792d5104dc766420f5fd2a9eb2b6533d04e5dd5f77fb834178c7f8dee255a","urls":["bzz-raw://72e533f78b5cf14bf5b4ba8056d6c2319ef7bf4c4364250881620a892dea2fb1","dweb:/ipfs/QmVYocVoA1xW53aHnZunqAiyNuSXba4VszkWrayjkw5ryL"],"license":"Apache-2.0"},"src/LLMOracleManager.sol":{"keccak256":"0x67af84266d6ace5562f957759d69b4eaebe1bd64e0ff974fc97cafcbe08116c8","urls":["bzz-raw://c7b72af58f286ce45b10d02a7722fd0760e0ed03e2f807ff9db93e797240f34b","dweb:/ipfs/QmeFZc71QD3K77EgcWtu9BC62LB1YX1FitXJDN8VrHwmP1"],"license":"Apache-2.0"},"src/LLMOracleRegistry.sol":{"keccak256":"0xa99ae44652d1bf56511081741b6a5a0217668fc1eddfecc102fed914fecb4942","urls":["bzz-raw://081d30ffb7d37e40dd85149a5751cd1305deebff21e2592606f2d9ca3c064eda","dweb:/ipfs/QmcwNXEVtyTezGfrVx8Xe6pbMvzXaqyd7Hd7kRcsA2SN5W"],"license":"Apache-2.0"},"src/LLMOracleTask.sol":{"keccak256":"0x513e33afbc11d0938ef9240d7d595a7bc396af61e250f341c3fc6dd0b3e10cc5","urls":["bzz-raw://182b088ee206923289c93ebf5918470b8c89a19b4505f3e3af3eae660a621456","dweb:/ipfs/QmVodUVJ8EUwdMjSJDfXRGqoA5UcdqaGUULFa4tQ9zusph"],"license":"Apache-2.0"},"src/Statistics.sol":{"keccak256":"0x2c8bdc72131f3e300adc0d8c3887f159daa6f1f95a64176f6dde26fdfecd1936","urls":["bzz-raw://3fe1b8370fc2c3bf2f849b5da6c9056b4f607ee3b71c391604de8f3497041b8f","dweb:/ipfs/QmQH389E2gBCopZUbymMeSZeSgfy2UmbDy2xk6xV2wXHuf"],"license":"Apache-2.0"},"src/Whitelist.sol":{"keccak256":"0x10e850f4bd39e7ebffa6ee33f24026082f37cf0b78f2e86ff678266d51f046df","urls":["bzz-raw://5e139ccd80e55e2b5fa9490cc591d5f13364f712a68523ea93983406ad6c017e","dweb:/ipfs/QmbzK1uXzyHBwr3i4EKMfEtz2qTbiiNWYkiCxWLtUiayfd"],"license":"Apache-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":52154,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"platformFee","offset":0,"slot":"0","type":"t_uint256"},{"astId":52157,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"generationFee","offset":0,"slot":"1","type":"t_uint256"},{"astId":52160,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"validationFee","offset":0,"slot":"2","type":"t_uint256"},{"astId":52163,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"generationDeviationFactor","offset":0,"slot":"3","type":"t_uint64"},{"astId":52167,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"minimumParameters","offset":0,"slot":"4","type":"t_struct(LLMOracleTaskParameters)52834_storage"},{"astId":52171,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"maximumParameters","offset":0,"slot":"5","type":"t_struct(LLMOracleTaskParameters)52834_storage"},{"astId":52174,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"minScore","offset":0,"slot":"6","type":"t_uint256"},{"astId":52177,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"maxScore","offset":0,"slot":"7","type":"t_uint256"},{"astId":50990,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"registry","offset":0,"slot":"8","type":"t_contract(LLMOracleRegistry)52821"},{"astId":50994,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"feeToken","offset":0,"slot":"9","type":"t_contract(ERC20)38696"},{"astId":50997,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"nextTaskId","offset":0,"slot":"10","type":"t_uint256"},{"astId":51003,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"requests","offset":0,"slot":"11","type":"t_mapping(t_uint256,t_struct(TaskRequest)52872_storage)"},{"astId":51010,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"responses","offset":0,"slot":"12","type":"t_mapping(t_uint256,t_array(t_struct(TaskResponse)52889_storage)dyn_storage)"},{"astId":51017,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"validations","offset":0,"slot":"13","type":"t_mapping(t_uint256,t_array(t_struct(TaskValidation)52904_storage)dyn_storage)"},{"astId":51020,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"platformFeeBalance","offset":0,"slot":"14","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(TaskResponse)52889_storage)dyn_storage":{"encoding":"dynamic_array","label":"struct LLMOracleTask.TaskResponse[]","numberOfBytes":"32","base":"t_struct(TaskResponse)52889_storage"},"t_array(t_struct(TaskValidation)52904_storage)dyn_storage":{"encoding":"dynamic_array","label":"struct LLMOracleTask.TaskValidation[]","numberOfBytes":"32","base":"t_struct(TaskValidation)52904_storage"},"t_array(t_uint256)dyn_storage":{"encoding":"dynamic_array","label":"uint256[]","numberOfBytes":"32","base":"t_uint256"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_contract(ERC20)38696":{"encoding":"inplace","label":"contract ERC20","numberOfBytes":"20"},"t_contract(LLMOracleRegistry)52821":{"encoding":"inplace","label":"contract LLMOracleRegistry","numberOfBytes":"20"},"t_enum(TaskStatus)52841":{"encoding":"inplace","label":"enum LLMOracleTask.TaskStatus","numberOfBytes":"1"},"t_mapping(t_uint256,t_array(t_struct(TaskResponse)52889_storage)dyn_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct LLMOracleTask.TaskResponse[])","numberOfBytes":"32","value":"t_array(t_struct(TaskResponse)52889_storage)dyn_storage"},"t_mapping(t_uint256,t_array(t_struct(TaskValidation)52904_storage)dyn_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct LLMOracleTask.TaskValidation[])","numberOfBytes":"32","value":"t_array(t_struct(TaskValidation)52904_storage)dyn_storage"},"t_mapping(t_uint256,t_struct(TaskRequest)52872_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct LLMOracleTask.TaskRequest)","numberOfBytes":"32","value":"t_struct(TaskRequest)52872_storage"},"t_struct(LLMOracleTaskParameters)52834_storage":{"encoding":"inplace","label":"struct LLMOracleTaskParameters","numberOfBytes":"32","members":[{"astId":52827,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"difficulty","offset":0,"slot":"0","type":"t_uint8"},{"astId":52830,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"numGenerations","offset":1,"slot":"0","type":"t_uint40"},{"astId":52833,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"numValidations","offset":6,"slot":"0","type":"t_uint40"}]},"t_struct(TaskRequest)52872_storage":{"encoding":"inplace","label":"struct LLMOracleTask.TaskRequest","numberOfBytes":"288","members":[{"astId":52845,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"requester","offset":0,"slot":"0","type":"t_address"},{"astId":52848,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"protocol","offset":0,"slot":"1","type":"t_bytes32"},{"astId":52852,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"parameters","offset":0,"slot":"2","type":"t_struct(LLMOracleTaskParameters)52834_storage"},{"astId":52856,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"status","offset":0,"slot":"3","type":"t_enum(TaskStatus)52841"},{"astId":52859,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"generatorFee","offset":0,"slot":"4","type":"t_uint256"},{"astId":52862,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"validatorFee","offset":0,"slot":"5","type":"t_uint256"},{"astId":52865,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"platformFee","offset":0,"slot":"6","type":"t_uint256"},{"astId":52868,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"input","offset":0,"slot":"7","type":"t_bytes_storage"},{"astId":52871,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"models","offset":0,"slot":"8","type":"t_bytes_storage"}]},"t_struct(TaskResponse)52889_storage":{"encoding":"inplace","label":"struct LLMOracleTask.TaskResponse","numberOfBytes":"160","members":[{"astId":52876,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"responder","offset":0,"slot":"0","type":"t_address"},{"astId":52879,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"nonce","offset":0,"slot":"1","type":"t_uint256"},{"astId":52882,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"score","offset":0,"slot":"2","type":"t_uint256"},{"astId":52885,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"output","offset":0,"slot":"3","type":"t_bytes_storage"},{"astId":52888,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"metadata","offset":0,"slot":"4","type":"t_bytes_storage"}]},"t_struct(TaskValidation)52904_storage":{"encoding":"inplace","label":"struct LLMOracleTask.TaskValidation","numberOfBytes":"128","members":[{"astId":52893,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"validator","offset":0,"slot":"0","type":"t_address"},{"astId":52896,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"nonce","offset":0,"slot":"1","type":"t_uint256"},{"astId":52900,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"scores","offset":0,"slot":"2","type":"t_array(t_uint256)dyn_storage"},{"astId":52903,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"metadata","offset":0,"slot":"3","type":"t_bytes_storage"}]},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint40":{"encoding":"inplace","label":"uint40","numberOfBytes":"5"},"t_uint64":{"encoding":"inplace","label":"uint64","numberOfBytes":"8"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"ast":{"absolutePath":"src/LLMOracleCoordinator.sol","id":52134,"exportedSymbols":{"ERC20":[38696],"LLMOracleCoordinator":[52133],"LLMOracleKind":[52428],"LLMOracleManager":[52416],"LLMOracleRegistry":[52821],"LLMOracleTask":[52905],"LLMOracleTaskParameters":[52834],"Statistics":[53117],"UUPSUpgradeable":[37111],"Whitelist":[53213]},"nodeType":"SourceUnit","src":"39:19838:60","nodes":[{"id":50880,"nodeType":"PragmaDirective","src":"39:24:60","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":50882,"nodeType":"ImportDirective","src":"65:68:60","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":38697,"symbolAliases":[{"foreign":{"id":50881,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38696,"src":"73:5:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50884,"nodeType":"ImportDirective","src":"134:100:60","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":37112,"symbolAliases":[{"foreign":{"id":50883,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37111,"src":"142:15:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50887,"nodeType":"ImportDirective","src":"236:73:60","nodes":[],"absolutePath":"src/LLMOracleRegistry.sol","file":"./LLMOracleRegistry.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":52822,"symbolAliases":[{"foreign":{"id":50885,"name":"LLMOracleRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52821,"src":"244:17:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":50886,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"263:13:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50890,"nodeType":"ImportDirective","src":"310:75:60","nodes":[],"absolutePath":"src/LLMOracleTask.sol","file":"./LLMOracleTask.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":52906,"symbolAliases":[{"foreign":{"id":50888,"name":"LLMOracleTask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52905,"src":"318:13:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":50889,"name":"LLMOracleTaskParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52834,"src":"333:23:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50892,"nodeType":"ImportDirective","src":"386:56:60","nodes":[],"absolutePath":"src/LLMOracleManager.sol","file":"./LLMOracleManager.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":52417,"symbolAliases":[{"foreign":{"id":50891,"name":"LLMOracleManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52416,"src":"394:16:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50894,"nodeType":"ImportDirective","src":"443:44:60","nodes":[],"absolutePath":"src/Statistics.sol","file":"./Statistics.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":53118,"symbolAliases":[{"foreign":{"id":50893,"name":"Statistics","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53117,"src":"451:10:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50896,"nodeType":"ImportDirective","src":"488:42:60","nodes":[],"absolutePath":"src/Whitelist.sol","file":"./Whitelist.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":53214,"symbolAliases":[{"foreign":{"id":50895,"name":"Whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53213,"src":"496:9:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52133,"nodeType":"ContractDefinition","src":"656:19220:60","nodes":[{"id":50912,"nodeType":"EventDefinition","src":"1124:91:60","nodes":[],"anonymous":false,"documentation":{"id":50904,"nodeType":"StructuredDocumentation","src":"923:196:60","text":"@notice Indicates a generation request for LLM.\n @dev `protocol` is a short 32-byte string (e.g., \"dria/1.0.0\").\n @dev Using the protocol topic, listeners can filter by protocol."},"eventSelector":"7f371482986a3450b759cc4a079353a8eaa36a650b5eba1fb9c00693026f254a","name":"Request","nameLocation":"1130:7:60","parameters":{"id":50911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50906,"indexed":true,"mutability":"mutable","name":"taskId","nameLocation":"1154:6:60","nodeType":"VariableDeclaration","scope":50912,"src":"1138:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50905,"name":"uint256","nodeType":"ElementaryTypeName","src":"1138:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50908,"indexed":true,"mutability":"mutable","name":"requester","nameLocation":"1178:9:60","nodeType":"VariableDeclaration","scope":50912,"src":"1162:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50907,"name":"address","nodeType":"ElementaryTypeName","src":"1162:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":50910,"indexed":true,"mutability":"mutable","name":"protocol","nameLocation":"1205:8:60","nodeType":"VariableDeclaration","scope":50912,"src":"1189:24:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":50909,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1189:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1137:77:60"}},{"id":50919,"nodeType":"EventDefinition","src":"1287:66:60","nodes":[],"anonymous":false,"documentation":{"id":50913,"nodeType":"StructuredDocumentation","src":"1221:61:60","text":"@notice Indicates a single Oracle response for a request."},"eventSelector":"6c809136a3b8faf74ae9e955b7e7b758baa66bde976764a29fa74a4eb1e3702e","name":"Response","nameLocation":"1293:8:60","parameters":{"id":50918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50915,"indexed":true,"mutability":"mutable","name":"taskId","nameLocation":"1318:6:60","nodeType":"VariableDeclaration","scope":50919,"src":"1302:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50914,"name":"uint256","nodeType":"ElementaryTypeName","src":"1302:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50917,"indexed":true,"mutability":"mutable","name":"responder","nameLocation":"1342:9:60","nodeType":"VariableDeclaration","scope":50919,"src":"1326:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50916,"name":"address","nodeType":"ElementaryTypeName","src":"1326:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1301:51:60"}},{"id":50926,"nodeType":"EventDefinition","src":"1425:68:60","nodes":[],"anonymous":false,"documentation":{"id":50920,"nodeType":"StructuredDocumentation","src":"1359:61:60","text":"@notice Indicates a single Oracle response for a request."},"eventSelector":"a1afe65d2285036595be8f15025c4421a593141666e15e5a980e742920646b1e","name":"Validation","nameLocation":"1431:10:60","parameters":{"id":50925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50922,"indexed":true,"mutability":"mutable","name":"taskId","nameLocation":"1458:6:60","nodeType":"VariableDeclaration","scope":50926,"src":"1442:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50921,"name":"uint256","nodeType":"ElementaryTypeName","src":"1442:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50924,"indexed":true,"mutability":"mutable","name":"validator","nameLocation":"1482:9:60","nodeType":"VariableDeclaration","scope":50926,"src":"1466:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50923,"name":"address","nodeType":"ElementaryTypeName","src":"1466:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1441:51:60"}},{"id":50939,"nodeType":"EventDefinition","src":"1573:132:60","nodes":[],"anonymous":false,"documentation":{"id":50927,"nodeType":"StructuredDocumentation","src":"1499:69:60","text":"@notice Indicates the status change of an LLM generation request."},"eventSelector":"1c0a5e4b371d60717068c91e93b5e94c91d4c6d6c3fab36082a78f987e5a69f5","name":"StatusUpdate","nameLocation":"1579:12:60","parameters":{"id":50938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50929,"indexed":true,"mutability":"mutable","name":"taskId","nameLocation":"1617:6:60","nodeType":"VariableDeclaration","scope":50939,"src":"1601:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50928,"name":"uint256","nodeType":"ElementaryTypeName","src":"1601:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50931,"indexed":true,"mutability":"mutable","name":"protocol","nameLocation":"1641:8:60","nodeType":"VariableDeclaration","scope":50939,"src":"1625:24:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":50930,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1625:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":50934,"indexed":false,"mutability":"mutable","name":"statusBefore","nameLocation":"1662:12:60","nodeType":"VariableDeclaration","scope":50939,"src":"1651:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"typeName":{"id":50933,"nodeType":"UserDefinedTypeName","pathNode":{"id":50932,"name":"TaskStatus","nameLocations":["1651:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":52841,"src":"1651:10:60"},"referencedDeclaration":52841,"src":"1651:10:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"visibility":"internal"},{"constant":false,"id":50937,"indexed":false,"mutability":"mutable","name":"statusAfter","nameLocation":"1687:11:60","nodeType":"VariableDeclaration","scope":50939,"src":"1676:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"typeName":{"id":50936,"nodeType":"UserDefinedTypeName","pathNode":{"id":50935,"name":"TaskStatus","nameLocations":["1676:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":52841,"src":"1676:10:60"},"referencedDeclaration":52841,"src":"1676:10:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"visibility":"internal"}],"src":"1591:113:60"}},{"id":50946,"nodeType":"ErrorDefinition","src":"1951:51:60","nodes":[],"documentation":{"id":50940,"nodeType":"StructuredDocumentation","src":"1890:56:60","text":"@notice Not enough funds were provided for the task."},"errorSelector":"8f4f5d78","name":"InsufficientFees","nameLocation":"1957:16:60","parameters":{"id":50945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50942,"mutability":"mutable","name":"have","nameLocation":"1982:4:60","nodeType":"VariableDeclaration","scope":50946,"src":"1974:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50941,"name":"uint256","nodeType":"ElementaryTypeName","src":"1974:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50944,"mutability":"mutable","name":"want","nameLocation":"1996:4:60","nodeType":"VariableDeclaration","scope":50946,"src":"1988:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50943,"name":"uint256","nodeType":"ElementaryTypeName","src":"1988:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1973:28:60"}},{"id":50957,"nodeType":"ErrorDefinition","src":"2057:74:60","nodes":[],"documentation":{"id":50947,"nodeType":"StructuredDocumentation","src":"2008:44:60","text":"@notice Unexpected status for this task."},"errorSelector":"48f178b8","name":"InvalidTaskStatus","nameLocation":"2063:17:60","parameters":{"id":50956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50949,"mutability":"mutable","name":"taskId","nameLocation":"2089:6:60","nodeType":"VariableDeclaration","scope":50957,"src":"2081:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50948,"name":"uint256","nodeType":"ElementaryTypeName","src":"2081:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50952,"mutability":"mutable","name":"have","nameLocation":"2108:4:60","nodeType":"VariableDeclaration","scope":50957,"src":"2097:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"typeName":{"id":50951,"nodeType":"UserDefinedTypeName","pathNode":{"id":50950,"name":"TaskStatus","nameLocations":["2097:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":52841,"src":"2097:10:60"},"referencedDeclaration":52841,"src":"2097:10:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"visibility":"internal"},{"constant":false,"id":50955,"mutability":"mutable","name":"want","nameLocation":"2125:4:60","nodeType":"VariableDeclaration","scope":50957,"src":"2114:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"typeName":{"id":50954,"nodeType":"UserDefinedTypeName","pathNode":{"id":50953,"name":"TaskStatus","nameLocations":["2114:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":52841,"src":"2114:10:60"},"referencedDeclaration":52841,"src":"2114:10:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"visibility":"internal"}],"src":"2080:50:60"}},{"id":50964,"nodeType":"ErrorDefinition","src":"2199:50:60","nodes":[],"documentation":{"id":50958,"nodeType":"StructuredDocumentation","src":"2137:57:60","text":"@notice The given nonce is not a valid proof-of-work."},"errorSelector":"06427aeb","name":"InvalidNonce","nameLocation":"2205:12:60","parameters":{"id":50963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50960,"mutability":"mutable","name":"taskId","nameLocation":"2226:6:60","nodeType":"VariableDeclaration","scope":50964,"src":"2218:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50959,"name":"uint256","nodeType":"ElementaryTypeName","src":"2218:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50962,"mutability":"mutable","name":"nonce","nameLocation":"2242:5:60","nodeType":"VariableDeclaration","scope":50964,"src":"2234:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50961,"name":"uint256","nodeType":"ElementaryTypeName","src":"2234:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2217:31:60"}},{"id":50971,"nodeType":"ErrorDefinition","src":"2336:59:60","nodes":[],"documentation":{"id":50965,"nodeType":"StructuredDocumentation","src":"2255:76:60","text":"@notice The provided validation does not have a score for all responses."},"errorSelector":"ab8ad48a","name":"InvalidValidation","nameLocation":"2342:17:60","parameters":{"id":50970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50967,"mutability":"mutable","name":"taskId","nameLocation":"2368:6:60","nodeType":"VariableDeclaration","scope":50971,"src":"2360:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50966,"name":"uint256","nodeType":"ElementaryTypeName","src":"2360:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50969,"mutability":"mutable","name":"validator","nameLocation":"2384:9:60","nodeType":"VariableDeclaration","scope":50971,"src":"2376:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50968,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2359:35:60"}},{"id":50976,"nodeType":"ErrorDefinition","src":"2447:36:60","nodes":[],"documentation":{"id":50972,"nodeType":"StructuredDocumentation","src":"2401:41:60","text":"@notice The oracle is not registered."},"errorSelector":"bfc6c337","name":"NotRegistered","nameLocation":"2453:13:60","parameters":{"id":50975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50974,"mutability":"mutable","name":"oracle","nameLocation":"2475:6:60","nodeType":"VariableDeclaration","scope":50976,"src":"2467:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50973,"name":"address","nodeType":"ElementaryTypeName","src":"2467:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2466:16:60"}},{"id":50983,"nodeType":"ErrorDefinition","src":"2552:55:60","nodes":[],"documentation":{"id":50977,"nodeType":"StructuredDocumentation","src":"2489:58:60","text":"@notice The oracle has already responded to this task."},"errorSelector":"808df980","name":"AlreadyResponded","nameLocation":"2558:16:60","parameters":{"id":50982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50979,"mutability":"mutable","name":"taskId","nameLocation":"2583:6:60","nodeType":"VariableDeclaration","scope":50983,"src":"2575:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50978,"name":"uint256","nodeType":"ElementaryTypeName","src":"2575:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50981,"mutability":"mutable","name":"oracle","nameLocation":"2599:6:60","nodeType":"VariableDeclaration","scope":50983,"src":"2591:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50980,"name":"address","nodeType":"ElementaryTypeName","src":"2591:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2574:32:60"}},{"id":50986,"nodeType":"ErrorDefinition","src":"2645:21:60","nodes":[],"documentation":{"id":50984,"nodeType":"StructuredDocumentation","src":"2613:27:60","text":"@notice Input is Empty."},"errorSelector":"b4fa3fb3","name":"InvalidInput","nameLocation":"2651:12:60","parameters":{"id":50985,"nodeType":"ParameterList","parameters":[],"src":"2663:2:60"}},{"id":50990,"nodeType":"VariableDeclaration","src":"2889:33:60","nodes":[],"constant":false,"documentation":{"id":50987,"nodeType":"StructuredDocumentation","src":"2852:32:60","text":"@notice The Oracle Registry."},"functionSelector":"7b103999","mutability":"mutable","name":"registry","nameLocation":"2914:8:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"},"typeName":{"id":50989,"nodeType":"UserDefinedTypeName","pathNode":{"id":50988,"name":"LLMOracleRegistry","nameLocations":["2889:17:60"],"nodeType":"IdentifierPath","referencedDeclaration":52821,"src":"2889:17:60"},"referencedDeclaration":52821,"src":"2889:17:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"visibility":"public"},{"id":50994,"nodeType":"VariableDeclaration","src":"2983:21:60","nodes":[],"constant":false,"documentation":{"id":50991,"nodeType":"StructuredDocumentation","src":"2928:50:60","text":"@notice The token to be used for fee payments."},"functionSelector":"647846a5","mutability":"mutable","name":"feeToken","nameLocation":"2996:8:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"},"typeName":{"id":50993,"nodeType":"UserDefinedTypeName","pathNode":{"id":50992,"name":"ERC20","nameLocations":["2983:5:60"],"nodeType":"IdentifierPath","referencedDeclaration":38696,"src":"2983:5:60"},"referencedDeclaration":38696,"src":"2983:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"visibility":"public"},{"id":50997,"nodeType":"VariableDeclaration","src":"3194:25:60","nodes":[],"constant":false,"documentation":{"id":50995,"nodeType":"StructuredDocumentation","src":"3011:178:60","text":"@notice The task ID counter.\n @dev TaskId starts from 1, as 0 is reserved.\n @dev 0 can be used in to check that a request/response/validation has not been made."},"functionSelector":"fdc3d8d7","mutability":"mutable","name":"nextTaskId","nameLocation":"3209:10:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50996,"name":"uint256","nodeType":"ElementaryTypeName","src":"3194:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":51003,"nodeType":"VariableDeclaration","src":"3266:54:60","nodes":[],"constant":false,"documentation":{"id":50998,"nodeType":"StructuredDocumentation","src":"3225:36:60","text":"@notice LLM generation requests."},"functionSelector":"81d12c58","mutability":"mutable","name":"requests","nameLocation":"3312:8:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest)"},"typeName":{"id":51002,"keyName":"taskId","keyNameLocation":"3282:6:60","keyType":{"id":50999,"name":"uint256","nodeType":"ElementaryTypeName","src":"3274:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3266:38:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":51001,"nodeType":"UserDefinedTypeName","pathNode":{"id":51000,"name":"TaskRequest","nameLocations":["3292:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":52872,"src":"3292:11:60"},"referencedDeclaration":52872,"src":"3292:11:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"}}},"visibility":"public"},{"id":51010,"nodeType":"VariableDeclaration","src":"3368:58:60","nodes":[],"constant":false,"documentation":{"id":51004,"nodeType":"StructuredDocumentation","src":"3326:37:60","text":"@notice LLM generation responses."},"functionSelector":"0057efc2","mutability":"mutable","name":"responses","nameLocation":"3417:9:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse[])"},"typeName":{"id":51009,"keyName":"taskId","keyNameLocation":"3384:6:60","keyType":{"id":51005,"name":"uint256","nodeType":"ElementaryTypeName","src":"3376:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3368:41:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":51007,"nodeType":"UserDefinedTypeName","pathNode":{"id":51006,"name":"TaskResponse","nameLocations":["3394:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"3394:12:60"},"referencedDeclaration":52889,"src":"3394:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"id":51008,"nodeType":"ArrayTypeName","src":"3394:14:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse[]"}}},"visibility":"public"},{"id":51017,"nodeType":"VariableDeclaration","src":"3485:62:60","nodes":[],"constant":false,"documentation":{"id":51011,"nodeType":"StructuredDocumentation","src":"3432:48:60","text":"@notice LLM generation response validations."},"functionSelector":"4b5a82d1","mutability":"mutable","name":"validations","nameLocation":"3536:11:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation[])"},"typeName":{"id":51016,"keyName":"taskId","keyNameLocation":"3501:6:60","keyType":{"id":51012,"name":"uint256","nodeType":"ElementaryTypeName","src":"3493:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3485:43:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":51014,"nodeType":"UserDefinedTypeName","pathNode":{"id":51013,"name":"TaskValidation","nameLocations":["3511:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":52904,"src":"3511:14:60"},"referencedDeclaration":52904,"src":"3511:14:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_storage_ptr","typeString":"struct LLMOracleTask.TaskValidation"}},"id":51015,"nodeType":"ArrayTypeName","src":"3511:16:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskValidation[]"}}},"visibility":"public"},{"id":51020,"nodeType":"VariableDeclaration","src":"3652:33:60","nodes":[],"constant":false,"documentation":{"id":51018,"nodeType":"StructuredDocumentation","src":"3553:94:60","text":"@notice To track the platform fees to be able to owner withdraw the correct amount of fee."},"functionSelector":"e3c98ba0","mutability":"mutable","name":"platformFeeBalance","nameLocation":"3667:18:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51019,"name":"uint256","nodeType":"ElementaryTypeName","src":"3652:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":51042,"nodeType":"ModifierDefinition","src":"3942:252:60","nodes":[],"body":{"id":51041,"nodeType":"Block","src":"3986:208:60","nodes":[],"statements":[{"condition":{"id":51032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4000:40:60","subExpression":{"arguments":[{"expression":{"id":51028,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4023:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4027:6:60","memberName":"sender","nodeType":"MemberAccess","src":"4023:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51030,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51024,"src":"4035:4:60","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"expression":{"id":51026,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50990,"src":"4001:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"id":51027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4010:12:60","memberName":"isRegistered","nodeType":"MemberAccess","referencedDeclaration":52820,"src":"4001:21:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_enum$_LLMOracleKind_$52428_$returns$_t_bool_$","typeString":"function (address,enum LLMOracleKind) view external returns (bool)"}},"id":51031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4001:39:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51039,"nodeType":"IfStatement","src":"3996:181:60","trueBody":{"id":51038,"nodeType":"Block","src":"4042:135:60","statements":[{"errorCall":{"arguments":[{"expression":{"id":51034,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4155:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4159:6:60","memberName":"sender","nodeType":"MemberAccess","src":"4155:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":51033,"name":"NotRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50976,"src":"4141:13:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":51036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4141:25:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51037,"nodeType":"RevertStatement","src":"4134:32:60"}]}},{"id":51040,"nodeType":"PlaceholderStatement","src":"4186:1:60"}]},"documentation":{"id":51021,"nodeType":"StructuredDocumentation","src":"3874:63:60","text":"@notice Reverts if `msg.sender` is not a registered oracle."},"name":"onlyRegistered","nameLocation":"3951:14:60","parameters":{"id":51025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51024,"mutability":"mutable","name":"kind","nameLocation":"3980:4:60","nodeType":"VariableDeclaration","scope":51042,"src":"3966:18:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":51023,"nodeType":"UserDefinedTypeName","pathNode":{"id":51022,"name":"LLMOracleKind","nameLocations":["3966:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"3966:13:60"},"referencedDeclaration":52428,"src":"3966:13:60","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"3965:20:60"},"virtual":false,"visibility":"internal"},{"id":51069,"nodeType":"ModifierDefinition","src":"4260:213:60","nodes":[],"body":{"id":51068,"nodeType":"Block","src":"4317:156:60","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"id":51055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":51050,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"4331:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51052,"indexExpression":{"id":51051,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51045,"src":"4340:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4331:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"id":51053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4348:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"4331:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":51054,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51048,"src":"4358:6:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"src":"4331:33:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51066,"nodeType":"IfStatement","src":"4327:129:60","trueBody":{"id":51065,"nodeType":"Block","src":"4366:90:60","statements":[{"errorCall":{"arguments":[{"id":51057,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51045,"src":"4405:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"id":51058,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"4413:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51060,"indexExpression":{"id":51059,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51045,"src":"4422:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4413:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"id":51061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4430:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"4413:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"id":51062,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51048,"src":"4438:6:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":51056,"name":"InvalidTaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50957,"src":"4387:17:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$_t_error_$","typeString":"function (uint256,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus) pure returns (error)"}},"id":51063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4387:58:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51064,"nodeType":"RevertStatement","src":"4380:65:60"}]}},{"id":51067,"nodeType":"PlaceholderStatement","src":"4465:1:60"}]},"documentation":{"id":51043,"nodeType":"StructuredDocumentation","src":"4200:55:60","text":"@notice Reverts if the task status is not `status`."},"name":"onlyAtStatus","nameLocation":"4269:12:60","parameters":{"id":51049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51045,"mutability":"mutable","name":"taskId","nameLocation":"4290:6:60","nodeType":"VariableDeclaration","scope":51069,"src":"4282:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51044,"name":"uint256","nodeType":"ElementaryTypeName","src":"4282:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51048,"mutability":"mutable","name":"status","nameLocation":"4309:6:60","nodeType":"VariableDeclaration","scope":51069,"src":"4298:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"typeName":{"id":51047,"nodeType":"UserDefinedTypeName","pathNode":{"id":51046,"name":"TaskStatus","nameLocations":["4298:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":52841,"src":"4298:10:60"},"referencedDeclaration":52841,"src":"4298:10:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"visibility":"internal"}],"src":"4281:35:60"},"virtual":false,"visibility":"internal"},{"id":51088,"nodeType":"ModifierDefinition","src":"4479:172:60","nodes":[],"body":{"id":51087,"nodeType":"Block","src":"4521:130:60","nodes":[],"statements":[{"condition":{"id":51077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4535:32:60","subExpression":{"arguments":[{"id":51075,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51071,"src":"4559:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":51073,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50990,"src":"4536:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"id":51074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4545:13:60","memberName":"isWhitelisted","nodeType":"MemberAccess","referencedDeclaration":53143,"src":"4536:22:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":51076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4536:31:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51085,"nodeType":"IfStatement","src":"4531:103:60","trueBody":{"id":51084,"nodeType":"Block","src":"4569:65:60","statements":[{"errorCall":{"arguments":[{"id":51081,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51071,"src":"4615:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":51078,"name":"Whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53213,"src":"4590:9:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Whitelist_$53213_$","typeString":"type(contract Whitelist)"}},"id":51080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4600:14:60","memberName":"NotWhitelisted","nodeType":"MemberAccess","referencedDeclaration":53138,"src":"4590:24:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":51082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4590:33:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51083,"nodeType":"RevertStatement","src":"4583:40:60"}]}},{"id":51086,"nodeType":"PlaceholderStatement","src":"4643:1:60"}]},"name":"onlyWhitelisted","nameLocation":"4488:15:60","parameters":{"id":51072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51071,"mutability":"mutable","name":"account","nameLocation":"4512:7:60","nodeType":"VariableDeclaration","scope":51088,"src":"4504:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":51070,"name":"address","nodeType":"ElementaryTypeName","src":"4504:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4503:17:60"},"virtual":false,"visibility":"internal"},{"id":51096,"nodeType":"FunctionDefinition","src":"5086:53:60","nodes":[],"body":{"id":51095,"nodeType":"Block","src":"5100:39:60","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":51092,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36897,"src":"5110:20:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":51093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5110:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51094,"nodeType":"ExpressionStatement","src":"5110:22:60"}]},"documentation":{"id":51089,"nodeType":"StructuredDocumentation","src":"4839:242:60","text":"@notice Locks the contract, preventing any future re-initialization.\n @dev [See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--).\n @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":51090,"nodeType":"ParameterList","parameters":[],"src":"5097:2:60"},"returnParameters":{"id":51091,"nodeType":"ParameterList","parameters":[],"src":"5100:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":51106,"nodeType":"FunctionDefinition","src":"5477:140:60","nodes":[],"body":{"id":51105,"nodeType":"Block","src":"5559:58:60","nodes":[],"statements":[]},"baseFunctions":[37065],"documentation":{"id":51097,"nodeType":"StructuredDocumentation","src":"5327:145:60","text":"@notice Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n @dev Called by and upgradeToAndCall."},"implemented":true,"kind":"function","modifiers":[{"id":51103,"kind":"modifierInvocation","modifierName":{"id":51102,"name":"onlyOwner","nameLocations":["5549:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":36570,"src":"5549:9:60"},"nodeType":"ModifierInvocation","src":"5549:9:60"}],"name":"_authorizeUpgrade","nameLocation":"5486:17:60","overrides":{"id":51101,"nodeType":"OverrideSpecifier","overrides":[],"src":"5540:8:60"},"parameters":{"id":51100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51099,"mutability":"mutable","name":"newImplementation","nameLocation":"5512:17:60","nodeType":"VariableDeclaration","scope":51106,"src":"5504:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":51098,"name":"address","nodeType":"ElementaryTypeName","src":"5504:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5503:27:60"},"returnParameters":{"id":51104,"nodeType":"ParameterList","parameters":[],"src":"5559:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":51156,"nodeType":"FunctionDefinition","src":"6110:513:60","nodes":[],"body":{"id":51155,"nodeType":"Block","src":"6363:260:60","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":51127,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6388:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6392:6:60","memberName":"sender","nodeType":"MemberAccess","src":"6388:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":51126,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36535,"src":"6373:14:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":51129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6373:26:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51130,"nodeType":"ExpressionStatement","src":"6373:26:60"},{"expression":{"arguments":[{"id":51132,"name":"_platformFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51113,"src":"6433:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51133,"name":"_generationFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51115,"src":"6447:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51134,"name":"_validationFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51117,"src":"6463:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51135,"name":"_minScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51119,"src":"6479:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51136,"name":"_maxScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51121,"src":"6490:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51131,"name":"__LLMOracleManager_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52228,"src":"6409:23:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256,uint256)"}},"id":51137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6409:91:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51138,"nodeType":"ExpressionStatement","src":"6409:91:60"},{"expression":{"id":51143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51139,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50990,"src":"6510:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":51141,"name":"_oracleRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51109,"src":"6539:15:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":51140,"name":"LLMOracleRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52821,"src":"6521:17:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LLMOracleRegistry_$52821_$","typeString":"type(contract LLMOracleRegistry)"}},"id":51142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6521:34:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"src":"6510:45:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"id":51144,"nodeType":"ExpressionStatement","src":"6510:45:60"},{"expression":{"id":51149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51145,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"6565:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":51147,"name":"_feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51111,"src":"6582:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":51146,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38696,"src":"6576:5:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$38696_$","typeString":"type(contract ERC20)"}},"id":51148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6576:16:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"src":"6565:27:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":51150,"nodeType":"ExpressionStatement","src":"6565:27:60"},{"expression":{"id":51153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51151,"name":"nextTaskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50997,"src":"6602:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":51152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6615:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6602:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51154,"nodeType":"ExpressionStatement","src":"6602:14:60"}]},"documentation":{"id":51107,"nodeType":"StructuredDocumentation","src":"5623:482:60","text":"@notice Initialize the contract.\n @notice Sets the Oracle Registry & Oracle Fee Manager.\n @param _oracleRegistry The Oracle Registry contract address.\n @param _feeToken The token (ERC20) to be used for fee payments (usually $BATCH).\n @param _platformFee The initial platform fee for each LLM generation.\n @param _generationFee The initial base fee for LLM generation.\n @param _validationFee The initial base fee for response validation."},"functionSelector":"edbf4ac2","implemented":true,"kind":"function","modifiers":[{"id":51124,"kind":"modifierInvocation","modifierName":{"id":51123,"name":"initializer","nameLocations":["6351:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":36783,"src":"6351:11:60"},"nodeType":"ModifierInvocation","src":"6351:11:60"}],"name":"initialize","nameLocation":"6119:10:60","parameters":{"id":51122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51109,"mutability":"mutable","name":"_oracleRegistry","nameLocation":"6147:15:60","nodeType":"VariableDeclaration","scope":51156,"src":"6139:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":51108,"name":"address","nodeType":"ElementaryTypeName","src":"6139:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":51111,"mutability":"mutable","name":"_feeToken","nameLocation":"6180:9:60","nodeType":"VariableDeclaration","scope":51156,"src":"6172:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":51110,"name":"address","nodeType":"ElementaryTypeName","src":"6172:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":51113,"mutability":"mutable","name":"_platformFee","nameLocation":"6207:12:60","nodeType":"VariableDeclaration","scope":51156,"src":"6199:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51112,"name":"uint256","nodeType":"ElementaryTypeName","src":"6199:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51115,"mutability":"mutable","name":"_generationFee","nameLocation":"6237:14:60","nodeType":"VariableDeclaration","scope":51156,"src":"6229:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51114,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51117,"mutability":"mutable","name":"_validationFee","nameLocation":"6269:14:60","nodeType":"VariableDeclaration","scope":51156,"src":"6261:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51116,"name":"uint256","nodeType":"ElementaryTypeName","src":"6261:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51119,"mutability":"mutable","name":"_minScore","nameLocation":"6301:9:60","nodeType":"VariableDeclaration","scope":51156,"src":"6293:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51118,"name":"uint256","nodeType":"ElementaryTypeName","src":"6293:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51121,"mutability":"mutable","name":"_maxScore","nameLocation":"6328:9:60","nodeType":"VariableDeclaration","scope":51156,"src":"6320:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51120,"name":"uint256","nodeType":"ElementaryTypeName","src":"6320:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6129:214:60"},"returnParameters":{"id":51125,"nodeType":"ParameterList","parameters":[],"src":"6363:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":51294,"nodeType":"FunctionDefinition","src":"7239:1728:60","nodes":[],"body":{"id":51293,"nodeType":"Block","src":"7455:1512:60","nodes":[],"statements":[{"assignments":[51175,51177,51179],"declarations":[{"constant":false,"id":51175,"mutability":"mutable","name":"totalfee","nameLocation":"7474:8:60","nodeType":"VariableDeclaration","scope":51293,"src":"7466:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51174,"name":"uint256","nodeType":"ElementaryTypeName","src":"7466:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51177,"mutability":"mutable","name":"generatorFee","nameLocation":"7492:12:60","nodeType":"VariableDeclaration","scope":51293,"src":"7484:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51176,"name":"uint256","nodeType":"ElementaryTypeName","src":"7484:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51179,"mutability":"mutable","name":"validatorFee","nameLocation":"7514:12:60","nodeType":"VariableDeclaration","scope":51293,"src":"7506:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51178,"name":"uint256","nodeType":"ElementaryTypeName","src":"7506:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51183,"initialValue":{"arguments":[{"id":51181,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51166,"src":"7537:10:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters calldata"}],"id":51180,"name":"getFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52381,"src":"7530:6:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct LLMOracleTaskParameters calldata) view returns (uint256,uint256,uint256)"}},"id":51182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7530:18:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7465:83:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":51184,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51161,"src":"7563:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":51185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7569:6:60","memberName":"length","nodeType":"MemberAccess","src":"7563:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":51186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7579:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7563:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51192,"nodeType":"IfStatement","src":"7559:69:60","trueBody":{"id":51191,"nodeType":"Block","src":"7582:46:60","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":51188,"name":"InvalidInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50986,"src":"7603:12:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":51189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7603:14:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51190,"nodeType":"RevertStatement","src":"7596:21:60"}]}},{"assignments":[51194],"declarations":[{"constant":false,"id":51194,"mutability":"mutable","name":"allowance","nameLocation":"7686:9:60","nodeType":"VariableDeclaration","scope":51293,"src":"7678:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51193,"name":"uint256","nodeType":"ElementaryTypeName","src":"7678:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51204,"initialValue":{"arguments":[{"expression":{"id":51197,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7717:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7721:6:60","memberName":"sender","nodeType":"MemberAccess","src":"7717:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":51201,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7737:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}],"id":51200,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7729:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":51199,"name":"address","nodeType":"ElementaryTypeName","src":"7729:7:60","typeDescriptions":{}}},"id":51202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7729:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":51195,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"7698:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":51196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7707:9:60","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":38323,"src":"7698:18:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":51203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7698:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7678:65:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51205,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51194,"src":"7757:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":51206,"name":"totalfee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51175,"src":"7769:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7757:20:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51214,"nodeType":"IfStatement","src":"7753:95:60","trueBody":{"id":51213,"nodeType":"Block","src":"7779:69:60","statements":[{"errorCall":{"arguments":[{"id":51209,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51194,"src":"7817:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51210,"name":"totalfee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51175,"src":"7828:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51208,"name":"InsufficientFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50946,"src":"7800:16:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":51211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7800:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51212,"nodeType":"RevertStatement","src":"7793:44:60"}]}},{"assignments":[51216],"declarations":[{"constant":false,"id":51216,"mutability":"mutable","name":"balance","nameLocation":"7908:7:60","nodeType":"VariableDeclaration","scope":51293,"src":"7900:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51215,"name":"uint256","nodeType":"ElementaryTypeName","src":"7900:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51222,"initialValue":{"arguments":[{"expression":{"id":51219,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7937:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7941:6:60","memberName":"sender","nodeType":"MemberAccess","src":"7937:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":51217,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"7918:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":51218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7927:9:60","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":38282,"src":"7918:18:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":51221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7918:30:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7900:48:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51223,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51216,"src":"7962:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":51224,"name":"totalfee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51175,"src":"7972:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7962:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51232,"nodeType":"IfStatement","src":"7958:91:60","trueBody":{"id":51231,"nodeType":"Block","src":"7982:67:60","statements":[{"errorCall":{"arguments":[{"id":51227,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51216,"src":"8020:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51228,"name":"totalfee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51175,"src":"8029:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51226,"name":"InsufficientFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50946,"src":"8003:16:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":51229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8003:35:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51230,"nodeType":"RevertStatement","src":"7996:42:60"}]}},{"expression":{"id":51235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51233,"name":"platformFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51020,"src":"8086:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":51234,"name":"platformFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52154,"src":"8108:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8086:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51236,"nodeType":"ExpressionStatement","src":"8086:33:60"},{"expression":{"arguments":[{"expression":{"id":51240,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8151:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8155:6:60","memberName":"sender","nodeType":"MemberAccess","src":"8151:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":51244,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8171:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}],"id":51243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8163:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":51242,"name":"address","nodeType":"ElementaryTypeName","src":"8163:7:60","typeDescriptions":{}}},"id":51245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8163:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51246,"name":"totalfee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51175,"src":"8178:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":51237,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"8129:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":51239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8138:12:60","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":38379,"src":"8129:21:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":51247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8129:58:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51248,"nodeType":"ExpressionStatement","src":"8129:58:60"},{"assignments":[51250],"declarations":[{"constant":false,"id":51250,"mutability":"mutable","name":"taskId","nameLocation":"8281:6:60","nodeType":"VariableDeclaration","scope":51293,"src":"8273:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51249,"name":"uint256","nodeType":"ElementaryTypeName","src":"8273:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51252,"initialValue":{"id":51251,"name":"nextTaskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50997,"src":"8290:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8273:27:60"},{"id":51256,"nodeType":"UncheckedBlock","src":"8310:47:60","statements":[{"expression":{"id":51254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8334:12:60","subExpression":{"id":51253,"name":"nextTaskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50997,"src":"8336:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51255,"nodeType":"ExpressionStatement","src":"8334:12:60"}]},{"eventCall":{"arguments":[{"id":51258,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51250,"src":"8379:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51259,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8387:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8391:6:60","memberName":"sender","nodeType":"MemberAccess","src":"8387:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51261,"name":"protocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51159,"src":"8399:8:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":51257,"name":"Request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50912,"src":"8371:7:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (uint256,address,bytes32)"}},"id":51262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8371:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51263,"nodeType":"EmitStatement","src":"8366:42:60"},{"expression":{"id":51280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":51264,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"8477:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51266,"indexExpression":{"id":51265,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51250,"src":"8486:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8477:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":51268,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8533:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8537:6:60","memberName":"sender","nodeType":"MemberAccess","src":"8533:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51270,"name":"protocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51159,"src":"8567:8:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":51271,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51161,"src":"8596:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":51272,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51166,"src":"8627:10:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters calldata"}},{"expression":{"id":51273,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"8659:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8670:17:60","memberName":"PendingGeneration","nodeType":"MemberAccess","referencedDeclaration":52838,"src":"8659:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"id":51275,"name":"generatorFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51177,"src":"8715:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51276,"name":"validatorFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51179,"src":"8755:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51277,"name":"platformFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52154,"src":"8794:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51278,"name":"models","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51163,"src":"8827:6:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters calldata"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":51267,"name":"TaskRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52872,"src":"8496:11:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TaskRequest_$52872_storage_ptr_$","typeString":"type(struct LLMOracleTask.TaskRequest storage pointer)"}},"id":51279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["8522:9:60","8557:8:60","8589:5:60","8615:10:60","8651:6:60","8701:12:60","8741:12:60","8781:11:60","8819:6:60"],"names":["requester","protocol","input","parameters","status","generatorFee","validatorFee","platformFee","models"],"nodeType":"FunctionCall","src":"8496:348:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_memory_ptr","typeString":"struct LLMOracleTask.TaskRequest memory"}},"src":"8477:367:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"id":51281,"nodeType":"ExpressionStatement","src":"8477:367:60"},{"eventCall":{"arguments":[{"id":51283,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51250,"src":"8872:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51284,"name":"protocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51159,"src":"8880:8:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":51285,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"8890:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8901:4:60","memberName":"None","nodeType":"MemberAccess","referencedDeclaration":52837,"src":"8890:15:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"expression":{"id":51287,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"8907:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8918:17:60","memberName":"PendingGeneration","nodeType":"MemberAccess","referencedDeclaration":52838,"src":"8907:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":51282,"name":"StatusUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50939,"src":"8859:12:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes32_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$__$","typeString":"function (uint256,bytes32,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus)"}},"id":51289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8859:77:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51290,"nodeType":"EmitStatement","src":"8854:82:60"},{"expression":{"id":51291,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51250,"src":"8954:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":51173,"id":51292,"nodeType":"Return","src":"8947:13:60"}]},"documentation":{"id":51157,"nodeType":"StructuredDocumentation","src":"6808:426:60","text":"@notice Request LLM generation.\n @dev Input must be non-empty.\n @dev Reverts if contract has not enough allowance for the fee.\n @dev Reverts if difficulty is out of range.\n @param protocol The protocol string, should be a short 32-byte string (e.g., \"dria/1.0.0\").\n @param input The input data for the LLM generation.\n @param parameters The task parameters\n @return task id"},"functionSelector":"e76aec11","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":51169,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51166,"src":"7425:10:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters calldata"}}],"id":51170,"kind":"modifierInvocation","modifierName":{"id":51168,"name":"onlyValidParameters","nameLocations":["7405:19:60"],"nodeType":"IdentifierPath","referencedDeclaration":52302,"src":"7405:19:60"},"nodeType":"ModifierInvocation","src":"7405:31:60"}],"name":"request","nameLocation":"7248:7:60","parameters":{"id":51167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51159,"mutability":"mutable","name":"protocol","nameLocation":"7273:8:60","nodeType":"VariableDeclaration","scope":51294,"src":"7265:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":51158,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7265:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":51161,"mutability":"mutable","name":"input","nameLocation":"7304:5:60","nodeType":"VariableDeclaration","scope":51294,"src":"7291:18:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":51160,"name":"bytes","nodeType":"ElementaryTypeName","src":"7291:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":51163,"mutability":"mutable","name":"models","nameLocation":"7332:6:60","nodeType":"VariableDeclaration","scope":51294,"src":"7319:19:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":51162,"name":"bytes","nodeType":"ElementaryTypeName","src":"7319:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":51166,"mutability":"mutable","name":"parameters","nameLocation":"7381:10:60","nodeType":"VariableDeclaration","scope":51294,"src":"7348:43:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters"},"typeName":{"id":51165,"nodeType":"UserDefinedTypeName","pathNode":{"id":51164,"name":"LLMOracleTaskParameters","nameLocations":["7348:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":52834,"src":"7348:23:60"},"referencedDeclaration":52834,"src":"7348:23:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage_ptr","typeString":"struct LLMOracleTaskParameters"}},"visibility":"internal"}],"src":"7255:142:60"},"returnParameters":{"id":51173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":51294,"src":"7446:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51171,"name":"uint256","nodeType":"ElementaryTypeName","src":"7446:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7445:9:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":51459,"nodeType":"FunctionDefinition","src":"9529:1880:60","nodes":[],"body":{"id":51458,"nodeType":"Block","src":"9751:1658:60","nodes":[],"statements":[{"assignments":[51317],"declarations":[{"constant":false,"id":51317,"mutability":"mutable","name":"task","nameLocation":"9781:4:60","nodeType":"VariableDeclaration","scope":51458,"src":"9761:24:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"},"typeName":{"id":51316,"nodeType":"UserDefinedTypeName","pathNode":{"id":51315,"name":"TaskRequest","nameLocations":["9761:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":52872,"src":"9761:11:60"},"referencedDeclaration":52872,"src":"9761:11:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"}},"visibility":"internal"}],"id":51321,"initialValue":{"baseExpression":{"id":51318,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"9788:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51320,"indexExpression":{"id":51319,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"9797:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9788:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9761:43:60"},{"body":{"id":51352,"nodeType":"Block","src":"9925:150:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":51343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":51335,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"9943:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51337,"indexExpression":{"id":51336,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"9953:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9943:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51339,"indexExpression":{"id":51338,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51323,"src":"9961:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9943:20:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":51340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9964:9:60","memberName":"responder","nodeType":"MemberAccess","referencedDeclaration":52876,"src":"9943:30:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":51341,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9977:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9981:6:60","memberName":"sender","nodeType":"MemberAccess","src":"9977:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9943:44:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51351,"nodeType":"IfStatement","src":"9939:126:60","trueBody":{"id":51350,"nodeType":"Block","src":"9989:76:60","statements":[{"errorCall":{"arguments":[{"id":51345,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"10031:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51346,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10039:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10043:6:60","memberName":"sender","nodeType":"MemberAccess","src":"10039:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51344,"name":"AlreadyResponded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50983,"src":"10014:16:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (uint256,address) pure returns (error)"}},"id":51348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10014:36:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51349,"nodeType":"RevertStatement","src":"10007:43:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51326,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51323,"src":"9890:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"baseExpression":{"id":51327,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"9894:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51329,"indexExpression":{"id":51328,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"9904:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9894:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9912:6:60","memberName":"length","nodeType":"MemberAccess","src":"9894:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9890:28:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51353,"initializationExpression":{"assignments":[51323],"declarations":[{"constant":false,"id":51323,"mutability":"mutable","name":"i","nameLocation":"9883:1:60","nodeType":"VariableDeclaration","scope":51353,"src":"9875:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51322,"name":"uint256","nodeType":"ElementaryTypeName","src":"9875:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51325,"initialValue":{"hexValue":"30","id":51324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9887:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9875:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9920:3:60","subExpression":{"id":51332,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51323,"src":"9920:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51334,"nodeType":"ExpressionStatement","src":"9920:3:60"},"nodeType":"ForStatement","src":"9870:205:60"},{"expression":{"arguments":[{"id":51355,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"10141:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51356,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10149:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},{"id":51357,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51299,"src":"10155:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51354,"name":"assertValidNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51716,"src":"10124:16:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_ptr_$_t_uint256_$returns$__$","typeString":"function (uint256,struct LLMOracleTask.TaskRequest storage pointer,uint256) view"}},"id":51358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10124:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51359,"nodeType":"ExpressionStatement","src":"10124:37:60"},{"assignments":[51362],"declarations":[{"constant":false,"id":51362,"mutability":"mutable","name":"response","nameLocation":"10217:8:60","nodeType":"VariableDeclaration","scope":51458,"src":"10197:28:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse"},"typeName":{"id":51361,"nodeType":"UserDefinedTypeName","pathNode":{"id":51360,"name":"TaskResponse","nameLocations":["10197:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"10197:12:60"},"referencedDeclaration":52889,"src":"10197:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"visibility":"internal"}],"id":51371,"initialValue":{"arguments":[{"expression":{"id":51364,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10265:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10269:6:60","memberName":"sender","nodeType":"MemberAccess","src":"10265:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51366,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51299,"src":"10284:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51367,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51301,"src":"10299:6:60","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":51368,"name":"metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51303,"src":"10317:8:60","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"hexValue":"30","id":51369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10334:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":51363,"name":"TaskResponse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52889,"src":"10240:12:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TaskResponse_$52889_storage_ptr_$","typeString":"type(struct LLMOracleTask.TaskResponse storage pointer)"}},"id":51370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["10254:9:60","10277:5:60","10291:6:60","10307:8:60","10327:5:60"],"names":["responder","nonce","output","metadata","score"],"nodeType":"FunctionCall","src":"10240:97:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse memory"}},"nodeType":"VariableDeclarationStatement","src":"10197:140:60"},{"expression":{"arguments":[{"id":51376,"name":"response","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51362,"src":"10370:8:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TaskResponse_$52889_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse memory"}],"expression":{"baseExpression":{"id":51372,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"10347:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51374,"indexExpression":{"id":51373,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"10357:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10347:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10365:4:60","memberName":"push","nodeType":"MemberAccess","src":"10347:22:60","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr_$_t_struct$_TaskResponse_$52889_storage_$returns$__$attached_to$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr_$","typeString":"function (struct LLMOracleTask.TaskResponse storage ref[] storage pointer,struct LLMOracleTask.TaskResponse storage ref)"}},"id":51377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10347:32:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51378,"nodeType":"ExpressionStatement","src":"10347:32:60"},{"eventCall":{"arguments":[{"id":51380,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"10436:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51381,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10444:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10448:6:60","memberName":"sender","nodeType":"MemberAccess","src":"10444:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51379,"name":"Response","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50919,"src":"10427:8:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":51383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10427:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51384,"nodeType":"EmitStatement","src":"10422:33:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint40","typeString":"uint40"},"id":51389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":51385,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10537:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10542:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"10537:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51387,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10553:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"10537:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":51388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10571:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10537:35:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51398,"nodeType":"IfStatement","src":"10533:115:60","trueBody":{"id":51397,"nodeType":"Block","src":"10574:74:60","statements":[{"expression":{"arguments":[{"expression":{"id":51391,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10607:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10611:6:60","memberName":"sender","nodeType":"MemberAccess","src":"10607:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":51393,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10619:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10624:12:60","memberName":"generatorFee","nodeType":"MemberAccess","referencedDeclaration":52859,"src":"10619:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51390,"name":"_increaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52044,"src":"10588:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":51395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10588:49:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51396,"nodeType":"ExpressionStatement","src":"10588:49:60"}]}},{"assignments":[51400],"declarations":[{"constant":false,"id":51400,"mutability":"mutable","name":"isCompleted","nameLocation":"10738:11:60","nodeType":"VariableDeclaration","scope":51458,"src":"10733:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":51399,"name":"bool","nodeType":"ElementaryTypeName","src":"10733:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":51412,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":51401,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"10752:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51403,"indexExpression":{"id":51402,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"10762:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10752:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10770:6:60","memberName":"length","nodeType":"MemberAccess","src":"10752:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"expression":{"id":51407,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10788:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51408,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10793:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"10788:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51409,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10804:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"10788:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint40","typeString":"uint40"}],"id":51406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10780:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":51405,"name":"uint256","nodeType":"ElementaryTypeName","src":"10780:7:60","typeDescriptions":{}}},"id":51410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10780:39:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10752:67:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"10733:86:60"},{"condition":{"id":51413,"name":"isCompleted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51400,"src":"10833:11:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51457,"nodeType":"IfStatement","src":"10829:574:60","trueBody":{"id":51456,"nodeType":"Block","src":"10846:557:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint40","typeString":"uint40"},"id":51418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":51414,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10864:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51415,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10869:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"10864:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10880:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"10864:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":51417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10898:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10864:35:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":51454,"nodeType":"Block","src":"11146:247:60","statements":[{"expression":{"id":51442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":51437,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"11218:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51439,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11223:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"11218:11:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":51440,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"11232:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11243:17:60","memberName":"PendingValidation","nodeType":"MemberAccess","referencedDeclaration":52839,"src":"11232:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"src":"11218:42:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"id":51443,"nodeType":"ExpressionStatement","src":"11218:42:60"},{"eventCall":{"arguments":[{"id":51445,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"11296:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51446,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"11304:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51447,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11309:8:60","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":52848,"src":"11304:13:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":51448,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"11319:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11330:17:60","memberName":"PendingGeneration","nodeType":"MemberAccess","referencedDeclaration":52838,"src":"11319:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"expression":{"id":51450,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"11349:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11360:17:60","memberName":"PendingValidation","nodeType":"MemberAccess","referencedDeclaration":52839,"src":"11349:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":51444,"name":"StatusUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50939,"src":"11283:12:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes32_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$__$","typeString":"function (uint256,bytes32,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus)"}},"id":51452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11283:95:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51453,"nodeType":"EmitStatement","src":"11278:100:60"}]},"id":51455,"nodeType":"IfStatement","src":"10860:533:60","trueBody":{"id":51436,"nodeType":"Block","src":"10901:239:60","statements":[{"expression":{"id":51424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":51419,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10981:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10986:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"10981:11:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":51422,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"10995:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11006:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"10995:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"src":"10981:34:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"id":51425,"nodeType":"ExpressionStatement","src":"10981:34:60"},{"eventCall":{"arguments":[{"id":51427,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"11051:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51428,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"11059:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11064:8:60","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":52848,"src":"11059:13:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":51430,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"11074:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11085:17:60","memberName":"PendingGeneration","nodeType":"MemberAccess","referencedDeclaration":52838,"src":"11074:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"expression":{"id":51432,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"11104:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11115:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"11104:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":51426,"name":"StatusUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50939,"src":"11038:12:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes32_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$__$","typeString":"function (uint256,bytes32,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus)"}},"id":51434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11038:87:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51435,"nodeType":"EmitStatement","src":"11033:92:60"}]}}]}}]},"documentation":{"id":51295,"nodeType":"StructuredDocumentation","src":"8973:551:60","text":"@notice Respond to an LLM generation.\n @dev Output must be non-empty.\n @dev Reverts if the task is not pending generation.\n @dev Reverts if the responder is not registered.\n @dev Reverts if the responder has already responded to this task.\n @dev Reverts if the nonce is not a valid proof-of-work.\n @param taskId The task ID to respond to.\n @param nonce The proof-of-work nonce.\n @param output The output data for the LLM generation.\n @param metadata Optional metadata for this output."},"functionSelector":"b584e617","implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":51306,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"9663:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LLMOracleKind_$52428_$","typeString":"type(enum LLMOracleKind)"}},"id":51307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9677:9:60","memberName":"Generator","nodeType":"MemberAccess","referencedDeclaration":52426,"src":"9663:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"id":51308,"kind":"modifierInvocation","modifierName":{"id":51305,"name":"onlyRegistered","nameLocations":["9648:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":51042,"src":"9648:14:60"},"nodeType":"ModifierInvocation","src":"9648:39:60"},{"arguments":[{"id":51310,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"9709:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51311,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"9717:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9728:17:60","memberName":"PendingGeneration","nodeType":"MemberAccess","referencedDeclaration":52838,"src":"9717:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"id":51313,"kind":"modifierInvocation","modifierName":{"id":51309,"name":"onlyAtStatus","nameLocations":["9696:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":51069,"src":"9696:12:60"},"nodeType":"ModifierInvocation","src":"9696:50:60"}],"name":"respond","nameLocation":"9538:7:60","parameters":{"id":51304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51297,"mutability":"mutable","name":"taskId","nameLocation":"9554:6:60","nodeType":"VariableDeclaration","scope":51459,"src":"9546:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51296,"name":"uint256","nodeType":"ElementaryTypeName","src":"9546:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51299,"mutability":"mutable","name":"nonce","nameLocation":"9570:5:60","nodeType":"VariableDeclaration","scope":51459,"src":"9562:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51298,"name":"uint256","nodeType":"ElementaryTypeName","src":"9562:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51301,"mutability":"mutable","name":"output","nameLocation":"9592:6:60","nodeType":"VariableDeclaration","scope":51459,"src":"9577:21:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":51300,"name":"bytes","nodeType":"ElementaryTypeName","src":"9577:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":51303,"mutability":"mutable","name":"metadata","nameLocation":"9615:8:60","nodeType":"VariableDeclaration","scope":51459,"src":"9600:23:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":51302,"name":"bytes","nodeType":"ElementaryTypeName","src":"9600:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9545:79:60"},"returnParameters":{"id":51314,"nodeType":"ParameterList","parameters":[],"src":"9751:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":51664,"nodeType":"FunctionDefinition","src":"11914:2083:60","nodes":[],"body":{"id":51663,"nodeType":"Block","src":"12177:1820:60","nodes":[],"statements":[{"assignments":[51487],"declarations":[{"constant":false,"id":51487,"mutability":"mutable","name":"task","nameLocation":"12207:4:60","nodeType":"VariableDeclaration","scope":51663,"src":"12187:24:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"},"typeName":{"id":51486,"nodeType":"UserDefinedTypeName","pathNode":{"id":51485,"name":"TaskRequest","nameLocations":["12187:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":52872,"src":"12187:11:60"},"referencedDeclaration":52872,"src":"12187:11:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"}},"visibility":"internal"}],"id":51491,"initialValue":{"baseExpression":{"id":51488,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"12214:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51490,"indexExpression":{"id":51489,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"12223:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12214:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"nodeType":"VariableDeclarationStatement","src":"12187:43:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":51492,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"12300:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":51493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12307:6:60","memberName":"length","nodeType":"MemberAccess","src":"12300:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":51494,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"12317:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12322:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"12317:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51496,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12333:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"12317:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"12300:47:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51505,"nodeType":"IfStatement","src":"12296:122:60","trueBody":{"id":51504,"nodeType":"Block","src":"12349:69:60","statements":[{"errorCall":{"arguments":[{"id":51499,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"12388:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51500,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12396:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12400:6:60","memberName":"sender","nodeType":"MemberAccess","src":"12396:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51498,"name":"InvalidValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50971,"src":"12370:17:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (uint256,address) pure returns (error)"}},"id":51502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51503,"nodeType":"RevertStatement","src":"12363:44:60"}]}},{"body":{"id":51538,"nodeType":"Block","src":"12518:166:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":51527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":51517,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"12536:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":51519,"indexExpression":{"id":51518,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51507,"src":"12543:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12536:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":51520,"name":"maxScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52177,"src":"12548:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12536:20:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":51522,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"12560:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":51524,"indexExpression":{"id":51523,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51507,"src":"12567:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12560:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":51525,"name":"minScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52174,"src":"12572:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12560:20:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12536:44:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51537,"nodeType":"IfStatement","src":"12532:142:60","trueBody":{"id":51536,"nodeType":"Block","src":"12582:92:60","statements":[{"errorCall":{"arguments":[{"baseExpression":{"id":51529,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"12629:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":51531,"indexExpression":{"id":51530,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51507,"src":"12636:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12629:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51532,"name":"maxScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52177,"src":"12640:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51533,"name":"minScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52174,"src":"12650:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51528,"name":"InvalidParameterRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52151,"src":"12607:21:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256,uint256) pure returns (error)"}},"id":51534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12607:52:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51535,"nodeType":"RevertStatement","src":"12600:59:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51510,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51507,"src":"12494:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":51511,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"12498:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":51512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12505:6:60","memberName":"length","nodeType":"MemberAccess","src":"12498:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12494:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51539,"initializationExpression":{"assignments":[51507],"declarations":[{"constant":false,"id":51507,"mutability":"mutable","name":"i","nameLocation":"12487:1:60","nodeType":"VariableDeclaration","scope":51539,"src":"12479:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51506,"name":"uint256","nodeType":"ElementaryTypeName","src":"12479:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51509,"initialValue":{"hexValue":"30","id":51508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12491:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12479:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12513:3:60","subExpression":{"id":51514,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51507,"src":"12513:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51516,"nodeType":"ExpressionStatement","src":"12513:3:60"},"nodeType":"ForStatement","src":"12474:210:60"},{"body":{"id":51569,"nodeType":"Block","src":"12817:150:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":51560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":51552,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"12835:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51554,"indexExpression":{"id":51553,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"12845:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12835:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51556,"indexExpression":{"id":51555,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51541,"src":"12853:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12835:20:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":51557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12856:9:60","memberName":"responder","nodeType":"MemberAccess","referencedDeclaration":52876,"src":"12835:30:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":51558,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12869:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12873:6:60","memberName":"sender","nodeType":"MemberAccess","src":"12869:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12835:44:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51568,"nodeType":"IfStatement","src":"12831:126:60","trueBody":{"id":51567,"nodeType":"Block","src":"12881:76:60","statements":[{"errorCall":{"arguments":[{"id":51562,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"12923:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51563,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12931:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12935:6:60","memberName":"sender","nodeType":"MemberAccess","src":"12931:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51561,"name":"AlreadyResponded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50983,"src":"12906:16:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (uint256,address) pure returns (error)"}},"id":51565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12906:36:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51566,"nodeType":"RevertStatement","src":"12899:43:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51544,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51541,"src":"12776:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51545,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"12780:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51546,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12785:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"12780:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12796:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"12780:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"12776:34:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51570,"initializationExpression":{"assignments":[51541],"declarations":[{"constant":false,"id":51541,"mutability":"mutable","name":"i","nameLocation":"12769:1:60","nodeType":"VariableDeclaration","scope":51570,"src":"12761:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51540,"name":"uint256","nodeType":"ElementaryTypeName","src":"12761:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51543,"initialValue":{"hexValue":"30","id":51542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12773:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12761:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12812:3:60","subExpression":{"id":51549,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51541,"src":"12812:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51551,"nodeType":"ExpressionStatement","src":"12812:3:60"},"nodeType":"ForStatement","src":"12756:211:60"},{"body":{"id":51601,"nodeType":"Block","src":"13089:152:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":51592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":51584,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"13107:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51586,"indexExpression":{"id":51585,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13119:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13107:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51588,"indexExpression":{"id":51587,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51572,"src":"13127:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13107:22:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref"}},"id":51589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13130:9:60","memberName":"validator","nodeType":"MemberAccess","referencedDeclaration":52893,"src":"13107:32:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":51590,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13143:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13147:6:60","memberName":"sender","nodeType":"MemberAccess","src":"13143:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13107:46:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51600,"nodeType":"IfStatement","src":"13103:128:60","trueBody":{"id":51599,"nodeType":"Block","src":"13155:76:60","statements":[{"errorCall":{"arguments":[{"id":51594,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13197:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51595,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13205:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13209:6:60","memberName":"sender","nodeType":"MemberAccess","src":"13205:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51593,"name":"AlreadyResponded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50983,"src":"13180:16:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (uint256,address) pure returns (error)"}},"id":51597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13180:36:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51598,"nodeType":"RevertStatement","src":"13173:43:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51575,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51572,"src":"13052:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"baseExpression":{"id":51576,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"13056:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51578,"indexExpression":{"id":51577,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13068:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13056:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13076:6:60","memberName":"length","nodeType":"MemberAccess","src":"13056:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13052:30:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51602,"initializationExpression":{"assignments":[51572],"declarations":[{"constant":false,"id":51572,"mutability":"mutable","name":"i","nameLocation":"13045:1:60","nodeType":"VariableDeclaration","scope":51602,"src":"13037:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51571,"name":"uint256","nodeType":"ElementaryTypeName","src":"13037:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51574,"initialValue":{"hexValue":"30","id":51573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13049:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13037:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13084:3:60","subExpression":{"id":51581,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51572,"src":"13084:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51583,"nodeType":"ExpressionStatement","src":"13084:3:60"},"nodeType":"ForStatement","src":"13032:209:60"},{"expression":{"arguments":[{"id":51604,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13307:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51605,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"13315:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},{"id":51606,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51464,"src":"13321:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51603,"name":"assertValidNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51716,"src":"13290:16:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_ptr_$_t_uint256_$returns$__$","typeString":"function (uint256,struct LLMOracleTask.TaskRequest storage pointer,uint256) view"}},"id":51607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13290:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51608,"nodeType":"ExpressionStatement","src":"13290:37:60"},{"expression":{"arguments":[{"arguments":[{"id":51614,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"13436:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":51615,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51464,"src":"13451:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51616,"name":"metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51469,"src":"13468:8:60","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":51617,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13489:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13493:6:60","memberName":"sender","nodeType":"MemberAccess","src":"13489:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51613,"name":"TaskValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52904,"src":"13412:14:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TaskValidation_$52904_storage_ptr_$","typeString":"type(struct LLMOracleTask.TaskValidation storage pointer)"}},"id":51619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["13428:6:60","13444:5:60","13458:8:60","13478:9:60"],"names":["scores","nonce","metadata","validator"],"nodeType":"FunctionCall","src":"13412:89:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_memory_ptr","typeString":"struct LLMOracleTask.TaskValidation memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TaskValidation_$52904_memory_ptr","typeString":"struct LLMOracleTask.TaskValidation memory"}],"expression":{"baseExpression":{"id":51609,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"13374:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51611,"indexExpression":{"id":51610,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13386:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13374:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13394:4:60","memberName":"push","nodeType":"MemberAccess","src":"13374:24:60","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_ptr_$_t_struct$_TaskValidation_$52904_storage_$returns$__$attached_to$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_ptr_$","typeString":"function (struct LLMOracleTask.TaskValidation storage ref[] storage pointer,struct LLMOracleTask.TaskValidation storage ref)"}},"id":51620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13374:137:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51621,"nodeType":"ExpressionStatement","src":"13374:137:60"},{"eventCall":{"arguments":[{"id":51623,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13571:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51624,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13579:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13583:6:60","memberName":"sender","nodeType":"MemberAccess","src":"13579:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51622,"name":"Validation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50926,"src":"13560:10:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":51626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13560:30:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51627,"nodeType":"EmitStatement","src":"13555:35:60"},{"assignments":[51629],"declarations":[{"constant":false,"id":51629,"mutability":"mutable","name":"isCompleted","nameLocation":"13642:11:60","nodeType":"VariableDeclaration","scope":51663,"src":"13637:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":51628,"name":"bool","nodeType":"ElementaryTypeName","src":"13637:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":51638,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":51630,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"13656:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51632,"indexExpression":{"id":51631,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13668:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13656:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13676:6:60","memberName":"length","nodeType":"MemberAccess","src":"13656:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":51634,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"13686:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13691:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"13686:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13702:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"13686:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"13656:60:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"13637:79:60"},{"condition":{"id":51639,"name":"isCompleted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51629,"src":"13730:11:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51662,"nodeType":"IfStatement","src":"13726:265:60","trueBody":{"id":51661,"nodeType":"Block","src":"13743:248:60","statements":[{"expression":{"id":51645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":51640,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"13757:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51642,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13762:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"13757:11:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":51643,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"13771:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13782:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"13771:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"src":"13757:34:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"id":51646,"nodeType":"ExpressionStatement","src":"13757:34:60"},{"eventCall":{"arguments":[{"id":51648,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13823:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51649,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"13831:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51650,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13836:8:60","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":52848,"src":"13831:13:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":51651,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"13846:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13857:17:60","memberName":"PendingValidation","nodeType":"MemberAccess","referencedDeclaration":52839,"src":"13846:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"expression":{"id":51653,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"13876:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13887:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"13876:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":51647,"name":"StatusUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50939,"src":"13810:12:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes32_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$__$","typeString":"function (uint256,bytes32,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus)"}},"id":51655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13810:87:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51656,"nodeType":"EmitStatement","src":"13805:92:60"},{"expression":{"arguments":[{"id":51658,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13973:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51657,"name":"finalizeValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51970,"src":"13954:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":51659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13954:26:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51660,"nodeType":"ExpressionStatement","src":"13954:26:60"}]}}]},"documentation":{"id":51460,"nodeType":"StructuredDocumentation","src":"11415:494:60","text":"@notice Validate requests for a given taskId.\n @dev Reverts if the task is not pending validation.\n @dev Reverts if the number of scores is not equal to the number of generations.\n @dev Reverts if any score is greater than the maximum score.\n @param taskId The ID of the task to validate.\n @param nonce The proof-of-work nonce.\n @param scores The validation scores for each generation.\n @param metadata Optional metadata for this validation."},"functionSelector":"6b4d5bfc","implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":51472,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"12053:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LLMOracleKind_$52428_$","typeString":"type(enum LLMOracleKind)"}},"id":51473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12067:9:60","memberName":"Validator","nodeType":"MemberAccess","referencedDeclaration":52427,"src":"12053:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"id":51474,"kind":"modifierInvocation","modifierName":{"id":51471,"name":"onlyRegistered","nameLocations":["12038:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":51042,"src":"12038:14:60"},"nodeType":"ModifierInvocation","src":"12038:39:60"},{"arguments":[{"id":51476,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"12099:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51477,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"12107:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12118:17:60","memberName":"PendingValidation","nodeType":"MemberAccess","referencedDeclaration":52839,"src":"12107:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"id":51479,"kind":"modifierInvocation","modifierName":{"id":51475,"name":"onlyAtStatus","nameLocations":["12086:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":51069,"src":"12086:12:60"},"nodeType":"ModifierInvocation","src":"12086:50:60"},{"arguments":[{"expression":{"id":51481,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12161:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12165:6:60","memberName":"sender","nodeType":"MemberAccess","src":"12161:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":51483,"kind":"modifierInvocation","modifierName":{"id":51480,"name":"onlyWhitelisted","nameLocations":["12145:15:60"],"nodeType":"IdentifierPath","referencedDeclaration":51088,"src":"12145:15:60"},"nodeType":"ModifierInvocation","src":"12145:27:60"}],"name":"validate","nameLocation":"11923:8:60","parameters":{"id":51470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51462,"mutability":"mutable","name":"taskId","nameLocation":"11940:6:60","nodeType":"VariableDeclaration","scope":51664,"src":"11932:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51461,"name":"uint256","nodeType":"ElementaryTypeName","src":"11932:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51464,"mutability":"mutable","name":"nonce","nameLocation":"11956:5:60","nodeType":"VariableDeclaration","scope":51664,"src":"11948:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51463,"name":"uint256","nodeType":"ElementaryTypeName","src":"11948:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51467,"mutability":"mutable","name":"scores","nameLocation":"11982:6:60","nodeType":"VariableDeclaration","scope":51664,"src":"11963:25:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":51465,"name":"uint256","nodeType":"ElementaryTypeName","src":"11963:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51466,"nodeType":"ArrayTypeName","src":"11963:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":51469,"mutability":"mutable","name":"metadata","nameLocation":"12005:8:60","nodeType":"VariableDeclaration","scope":51664,"src":"11990:23:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":51468,"name":"bytes","nodeType":"ElementaryTypeName","src":"11990:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11931:83:60"},"returnParameters":{"id":51484,"nodeType":"ParameterList","parameters":[],"src":"12177:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":51716,"nodeType":"FunctionDefinition","src":"14334:369:60","nodes":[],"body":{"id":51715,"nodeType":"Block","src":"14431:272:60","nodes":[],"statements":[{"assignments":[51676],"declarations":[{"constant":false,"id":51676,"mutability":"mutable","name":"message","nameLocation":"14454:7:60","nodeType":"VariableDeclaration","scope":51715,"src":"14441:20:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":51675,"name":"bytes","nodeType":"ElementaryTypeName","src":"14441:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":51688,"initialValue":{"arguments":[{"id":51679,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51667,"src":"14481:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51680,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51670,"src":"14489:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14494:5:60","memberName":"input","nodeType":"MemberAccess","referencedDeclaration":52868,"src":"14489:10:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"expression":{"id":51682,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51670,"src":"14501:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14506:9:60","memberName":"requester","nodeType":"MemberAccess","referencedDeclaration":52845,"src":"14501:14:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":51684,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14517:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14521:6:60","memberName":"sender","nodeType":"MemberAccess","src":"14517:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51686,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51672,"src":"14529:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":51677,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14464:3:60","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":51678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14468:12:60","memberName":"encodePacked","nodeType":"MemberAccess","src":"14464:16:60","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":51687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14464:71:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"14441:94:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":51692,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51676,"src":"14567:7:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":51691,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14557:9:60","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":51693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14557:18:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":51690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14549:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":51689,"name":"uint256","nodeType":"ElementaryTypeName","src":"14549:7:60","typeDescriptions":{}}},"id":51694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14549:27:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":51697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14585:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":51696,"name":"uint256","nodeType":"ElementaryTypeName","src":"14585:7:60","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":51695,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14580:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":51698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14580:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":51699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14594:3:60","memberName":"max","nodeType":"MemberAccess","src":"14580:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"arguments":[{"expression":{"expression":{"id":51702,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51670,"src":"14609:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51703,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14614:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"14609:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14625:10:60","memberName":"difficulty","nodeType":"MemberAccess","referencedDeclaration":52827,"src":"14609:26:60","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":51701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14601:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":51700,"name":"uint256","nodeType":"ElementaryTypeName","src":"14601:7:60","typeDescriptions":{}}},"id":51705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14601:35:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14580:56:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14549:87:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51714,"nodeType":"IfStatement","src":"14545:152:60","trueBody":{"id":51713,"nodeType":"Block","src":"14638:59:60","statements":[{"errorCall":{"arguments":[{"id":51709,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51667,"src":"14672:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51710,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51672,"src":"14680:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51708,"name":"InvalidNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50964,"src":"14659:12:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":51711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14659:27:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51712,"nodeType":"RevertStatement","src":"14652:34:60"}]}}]},"documentation":{"id":51665,"nodeType":"StructuredDocumentation","src":"14003:326:60","text":"@notice Checks that proof-of-work is valid for a given task with taskId and nonce.\n @dev Reverts if the nonce is not a valid proof-of-work.\n @param taskId The ID of the task to check proof-of-work.\n @param task The task (in storage) to validate.\n @param nonce The candidate proof-of-work nonce."},"implemented":true,"kind":"function","modifiers":[],"name":"assertValidNonce","nameLocation":"14343:16:60","parameters":{"id":51673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51667,"mutability":"mutable","name":"taskId","nameLocation":"14368:6:60","nodeType":"VariableDeclaration","scope":51716,"src":"14360:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51666,"name":"uint256","nodeType":"ElementaryTypeName","src":"14360:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51670,"mutability":"mutable","name":"task","nameLocation":"14396:4:60","nodeType":"VariableDeclaration","scope":51716,"src":"14376:24:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"},"typeName":{"id":51669,"nodeType":"UserDefinedTypeName","pathNode":{"id":51668,"name":"TaskRequest","nameLocations":["14376:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":52872,"src":"14376:11:60"},"referencedDeclaration":52872,"src":"14376:11:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"}},"visibility":"internal"},{"constant":false,"id":51672,"mutability":"mutable","name":"nonce","nameLocation":"14410:5:60","nodeType":"VariableDeclaration","scope":51716,"src":"14402:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51671,"name":"uint256","nodeType":"ElementaryTypeName","src":"14402:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14359:57:60"},"returnParameters":{"id":51674,"nodeType":"ParameterList","parameters":[],"src":"14431:0:60"},"scope":52133,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":51970,"nodeType":"FunctionDefinition","src":"14890:2652:60","nodes":[],"body":{"id":51969,"nodeType":"Block","src":"14942:2600:60","nodes":[],"statements":[{"assignments":[51724],"declarations":[{"constant":false,"id":51724,"mutability":"mutable","name":"task","nameLocation":"14972:4:60","nodeType":"VariableDeclaration","scope":51969,"src":"14952:24:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"},"typeName":{"id":51723,"nodeType":"UserDefinedTypeName","pathNode":{"id":51722,"name":"TaskRequest","nameLocations":["14952:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":52872,"src":"14952:11:60"},"referencedDeclaration":52872,"src":"14952:11:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"}},"visibility":"internal"}],"id":51728,"initialValue":{"baseExpression":{"id":51725,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"14979:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51727,"indexExpression":{"id":51726,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"14988:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14979:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"nodeType":"VariableDeclarationStatement","src":"14952:43:60"},{"body":{"id":51874,"nodeType":"Block","src":"15118:1495:60","statements":[{"assignments":[51745],"declarations":[{"constant":false,"id":51745,"mutability":"mutable","name":"scores","nameLocation":"15243:6:60","nodeType":"VariableDeclaration","scope":51874,"src":"15226:23:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":51743,"name":"uint256","nodeType":"ElementaryTypeName","src":"15226:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51744,"nodeType":"ArrayTypeName","src":"15226:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":51753,"initialValue":{"arguments":[{"expression":{"expression":{"id":51749,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"15266:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51750,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15271:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"15266:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15282:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"15266:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint40","typeString":"uint40"}],"id":51748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"15252:13:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":51746,"name":"uint256","nodeType":"ElementaryTypeName","src":"15256:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51747,"nodeType":"ArrayTypeName","src":"15256:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":51752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15252:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"15226:71:60"},{"body":{"id":51779,"nodeType":"Block","src":"15378:83:60","statements":[{"expression":{"id":51777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":51766,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51745,"src":"15396:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":51768,"indexExpression":{"id":51767,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51755,"src":"15403:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15396:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"baseExpression":{"id":51769,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"15410:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51771,"indexExpression":{"id":51770,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"15422:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15410:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51773,"indexExpression":{"id":51772,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51755,"src":"15430:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15410:24:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref"}},"id":51774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15435:6:60","memberName":"scores","nodeType":"MemberAccess","referencedDeclaration":52900,"src":"15410:31:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":51776,"indexExpression":{"id":51775,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51730,"src":"15442:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15410:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15396:50:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51778,"nodeType":"ExpressionStatement","src":"15396:50:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51758,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51755,"src":"15333:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51759,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"15339:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15344:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"15339:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51761,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15355:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"15339:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"15333:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51780,"initializationExpression":{"assignments":[51755],"declarations":[{"constant":false,"id":51755,"mutability":"mutable","name":"v_i","nameLocation":"15324:3:60","nodeType":"VariableDeclaration","scope":51780,"src":"15316:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51754,"name":"uint256","nodeType":"ElementaryTypeName","src":"15316:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51757,"initialValue":{"hexValue":"30","id":51756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15330:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15316:15:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15371:5:60","subExpression":{"id":51763,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51755,"src":"15371:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51765,"nodeType":"ExpressionStatement","src":"15371:5:60"},"nodeType":"ForStatement","src":"15311:150:60"},{"assignments":[51782,51784],"declarations":[{"constant":false,"id":51782,"mutability":"mutable","name":"_stddev","nameLocation":"15539:7:60","nodeType":"VariableDeclaration","scope":51874,"src":"15531:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51781,"name":"uint256","nodeType":"ElementaryTypeName","src":"15531:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51784,"mutability":"mutable","name":"_mean","nameLocation":"15556:5:60","nodeType":"VariableDeclaration","scope":51874,"src":"15548:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51783,"name":"uint256","nodeType":"ElementaryTypeName","src":"15548:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51789,"initialValue":{"arguments":[{"id":51787,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51745,"src":"15583:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":51785,"name":"Statistics","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53117,"src":"15565:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Statistics_$53117_$","typeString":"type(library Statistics)"}},"id":51786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15576:6:60","memberName":"stddev","nodeType":"MemberAccess","referencedDeclaration":53116,"src":"15565:17:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256[] memory) pure returns (uint256,uint256)"}},"id":51788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15565:25:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"15530:60:60"},{"assignments":[51791],"declarations":[{"constant":false,"id":51791,"mutability":"mutable","name":"innerSum","nameLocation":"15758:8:60","nodeType":"VariableDeclaration","scope":51874,"src":"15750:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51790,"name":"uint256","nodeType":"ElementaryTypeName","src":"15750:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51793,"initialValue":{"hexValue":"30","id":51792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15769:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15750:20:60"},{"assignments":[51795],"declarations":[{"constant":false,"id":51795,"mutability":"mutable","name":"innerCount","nameLocation":"15792:10:60","nodeType":"VariableDeclaration","scope":51874,"src":"15784:18:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51794,"name":"uint256","nodeType":"ElementaryTypeName","src":"15784:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51797,"initialValue":{"hexValue":"30","id":51796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15805:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15784:22:60"},{"body":{"id":51852,"nodeType":"Block","src":"15887:504:60","statements":[{"assignments":[51811],"declarations":[{"constant":false,"id":51811,"mutability":"mutable","name":"score","nameLocation":"16002:5:60","nodeType":"VariableDeclaration","scope":51852,"src":"15994:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51810,"name":"uint256","nodeType":"ElementaryTypeName","src":"15994:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51818,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":51812,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51745,"src":"16010:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":51814,"indexExpression":{"id":51813,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51799,"src":"16017:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16010:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":51815,"name":"Statistics","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53117,"src":"16024:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Statistics_$53117_$","typeString":"type(library Statistics)"}},"id":51816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16035:14:60","memberName":"SCALING_FACTOR","nodeType":"MemberAccess","referencedDeclaration":52917,"src":"16024:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16010:39:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15994:55:60"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":51831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51819,"name":"score","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51811,"src":"16072:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":51820,"name":"_stddev","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51782,"src":"16080:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16072:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":51822,"name":"_mean","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51784,"src":"16091:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16072:24:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":51824,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16071:26:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51825,"name":"score","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51811,"src":"16102:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51826,"name":"_mean","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51784,"src":"16111:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":51827,"name":"_stddev","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51782,"src":"16119:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16111:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16102:24:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":51830,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16101:26:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16071:56:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51851,"nodeType":"IfStatement","src":"16067:310:60","trueBody":{"id":51850,"nodeType":"Block","src":"16129:248:60","statements":[{"expression":{"id":51834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51832,"name":"innerSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51791,"src":"16151:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":51833,"name":"score","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51811,"src":"16163:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16151:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51835,"nodeType":"ExpressionStatement","src":"16151:17:60"},{"expression":{"id":51837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16190:12:60","subExpression":{"id":51836,"name":"innerCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51795,"src":"16190:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51838,"nodeType":"ExpressionStatement","src":"16190:12:60"},{"expression":{"arguments":[{"expression":{"baseExpression":{"baseExpression":{"id":51840,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"16304:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51842,"indexExpression":{"id":51841,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"16316:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16304:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51844,"indexExpression":{"id":51843,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51799,"src":"16324:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16304:24:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref"}},"id":51845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16329:9:60","memberName":"validator","nodeType":"MemberAccess","referencedDeclaration":52893,"src":"16304:34:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":51846,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"16340:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51847,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16345:12:60","memberName":"validatorFee","nodeType":"MemberAccess","referencedDeclaration":52862,"src":"16340:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51839,"name":"_increaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52044,"src":"16285:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":51848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16285:73:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51849,"nodeType":"ExpressionStatement","src":"16285:73:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51802,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51799,"src":"15842:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51803,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"15848:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15853:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"15848:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51805,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15864:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"15848:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"15842:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51853,"initializationExpression":{"assignments":[51799],"declarations":[{"constant":false,"id":51799,"mutability":"mutable","name":"v_i","nameLocation":"15833:3:60","nodeType":"VariableDeclaration","scope":51853,"src":"15825:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51798,"name":"uint256","nodeType":"ElementaryTypeName","src":"15825:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51801,"initialValue":{"hexValue":"30","id":51800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15839:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15825:15:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15880:5:60","subExpression":{"id":51807,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51799,"src":"15882:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51809,"nodeType":"ExpressionStatement","src":"15880:5:60"},"nodeType":"ForStatement","src":"15820:571:60"},{"assignments":[51855],"declarations":[{"constant":false,"id":51855,"mutability":"mutable","name":"inner_score","nameLocation":"16489:11:60","nodeType":"VariableDeclaration","scope":51874,"src":"16481:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51854,"name":"uint256","nodeType":"ElementaryTypeName","src":"16481:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51864,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51856,"name":"innerCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51795,"src":"16503:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":51857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16517:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16503:15:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51860,"name":"innerSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51791,"src":"16525:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":51861,"name":"innerCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51795,"src":"16536:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16525:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16503:43:60","trueExpression":{"hexValue":"30","id":51859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16521:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16481:65:60"},{"expression":{"id":51872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"id":51865,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"16560:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51868,"indexExpression":{"id":51866,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"16570:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16560:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51869,"indexExpression":{"id":51867,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51730,"src":"16578:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16560:22:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":51870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16583:5:60","memberName":"score","nodeType":"MemberAccess","referencedDeclaration":52882,"src":"16560:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":51871,"name":"inner_score","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51855,"src":"16591:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16560:42:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51873,"nodeType":"ExpressionStatement","src":"16560:42:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51733,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51730,"src":"15073:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51734,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"15079:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51735,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15084:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"15079:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51736,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15095:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"15079:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"15073:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51875,"initializationExpression":{"assignments":[51730],"declarations":[{"constant":false,"id":51730,"mutability":"mutable","name":"g_i","nameLocation":"15064:3:60","nodeType":"VariableDeclaration","scope":51875,"src":"15056:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51729,"name":"uint256","nodeType":"ElementaryTypeName","src":"15056:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51732,"initialValue":{"hexValue":"30","id":51731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15070:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15056:15:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15111:5:60","subExpression":{"id":51738,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51730,"src":"15111:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51740,"nodeType":"ExpressionStatement","src":"15111:5:60"},"nodeType":"ForStatement","src":"15051:1562:60"},{"assignments":[51880],"declarations":[{"constant":false,"id":51880,"mutability":"mutable","name":"generationScores","nameLocation":"16767:16:60","nodeType":"VariableDeclaration","scope":51969,"src":"16750:33:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":51878,"name":"uint256","nodeType":"ElementaryTypeName","src":"16750:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51879,"nodeType":"ArrayTypeName","src":"16750:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":51888,"initialValue":{"arguments":[{"expression":{"expression":{"id":51884,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"16800:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16805:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"16800:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16816:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"16800:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint40","typeString":"uint40"}],"id":51883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16786:13:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":51881,"name":"uint256","nodeType":"ElementaryTypeName","src":"16790:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51882,"nodeType":"ArrayTypeName","src":"16790:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":51887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16786:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"16750:81:60"},{"body":{"id":51912,"nodeType":"Block","src":"16908:77:60","statements":[{"expression":{"id":51910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":51901,"name":"generationScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51880,"src":"16922:16:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":51903,"indexExpression":{"id":51902,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51890,"src":"16939:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16922:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"baseExpression":{"id":51904,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"16946:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51906,"indexExpression":{"id":51905,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"16956:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16946:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51908,"indexExpression":{"id":51907,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51890,"src":"16964:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16946:22:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":51909,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16969:5:60","memberName":"score","nodeType":"MemberAccess","referencedDeclaration":52882,"src":"16946:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16922:52:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51911,"nodeType":"ExpressionStatement","src":"16922:52:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51893,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51890,"src":"16863:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51894,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"16869:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51895,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16874:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"16869:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51896,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16885:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"16869:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"16863:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51913,"initializationExpression":{"assignments":[51890],"declarations":[{"constant":false,"id":51890,"mutability":"mutable","name":"g_i","nameLocation":"16854:3:60","nodeType":"VariableDeclaration","scope":51913,"src":"16846:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51889,"name":"uint256","nodeType":"ElementaryTypeName","src":"16846:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51892,"initialValue":{"hexValue":"30","id":51891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16860:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16846:15:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16901:5:60","subExpression":{"id":51898,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51890,"src":"16901:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51900,"nodeType":"ExpressionStatement","src":"16901:5:60"},"nodeType":"ForStatement","src":"16841:144:60"},{"assignments":[51915,51917],"declarations":[{"constant":false,"id":51915,"mutability":"mutable","name":"stddev","nameLocation":"17055:6:60","nodeType":"VariableDeclaration","scope":51969,"src":"17047:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51914,"name":"uint256","nodeType":"ElementaryTypeName","src":"17047:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51917,"mutability":"mutable","name":"mean","nameLocation":"17071:4:60","nodeType":"VariableDeclaration","scope":51969,"src":"17063:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51916,"name":"uint256","nodeType":"ElementaryTypeName","src":"17063:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51922,"initialValue":{"arguments":[{"id":51920,"name":"generationScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51880,"src":"17097:16:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":51918,"name":"Statistics","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53117,"src":"17079:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Statistics_$53117_$","typeString":"type(library Statistics)"}},"id":51919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17090:6:60","memberName":"stddev","nodeType":"MemberAccess","referencedDeclaration":53116,"src":"17079:17:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256[] memory) pure returns (uint256,uint256)"}},"id":51921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17079:35:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"17046:68:60"},{"body":{"id":51967,"nodeType":"Block","src":"17191:345:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":51935,"name":"generationScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51880,"src":"17247:16:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":51937,"indexExpression":{"id":51936,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51924,"src":"17264:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17247:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":51938,"name":"Statistics","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53117,"src":"17271:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Statistics_$53117_$","typeString":"type(library Statistics)"}},"id":51939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17282:14:60","memberName":"SCALING_FACTOR","nodeType":"MemberAccess","referencedDeclaration":52917,"src":"17271:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17247:49:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":51941,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17246:51:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51942,"name":"generationDeviationFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52163,"src":"17300:25:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":51943,"name":"stddev","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51915,"src":"17328:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17300:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17246:88:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":51946,"name":"mean","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51917,"src":"17338:4:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17246:96:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":51965,"nodeType":"Block","src":"17454:72:60","statements":[{"expression":{"id":51963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51960,"name":"platformFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51020,"src":"17472:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":51961,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"17494:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51962,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17499:12:60","memberName":"generatorFee","nodeType":"MemberAccess","referencedDeclaration":52859,"src":"17494:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17472:39:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51964,"nodeType":"ExpressionStatement","src":"17472:39:60"}]},"id":51966,"nodeType":"IfStatement","src":"17242:284:60","trueBody":{"id":51959,"nodeType":"Block","src":"17344:104:60","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"baseExpression":{"id":51949,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"17381:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51951,"indexExpression":{"id":51950,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"17391:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17381:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51953,"indexExpression":{"id":51952,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51924,"src":"17399:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17381:22:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":51954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17404:9:60","memberName":"responder","nodeType":"MemberAccess","referencedDeclaration":52876,"src":"17381:32:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":51955,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"17415:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17420:12:60","memberName":"generatorFee","nodeType":"MemberAccess","referencedDeclaration":52859,"src":"17415:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51948,"name":"_increaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52044,"src":"17362:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":51957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17362:71:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51958,"nodeType":"ExpressionStatement","src":"17362:71:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51927,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51924,"src":"17146:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51928,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"17152:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51929,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17157:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"17152:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17168:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"17152:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"17146:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51968,"initializationExpression":{"assignments":[51924],"declarations":[{"constant":false,"id":51924,"mutability":"mutable","name":"g_i","nameLocation":"17137:3:60","nodeType":"VariableDeclaration","scope":51968,"src":"17129:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51923,"name":"uint256","nodeType":"ElementaryTypeName","src":"17129:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51926,"initialValue":{"hexValue":"30","id":51925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17143:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17129:15:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17184:5:60","subExpression":{"id":51932,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51924,"src":"17184:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51934,"nodeType":"ExpressionStatement","src":"17184:5:60"},"nodeType":"ForStatement","src":"17124:412:60"}]},"documentation":{"id":51717,"nodeType":"StructuredDocumentation","src":"14709:176:60","text":"@notice Compute the validation scores for a given task.\n @dev Reverts if the task has no validations.\n @param taskId The ID of the task to compute scores for."},"implemented":true,"kind":"function","modifiers":[],"name":"finalizeValidation","nameLocation":"14899:18:60","parameters":{"id":51720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51719,"mutability":"mutable","name":"taskId","nameLocation":"14926:6:60","nodeType":"VariableDeclaration","scope":51970,"src":"14918:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51718,"name":"uint256","nodeType":"ElementaryTypeName","src":"14918:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14917:16:60"},"returnParameters":{"id":51721,"nodeType":"ParameterList","parameters":[],"src":"14942:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":51989,"nodeType":"FunctionDefinition","src":"17640:144:60","nodes":[],"body":{"id":51988,"nodeType":"Block","src":"17689:95:60","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":51979,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36586,"src":"17717:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":51980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17717:7:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51981,"name":"platformFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51020,"src":"17726:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":51976,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"17699:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":51978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17708:8:60","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":38306,"src":"17699:17:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":51982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17699:46:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51983,"nodeType":"ExpressionStatement","src":"17699:46:60"},{"expression":{"id":51986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51984,"name":"platformFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51020,"src":"17755:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":51985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17776:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17755:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51987,"nodeType":"ExpressionStatement","src":"17755:22:60"}]},"documentation":{"id":51971,"nodeType":"StructuredDocumentation","src":"17548:87:60","text":"@notice Withdraw the platform fees & along with remaining fees within the contract."},"functionSelector":"d0b7830b","implemented":true,"kind":"function","modifiers":[{"id":51974,"kind":"modifierInvocation","modifierName":{"id":51973,"name":"onlyOwner","nameLocations":["17679:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":36570,"src":"17679:9:60"},"nodeType":"ModifierInvocation","src":"17679:9:60"}],"name":"withdrawPlatformFees","nameLocation":"17649:20:60","parameters":{"id":51972,"nodeType":"ParameterList","parameters":[],"src":"17669:2:60"},"returnParameters":{"id":51975,"nodeType":"ParameterList","parameters":[],"src":"17689:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52004,"nodeType":"FunctionDefinition","src":"17962:123:60","nodes":[],"body":{"id":52003,"nodeType":"Block","src":"18044:41:60","nodes":[],"statements":[{"expression":{"baseExpression":{"id":51999,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"18061:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":52001,"indexExpression":{"id":52000,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51992,"src":"18071:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18061:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"functionReturnParameters":51998,"id":52002,"nodeType":"Return","src":"18054:24:60"}]},"documentation":{"id":51990,"nodeType":"StructuredDocumentation","src":"17790:167:60","text":"@notice Returns the responses to a given taskId.\n @param taskId The ID of the task to get responses for.\n @return The responses for the given taskId."},"functionSelector":"71ee2ce1","implemented":true,"kind":"function","modifiers":[],"name":"getResponses","nameLocation":"17971:12:60","parameters":{"id":51993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51992,"mutability":"mutable","name":"taskId","nameLocation":"17992:6:60","nodeType":"VariableDeclaration","scope":52004,"src":"17984:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51991,"name":"uint256","nodeType":"ElementaryTypeName","src":"17984:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17983:16:60"},"returnParameters":{"id":51998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51997,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52004,"src":"18021:21:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_memory_ptr_$dyn_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse[]"},"typeName":{"baseType":{"id":51995,"nodeType":"UserDefinedTypeName","pathNode":{"id":51994,"name":"TaskResponse","nameLocations":["18021:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"18021:12:60"},"referencedDeclaration":52889,"src":"18021:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"id":51996,"nodeType":"ArrayTypeName","src":"18021:14:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse[]"}},"visibility":"internal"}],"src":"18020:23:60"},"scope":52133,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":52019,"nodeType":"FunctionDefinition","src":"18269:129:60","nodes":[],"body":{"id":52018,"nodeType":"Block","src":"18355:43:60","nodes":[],"statements":[{"expression":{"baseExpression":{"id":52014,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"18372:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":52016,"indexExpression":{"id":52015,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52007,"src":"18384:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18372:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"functionReturnParameters":52013,"id":52017,"nodeType":"Return","src":"18365:26:60"}]},"documentation":{"id":52005,"nodeType":"StructuredDocumentation","src":"18091:173:60","text":"@notice Returns the validations to a given taskId.\n @param taskId The ID of the task to get validations for.\n @return The validations for the given taskId."},"functionSelector":"434dbaee","implemented":true,"kind":"function","modifiers":[],"name":"getValidations","nameLocation":"18278:14:60","parameters":{"id":52008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52007,"mutability":"mutable","name":"taskId","nameLocation":"18301:6:60","nodeType":"VariableDeclaration","scope":52019,"src":"18293:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52006,"name":"uint256","nodeType":"ElementaryTypeName","src":"18293:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18292:16:60"},"returnParameters":{"id":52013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52012,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52019,"src":"18330:23:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_memory_ptr_$dyn_memory_ptr","typeString":"struct LLMOracleTask.TaskValidation[]"},"typeName":{"baseType":{"id":52010,"nodeType":"UserDefinedTypeName","pathNode":{"id":52009,"name":"TaskValidation","nameLocations":["18330:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":52904,"src":"18330:14:60"},"referencedDeclaration":52904,"src":"18330:14:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_storage_ptr","typeString":"struct LLMOracleTask.TaskValidation"}},"id":52011,"nodeType":"ArrayTypeName","src":"18330:16:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskValidation[]"}},"visibility":"internal"}],"src":"18329:25:60"},"scope":52133,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":52044,"nodeType":"FunctionDefinition","src":"18615:165:60","nodes":[],"body":{"id":52043,"nodeType":"Block","src":"18685:95:60","nodes":[],"statements":[{"expression":{"arguments":[{"id":52030,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52022,"src":"18712:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":52035,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18748:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}],"id":52034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18740:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52033,"name":"address","nodeType":"ElementaryTypeName","src":"18740:7:60","typeDescriptions":{}}},"id":52036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18740:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52037,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52022,"src":"18755:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":52031,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"18721:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18730:9:60","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":38323,"src":"18721:18:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":52038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18721:42:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":52039,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52024,"src":"18766:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18721:51:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52027,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"18695:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18704:7:60","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":38347,"src":"18695:16:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":52041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18695:78:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52042,"nodeType":"ExpressionStatement","src":"18695:78:60"}]},"documentation":{"id":52020,"nodeType":"StructuredDocumentation","src":"18404:206:60","text":"Increases the allowance by setting the approval to the sum of the current allowance and the additional amount.\n @param spender spender address\n @param amount additional amount of allowance"},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseAllowance","nameLocation":"18624:18:60","parameters":{"id":52025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52022,"mutability":"mutable","name":"spender","nameLocation":"18651:7:60","nodeType":"VariableDeclaration","scope":52044,"src":"18643:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52021,"name":"address","nodeType":"ElementaryTypeName","src":"18643:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52024,"mutability":"mutable","name":"amount","nameLocation":"18668:6:60","nodeType":"VariableDeclaration","scope":52044,"src":"18660:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52023,"name":"uint256","nodeType":"ElementaryTypeName","src":"18660:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18642:33:60"},"returnParameters":{"id":52026,"nodeType":"ParameterList","parameters":[],"src":"18685:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":52132,"nodeType":"FunctionDefinition","src":"19053:821:60","nodes":[],"body":{"id":52131,"nodeType":"Block","src":"19138:736:60","nodes":[],"statements":[{"assignments":[52057],"declarations":[{"constant":false,"id":52057,"mutability":"mutable","name":"taskResponses","nameLocation":"19171:13:60","nodeType":"VariableDeclaration","scope":52131,"src":"19148:36:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse[]"},"typeName":{"baseType":{"id":52055,"nodeType":"UserDefinedTypeName","pathNode":{"id":52054,"name":"TaskResponse","nameLocations":["19148:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"19148:12:60"},"referencedDeclaration":52889,"src":"19148:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"id":52056,"nodeType":"ArrayTypeName","src":"19148:14:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse[]"}},"visibility":"internal"}],"id":52061,"initialValue":{"baseExpression":{"id":52058,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"19187:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":52060,"indexExpression":{"id":52059,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52047,"src":"19197:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19187:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"19148:56:60"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"id":52069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":52062,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"19260:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":52064,"indexExpression":{"id":52063,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52047,"src":"19269:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19260:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"id":52065,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19277:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"19260:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":52066,"name":"LLMOracleTask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52905,"src":"19287:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LLMOracleTask_$52905_$","typeString":"type(contract LLMOracleTask)"}},"id":52067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19301:10:60","memberName":"TaskStatus","nodeType":"MemberAccess","referencedDeclaration":52841,"src":"19287:24:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":52068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19312:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"19287:34:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"src":"19260:61:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52082,"nodeType":"IfStatement","src":"19256:185:60","trueBody":{"id":52081,"nodeType":"Block","src":"19323:118:60","statements":[{"errorCall":{"arguments":[{"id":52071,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52047,"src":"19362:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"id":52072,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"19370:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":52074,"indexExpression":{"id":52073,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52047,"src":"19379:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19370:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"id":52075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19387:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"19370:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"expression":{"expression":{"id":52076,"name":"LLMOracleTask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52905,"src":"19395:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LLMOracleTask_$52905_$","typeString":"type(contract LLMOracleTask)"}},"id":52077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19409:10:60","memberName":"TaskStatus","nodeType":"MemberAccess","referencedDeclaration":52841,"src":"19395:24:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":52078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19420:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"19395:34:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":52070,"name":"InvalidTaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50957,"src":"19344:17:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$_t_error_$","typeString":"function (uint256,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus) pure returns (error)"}},"id":52079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19344:86:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52080,"nodeType":"RevertStatement","src":"19337:93:60"}]}},{"assignments":[52085],"declarations":[{"constant":false,"id":52085,"mutability":"mutable","name":"result","nameLocation":"19533:6:60","nodeType":"VariableDeclaration","scope":52131,"src":"19512:27:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"},"typeName":{"id":52084,"nodeType":"UserDefinedTypeName","pathNode":{"id":52083,"name":"TaskResponse","nameLocations":["19512:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"19512:12:60"},"referencedDeclaration":52889,"src":"19512:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"visibility":"internal"}],"id":52089,"initialValue":{"baseExpression":{"id":52086,"name":"taskResponses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52057,"src":"19542:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage pointer"}},"id":52088,"indexExpression":{"hexValue":"30","id":52087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19556:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19542:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"nodeType":"VariableDeclarationStatement","src":"19512:46:60"},{"assignments":[52091],"declarations":[{"constant":false,"id":52091,"mutability":"mutable","name":"highestScore","nameLocation":"19576:12:60","nodeType":"VariableDeclaration","scope":52131,"src":"19568:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52090,"name":"uint256","nodeType":"ElementaryTypeName","src":"19568:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":52094,"initialValue":{"expression":{"id":52092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52085,"src":"19591:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage pointer"}},"id":52093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19598:5:60","memberName":"score","nodeType":"MemberAccess","referencedDeclaration":52882,"src":"19591:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19568:35:60"},{"body":{"id":52127,"nodeType":"Block","src":"19664:180:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":52106,"name":"taskResponses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52057,"src":"19682:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage pointer"}},"id":52108,"indexExpression":{"id":52107,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52096,"src":"19696:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19682:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":52109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19699:5:60","memberName":"score","nodeType":"MemberAccess","referencedDeclaration":52882,"src":"19682:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":52110,"name":"highestScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52091,"src":"19707:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19682:37:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52126,"nodeType":"IfStatement","src":"19678:156:60","trueBody":{"id":52125,"nodeType":"Block","src":"19721:113:60","statements":[{"expression":{"id":52117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52112,"name":"highestScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52091,"src":"19739:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":52113,"name":"taskResponses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52057,"src":"19754:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage pointer"}},"id":52115,"indexExpression":{"id":52114,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52096,"src":"19768:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19754:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":52116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19771:5:60","memberName":"score","nodeType":"MemberAccess","referencedDeclaration":52882,"src":"19754:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19739:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52118,"nodeType":"ExpressionStatement","src":"19739:37:60"},{"expression":{"id":52123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52085,"src":"19794:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":52120,"name":"taskResponses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52057,"src":"19803:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage pointer"}},"id":52122,"indexExpression":{"id":52121,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52096,"src":"19817:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19803:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"src":"19794:25:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage pointer"}},"id":52124,"nodeType":"ExpressionStatement","src":"19794:25:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52099,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52096,"src":"19633:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":52100,"name":"taskResponses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52057,"src":"19637:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage pointer"}},"id":52101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19651:6:60","memberName":"length","nodeType":"MemberAccess","src":"19637:20:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19633:24:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52128,"initializationExpression":{"assignments":[52096],"declarations":[{"constant":false,"id":52096,"mutability":"mutable","name":"i","nameLocation":"19626:1:60","nodeType":"VariableDeclaration","scope":52128,"src":"19618:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52095,"name":"uint256","nodeType":"ElementaryTypeName","src":"19618:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":52098,"initialValue":{"hexValue":"31","id":52097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19630:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"19618:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":52104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19659:3:60","subExpression":{"id":52103,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52096,"src":"19659:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52105,"nodeType":"ExpressionStatement","src":"19659:3:60"},"nodeType":"ForStatement","src":"19613:231:60"},{"expression":{"id":52129,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52085,"src":"19861:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage pointer"}},"functionReturnParameters":52052,"id":52130,"nodeType":"Return","src":"19854:13:60"}]},"documentation":{"id":52045,"nodeType":"StructuredDocumentation","src":"18786:262:60","text":"@notice Returns the best performing result of the given task.\n @dev For invalid task IDs, the status check will fail.\n @param taskId The ID of the task to get the result for.\n @return The best performing response w.r.t validation scores."},"functionSelector":"32f77659","implemented":true,"kind":"function","modifiers":[],"name":"getBestResponse","nameLocation":"19062:15:60","parameters":{"id":52048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52047,"mutability":"mutable","name":"taskId","nameLocation":"19086:6:60","nodeType":"VariableDeclaration","scope":52132,"src":"19078:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52046,"name":"uint256","nodeType":"ElementaryTypeName","src":"19078:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19077:16:60"},"returnParameters":{"id":52052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52051,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52132,"src":"19117:19:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse"},"typeName":{"id":52050,"nodeType":"UserDefinedTypeName","pathNode":{"id":52049,"name":"TaskResponse","nameLocations":["19117:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"19117:12:60"},"referencedDeclaration":52889,"src":"19117:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"visibility":"internal"}],"src":"19116:21:60"},"scope":52133,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":50898,"name":"LLMOracleTask","nameLocations":["689:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":52905,"src":"689:13:60"},"id":50899,"nodeType":"InheritanceSpecifier","src":"689:13:60"},{"baseName":{"id":50900,"name":"LLMOracleManager","nameLocations":["704:16:60"],"nodeType":"IdentifierPath","referencedDeclaration":52416,"src":"704:16:60"},"id":50901,"nodeType":"InheritanceSpecifier","src":"704:16:60"},{"baseName":{"id":50902,"name":"UUPSUpgradeable","nameLocations":["722:15:60"],"nodeType":"IdentifierPath","referencedDeclaration":37111,"src":"722:15:60"},"id":50903,"nodeType":"InheritanceSpecifier","src":"722:15:60"}],"canonicalName":"LLMOracleCoordinator","contractDependencies":[],"contractKind":"contract","documentation":{"id":50897,"nodeType":"StructuredDocumentation","src":"532:124:60","text":"@title LLM Oracle Coordinator\n @notice Responsible for coordinating the Oracle responses to LLM generation requests."},"fullyImplemented":true,"linearizedBaseContracts":[52133,37111,37336,52416,36675,37157,36929,52905],"name":"LLMOracleCoordinator","nameLocation":"665:20:60","scope":52134,"usedErrors":[36511,36516,36692,36695,36956,36961,37531,37544,38810,39102,50946,50957,50964,50971,50976,50983,50986,52151,52914,53138],"usedEvents":[36522,36700,37313,50912,50919,50926,50939]}],"license":"Apache-2.0"},"id":60} \ No newline at end of file diff --git a/abis/LLMOracleRegistry.json b/deployments/abis/LLMOracleRegistry.abi.json similarity index 99% rename from abis/LLMOracleRegistry.json rename to deployments/abis/LLMOracleRegistry.abi.json index 1ad7cd4..1b39bde 100644 --- a/abis/LLMOracleRegistry.json +++ b/deployments/abis/LLMOracleRegistry.abi.json @@ -585,4 +585,4 @@ } ] } -] \ No newline at end of file +] diff --git a/deployments/abis/LLMOracleRegistry.json b/deployments/abis/LLMOracleRegistry.json new file mode 100644 index 0000000..d4813bc --- /dev/null +++ b/deployments/abis/LLMOracleRegistry.json @@ -0,0 +1 @@ +{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"addToWhitelist","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"generatorStakeAmount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeAmount","inputs":[{"name":"kind","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_generatorStakeAmount","type":"uint256","internalType":"uint256"},{"name":"_validatorStakeAmount","type":"uint256","internalType":"uint256"},{"name":"_token","type":"address","internalType":"address"},{"name":"_minRegistrationTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isRegistered","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"kind","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelisted","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"minRegistrationTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"register","inputs":[{"name":"kind","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registrationTimes","inputs":[{"name":"oracle","type":"address","internalType":"address"},{"name":"","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[{"name":"registeredTime","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registrations","inputs":[{"name":"oracle","type":"address","internalType":"address"},{"name":"","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"removeFromWhitelist","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakeAmounts","inputs":[{"name":"_generatorStakeAmount","type":"uint256","internalType":"uint256"},{"name":"_validatorStakeAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ERC20"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregister","inputs":[{"name":"kind","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"validatorStakeAmount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AddedToWhitelist","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Registered","inputs":[{"name":"","type":"address","indexed":true,"internalType":"address"},{"name":"kind","type":"uint8","indexed":false,"internalType":"enum LLMOracleKind"}],"anonymous":false},{"type":"event","name":"RemovedFromWhitelist","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unregistered","inputs":[{"name":"","type":"address","indexed":true,"internalType":"address"},{"name":"kind","type":"uint8","indexed":false,"internalType":"enum LLMOracleKind"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyRegistered","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientFunds","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotRegistered","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"NotWhitelisted","inputs":[{"name":"validator","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"TooEarlyToUnregister","inputs":[{"name":"minTimeToWait","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516116086100f95f395f8181610d8101528181610daa0152610eee01526116085ff3fe608060405260043610610126575f3560e01c80637f649783116100a8578063cf9640b41161006d578063cf9640b414610380578063ee12a7a01461039f578063eea5353d146103b4578063f149444b146103c9578063f2fde38b146103e8578063fc0c546a14610407575f80fd5b80637f6497831461027f57806381e1c6ca1461029e5780638ab1d681146102d45780638da5cb5b146102f3578063ad3cb1cc14610343575f80fd5b806352d1902d116100ee57806352d1902d146101fa5780635f5b248b1461020e57806361d689fa1461022d578063715018a61461024c578063771007a914610260575f80fd5b80631a00d4ea1461012a57806323d2f5f6146101525780632d118d5c146101715780633af32abf146101a75780634f1ef286146101e5575b5f80fd5b348015610135575f80fd5b5061013f60035481565b6040519081526020015b60405180910390f35b34801561015d575f80fd5b5061013f61016c36600461123d565b610426565b34801561017c575f80fd5b5061013f61018b36600461126c565b600560209081525f928352604080842090915290825290205481565b3480156101b2575f80fd5b506101d56101c136600461129d565b5f6020819052908152604090205460ff1681565b6040519015158152602001610149565b6101f86101f33660046112fb565b610755565b005b348015610205575f80fd5b5061013f610774565b348015610219575f80fd5b506101d561022836600461126c565b61078f565b348015610238575f80fd5b506101f861024736600461123d565b6107ed565b348015610257575f80fd5b506101f8610a45565b34801561026b575f80fd5b5061013f61027a36600461123d565b610a58565b34801561028a575f80fd5b506101f86102993660046113a0565b610a81565b3480156102a9575f80fd5b5061013f6102b836600461126c565b600460209081525f928352604080842090915290825290205481565b3480156102df575f80fd5b506101f86102ee36600461129d565b610b7d565b3480156102fe575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610149565b34801561034e575f80fd5b50610373604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610149919061144f565b34801561038b575f80fd5b506101f861039a366004611484565b610bee565b3480156103aa575f80fd5b5061013f60015481565b3480156103bf575f80fd5b5061013f60025481565b3480156103d4575f80fd5b506101f86103e33660046114be565b610d29565b3480156103f3575f80fd5b506101f861040236600461129d565b610d3c565b348015610412575f80fd5b5060065461032b906001600160a01b031681565b335f90815260046020526040812081836001811115610447576104476114de565b6001811115610458576104586114de565b81526020019081526020015f20549050805f0361048f5760405163bfc6c33760e01b81523360048201526024015b60405180910390fd5b60018260018111156104a3576104a36114de565b1480156104be5750335f9081526020819052604090205460ff165b156104da57335f908152602081905260409020805460ff191690555b600354335f908152600560205260408120908460018111156104fe576104fe6114de565b600181111561050f5761050f6114de565b81526020019081526020015f2054426105289190611506565b101561059557335f9081526005602052604081209083600181111561054f5761054f6114de565b6001811115610560576105606114de565b81526020019081526020015f2054426105799190611506565b60405163fbedc41360e01b815260040161048691815260200190565b335f908152600460205260408120908360018111156105b6576105b66114de565b60018111156105c7576105c76114de565b815260208082019290925260409081015f90812081905533815260059092528120908360018111156105fb576105fb6114de565b600181111561060c5761060c6114de565b81526020019081526020015f205f9055336001600160a01b03167feebfdaadda46c435881bbe8bac1fc3974f3323b1c809c7aabd37ae7b83ca4442836040516106559190611519565b60405180910390a2600654604051636eb1769f60e11b815230600482015233602482018190526001600160a01b039092169163095ea7b3918490849063dd62ed3e90604401602060405180830381865afa1580156106b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d9919061153f565b6106e39190611556565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561072b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f9190611569565b50919050565b61075d610d76565b61076682610e1a565b6107708282610e22565b5050565b5f61077d610ee3565b505f805160206115b383398151915290565b5f61079982610a58565b6001600160a01b0384165f908152600460205260408120908460018111156107c3576107c36114de565b60018111156107d4576107d46114de565b81526020019081526020015f2054101590505b92915050565b6001816001811115610801576108016114de565b0361083757335f9081526020819052604090205460ff1661083757604051636f8bf18b60e11b8152336004820152602401610486565b5f61084182610a58565b905061084d338361078f565b1561086d576040516345ed80e960e01b8152336004820152602401610486565b600654604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa1580156108b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dd919061153f565b10156108fc5760405163356680b760e01b815260040160405180910390fd5b6006546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015610950573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109749190611569565b50335f9081526004602052604081208291846001811115610997576109976114de565b60018111156109a8576109a86114de565b815260208082019290925260409081015f908120939093553383526005909152812042918460018111156109de576109de6114de565b60018111156109ef576109ef6114de565b81526020019081526020015f2081905550336001600160a01b03167f89b4e995568c900aa52376cbed225dc1a013c9a43cb58186d69676ff593d7c4e83604051610a399190611519565b60405180910390a25050565b610a4d610f2c565b610a565f610f87565b565b5f80826001811115610a6c57610a6c6114de565b14610a79576002546107e7565b505060015490565b610a89610f2c565b5f5b8151811015610770575f80838381518110610aa857610aa8611588565b6020908102919091018101516001600160a01b031682528101919091526040015f205460ff16610b755760015f80848481518110610ae857610ae8611588565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff021916908315150217905550818181518110610b3757610b37611588565b60200260200101516001600160a01b03167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a25b600101610a8b565b610b85610f2c565b6001600160a01b0381165f9081526020819052604090205460ff1615610beb576001600160a01b0381165f81815260208190526040808220805460ff19169055517fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df7579190a25b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610c335750825b90505f8267ffffffffffffffff166001148015610c4f5750303b155b905081158015610c5d575080155b15610c7b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ca557845460ff60401b1916600160401b1785555b610cae33610ff7565b600189905560028890556003869055600680546001600160a01b0319166001600160a01b0389161790558315610d1e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610d31610f2c565b600191909155600255565b610d44610f2c565b6001600160a01b038116610d6d57604051631e4fbdf760e01b81525f6004820152602401610486565b610beb81610f87565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610dfc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610df05f805160206115b3833981519152546001600160a01b031690565b6001600160a01b031614155b15610a565760405163703e46dd60e11b815260040160405180910390fd5b610beb610f2c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e7c575060408051601f3d908101601f19168201909252610e799181019061153f565b60015b610ea457604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610486565b5f805160206115b38339815191528114610ed457604051632a87526960e21b815260048101829052602401610486565b610ede8383611008565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a565760405163703e46dd60e11b815260040160405180910390fd5b33610f5e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610a565760405163118cdaa760e01b8152336004820152602401610486565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b610fff61105d565b610beb816110a6565b611011826110ae565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561105557610ede8282611111565b610770611183565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610a5657604051631afcd79f60e31b815260040160405180910390fd5b610d4461105d565b806001600160a01b03163b5f036110e357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610486565b5f805160206115b383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b03168460405161112d919061159c565b5f60405180830381855af49150503d805f8114611165576040519150601f19603f3d011682016040523d82523d5f602084013e61116a565b606091505b509150915061117a8583836111a2565b95945050505050565b3415610a565760405163b398979f60e01b815260040160405180910390fd5b6060826111b7576111b282611201565b6111fa565b81511580156111ce57506001600160a01b0384163b155b156111f757604051639996b31560e01b81526001600160a01b0385166004820152602401610486565b50805b9392505050565b8051156112115780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b803560028110611238575f80fd5b919050565b5f6020828403121561124d575f80fd5b6111fa8261122a565b80356001600160a01b0381168114611238575f80fd5b5f806040838503121561127d575f80fd5b61128683611256565b91506112946020840161122a565b90509250929050565b5f602082840312156112ad575f80fd5b6111fa82611256565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112f3576112f36112b6565b604052919050565b5f806040838503121561130c575f80fd5b61131583611256565b9150602083013567ffffffffffffffff811115611330575f80fd5b8301601f81018513611340575f80fd5b803567ffffffffffffffff81111561135a5761135a6112b6565b61136d601f8201601f19166020016112ca565b818152866020838501011115611381575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f602082840312156113b0575f80fd5b813567ffffffffffffffff8111156113c6575f80fd5b8201601f810184136113d6575f80fd5b803567ffffffffffffffff8111156113f0576113f06112b6565b8060051b611400602082016112ca565b9182526020818401810192908101908784111561141b575f80fd5b6020850194505b838510156114445761143385611256565b825260209485019490910190611422565b979650505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f8060808587031215611497575f80fd5b84359350602085013592506114ae60408601611256565b9396929550929360600135925050565b5f80604083850312156114cf575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156107e7576107e76114f2565b602081016002831061153957634e487b7160e01b5f52602160045260245ffd5b91905290565b5f6020828403121561154f575f80fd5b5051919050565b808201808211156107e7576107e76114f2565b5f60208284031215611579575f80fd5b815180151581146111fa575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a48298e56c99c531cd83e0ebfdb796e8a22fe8b486771f00cc6d4b80071c85a064736f6c634300081a0033","sourceMap":"560:6817:62:-:0;;;1171:4:21;1128:48;;3170:53:62;;;;;;;;;-1:-1:-1;3194:22:62;:20;:22::i;:::-;560:6817;;7711:422:20;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:20;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:20;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:20;-1:-1:-1;;;;;8035:33:20;;;;;8087:29;;158:50:66;;;8087:29:20;;146:2:66;131:18;8087:29:20;;;;;;;7981:146;7760:373;7711:422::o;14:200:66:-;560:6817:62;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610610126575f3560e01c80637f649783116100a8578063cf9640b41161006d578063cf9640b414610380578063ee12a7a01461039f578063eea5353d146103b4578063f149444b146103c9578063f2fde38b146103e8578063fc0c546a14610407575f80fd5b80637f6497831461027f57806381e1c6ca1461029e5780638ab1d681146102d45780638da5cb5b146102f3578063ad3cb1cc14610343575f80fd5b806352d1902d116100ee57806352d1902d146101fa5780635f5b248b1461020e57806361d689fa1461022d578063715018a61461024c578063771007a914610260575f80fd5b80631a00d4ea1461012a57806323d2f5f6146101525780632d118d5c146101715780633af32abf146101a75780634f1ef286146101e5575b5f80fd5b348015610135575f80fd5b5061013f60035481565b6040519081526020015b60405180910390f35b34801561015d575f80fd5b5061013f61016c36600461123d565b610426565b34801561017c575f80fd5b5061013f61018b36600461126c565b600560209081525f928352604080842090915290825290205481565b3480156101b2575f80fd5b506101d56101c136600461129d565b5f6020819052908152604090205460ff1681565b6040519015158152602001610149565b6101f86101f33660046112fb565b610755565b005b348015610205575f80fd5b5061013f610774565b348015610219575f80fd5b506101d561022836600461126c565b61078f565b348015610238575f80fd5b506101f861024736600461123d565b6107ed565b348015610257575f80fd5b506101f8610a45565b34801561026b575f80fd5b5061013f61027a36600461123d565b610a58565b34801561028a575f80fd5b506101f86102993660046113a0565b610a81565b3480156102a9575f80fd5b5061013f6102b836600461126c565b600460209081525f928352604080842090915290825290205481565b3480156102df575f80fd5b506101f86102ee36600461129d565b610b7d565b3480156102fe575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610149565b34801561034e575f80fd5b50610373604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610149919061144f565b34801561038b575f80fd5b506101f861039a366004611484565b610bee565b3480156103aa575f80fd5b5061013f60015481565b3480156103bf575f80fd5b5061013f60025481565b3480156103d4575f80fd5b506101f86103e33660046114be565b610d29565b3480156103f3575f80fd5b506101f861040236600461129d565b610d3c565b348015610412575f80fd5b5060065461032b906001600160a01b031681565b335f90815260046020526040812081836001811115610447576104476114de565b6001811115610458576104586114de565b81526020019081526020015f20549050805f0361048f5760405163bfc6c33760e01b81523360048201526024015b60405180910390fd5b60018260018111156104a3576104a36114de565b1480156104be5750335f9081526020819052604090205460ff165b156104da57335f908152602081905260409020805460ff191690555b600354335f908152600560205260408120908460018111156104fe576104fe6114de565b600181111561050f5761050f6114de565b81526020019081526020015f2054426105289190611506565b101561059557335f9081526005602052604081209083600181111561054f5761054f6114de565b6001811115610560576105606114de565b81526020019081526020015f2054426105799190611506565b60405163fbedc41360e01b815260040161048691815260200190565b335f908152600460205260408120908360018111156105b6576105b66114de565b60018111156105c7576105c76114de565b815260208082019290925260409081015f90812081905533815260059092528120908360018111156105fb576105fb6114de565b600181111561060c5761060c6114de565b81526020019081526020015f205f9055336001600160a01b03167feebfdaadda46c435881bbe8bac1fc3974f3323b1c809c7aabd37ae7b83ca4442836040516106559190611519565b60405180910390a2600654604051636eb1769f60e11b815230600482015233602482018190526001600160a01b039092169163095ea7b3918490849063dd62ed3e90604401602060405180830381865afa1580156106b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d9919061153f565b6106e39190611556565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561072b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f9190611569565b50919050565b61075d610d76565b61076682610e1a565b6107708282610e22565b5050565b5f61077d610ee3565b505f805160206115b383398151915290565b5f61079982610a58565b6001600160a01b0384165f908152600460205260408120908460018111156107c3576107c36114de565b60018111156107d4576107d46114de565b81526020019081526020015f2054101590505b92915050565b6001816001811115610801576108016114de565b0361083757335f9081526020819052604090205460ff1661083757604051636f8bf18b60e11b8152336004820152602401610486565b5f61084182610a58565b905061084d338361078f565b1561086d576040516345ed80e960e01b8152336004820152602401610486565b600654604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa1580156108b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dd919061153f565b10156108fc5760405163356680b760e01b815260040160405180910390fd5b6006546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015610950573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109749190611569565b50335f9081526004602052604081208291846001811115610997576109976114de565b60018111156109a8576109a86114de565b815260208082019290925260409081015f908120939093553383526005909152812042918460018111156109de576109de6114de565b60018111156109ef576109ef6114de565b81526020019081526020015f2081905550336001600160a01b03167f89b4e995568c900aa52376cbed225dc1a013c9a43cb58186d69676ff593d7c4e83604051610a399190611519565b60405180910390a25050565b610a4d610f2c565b610a565f610f87565b565b5f80826001811115610a6c57610a6c6114de565b14610a79576002546107e7565b505060015490565b610a89610f2c565b5f5b8151811015610770575f80838381518110610aa857610aa8611588565b6020908102919091018101516001600160a01b031682528101919091526040015f205460ff16610b755760015f80848481518110610ae857610ae8611588565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff021916908315150217905550818181518110610b3757610b37611588565b60200260200101516001600160a01b03167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a25b600101610a8b565b610b85610f2c565b6001600160a01b0381165f9081526020819052604090205460ff1615610beb576001600160a01b0381165f81815260208190526040808220805460ff19169055517fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df7579190a25b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610c335750825b90505f8267ffffffffffffffff166001148015610c4f5750303b155b905081158015610c5d575080155b15610c7b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ca557845460ff60401b1916600160401b1785555b610cae33610ff7565b600189905560028890556003869055600680546001600160a01b0319166001600160a01b0389161790558315610d1e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610d31610f2c565b600191909155600255565b610d44610f2c565b6001600160a01b038116610d6d57604051631e4fbdf760e01b81525f6004820152602401610486565b610beb81610f87565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610dfc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610df05f805160206115b3833981519152546001600160a01b031690565b6001600160a01b031614155b15610a565760405163703e46dd60e11b815260040160405180910390fd5b610beb610f2c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e7c575060408051601f3d908101601f19168201909252610e799181019061153f565b60015b610ea457604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610486565b5f805160206115b38339815191528114610ed457604051632a87526960e21b815260048101829052602401610486565b610ede8383611008565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a565760405163703e46dd60e11b815260040160405180910390fd5b33610f5e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610a565760405163118cdaa760e01b8152336004820152602401610486565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b610fff61105d565b610beb816110a6565b611011826110ae565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561105557610ede8282611111565b610770611183565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610a5657604051631afcd79f60e31b815260040160405180910390fd5b610d4461105d565b806001600160a01b03163b5f036110e357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610486565b5f805160206115b383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b03168460405161112d919061159c565b5f60405180830381855af49150503d805f8114611165576040519150601f19603f3d011682016040523d82523d5f602084013e61116a565b606091505b509150915061117a8583836111a2565b95945050505050565b3415610a565760405163b398979f60e01b815260040160405180910390fd5b6060826111b7576111b282611201565b6111fa565b81511580156111ce57506001600160a01b0384163b155b156111f757604051639996b31560e01b81526001600160a01b0385166004820152602401610486565b50805b9392505050565b8051156112115780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b803560028110611238575f80fd5b919050565b5f6020828403121561124d575f80fd5b6111fa8261122a565b80356001600160a01b0381168114611238575f80fd5b5f806040838503121561127d575f80fd5b61128683611256565b91506112946020840161122a565b90509250929050565b5f602082840312156112ad575f80fd5b6111fa82611256565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112f3576112f36112b6565b604052919050565b5f806040838503121561130c575f80fd5b61131583611256565b9150602083013567ffffffffffffffff811115611330575f80fd5b8301601f81018513611340575f80fd5b803567ffffffffffffffff81111561135a5761135a6112b6565b61136d601f8201601f19166020016112ca565b818152866020838501011115611381575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f602082840312156113b0575f80fd5b813567ffffffffffffffff8111156113c6575f80fd5b8201601f810184136113d6575f80fd5b803567ffffffffffffffff8111156113f0576113f06112b6565b8060051b611400602082016112ca565b9182526020818401810192908101908784111561141b575f80fd5b6020850194505b838510156114445761143385611256565b825260209485019490910190611422565b979650505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f8060808587031215611497575f80fd5b84359350602085013592506114ae60408601611256565b9396929550929360600135925050565b5f80604083850312156114cf575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156107e7576107e76114f2565b602081016002831061153957634e487b7160e01b5f52602160045260245ffd5b91905290565b5f6020828403121561154f575f80fd5b5051919050565b808201808211156107e7576107e76114f2565b5f60208284031215611579575f80fd5b815180151581146111fa575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a48298e56c99c531cd83e0ebfdb796e8a22fe8b486771f00cc6d4b80071c85a064736f6c634300081a0033","sourceMap":"560:6817:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:34;;;;;;;;;;;;;;;;;;;160:25:66;;;148:2;133:18;2299:34:62;;;;;;;;5571:981;;;;;;;;;;-1:-1:-1;5571:981:62;;;;;:::i;:::-;;:::i;2568:100::-;;;;;;;;;;-1:-1:-1;2568:100:62;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1165:45:65;;;;;;;;;;-1:-1:-1;1165:45:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1405:14:66;;1398:22;1380:41;;1368:2;1353:18;1165:45:65;1240:187:66;4152:214:21;;;;;;:::i;:::-;;:::i;:::-;;3699:134;;;;;;;;;;;;;:::i;7219:156:62:-;;;;;;;;;;-1:-1:-1;7219:156:62;;;;;:::i;:::-;;:::i;4502:853::-;;;;;;;;;;-1:-1:-1;4502:853:62;;;;;:::i;:::-;;:::i;3155:101:19:-;;;;;;;;;;;;;:::i;6988:175:62:-;;;;;;;;;;-1:-1:-1;6988:175:62;;;;;:::i;:::-;;:::i;1529:307:65:-;;;;;;;;;;-1:-1:-1;1529:307:65;;;;;:::i;:::-;;:::i;2428:88:62:-;;;;;;;;;;-1:-1:-1;2428:88:62;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1959:210:65;;;;;;;;;;-1:-1:-1;1959:210:65;;;;;:::i;:::-;;:::i;2441:144:19:-;;;;;;;;;;-1:-1:-1;1313:22:19;2570:8;-1:-1:-1;;;;;2570:8:19;2441:144;;;-1:-1:-1;;;;;3981:32:66;;;3963:51;;3951:2;3936:18;2441:144:19;3817:203:66;1819:58:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;3726:419:62:-;;;;;;;;;;-1:-1:-1;3726:419:62;;;;;:::i;:::-;;:::i;1898:35::-;;;;;;;;;;;;;;;;2035;;;;;;;;;;;;;;;;6670:219;;;;;;;;;;-1:-1:-1;6670:219:62;;;;;:::i;:::-;;:::i;3405:215:19:-;;;;;;;;;;-1:-1:-1;3405:215:19;;;;;:::i;:::-;;:::i;2715:18:62:-;;;;;;;;;;-1:-1:-1;2715:18:62;;;;-1:-1:-1;;;;;2715:18:62;;;5571:981;5676:10;5627:14;5662:25;;;:13;:25;;;;;5627:14;5688:4;5662:31;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5653:40;;5749:6;5759:1;5749:11;5745:74;;5783:25;;-1:-1:-1;;;5783:25:62;;5797:10;5783:25;;;3963:51:66;3936:18;;5783:25:62;;;;;;;;5745:74;5884:23;5876:4;:31;;;;;;;;:::i;:::-;;:60;;;;-1:-1:-1;5925:10:62;5911:13;:25;;;;;;;;;;;;;5876:60;5872:124;;;5966:10;5980:5;5952:25;;;;;;;;;;:33;;-1:-1:-1;;5952:33:62;;;5872:124;6118:19;;6098:10;6080:29;;;;:17;:29;;;;;;6110:4;6080:35;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6062:15;:53;;;;:::i;:::-;:75;6058:188;;;6217:10;6199:29;;;;:17;:29;;;;;;6229:4;6199:35;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6181:15;:53;;;;:::i;:::-;6160:75;;-1:-1:-1;;;6160:75:62;;;;;;160:25:66;;148:2;133:18;;14:177;6058:188:62;6308:10;6294:25;;;;:13;:25;;;;;;6320:4;6294:31;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;6294:31:62;;;6287:38;;;6360:10;6342:29;;:17;:29;;;;;;6372:4;6342:35;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;6335:42;;;6405:10;-1:-1:-1;;;;;6392:30:62;;6417:4;6392:30;;;;;;:::i;:::-;;;;;;;;6467:5;;6493:42;;-1:-1:-1;;;6493:42:62;;6517:4;6493:42;;;6491:51:66;6481:10:62;6558:18:66;;;6551:60;;;-1:-1:-1;;;;;6467:5:62;;;;:13;;6538:6;;6467:5;;6493:15;;6464:18:66;;6493:42:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;6467:78;;-1:-1:-1;;;;;;6467:78:62;;;;;;;-1:-1:-1;;;;;7133:32:66;;;6467:78:62;;;7115:51:66;7182:18;;;7175:34;7088:18;;6467:78:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5571:981;;;:::o;4152:214:21:-;2655:13;:11;:13::i;:::-;4267:36:::1;4285:17;4267;:36::i;:::-;4313:46;4335:17;4354:4;4313:21;:46::i;:::-;4152:214:::0;;:::o;3699:134::-;3768:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3699:134:21;:::o;7219:156:62:-;7296:4;7348:20;7363:4;7348:14;:20::i;:::-;-1:-1:-1;;;;;7319:19:62;;;;;;:13;:19;;;;;;7339:4;7319:25;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:49;;7312:56;;7219:156;;;;;:::o;4502:853::-;4569:23;4561:4;:31;;;;;;;;:::i;:::-;;4557:159;;4627:10;4613:13;:25;;;;;;;;;;;;;4608:98;;4665:26;;-1:-1:-1;;;4665:26:62;;4680:10;4665:26;;;3963:51:66;3936:18;;4665:26:62;3817:203:66;4608:98:62;4726:14;4743:20;4758:4;4743:14;:20::i;:::-;4726:37;;4831:30;4844:10;4856:4;4831:12;:30::i;:::-;4827:97;;;4884:29;;-1:-1:-1;;;4884:29:62;;4902:10;4884:29;;;3963:51:66;3936:18;;4884:29:62;3817:203:66;4827:97:62;4995:5;;:42;;-1:-1:-1;;;4995:42:62;;5011:10;4995:42;;;6491:51:66;5031:4:62;6558:18:66;;;6551:60;5040:6:62;;-1:-1:-1;;;;;4995:5:62;;:15;;6464:18:66;;4995:42:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;4991:108;;;5069:19;;-1:-1:-1;;;5069:19:62;;;;;;;;;;;4991:108;5108:5;;:53;;-1:-1:-1;;;5108:53:62;;5127:10;5108:53;;;7704:51:66;5147:4:62;7771:18:66;;;7764:60;7840:18;;;7833:34;;;-1:-1:-1;;;;;5108:5:62;;;;:18;;7677::66;;5108:53:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5215:10:62;5201:25;;;;:13;:25;;;;;5235:6;;5227:4;5201:31;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;5201:31:62;;;:40;;;;5269:10;5251:29;;:17;:29;;;;;5289:15;;5281:4;5251:35;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:53;;;;5331:10;-1:-1:-1;;;;;5320:28:62;;5343:4;5320:28;;;;;;:::i;:::-;;;;;;;;4547:808;4502:853;:::o;3155:101:19:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;6988:175:62:-;7053:7;;7079:4;:31;;;;;;;;:::i;:::-;;:77;;7136:20;;7079:77;;;-1:-1:-1;;7113:20:62;;;6988:175::o;1529:307:65:-;2334:13:19;:11;:13::i;:::-;1614:9:65::1;1609:221;1633:8;:15;1629:1;:19;1609:221;;;1674:13;:26:::0;1688:8:::1;1697:1;1688:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;1674:26:65::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;1674:26:65;;::::1;;1669:151;;1749:4;1720:13;:26:::0;1734:8:::1;1743:1;1734:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;1720:26:65::1;-1:-1:-1::0;;;;;1720:26:65::1;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1793:8;1802:1;1793:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;1776:29:65::1;;;;;;;;;;;1669:151;1650:3;;1609:221;;1959:210:::0;2334:13:19;:11;:13::i;:::-;-1:-1:-1;;;;;2036:22:65;::::1;:13;:22:::0;;;::::1;::::0;;;;;;;::::1;;2032:131;;;-1:-1:-1::0;;;;;2074:22:65;::::1;2099:5;2074:22:::0;;;::::1;::::0;;;;;;;:30;;-1:-1:-1;;2074:30:65::1;::::0;;2123:29;::::1;::::0;2099:5;2123:29:::1;2032:131;1959:210:::0;:::o;3726:419:62:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;3921:26:62::1;3936:10;3921:14;:26::i;:::-;3957:20;:44:::0;;;4011:20:::1;:44:::0;;;4065:19:::1;:42:::0;;;4117:5:::1;:21:::0;;-1:-1:-1;;;;;;4117:21:62::1;-1:-1:-1::0;;;;;4117:21:62;::::1;;::::0;;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;8163:50:66;;5142:14:20;;8151:2:66;8136:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;3726:419:62;;;;:::o;6670:219::-;2334:13:19;:11;:13::i;:::-;6784:20:62::1;:44:::0;;;;6838:20:::1;:44:::0;6670:219::o;3405:215:19:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:19;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:19;;3562:1:::1;3534:31;::::0;::::1;3963:51:66::0;3936:18;;3534:31:19::1;3817:203:66::0;3485:91:19::1;3585:28;3604:8;3585:18;:28::i;4594:316:21:-:0;4674:4;-1:-1:-1;;;;;4683:6:21;4666:23;;;:124;;;4784:6;-1:-1:-1;;;;;4748:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:28;-1:-1:-1;;;;;1519:53:28;;1441:138;4748:32:21;-1:-1:-1;;;;;4748:42:21;;;4666:124;4649:255;;;4864:29;;-1:-1:-1;;;4864:29:21;;;;;;;;;;;3561:84:62;2334:13:19;:11;:13::i;6052:538:21:-;6169:17;-1:-1:-1;;;;;6151:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:21;;;;;;;;-1:-1:-1;;6151:52:21;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:21;;-1:-1:-1;;;;;3981:32:66;;6513:60:21;;;3963:51:66;3936:18;;6513:60:21;3817:203:66;6147:437:21;-1:-1:-1;;;;;;;;;;;6245:40:21;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:21;;;;;160:25:66;;;133:18;;6312:34:21;14:177:66;6241:120:21;6374:54;6404:17;6423:4;6374:29;:54::i;:::-;6204:235;6052:538;;:::o;5027:213::-;5101:4;-1:-1:-1;;;;;5110:6:21;5093:23;;5089:145;;5194:29;;-1:-1:-1;;;5194:29:21;;;;;;;;;;;2658:162:19;958:10:22;2717:7:19;1313:22;2570:8;-1:-1:-1;;;;;2570:8:19;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:19;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:19;;958:10:22;2763:40:19;;;3963:51:66;3936:18;;2763:40:19;3817:203:66;3774:248:19;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:19;;-1:-1:-1;;;;;3941:19:19;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;1847:127::-;6931:20:20;:18;:20::i;:::-;1929:38:19::1;1954:12;1929:24;:38::i;2264:344:28:-:0;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:28;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;1980:235:19;6931:20:20;:18;:20::i;1671:281:28:-;1748:17;-1:-1:-1;;;;;1748:29:28;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:28;;-1:-1:-1;;;;;3981:32:66;;1805:47:28;;;3963:51:66;3936:18;;1805:47:28;3817:203:66;1744:119:28;-1:-1:-1;;;;;;;;;;;1872:73:28;;-1:-1:-1;;;;;;1872:73:28;-1:-1:-1;;;;;1872:73:28;;;;;;;;;;1671:281::o;3899:253:38:-;3982:12;4007;4021:23;4048:6;-1:-1:-1;;;;;4048:19:38;4068:4;4048:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4006:67;;;;4090:55;4117:6;4125:7;4134:10;4090:26;:55::i;:::-;4083:62;3899:253;-1:-1:-1;;;;;3899:253:38:o;6113:122:28:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:28;;;;;;;;;;;4420:580:38;4558:12;4591:7;4586:408;;4614:19;4622:10;4614:7;:19::i;:::-;4586:408;;;4838:17;;:22;:49;;;;-1:-1:-1;;;;;;4864:18:38;;;:23;4838:49;4834:119;;;4914:24;;-1:-1:-1;;;4914:24:38;;-1:-1:-1;;;;;3981:32:66;;4914:24:38;;;3963:51:66;3936:18;;4914:24:38;3817:203:66;4834:119:38;-1:-1:-1;4973:10:38;4586:408;4420:580;;;;;:::o;5540:487::-;5671:17;;:21;5667:354;;5868:10;5862:17;5924:15;5911:10;5907:2;5903:19;5896:44;5667:354;5991:19;;-1:-1:-1;;;5991:19:38;;;;;;;;;;;196:154:66;275:20;;324:1;314:12;;304:40;;340:1;337;330:12;304:40;196:154;;;:::o;355:216::-;433:6;486:2;474:9;465:7;461:23;457:32;454:52;;;502:1;499;492:12;454:52;525:40;555:9;525:40;:::i;576:173::-;644:20;;-1:-1:-1;;;;;693:31:66;;683:42;;673:70;;739:1;736;729:12;754:290;841:6;849;902:2;890:9;881:7;877:23;873:32;870:52;;;918:1;915;908:12;870:52;941:29;960:9;941:29;:::i;:::-;931:39;;989:49;1034:2;1023:9;1019:18;989:49;:::i;:::-;979:59;;754:290;;;;;:::o;1049:186::-;1108:6;1161:2;1149:9;1140:7;1136:23;1132:32;1129:52;;;1177:1;1174;1167:12;1129:52;1200:29;1219:9;1200:29;:::i;1432:127::-;1493:10;1488:3;1484:20;1481:1;1474:31;1524:4;1521:1;1514:15;1548:4;1545:1;1538:15;1564:275;1635:2;1629:9;1700:2;1681:13;;-1:-1:-1;;1677:27:66;1665:40;;1735:18;1720:34;;1756:22;;;1717:62;1714:88;;;1782:18;;:::i;:::-;1818:2;1811:22;1564:275;;-1:-1:-1;1564:275:66:o;1844:839::-;1921:6;1929;1982:2;1970:9;1961:7;1957:23;1953:32;1950:52;;;1998:1;1995;1988:12;1950:52;2021:29;2040:9;2021:29;:::i;:::-;2011:39;;2101:2;2090:9;2086:18;2073:32;2128:18;2120:6;2117:30;2114:50;;;2160:1;2157;2150:12;2114:50;2183:22;;2236:4;2228:13;;2224:27;-1:-1:-1;2214:55:66;;2265:1;2262;2255:12;2214:55;2305:2;2292:16;2331:18;2323:6;2320:30;2317:56;;;2353:18;;:::i;:::-;2395:57;2442:2;2419:17;;-1:-1:-1;;2415:31:66;2448:2;2411:40;2395:57;:::i;:::-;2475:6;2468:5;2461:21;2523:7;2518:2;2509:6;2505:2;2501:15;2497:24;2494:37;2491:57;;;2544:1;2541;2534:12;2491:57;2599:6;2594:2;2590;2586:11;2581:2;2574:5;2570:14;2557:49;2651:1;2646:2;2637:6;2630:5;2626:18;2622:27;2615:38;2672:5;2662:15;;;;;1844:839;;;;;:::o;2870:942::-;2954:6;3007:2;2995:9;2986:7;2982:23;2978:32;2975:52;;;3023:1;3020;3013:12;2975:52;3063:9;3050:23;3096:18;3088:6;3085:30;3082:50;;;3128:1;3125;3118:12;3082:50;3151:22;;3204:4;3196:13;;3192:27;-1:-1:-1;3182:55:66;;3233:1;3230;3223:12;3182:55;3273:2;3260:16;3299:18;3291:6;3288:30;3285:56;;;3321:18;;:::i;:::-;3367:6;3364:1;3360:14;3394:28;3418:2;3414;3410:11;3394:28;:::i;:::-;3456:19;;;3500:2;3530:11;;;3526:20;;;3491:12;;;;3558:19;;;3555:39;;;3590:1;3587;3580:12;3555:39;3622:2;3618;3614:11;3603:22;;3634:148;3650:6;3645:3;3642:15;3634:148;;;3716:23;3735:3;3716:23;:::i;:::-;3704:36;;3769:2;3667:12;;;;3760;;;;3634:148;;;3801:5;2870:942;-1:-1:-1;;;;;;;2870:942:66:o;4025:418::-;4174:2;4163:9;4156:21;4137:4;4206:6;4200:13;4249:6;4244:2;4233:9;4229:18;4222:34;4308:6;4303:2;4295:6;4291:15;4286:2;4275:9;4271:18;4265:50;4364:1;4359:2;4350:6;4339:9;4335:22;4331:31;4324:42;4434:2;4427;4423:7;4418:2;4410:6;4406:15;4402:29;4391:9;4387:45;4383:54;4375:62;;;4025:418;;;;:::o;4448:541::-;4534:6;4542;4550;4558;4611:3;4599:9;4590:7;4586:23;4582:33;4579:53;;;4628:1;4625;4618:12;4579:53;4673:23;;;-1:-1:-1;4793:2:66;4778:18;;4765:32;;-1:-1:-1;4842:38:66;4876:2;4861:18;;4842:38;:::i;:::-;4448:541;;;;-1:-1:-1;4832:48:66;;4953:2;4938:18;4925:32;;-1:-1:-1;;4448:541:66:o;4994:346::-;5062:6;5070;5123:2;5111:9;5102:7;5098:23;5094:32;5091:52;;;5139:1;5136;5129:12;5091:52;-1:-1:-1;;5184:23:66;;;5304:2;5289:18;;;5276:32;;-1:-1:-1;4994:346:66:o;5568:127::-;5629:10;5624:3;5620:20;5617:1;5610:31;5660:4;5657:1;5650:15;5684:4;5681:1;5674:15;5700:127;5761:10;5756:3;5752:20;5749:1;5742:31;5792:4;5789:1;5782:15;5816:4;5813:1;5806:15;5832:128;5899:9;;;5920:11;;;5917:37;;;5934:18;;:::i;5965:347::-;6116:2;6101:18;;6149:1;6138:13;;6128:144;;6194:10;6189:3;6185:20;6182:1;6175:31;6229:4;6226:1;6219:15;6257:4;6254:1;6247:15;6128:144;6281:25;;;5965:347;:::o;6622:184::-;6692:6;6745:2;6733:9;6724:7;6720:23;6716:32;6713:52;;;6761:1;6758;6751:12;6713:52;-1:-1:-1;6784:16:66;;6622:184;-1:-1:-1;6622:184:66:o;6811:125::-;6876:9;;;6897:10;;;6894:36;;;6910:18;;:::i;7220:277::-;7287:6;7340:2;7328:9;7319:7;7315:23;7311:32;7308:52;;;7356:1;7353;7346:12;7308:52;7388:9;7382:16;7441:5;7434:13;7427:21;7420:5;7417:32;7407:60;;7463:1;7460;7453:12;7878:127;7939:10;7934:3;7930:20;7927:1;7920:31;7970:4;7967:1;7960:15;7994:4;7991:1;7984:15;8413:301;8542:3;8580:6;8574:13;8626:6;8619:4;8611:6;8607:17;8602:3;8596:37;8688:1;8652:16;;8677:13;;;-1:-1:-1;8652:16:66;8413:301;-1:-1:-1;8413:301:66:o","linkReferences":{},"immutableReferences":{"36949":[{"start":3457,"length":32},{"start":3498,"length":32},{"start":3822,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addToWhitelist(address[])":"7f649783","generatorStakeAmount()":"ee12a7a0","getStakeAmount(uint8)":"771007a9","initialize(uint256,uint256,address,uint256)":"cf9640b4","isRegistered(address,uint8)":"5f5b248b","isWhitelisted(address)":"3af32abf","minRegistrationTime()":"1a00d4ea","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","register(uint8)":"61d689fa","registrationTimes(address,uint8)":"2d118d5c","registrations(address,uint8)":"81e1c6ca","removeFromWhitelist(address)":"8ab1d681","renounceOwnership()":"715018a6","setStakeAmounts(uint256,uint256)":"f149444b","token()":"fc0c546a","transferOwnership(address)":"f2fde38b","unregister(uint8)":"23d2f5f6","upgradeToAndCall(address,bytes)":"4f1ef286","validatorStakeAmount()":"eea5353d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"AlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"NotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"NotWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minTimeToWait\",\"type\":\"uint256\"}],\"name\":\"TooEarlyToUnregister\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"Registered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"Unregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"addToWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"generatorStakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"getStakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_generatorStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validatorStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minRegistrationTime\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minRegistrationTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"enum LLMOracleKind\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"registrationTimes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"registeredTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"enum LLMOracleKind\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"registrations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_generatorStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validatorStakeAmount\",\"type\":\"uint256\"}],\"name\":\"setStakeAmounts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"unregister\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorStakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"There may be several types of oracle kinds, and each require their own stake.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addToWhitelist(address[])\":{\"params\":{\"accounts\":\"The list of addresses to be added to the whitelist.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"details\":\"[See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--).\"},\"initialize(uint256,uint256,address,uint256)\":{\"details\":\"Sets the owner to be the deployer, sets initial stake amount.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"register(uint8)\":{\"details\":\"Reverts if the user is already registered or has insufficient funds.\",\"params\":{\"kind\":\"The kind of Oracle to unregister.\"}},\"removeFromWhitelist(address)\":{\"params\":{\"account\":\"The address to be removed from the whitelist.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setStakeAmounts(uint256,uint256)\":{\"details\":\"Only allowed by the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unregister(uint8)\":{\"details\":\"Reverts if the user is not registered.\",\"params\":{\"kind\":\"The kind of Oracle to unregister.\"},\"returns\":{\"amount\":\"Amount of stake approved back.\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"minRegistrationTime\":{\"details\":\"This is to prevent spamming the registry mechanism.If the oracle wants to unregister, they have to wait at least this time before doing so.\"}},\"title\":\"LLM Oracle Registry\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyRegistered(address)\":[{\"notice\":\"The user is already registered.\"}],\"InsufficientFunds()\":[{\"notice\":\"Insufficient stake amount during registration.\"}],\"NotRegistered(address)\":[{\"notice\":\"The user is not registered.\"}],\"NotWhitelisted(address)\":[{\"notice\":\"Error to be thrown when a non-whitelisted address tries to access a function.\"}],\"TooEarlyToUnregister(uint256)\":[{\"notice\":\"Minimum waiting time has not passed for unregistering.\"}]},\"events\":{\"AddedToWhitelist(address)\":{\"notice\":\"Added address to whitelist\"},\"Registered(address,uint8)\":{\"notice\":\"The Oracle response to an LLM generation request.\"},\"RemovedFromWhitelist(address)\":{\"notice\":\"Removed address from whitelist\"},\"Unregistered(address,uint8)\":{\"notice\":\"The Oracle response to an LLM generation request.\"}},\"kind\":\"user\",\"methods\":{\"addToWhitelist(address[])\":{\"notice\":\"Adding multiple validators to whitelist.\"},\"constructor\":{\"notice\":\"Locks the contract, preventing any future re-initialization.\"},\"generatorStakeAmount()\":{\"notice\":\"Stake amount to be registered as an Oracle that can serve generation requests.\"},\"getStakeAmount(uint8)\":{\"notice\":\"Returns the stake amount required to register as an Oracle w.r.t given kind.\"},\"isRegistered(address,uint8)\":{\"notice\":\"Check if an Oracle is registered.\"},\"isWhitelisted(address)\":{\"notice\":\"Indicates whether an address is whitelisted.\"},\"minRegistrationTime()\":{\"notice\":\"Minimum registration time for oracles.\"},\"register(uint8)\":{\"notice\":\"Register an Oracle.\"},\"registrationTimes(address,uint8)\":{\"notice\":\"Registered times per oracle.\"},\"registrations(address,uint8)\":{\"notice\":\"Registrations per address & kind. If amount is 0, it is not registered.\"},\"removeFromWhitelist(address)\":{\"notice\":\"Remove validator from whitelist\"},\"setStakeAmounts(uint256,uint256)\":{\"notice\":\"Set the stake amount required to register as an Oracle.\"},\"token()\":{\"notice\":\"Token used for staking.\"},\"unregister(uint8)\":{\"notice\":\"Remove registration of an Oracle.\"},\"validatorStakeAmount()\":{\"notice\":\"Stake amount to be registered as an Oracle that can serve validation requests.\"}},\"notice\":\"Holds the addresses that are eligible to respond to LLM requests.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LLMOracleRegistry.sol\":\"LLMOracleRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xaab065cbe0f562d1d7185da1e0def4e4ee026ed76da24895db0e02f68666e56e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e2161611bd6810eea79168fd56ffc55ae54ef9f7732bd751565f6324b19fbb5\",\"dweb:/ipfs/QmWHmc4rx1w96oCftjJvcUFgqs4Yo93FNGgQhc7yZBVHMa\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xc0ca0cf9ebb745f31e90584b1309c871a54d1c20c1bb09163ff5cc9083c1c929\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d45a6bcfbb149dad07bba6352fc8f0d90a09858c1dfba3044c4b12ed7e14f67\",\"dweb:/ipfs/QmPiyFySkJjcNfy4af42qQGcfi8DSNZXjSD1odjWRaHkPn\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x02caa0e5f7bade9a0d8ad6058467d641cb67697cd4678c7b1c170686bafe9128\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33b42a434f5d5fdc5071be05238059b9d8938bdab510071a5c300a975abc405a\",\"dweb:/ipfs/QmaThmoD3JMdHGhn4GUJbEGnKcojUG8PWMFoC7DFcQoeCw\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xd7c9f6f5f3386c29eee9321197fd83ac735c9c3c21431065f0e8e10fe3d0739c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://096db22b340a43c39b39383ca644dbe0a50c7984fe9cec6a0cf4c2ac8b985dd7\",\"dweb:/ipfs/QmNRjJL4pHyPd2eEbtdxhCTMK1xfSScGZ2RvEggnVdfrDN\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x68ae173e8ada4b8effc37f888cb937037aba3d2e45ce4becbc0c0c861e62da81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e295d0647e564d93e3b17e151c3b2be3609fac380a3f046d8defc268ca7cf9fb\",\"dweb:/ipfs/QmZVaD9YVT3Ss7s1vYSAW23xVLxh1LKSSVLwA8N7imeBRW\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"src/LLMOracleRegistry.sol\":{\"keccak256\":\"0xa99ae44652d1bf56511081741b6a5a0217668fc1eddfecc102fed914fecb4942\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://081d30ffb7d37e40dd85149a5751cd1305deebff21e2592606f2d9ca3c064eda\",\"dweb:/ipfs/QmcwNXEVtyTezGfrVx8Xe6pbMvzXaqyd7Hd7kRcsA2SN5W\"]},\"src/Whitelist.sol\":{\"keccak256\":\"0x10e850f4bd39e7ebffa6ee33f24026082f37cf0b78f2e86ff678266d51f046df\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5e139ccd80e55e2b5fa9490cc591d5f13364f712a68523ea93983406ad6c017e\",\"dweb:/ipfs/QmbzK1uXzyHBwr3i4EKMfEtz2qTbiiNWYkiCxWLtUiayfd\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"AlreadyRegistered"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InsufficientFunds"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"NotRegistered"},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"type":"error","name":"NotWhitelisted"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint256","name":"minTimeToWait","type":"uint256"}],"type":"error","name":"TooEarlyToUnregister"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true}],"type":"event","name":"AddedToWhitelist","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":true},{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8","indexed":false}],"type":"event","name":"Registered","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true}],"type":"event","name":"RemovedFromWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":true},{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8","indexed":false}],"type":"event","name":"Unregistered","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"addToWhitelist"},{"inputs":[],"stateMutability":"view","type":"function","name":"generatorStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8"}],"stateMutability":"view","type":"function","name":"getStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_generatorStakeAmount","type":"uint256"},{"internalType":"uint256","name":"_validatorStakeAmount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_minRegistrationTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8"}],"stateMutability":"view","type":"function","name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minRegistrationTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"register"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"},{"internalType":"enum LLMOracleKind","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"registrationTimes","outputs":[{"internalType":"uint256","name":"registeredTime","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"oracle","type":"address"},{"internalType":"enum LLMOracleKind","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"registrations","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeFromWhitelist"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"_generatorStakeAmount","type":"uint256"},{"internalType":"uint256","name":"_validatorStakeAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setStakeAmounts"},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"unregister","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"addToWhitelist(address[])":{"params":{"accounts":"The list of addresses to be added to the whitelist."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor","details":"[See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--)."},"initialize(uint256,uint256,address,uint256)":{"details":"Sets the owner to be the deployer, sets initial stake amount."},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"register(uint8)":{"details":"Reverts if the user is already registered or has insufficient funds.","params":{"kind":"The kind of Oracle to unregister."}},"removeFromWhitelist(address)":{"params":{"account":"The address to be removed from the whitelist."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setStakeAmounts(uint256,uint256)":{"details":"Only allowed by the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unregister(uint8)":{"details":"Reverts if the user is not registered.","params":{"kind":"The kind of Oracle to unregister."},"returns":{"amount":"Amount of stake approved back."}},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"addToWhitelist(address[])":{"notice":"Adding multiple validators to whitelist."},"constructor":{"notice":"Locks the contract, preventing any future re-initialization."},"generatorStakeAmount()":{"notice":"Stake amount to be registered as an Oracle that can serve generation requests."},"getStakeAmount(uint8)":{"notice":"Returns the stake amount required to register as an Oracle w.r.t given kind."},"isRegistered(address,uint8)":{"notice":"Check if an Oracle is registered."},"isWhitelisted(address)":{"notice":"Indicates whether an address is whitelisted."},"minRegistrationTime()":{"notice":"Minimum registration time for oracles."},"register(uint8)":{"notice":"Register an Oracle."},"registrationTimes(address,uint8)":{"notice":"Registered times per oracle."},"registrations(address,uint8)":{"notice":"Registrations per address & kind. If amount is 0, it is not registered."},"removeFromWhitelist(address)":{"notice":"Remove validator from whitelist"},"setStakeAmounts(uint256,uint256)":{"notice":"Set the stake amount required to register as an Oracle."},"token()":{"notice":"Token used for staking."},"unregister(uint8)":{"notice":"Remove registration of an Oracle."},"validatorStakeAmount()":{"notice":"Stake amount to be registered as an Oracle that can serve validation requests."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","@openzeppelin/foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LLMOracleRegistry.sol":"LLMOracleRegistry"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xaab065cbe0f562d1d7185da1e0def4e4ee026ed76da24895db0e02f68666e56e","urls":["bzz-raw://7e2161611bd6810eea79168fd56ffc55ae54ef9f7732bd751565f6324b19fbb5","dweb:/ipfs/QmWHmc4rx1w96oCftjJvcUFgqs4Yo93FNGgQhc7yZBVHMa"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xc0ca0cf9ebb745f31e90584b1309c871a54d1c20c1bb09163ff5cc9083c1c929","urls":["bzz-raw://7d45a6bcfbb149dad07bba6352fc8f0d90a09858c1dfba3044c4b12ed7e14f67","dweb:/ipfs/QmPiyFySkJjcNfy4af42qQGcfi8DSNZXjSD1odjWRaHkPn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x02caa0e5f7bade9a0d8ad6058467d641cb67697cd4678c7b1c170686bafe9128","urls":["bzz-raw://33b42a434f5d5fdc5071be05238059b9d8938bdab510071a5c300a975abc405a","dweb:/ipfs/QmaThmoD3JMdHGhn4GUJbEGnKcojUG8PWMFoC7DFcQoeCw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xd7c9f6f5f3386c29eee9321197fd83ac735c9c3c21431065f0e8e10fe3d0739c","urls":["bzz-raw://096db22b340a43c39b39383ca644dbe0a50c7984fe9cec6a0cf4c2ac8b985dd7","dweb:/ipfs/QmNRjJL4pHyPd2eEbtdxhCTMK1xfSScGZ2RvEggnVdfrDN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x68ae173e8ada4b8effc37f888cb937037aba3d2e45ce4becbc0c0c861e62da81","urls":["bzz-raw://e295d0647e564d93e3b17e151c3b2be3609fac380a3f046d8defc268ca7cf9fb","dweb:/ipfs/QmZVaD9YVT3Ss7s1vYSAW23xVLxh1LKSSVLwA8N7imeBRW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"src/LLMOracleRegistry.sol":{"keccak256":"0xa99ae44652d1bf56511081741b6a5a0217668fc1eddfecc102fed914fecb4942","urls":["bzz-raw://081d30ffb7d37e40dd85149a5751cd1305deebff21e2592606f2d9ca3c064eda","dweb:/ipfs/QmcwNXEVtyTezGfrVx8Xe6pbMvzXaqyd7Hd7kRcsA2SN5W"],"license":"Apache-2.0"},"src/Whitelist.sol":{"keccak256":"0x10e850f4bd39e7ebffa6ee33f24026082f37cf0b78f2e86ff678266d51f046df","urls":["bzz-raw://5e139ccd80e55e2b5fa9490cc591d5f13364f712a68523ea93983406ad6c017e","dweb:/ipfs/QmbzK1uXzyHBwr3i4EKMfEtz2qTbiiNWYkiCxWLtUiayfd"],"license":"Apache-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":53143,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"isWhitelisted","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"},{"astId":52470,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"generatorStakeAmount","offset":0,"slot":"1","type":"t_uint256"},{"astId":52473,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"validatorStakeAmount","offset":0,"slot":"2","type":"t_uint256"},{"astId":52476,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"minRegistrationTime","offset":0,"slot":"3","type":"t_uint256"},{"astId":52484,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"registrations","offset":0,"slot":"4","type":"t_mapping(t_address,t_mapping(t_enum(LLMOracleKind)52428,t_uint256))"},{"astId":52492,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"registrationTimes","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_enum(LLMOracleKind)52428,t_uint256))"},{"astId":52496,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"token","offset":0,"slot":"6","type":"t_contract(ERC20)38696"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(ERC20)38696":{"encoding":"inplace","label":"contract ERC20","numberOfBytes":"20"},"t_enum(LLMOracleKind)52428":{"encoding":"inplace","label":"enum LLMOracleKind","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_enum(LLMOracleKind)52428,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(enum LLMOracleKind => uint256))","numberOfBytes":"32","value":"t_mapping(t_enum(LLMOracleKind)52428,t_uint256)"},"t_mapping(t_enum(LLMOracleKind)52428,t_uint256)":{"encoding":"mapping","key":"t_enum(LLMOracleKind)52428","label":"mapping(enum LLMOracleKind => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/LLMOracleRegistry.sol","id":52822,"exportedSymbols":{"ERC20":[38696],"LLMOracleKind":[52428],"LLMOracleRegistry":[52821],"UUPSUpgradeable":[37111],"Whitelist":[53213]},"nodeType":"SourceUnit","src":"39:7339:62","nodes":[{"id":52418,"nodeType":"PragmaDirective","src":"39:24:62","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":52420,"nodeType":"ImportDirective","src":"65:68:62","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","nameLocation":"-1:-1:-1","scope":52822,"sourceUnit":38697,"symbolAliases":[{"foreign":{"id":52419,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38696,"src":"73:5:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52422,"nodeType":"ImportDirective","src":"134:100:62","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":52822,"sourceUnit":37112,"symbolAliases":[{"foreign":{"id":52421,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37111,"src":"142:15:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52424,"nodeType":"ImportDirective","src":"235:42:62","nodes":[],"absolutePath":"src/Whitelist.sol","file":"./Whitelist.sol","nameLocation":"-1:-1:-1","scope":52822,"sourceUnit":53214,"symbolAliases":[{"foreign":{"id":52423,"name":"Whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53213,"src":"243:9:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52428,"nodeType":"EnumDefinition","src":"311:51:62","nodes":[],"canonicalName":"LLMOracleKind","documentation":{"id":52425,"nodeType":"StructuredDocumentation","src":"279:32:62","text":"@notice The type of Oracle."},"members":[{"id":52426,"name":"Generator","nameLocation":"336:9:62","nodeType":"EnumValue","src":"336:9:62"},{"id":52427,"name":"Validator","nameLocation":"351:9:62","nodeType":"EnumValue","src":"351:9:62"}],"name":"LLMOracleKind","nameLocation":"316:13:62"},{"id":52821,"nodeType":"ContractDefinition","src":"560:6817:62","nodes":[{"id":52441,"nodeType":"EventDefinition","src":"868:54:62","nodes":[],"anonymous":false,"documentation":{"id":52434,"nodeType":"StructuredDocumentation","src":"802:61:62","text":"@notice The Oracle response to an LLM generation request."},"eventSelector":"89b4e995568c900aa52376cbed225dc1a013c9a43cb58186d69676ff593d7c4e","name":"Registered","nameLocation":"874:10:62","parameters":{"id":52440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52436,"indexed":true,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52441,"src":"885:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52435,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52439,"indexed":false,"mutability":"mutable","name":"kind","nameLocation":"916:4:62","nodeType":"VariableDeclaration","scope":52441,"src":"902:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52438,"nodeType":"UserDefinedTypeName","pathNode":{"id":52437,"name":"LLMOracleKind","nameLocations":["902:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"902:13:62"},"referencedDeclaration":52428,"src":"902:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"884:37:62"}},{"id":52449,"nodeType":"EventDefinition","src":"994:56:62","nodes":[],"anonymous":false,"documentation":{"id":52442,"nodeType":"StructuredDocumentation","src":"928:61:62","text":"@notice The Oracle response to an LLM generation request."},"eventSelector":"eebfdaadda46c435881bbe8bac1fc3974f3323b1c809c7aabd37ae7b83ca4442","name":"Unregistered","nameLocation":"1000:12:62","parameters":{"id":52448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52444,"indexed":true,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52449,"src":"1013:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52443,"name":"address","nodeType":"ElementaryTypeName","src":"1013:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52447,"indexed":false,"mutability":"mutable","name":"kind","nameLocation":"1044:4:62","nodeType":"VariableDeclaration","scope":52449,"src":"1030:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52446,"nodeType":"UserDefinedTypeName","pathNode":{"id":52445,"name":"LLMOracleKind","nameLocations":["1030:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"1030:13:62"},"referencedDeclaration":52428,"src":"1030:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"1012:37:62"}},{"id":52454,"nodeType":"ErrorDefinition","src":"1279:29:62","nodes":[],"documentation":{"id":52450,"nodeType":"StructuredDocumentation","src":"1235:39:62","text":"@notice The user is not registered."},"errorSelector":"bfc6c337","name":"NotRegistered","nameLocation":"1285:13:62","parameters":{"id":52453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52454,"src":"1299:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52451,"name":"address","nodeType":"ElementaryTypeName","src":"1299:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1298:9:62"}},{"id":52459,"nodeType":"ErrorDefinition","src":"1362:33:62","nodes":[],"documentation":{"id":52455,"nodeType":"StructuredDocumentation","src":"1314:43:62","text":"@notice The user is already registered."},"errorSelector":"45ed80e9","name":"AlreadyRegistered","nameLocation":"1368:17:62","parameters":{"id":52458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52459,"src":"1386:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52456,"name":"address","nodeType":"ElementaryTypeName","src":"1386:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1385:9:62"}},{"id":52462,"nodeType":"ErrorDefinition","src":"1464:26:62","nodes":[],"documentation":{"id":52460,"nodeType":"StructuredDocumentation","src":"1401:58:62","text":"@notice Insufficient stake amount during registration."},"errorSelector":"356680b7","name":"InsufficientFunds","nameLocation":"1470:17:62","parameters":{"id":52461,"nodeType":"ParameterList","parameters":[],"src":"1487:2:62"}},{"id":52467,"nodeType":"ErrorDefinition","src":"1567:50:62","nodes":[],"documentation":{"id":52463,"nodeType":"StructuredDocumentation","src":"1496:66:62","text":"@notice Minimum waiting time has not passed for unregistering."},"errorSelector":"fbedc413","name":"TooEarlyToUnregister","nameLocation":"1573:20:62","parameters":{"id":52466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52465,"mutability":"mutable","name":"minTimeToWait","nameLocation":"1602:13:62","nodeType":"VariableDeclaration","scope":52467,"src":"1594:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52464,"name":"uint256","nodeType":"ElementaryTypeName","src":"1594:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1593:23:62"}},{"id":52470,"nodeType":"VariableDeclaration","src":"1898:35:62","nodes":[],"constant":false,"documentation":{"id":52468,"nodeType":"StructuredDocumentation","src":"1803:90:62","text":"@notice Stake amount to be registered as an Oracle that can serve generation requests."},"functionSelector":"ee12a7a0","mutability":"mutable","name":"generatorStakeAmount","nameLocation":"1913:20:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52469,"name":"uint256","nodeType":"ElementaryTypeName","src":"1898:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":52473,"nodeType":"VariableDeclaration","src":"2035:35:62","nodes":[],"constant":false,"documentation":{"id":52471,"nodeType":"StructuredDocumentation","src":"1940:90:62","text":"@notice Stake amount to be registered as an Oracle that can serve validation requests."},"functionSelector":"eea5353d","mutability":"mutable","name":"validatorStakeAmount","nameLocation":"2050:20:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52472,"name":"uint256","nodeType":"ElementaryTypeName","src":"2035:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":52476,"nodeType":"VariableDeclaration","src":"2299:34:62","nodes":[],"constant":false,"documentation":{"id":52474,"nodeType":"StructuredDocumentation","src":"2077:217:62","text":"@notice Minimum registration time for oracles.\n @dev This is to prevent spamming the registry mechanism.\n @dev If the oracle wants to unregister, they have to wait at least this time before doing so."},"functionSelector":"1a00d4ea","mutability":"mutable","name":"minRegistrationTime","nameLocation":"2314:19:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52475,"name":"uint256","nodeType":"ElementaryTypeName","src":"2299:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":52484,"nodeType":"VariableDeclaration","src":"2428:88:62","nodes":[],"constant":false,"documentation":{"id":52477,"nodeType":"StructuredDocumentation","src":"2340:83:62","text":"@notice Registrations per address & kind. If amount is 0, it is not registered."},"functionSelector":"81e1c6ca","mutability":"mutable","name":"registrations","nameLocation":"2503:13:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"},"typeName":{"id":52483,"keyName":"oracle","keyNameLocation":"2444:6:62","keyType":{"id":52478,"name":"address","nodeType":"ElementaryTypeName","src":"2436:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2428:67:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":52482,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":52480,"nodeType":"UserDefinedTypeName","pathNode":{"id":52479,"name":"LLMOracleKind","nameLocations":["2462:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"2462:13:62"},"referencedDeclaration":52428,"src":"2462:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"nodeType":"Mapping","src":"2454:40:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"},"valueName":"amount","valueNameLocation":"2487:6:62","valueType":{"id":52481,"name":"uint256","nodeType":"ElementaryTypeName","src":"2479:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":52492,"nodeType":"VariableDeclaration","src":"2568:100:62","nodes":[],"constant":false,"documentation":{"id":52485,"nodeType":"StructuredDocumentation","src":"2523:40:62","text":"@notice Registered times per oracle."},"functionSelector":"2d118d5c","mutability":"mutable","name":"registrationTimes","nameLocation":"2651:17:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"},"typeName":{"id":52491,"keyName":"oracle","keyNameLocation":"2584:6:62","keyType":{"id":52486,"name":"address","nodeType":"ElementaryTypeName","src":"2576:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2568:75:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":52490,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":52488,"nodeType":"UserDefinedTypeName","pathNode":{"id":52487,"name":"LLMOracleKind","nameLocations":["2602:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"2602:13:62"},"referencedDeclaration":52428,"src":"2602:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"nodeType":"Mapping","src":"2594:48:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"},"valueName":"registeredTime","valueNameLocation":"2627:14:62","valueType":{"id":52489,"name":"uint256","nodeType":"ElementaryTypeName","src":"2619:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":52496,"nodeType":"VariableDeclaration","src":"2715:18:62","nodes":[],"constant":false,"documentation":{"id":52493,"nodeType":"StructuredDocumentation","src":"2675:35:62","text":"@notice Token used for staking."},"functionSelector":"fc0c546a","mutability":"mutable","name":"token","nameLocation":"2728:5:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"},"typeName":{"id":52495,"nodeType":"UserDefinedTypeName","pathNode":{"id":52494,"name":"ERC20","nameLocations":["2715:5:62"],"nodeType":"IdentifierPath","referencedDeclaration":38696,"src":"2715:5:62"},"referencedDeclaration":38696,"src":"2715:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"visibility":"public"},{"id":52504,"nodeType":"FunctionDefinition","src":"3170:53:62","nodes":[],"body":{"id":52503,"nodeType":"Block","src":"3184:39:62","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":52500,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36897,"src":"3194:20:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":52501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3194:22:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52502,"nodeType":"ExpressionStatement","src":"3194:22:62"}]},"documentation":{"id":52497,"nodeType":"StructuredDocumentation","src":"2923:242:62","text":"@notice Locks the contract, preventing any future re-initialization.\n @dev [See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--).\n @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":52498,"nodeType":"ParameterList","parameters":[],"src":"3181:2:62"},"returnParameters":{"id":52499,"nodeType":"ParameterList","parameters":[],"src":"3184:0:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52514,"nodeType":"FunctionDefinition","src":"3561:84:62","nodes":[],"body":{"id":52513,"nodeType":"Block","src":"3643:2:62","nodes":[],"statements":[]},"baseFunctions":[37065],"documentation":{"id":52505,"nodeType":"StructuredDocumentation","src":"3411:145:62","text":"@notice Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n @dev Called by and upgradeToAndCall."},"implemented":true,"kind":"function","modifiers":[{"id":52511,"kind":"modifierInvocation","modifierName":{"id":52510,"name":"onlyOwner","nameLocations":["3633:9:62"],"nodeType":"IdentifierPath","referencedDeclaration":36570,"src":"3633:9:62"},"nodeType":"ModifierInvocation","src":"3633:9:62"}],"name":"_authorizeUpgrade","nameLocation":"3570:17:62","overrides":{"id":52509,"nodeType":"OverrideSpecifier","overrides":[],"src":"3624:8:62"},"parameters":{"id":52508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52507,"mutability":"mutable","name":"newImplementation","nameLocation":"3596:17:62","nodeType":"VariableDeclaration","scope":52514,"src":"3588:25:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52506,"name":"address","nodeType":"ElementaryTypeName","src":"3588:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3587:27:62"},"returnParameters":{"id":52512,"nodeType":"ParameterList","parameters":[],"src":"3643:0:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":52552,"nodeType":"FunctionDefinition","src":"3726:419:62","nodes":[],"body":{"id":52551,"nodeType":"Block","src":"3911:234:62","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":52529,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3936:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3940:6:62","memberName":"sender","nodeType":"MemberAccess","src":"3936:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52528,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36535,"src":"3921:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":52531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3921:26:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52532,"nodeType":"ExpressionStatement","src":"3921:26:62"},{"expression":{"id":52535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52533,"name":"generatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52470,"src":"3957:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52534,"name":"_generatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52517,"src":"3980:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3957:44:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52536,"nodeType":"ExpressionStatement","src":"3957:44:62"},{"expression":{"id":52539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52537,"name":"validatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52473,"src":"4011:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52538,"name":"_validatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52519,"src":"4034:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4011:44:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52540,"nodeType":"ExpressionStatement","src":"4011:44:62"},{"expression":{"id":52543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52541,"name":"minRegistrationTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52476,"src":"4065:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52542,"name":"_minRegistrationTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52523,"src":"4087:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4065:42:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52544,"nodeType":"ExpressionStatement","src":"4065:42:62"},{"expression":{"id":52549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52545,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52496,"src":"4117:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":52547,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52521,"src":"4131:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52546,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38696,"src":"4125:5:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$38696_$","typeString":"type(contract ERC20)"}},"id":52548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4125:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"src":"4117:21:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52550,"nodeType":"ExpressionStatement","src":"4117:21:62"}]},"documentation":{"id":52515,"nodeType":"StructuredDocumentation","src":"3651:70:62","text":"@dev Sets the owner to be the deployer, sets initial stake amount."},"functionSelector":"cf9640b4","implemented":true,"kind":"function","modifiers":[{"id":52526,"kind":"modifierInvocation","modifierName":{"id":52525,"name":"initializer","nameLocations":["3899:11:62"],"nodeType":"IdentifierPath","referencedDeclaration":36783,"src":"3899:11:62"},"nodeType":"ModifierInvocation","src":"3899:11:62"}],"name":"initialize","nameLocation":"3735:10:62","parameters":{"id":52524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52517,"mutability":"mutable","name":"_generatorStakeAmount","nameLocation":"3763:21:62","nodeType":"VariableDeclaration","scope":52552,"src":"3755:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52516,"name":"uint256","nodeType":"ElementaryTypeName","src":"3755:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":52519,"mutability":"mutable","name":"_validatorStakeAmount","nameLocation":"3802:21:62","nodeType":"VariableDeclaration","scope":52552,"src":"3794:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52518,"name":"uint256","nodeType":"ElementaryTypeName","src":"3794:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":52521,"mutability":"mutable","name":"_token","nameLocation":"3841:6:62","nodeType":"VariableDeclaration","scope":52552,"src":"3833:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52520,"name":"address","nodeType":"ElementaryTypeName","src":"3833:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52523,"mutability":"mutable","name":"_minRegistrationTime","nameLocation":"3865:20:62","nodeType":"VariableDeclaration","scope":52552,"src":"3857:28:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52522,"name":"uint256","nodeType":"ElementaryTypeName","src":"3857:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3745:146:62"},"returnParameters":{"id":52527,"nodeType":"ParameterList","parameters":[],"src":"3911:0:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52649,"nodeType":"FunctionDefinition","src":"4502:853:62","nodes":[],"body":{"id":52648,"nodeType":"Block","src":"4547:808:62","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"id":52562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52559,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"4561:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":52560,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"4569:13:62","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LLMOracleKind_$52428_$","typeString":"type(enum LLMOracleKind)"}},"id":52561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4583:9:62","memberName":"Validator","nodeType":"MemberAccess","referencedDeclaration":52427,"src":"4569:23:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"src":"4561:31:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52576,"nodeType":"IfStatement","src":"4557:159:62","trueBody":{"id":52575,"nodeType":"Block","src":"4594:122:62","statements":[{"condition":{"id":52567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4612:26:62","subExpression":{"baseExpression":{"id":52563,"name":"isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53143,"src":"4613:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":52566,"indexExpression":{"expression":{"id":52564,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4627:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4631:6:62","memberName":"sender","nodeType":"MemberAccess","src":"4627:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4613:25:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52574,"nodeType":"IfStatement","src":"4608:98:62","trueBody":{"id":52573,"nodeType":"Block","src":"4640:66:62","statements":[{"errorCall":{"arguments":[{"expression":{"id":52569,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4680:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4684:6:62","memberName":"sender","nodeType":"MemberAccess","src":"4680:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52568,"name":"NotWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53138,"src":"4665:14:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":52571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4665:26:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52572,"nodeType":"RevertStatement","src":"4658:33:62"}]}}]}},{"assignments":[52578],"declarations":[{"constant":false,"id":52578,"mutability":"mutable","name":"amount","nameLocation":"4734:6:62","nodeType":"VariableDeclaration","scope":52648,"src":"4726:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52577,"name":"uint256","nodeType":"ElementaryTypeName","src":"4726:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":52582,"initialValue":{"arguments":[{"id":52580,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"4758:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"id":52579,"name":"getStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52798,"src":"4743:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_enum$_LLMOracleKind_$52428_$returns$_t_uint256_$","typeString":"function (enum LLMOracleKind) view returns (uint256)"}},"id":52581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4743:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4726:37:62"},{"condition":{"arguments":[{"expression":{"id":52584,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4844:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4848:6:62","memberName":"sender","nodeType":"MemberAccess","src":"4844:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52586,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"4856:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"id":52583,"name":"isRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52820,"src":"4831:12:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_LLMOracleKind_$52428_$returns$_t_bool_$","typeString":"function (address,enum LLMOracleKind) view returns (bool)"}},"id":52587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4831:30:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52594,"nodeType":"IfStatement","src":"4827:97:62","trueBody":{"id":52593,"nodeType":"Block","src":"4863:61:62","statements":[{"errorCall":{"arguments":[{"expression":{"id":52589,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4902:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4906:6:62","memberName":"sender","nodeType":"MemberAccess","src":"4902:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52588,"name":"AlreadyRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52459,"src":"4884:17:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":52591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4884:29:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52592,"nodeType":"RevertStatement","src":"4877:36:62"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":52597,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5011:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5015:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5011:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":52601,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5031:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}],"id":52600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5023:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52599,"name":"address","nodeType":"ElementaryTypeName","src":"5023:7:62","typeDescriptions":{}}},"id":52602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5023:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":52595,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52496,"src":"4995:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5001:9:62","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":38323,"src":"4995:15:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":52603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4995:42:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":52604,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52578,"src":"5040:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4995:51:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52610,"nodeType":"IfStatement","src":"4991:108:62","trueBody":{"id":52609,"nodeType":"Block","src":"5048:51:62","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":52606,"name":"InsufficientFunds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52462,"src":"5069:17:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":52607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5069:19:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52608,"nodeType":"RevertStatement","src":"5062:26:62"}]}},{"expression":{"arguments":[{"expression":{"id":52614,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5127:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5131:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5127:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":52618,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5147:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}],"id":52617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5139:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52616,"name":"address","nodeType":"ElementaryTypeName","src":"5139:7:62","typeDescriptions":{}}},"id":52619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5139:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52620,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52578,"src":"5154:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52611,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52496,"src":"5108:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5114:12:62","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":38379,"src":"5108:18:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":52621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5108:53:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52622,"nodeType":"ExpressionStatement","src":"5108:53:62"},{"expression":{"id":52630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":52623,"name":"registrations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52484,"src":"5201:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52627,"indexExpression":{"expression":{"id":52624,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5215:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5219:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5215:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5201:25:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52628,"indexExpression":{"id":52626,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"5227:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5201:31:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52629,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52578,"src":"5235:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5201:40:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52631,"nodeType":"ExpressionStatement","src":"5201:40:62"},{"expression":{"id":52640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":52632,"name":"registrationTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52492,"src":"5251:17:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52636,"indexExpression":{"expression":{"id":52633,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5269:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5273:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5269:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5251:29:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52637,"indexExpression":{"id":52635,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"5281:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5251:35:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":52638,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5289:5:62","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":52639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5295:9:62","memberName":"timestamp","nodeType":"MemberAccess","src":"5289:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5251:53:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52641,"nodeType":"ExpressionStatement","src":"5251:53:62"},{"eventCall":{"arguments":[{"expression":{"id":52643,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5331:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5335:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5331:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52645,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"5343:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"id":52642,"name":"Registered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52441,"src":"5320:10:62","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_enum$_LLMOracleKind_$52428_$returns$__$","typeString":"function (address,enum LLMOracleKind)"}},"id":52646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:28:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52647,"nodeType":"EmitStatement","src":"5315:33:62"}]},"documentation":{"id":52553,"nodeType":"StructuredDocumentation","src":"4330:167:62","text":"@notice Register an Oracle.\n @dev Reverts if the user is already registered or has insufficient funds.\n @param kind The kind of Oracle to unregister."},"functionSelector":"61d689fa","implemented":true,"kind":"function","modifiers":[],"name":"register","nameLocation":"4511:8:62","parameters":{"id":52557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52556,"mutability":"mutable","name":"kind","nameLocation":"4534:4:62","nodeType":"VariableDeclaration","scope":52649,"src":"4520:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52555,"nodeType":"UserDefinedTypeName","pathNode":{"id":52554,"name":"LLMOracleKind","nameLocations":["4520:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"4520:13:62"},"referencedDeclaration":52428,"src":"4520:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"4519:20:62"},"returnParameters":{"id":52558,"nodeType":"ParameterList","parameters":[],"src":"4547:0:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52761,"nodeType":"FunctionDefinition","src":"5571:981:62","nodes":[],"body":{"id":52760,"nodeType":"Block","src":"5643:909:62","nodes":[],"statements":[{"expression":{"id":52665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52658,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52656,"src":"5653:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"baseExpression":{"id":52659,"name":"registrations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52484,"src":"5662:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52662,"indexExpression":{"expression":{"id":52660,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5676:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5680:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5676:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5662:25:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52664,"indexExpression":{"id":52663,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"5688:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5662:31:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5653:40:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52666,"nodeType":"ExpressionStatement","src":"5653:40:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52667,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52656,"src":"5749:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":52668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5759:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5749:11:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52676,"nodeType":"IfStatement","src":"5745:74:62","trueBody":{"id":52675,"nodeType":"Block","src":"5762:57:62","statements":[{"errorCall":{"arguments":[{"expression":{"id":52671,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5797:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5801:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5797:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52670,"name":"NotRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52454,"src":"5783:13:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":52673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5783:25:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52674,"nodeType":"RevertStatement","src":"5776:32:62"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":52685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"id":52680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52677,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"5876:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":52678,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"5884:13:62","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LLMOracleKind_$52428_$","typeString":"type(enum LLMOracleKind)"}},"id":52679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5898:9:62","memberName":"Validator","nodeType":"MemberAccess","referencedDeclaration":52427,"src":"5884:23:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"src":"5876:31:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"baseExpression":{"id":52681,"name":"isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53143,"src":"5911:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":52684,"indexExpression":{"expression":{"id":52682,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5925:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5929:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5925:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5911:25:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5876:60:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52694,"nodeType":"IfStatement","src":"5872:124:62","trueBody":{"id":52693,"nodeType":"Block","src":"5938:58:62","statements":[{"expression":{"id":52691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":52686,"name":"isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53143,"src":"5952:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":52689,"indexExpression":{"expression":{"id":52687,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5966:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5970:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5966:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5952:25:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":52690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5980:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5952:33:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52692,"nodeType":"ExpressionStatement","src":"5952:33:62"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":52695,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6062:5:62","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":52696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6068:9:62","memberName":"timestamp","nodeType":"MemberAccess","src":"6062:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"baseExpression":{"id":52697,"name":"registrationTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52492,"src":"6080:17:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52700,"indexExpression":{"expression":{"id":52698,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6098:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6102:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6098:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6080:29:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52702,"indexExpression":{"id":52701,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"6110:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6080:35:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6062:53:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":52704,"name":"minRegistrationTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52476,"src":"6118:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6062:75:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52719,"nodeType":"IfStatement","src":"6058:188:62","trueBody":{"id":52718,"nodeType":"Block","src":"6139:107:62","statements":[{"errorCall":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":52707,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6181:5:62","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":52708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6187:9:62","memberName":"timestamp","nodeType":"MemberAccess","src":"6181:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"baseExpression":{"id":52709,"name":"registrationTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52492,"src":"6199:17:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52712,"indexExpression":{"expression":{"id":52710,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6217:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6221:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6217:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6199:29:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52714,"indexExpression":{"id":52713,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"6229:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6199:35:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6181:53:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52706,"name":"TooEarlyToUnregister","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52467,"src":"6160:20:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":52716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6160:75:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52717,"nodeType":"RevertStatement","src":"6153:82:62"}]}},{"expression":{"id":52726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6287:38:62","subExpression":{"baseExpression":{"baseExpression":{"id":52720,"name":"registrations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52484,"src":"6294:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52723,"indexExpression":{"expression":{"id":52721,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6308:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6312:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6308:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6294:25:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52725,"indexExpression":{"id":52724,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"6320:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6294:31:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52727,"nodeType":"ExpressionStatement","src":"6287:38:62"},{"expression":{"id":52734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6335:42:62","subExpression":{"baseExpression":{"baseExpression":{"id":52728,"name":"registrationTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52492,"src":"6342:17:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52731,"indexExpression":{"expression":{"id":52729,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6360:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6364:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6360:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6342:29:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52733,"indexExpression":{"id":52732,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"6372:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6342:35:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52735,"nodeType":"ExpressionStatement","src":"6335:42:62"},{"eventCall":{"arguments":[{"expression":{"id":52737,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6405:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6409:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6405:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52739,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"6417:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"id":52736,"name":"Unregistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52449,"src":"6392:12:62","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_enum$_LLMOracleKind_$52428_$returns$__$","typeString":"function (address,enum LLMOracleKind)"}},"id":52740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6392:30:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52741,"nodeType":"EmitStatement","src":"6387:35:62"},{"expression":{"arguments":[{"expression":{"id":52745,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6481:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6485:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6481:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":52751,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6517:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}],"id":52750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6509:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52749,"name":"address","nodeType":"ElementaryTypeName","src":"6509:7:62","typeDescriptions":{}}},"id":52752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6509:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":52753,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6524:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6528:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6524:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":52747,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52496,"src":"6493:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6499:9:62","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":38323,"src":"6493:15:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":52755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6493:42:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":52756,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52656,"src":"6538:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6493:51:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52742,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52496,"src":"6467:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6473:7:62","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":38347,"src":"6467:13:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":52758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6467:78:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52759,"nodeType":"ExpressionStatement","src":"6467:78:62"}]},"documentation":{"id":52650,"nodeType":"StructuredDocumentation","src":"5361:205:62","text":"@notice Remove registration of an Oracle.\n @dev Reverts if the user is not registered.\n @param kind The kind of Oracle to unregister.\n @return amount Amount of stake approved back."},"functionSelector":"23d2f5f6","implemented":true,"kind":"function","modifiers":[],"name":"unregister","nameLocation":"5580:10:62","parameters":{"id":52654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52653,"mutability":"mutable","name":"kind","nameLocation":"5605:4:62","nodeType":"VariableDeclaration","scope":52761,"src":"5591:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52652,"nodeType":"UserDefinedTypeName","pathNode":{"id":52651,"name":"LLMOracleKind","nameLocations":["5591:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"5591:13:62"},"referencedDeclaration":52428,"src":"5591:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"5590:20:62"},"returnParameters":{"id":52657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52656,"mutability":"mutable","name":"amount","nameLocation":"5635:6:62","nodeType":"VariableDeclaration","scope":52761,"src":"5627:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52655,"name":"uint256","nodeType":"ElementaryTypeName","src":"5627:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5626:16:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52780,"nodeType":"FunctionDefinition","src":"6670:219:62","nodes":[],"body":{"id":52779,"nodeType":"Block","src":"6774:115:62","nodes":[],"statements":[{"expression":{"id":52773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52771,"name":"generatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52470,"src":"6784:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52772,"name":"_generatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52764,"src":"6807:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6784:44:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52774,"nodeType":"ExpressionStatement","src":"6784:44:62"},{"expression":{"id":52777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52775,"name":"validatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52473,"src":"6838:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52776,"name":"_validatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52766,"src":"6861:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6838:44:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52778,"nodeType":"ExpressionStatement","src":"6838:44:62"}]},"documentation":{"id":52762,"nodeType":"StructuredDocumentation","src":"6558:107:62","text":"@notice Set the stake amount required to register as an Oracle.\n @dev Only allowed by the owner."},"functionSelector":"f149444b","implemented":true,"kind":"function","modifiers":[{"id":52769,"kind":"modifierInvocation","modifierName":{"id":52768,"name":"onlyOwner","nameLocations":["6764:9:62"],"nodeType":"IdentifierPath","referencedDeclaration":36570,"src":"6764:9:62"},"nodeType":"ModifierInvocation","src":"6764:9:62"}],"name":"setStakeAmounts","nameLocation":"6679:15:62","parameters":{"id":52767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52764,"mutability":"mutable","name":"_generatorStakeAmount","nameLocation":"6703:21:62","nodeType":"VariableDeclaration","scope":52780,"src":"6695:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52763,"name":"uint256","nodeType":"ElementaryTypeName","src":"6695:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":52766,"mutability":"mutable","name":"_validatorStakeAmount","nameLocation":"6734:21:62","nodeType":"VariableDeclaration","scope":52780,"src":"6726:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52765,"name":"uint256","nodeType":"ElementaryTypeName","src":"6726:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6694:62:62"},"returnParameters":{"id":52770,"nodeType":"ParameterList","parameters":[],"src":"6774:0:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52798,"nodeType":"FunctionDefinition","src":"6988:175:62","nodes":[],"body":{"id":52797,"nodeType":"Block","src":"7062:101:62","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"id":52792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52789,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52784,"src":"7079:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":52790,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"7087:13:62","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LLMOracleKind_$52428_$","typeString":"type(enum LLMOracleKind)"}},"id":52791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7101:9:62","memberName":"Generator","nodeType":"MemberAccess","referencedDeclaration":52426,"src":"7087:23:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"src":"7079:31:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":52794,"name":"validatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52473,"src":"7136:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7079:77:62","trueExpression":{"id":52793,"name":"generatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52470,"src":"7113:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":52788,"id":52796,"nodeType":"Return","src":"7072:84:62"}]},"documentation":{"id":52781,"nodeType":"StructuredDocumentation","src":"6895:88:62","text":"@notice Returns the stake amount required to register as an Oracle w.r.t given kind."},"functionSelector":"771007a9","implemented":true,"kind":"function","modifiers":[],"name":"getStakeAmount","nameLocation":"6997:14:62","parameters":{"id":52785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52784,"mutability":"mutable","name":"kind","nameLocation":"7026:4:62","nodeType":"VariableDeclaration","scope":52798,"src":"7012:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52783,"nodeType":"UserDefinedTypeName","pathNode":{"id":52782,"name":"LLMOracleKind","nameLocations":["7012:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"7012:13:62"},"referencedDeclaration":52428,"src":"7012:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"7011:20:62"},"returnParameters":{"id":52788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52798,"src":"7053:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52786,"name":"uint256","nodeType":"ElementaryTypeName","src":"7053:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7052:9:62"},"scope":52821,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":52820,"nodeType":"FunctionDefinition","src":"7219:156:62","nodes":[],"body":{"id":52819,"nodeType":"Block","src":"7302:73:62","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":52809,"name":"registrations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52484,"src":"7319:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52811,"indexExpression":{"id":52810,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52801,"src":"7333:4:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7319:19:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52813,"indexExpression":{"id":52812,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52804,"src":"7339:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7319:25:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":52815,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52804,"src":"7363:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"id":52814,"name":"getStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52798,"src":"7348:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_enum$_LLMOracleKind_$52428_$returns$_t_uint256_$","typeString":"function (enum LLMOracleKind) view returns (uint256)"}},"id":52816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7348:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7319:49:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":52808,"id":52818,"nodeType":"Return","src":"7312:56:62"}]},"documentation":{"id":52799,"nodeType":"StructuredDocumentation","src":"7169:45:62","text":"@notice Check if an Oracle is registered."},"functionSelector":"5f5b248b","implemented":true,"kind":"function","modifiers":[],"name":"isRegistered","nameLocation":"7228:12:62","parameters":{"id":52805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52801,"mutability":"mutable","name":"user","nameLocation":"7249:4:62","nodeType":"VariableDeclaration","scope":52820,"src":"7241:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52800,"name":"address","nodeType":"ElementaryTypeName","src":"7241:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52804,"mutability":"mutable","name":"kind","nameLocation":"7269:4:62","nodeType":"VariableDeclaration","scope":52820,"src":"7255:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52803,"nodeType":"UserDefinedTypeName","pathNode":{"id":52802,"name":"LLMOracleKind","nameLocations":["7255:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"7255:13:62"},"referencedDeclaration":52428,"src":"7255:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"7240:34:62"},"returnParameters":{"id":52808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52807,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52820,"src":"7296:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52806,"name":"bool","nodeType":"ElementaryTypeName","src":"7296:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7295:6:62"},"scope":52821,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":52430,"name":"Whitelist","nameLocations":["590:9:62"],"nodeType":"IdentifierPath","referencedDeclaration":53213,"src":"590:9:62"},"id":52431,"nodeType":"InheritanceSpecifier","src":"590:9:62"},{"baseName":{"id":52432,"name":"UUPSUpgradeable","nameLocations":["601:15:62"],"nodeType":"IdentifierPath","referencedDeclaration":37111,"src":"601:15:62"},"id":52433,"nodeType":"InheritanceSpecifier","src":"601:15:62"}],"canonicalName":"LLMOracleRegistry","contractDependencies":[],"contractKind":"contract","documentation":{"id":52429,"nodeType":"StructuredDocumentation","src":"364:196:62","text":"@title LLM Oracle Registry\n @notice Holds the addresses that are eligible to respond to LLM requests.\n @dev There may be several types of oracle kinds, and each require their own stake."},"fullyImplemented":true,"linearizedBaseContracts":[52821,37111,37336,53213,36675,37157,36929],"name":"LLMOracleRegistry","nameLocation":"569:17:62","scope":52822,"usedErrors":[36511,36516,36692,36695,36956,36961,37531,37544,38810,39102,52454,52459,52462,52467,53138],"usedEvents":[36522,36700,37313,52441,52449,53128,53133]}],"license":"Apache-2.0"},"id":62} \ No newline at end of file diff --git a/export-abis.sh b/export-abis.sh deleted file mode 100755 index 2477146..0000000 --- a/export-abis.sh +++ /dev/null @@ -1,8 +0,0 @@ -#!/bin/bash -forge compile - -cp ./out/LLMOracleCoordinator.sol/LLMOracleCoordinator.json ./abis/LLMOracleCoordinator.json -node ./abis/parseAbi.cjs ./abis/LLMOracleCoordinator.json - -cp ./out/LLMOracleRegistry.sol/LLMOracleRegistry.json ./abis/LLMOracleRegistry.json -node ./abis/parseAbi.cjs ./abis/LLMOracleRegistry.json diff --git a/foundry.toml b/foundry.toml index f04eed8..9e34a2d 100644 --- a/foundry.toml +++ b/foundry.toml @@ -20,6 +20,6 @@ force = true # fs permissions for deployment (false by default) fs_permissions = [ { access = "read", path = "out" }, - { access = "read-write", path = "deployment" }, + { access = "read-write", path = "deployments" }, ] # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options diff --git a/post-deploy.sh b/post-deploy.sh new file mode 100755 index 0000000..a976f2f --- /dev/null +++ b/post-deploy.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +echo "Exporting deployment files & ABIs" + +cp ./out/LLMOracleCoordinator.sol/LLMOracleCoordinator.json ./deployments/abis/LLMOracleCoordinator.json +node ./deployments/abis/parseAbi.cjs ./deployments/abis/LLMOracleCoordinator.json + +cp ./out/LLMOracleRegistry.sol/LLMOracleRegistry.json ./deployments/abis/LLMOracleRegistry.json +node ./deployments/abis/parseAbi.cjs ./deployments/abis/LLMOracleRegistry.json + diff --git a/script/Helper.s.sol b/script/Helper.s.sol index 0d5c1fb..eb0ae32 100644 --- a/script/Helper.s.sol +++ b/script/Helper.s.sol @@ -13,7 +13,7 @@ contract Helper is Script { /// @dev You are expect to use JSON-related commands with the returned string, /// see https://book.getfoundry.sh/cheatcodes/external for more. function getDeploymentsJson() external view returns (string memory) { - string memory dir = "deployment/"; + string memory dir = "deployments/"; string memory fileName = Strings.toString(block.chainid); string memory path = string.concat(dir, fileName, ".json"); @@ -22,7 +22,7 @@ contract Helper is Script { function writeProxyAddresses(string memory name, address _proxy, address _impl) external { // create a deployment file if not exist - string memory dir = "deployment/"; + string memory dir = "deployments/"; string memory fileName = Strings.toString(block.chainid); string memory path = string.concat(dir, fileName, ".json"); From 45b119b43b98144361977291bca43010dfb94ec3 Mon Sep 17 00:00:00 2001 From: erhant Date: Mon, 23 Dec 2024 17:42:33 +0300 Subject: [PATCH 2/3] remove storage, rfk deploys --- README.md | 10 ---------- script/Deploy.s.sol | 28 ++++++++++++++-------------- storage.sh | 22 ---------------------- test/script/Deploy.t.sol | 5 +++-- 4 files changed, 17 insertions(+), 48 deletions(-) delete mode 100755 storage.sh diff --git a/README.md b/README.md index abda868..1096232 100644 --- a/README.md +++ b/README.md @@ -208,16 +208,6 @@ Alternatively, you can see a summarized text-only output as well: forge coverage --no-match-coverage "(test|mock|script)" ``` -### Storage Layout - -You can print storage layouts for each contract using: - -```sh -./storage.sh -``` - -The resulting Markdown files will be created under the [`storage`](./storage/) directory. - ### Gas Snapshot You can examine the gas usage metrics using the command: diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol index fee5b29..231e495 100644 --- a/script/Deploy.s.sol +++ b/script/Deploy.s.sol @@ -30,15 +30,15 @@ contract DeployLLMOracleRegistry is Script { token = address(0x4200000000000000000000000000000000000006); // WETH } - function run() external returns (address proxy, address impl) { + function run() public { vm.startBroadcast(); - (proxy, impl) = this.deploy(); + (address proxy, address impl) = this.deploy(); vm.stopBroadcast(); helper.writeProxyAddresses("LLMOracleRegistry", proxy, impl); } - function deploy() external returns (address proxy, address impl) { + function deploy() public returns (address proxy, address impl) { proxy = Upgrades.deployUUPSProxy( "LLMOracleRegistry.sol", abi.encodeCall( @@ -49,14 +49,14 @@ contract DeployLLMOracleRegistry is Script { impl = Upgrades.getImplementationAddress(proxy); } - function deployUnsafe(address impl) external returns (address proxy) { - proxy = UnsafeUpgrades.deployUUPSProxy( - impl, - abi.encodeCall( - LLMOracleRegistry.initialize, (stakes.generator, stakes.validator, token, minRegistrationTimeSec) - ) - ); - } + // function deployUnsafe(address impl) external returns (address proxy) { + // proxy = UnsafeUpgrades.deployUUPSProxy( + // impl, + // abi.encodeCall( + // LLMOracleRegistry.initialize, (stakes.generator, stakes.validator, token, minRegistrationTimeSec) + // ) + // ); + // } } contract DeployLLMOracleCoordinator is Script { @@ -82,7 +82,7 @@ contract DeployLLMOracleCoordinator is Script { token = address(0x4200000000000000000000000000000000000006); } - function run() external returns (address proxy, address impl) { + function run() public { // read registry address string memory deployments = helper.getDeploymentsJson(); require(vm.keyExistsJson(deployments, "$.LLMOracleRegistry"), "Please deploy LLMOracleRegistry first"); @@ -92,13 +92,13 @@ contract DeployLLMOracleCoordinator is Script { require(registryImlp != address(0), "LLMOracleRegistry implementation address is invalid"); vm.startBroadcast(); - (proxy, impl) = this.deploy(registryProxy); + (address proxy, address impl) = this.deploy(registryProxy); vm.stopBroadcast(); helper.writeProxyAddresses("LLMOracleCoordinator", proxy, impl); } - function deploy(address registryAddr) external returns (address proxy, address impl) { + function deploy(address registryAddr) public returns (address proxy, address impl) { proxy = Upgrades.deployUUPSProxy( "LLMOracleCoordinator.sol", abi.encodeCall( diff --git a/storage.sh b/storage.sh deleted file mode 100755 index 2637c5b..0000000 --- a/storage.sh +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/bash -OUTPUT_PATH=${1:-storage} -EXCLUDE="test|mock|script|" - -# FIXME: what does IFS do here? -IFS=$'\n' -CONTRACT_FILES=($(find ./src -type f)) -unset IFS - -echo "Outputting storage layouts to: $OUTPUT_PATH" -mkdir -p $OUTPUT_PATH - -for file in "${CONTRACT_FILES[@]}"; -do - if [[ $file =~ .*($EXCLUDE).* ]]; then - continue - fi - - contract=$(basename "$file" .sol) - echo "Generating storage layout for: $contract" - forge inspect "$contract" storage --pretty > "$OUTPUT_PATH/$contract.md" -done diff --git a/test/script/Deploy.t.sol b/test/script/Deploy.t.sol index 14a6485..6642d88 100644 --- a/test/script/Deploy.t.sol +++ b/test/script/Deploy.t.sol @@ -22,10 +22,11 @@ contract DeployTest is Test { function setUp() external { deployLLMOracleRegistry = new DeployLLMOracleRegistry(); - (llmOracleRegistryProxy, llmOracleRegistryImpl) = deployLLMOracleRegistry.run(); + (llmOracleRegistryProxy, llmOracleRegistryImpl) = deployLLMOracleRegistry.deploy(); deployLLMOracleCoordinator = new DeployLLMOracleCoordinator(); - (llmOracleCoordinatorProxy, llmOracleCoordinatorImpl) = deployLLMOracleCoordinator.run(); + (llmOracleCoordinatorProxy, llmOracleCoordinatorImpl) = + deployLLMOracleCoordinator.deploy(llmOracleRegistryProxy); } modifier deployed() { From 9576190eb4c82c9ad4da04f178615d2fb396741f Mon Sep 17 00:00:00 2001 From: erhant Date: Mon, 23 Dec 2024 22:34:30 +0300 Subject: [PATCH 3/3] better abi export, added upgrade docs --- .vscode/settings.json | 8 +- README.md | 62 +- broadcast/Deploy.s.sol/84532/run-latest.json | 136 +- deployments/.gitignore | 2 +- .../abis/LLMOracleCoordinator.abi.json | 1195 ---------------- deployments/abis/LLMOracleCoordinator.json | 1196 ++++++++++++++++- deployments/abis/LLMOracleRegistry.abi.json | 588 -------- deployments/abis/LLMOracleRegistry.json | 589 +++++++- post-deploy.sh | 10 - script/Deploy.s.sol | 73 +- script/Helper.s.sol | 9 +- test/LLMOracleCoordinator.t.sol | 2 +- test/LLMOracleRegistry.t.sol | 2 +- test/Statistics.t.sol | 3 +- test/script/Deploy.t.sol | 1 + 15 files changed, 1940 insertions(+), 1936 deletions(-) delete mode 100644 deployments/abis/LLMOracleCoordinator.abi.json delete mode 100644 deployments/abis/LLMOracleRegistry.abi.json delete mode 100755 post-deploy.sh diff --git a/.vscode/settings.json b/.vscode/settings.json index c97b5f4..4ece872 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,8 +7,14 @@ "editor.defaultFormatter": "JuanBlanco.solidity" }, "solidity.formatter": "forge", - "solidity.compileUsingRemoteVersion": "v0.8.26", "solidity.defaultCompiler": "localFile", + // remappings.txt here fixes random errors + "solidity.remappingsUnix": [ + "forge-std/=lib/forge-std/src/", + "@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/", + "@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/", + "@openzeppelin/foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/" + ], "material-icon-theme.files.associations": { ".gas-snapshot": "bench-ts" } diff --git a/README.md b/README.md index 1096232..f44216b 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ To interact with the blockchain, we require an RPC endpoint. You can get one fro You will use this endpoint for the commands that interact with the blockchain, such as deploying and upgrading; or while doing fork tests. -### Deploy & Verify Contract +### Deploy Contract Deploy the contract with: @@ -116,9 +116,23 @@ forge script ./script/Deploy.s.sol:Deploy \ --broadcast ``` -You can see deployed contract addresses under the [`deployments/.json`](./deployments/) +You can see deployed contract addresses under the [`deployments/.json`](./deployments/) folder. -You can verify the contract during deployment by adding the verification arguments as well: +You will need the contract ABIs to interact with them as well, thankfully there is a nice short-hand command to export that: + +```sh +forge inspect abi > ./deployments/abis/.json +``` + +### Verify Contract + +Verification requires the following values, based on which provider you are using: + +- **Provider**: can accept any of `etherscan`, `blockscout`, `sourcify`, `oklink` or `custom` for more fine-grained stuff. +- **URL**: based on the chosen provider, we require its URL as well, e.g. `https://base-sepolia.blockscout.com/api/` for `blockscout` on Base Sepolia +- **API Key**: an API key from the chosen provider, must be stored as `ETHERSCAN_API_KEY` in environment no matter whicih provider it is!. + +You can actually verify the contract during deployment by adding the verification arguments as well: ```sh forge script ./script/Deploy.s.sol:Deploy \ @@ -129,51 +143,33 @@ forge script ./script/Deploy.s.sol:Deploy \ --verifier-url ``` -You can verify an existing contract with: +Alternatively, you can verify an existing contract (perhaps deployed from a factory) with: ```sh forge verify-contract ./src/.sol: \ ---verifier blockscout \ ---verifier-url +--verifier blockscout --verifier-url ``` -Note that the `--verifier-url` value should be the target explorer's homepage URL. Some example URLs are: - -- `https://base.blockscout.com/api/` for Base (Mainnet) -- `https://base-sepolia.blockscout.com/api/` for Base Sepolia (Testnet) - -> [!NOTE] -> -> URL should not contain the API key! Foundry will read your `ETHERSCAN_API_KEY` from environment. - -> [!NOTE] -> -> The `--verifier` can accept any of the following: `etherscan`, `blockscout`, `sourcify`, `oklink`. We are using Blockscout most of the time. - -After deployment, we need to take care of two things: +### Upgrade Contract -- **ABIs**: to interact with the contracts -- **Artifacts**: required if we need to upgrade in future +Upgrading an existing contract is done as per the instructions in [openzeppelin-foundry-upgrades](https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades) repository. -We have a post-deployment script that outputs these files under the [`deployments/abis`](./deployments/abis/) folder: +First, we create a new contract with its name as `ContractNameV2`, and then we execute the following command: ```sh -# requires NodeJS -./post-deploy.sh +forge script ./script/Deploy.s.sol:Upgrade \ +--rpc-url \ +--account --broadcast \ +--sender \ +--verify --verifier blockscout \ +--verifier-url ``` -### Upgrade Contract - -Upgrading an existing contract is done as per the instructions in [openzeppelin-foundry-upgrades](https://github.com/OpenZeppelin/openzeppelin-foundry-upgrades) repository. - -To upgrade, you must - > [!NOTE] > -> The `--sender
` field is mandatory when deploying a contract, it can be obtained with: +> The `--sender
` field is mandatory when deploying a contract, it can be obtained with the command below, which will prompt for keystore password: > > ```sh -> # will prompt for password > cast wallet address --account > ``` diff --git a/broadcast/Deploy.s.sol/84532/run-latest.json b/broadcast/Deploy.s.sol/84532/run-latest.json index 7bac4b8..6534fcb 100644 --- a/broadcast/Deploy.s.sol/84532/run-latest.json +++ b/broadcast/Deploy.s.sol/84532/run-latest.json @@ -1,39 +1,39 @@ { "transactions": [ { - "hash": "0x8ae3cb33de8b8c9d05f8293282c52ee43d7acb6bab3c1c40932306c64f66c57e", + "hash": "0x205d0f0ab32b7fc856a66ec8b626f244f9e34ea4fc95a95776600c49c2dbce2f", "transactionType": "CREATE", - "contractName": "LLMOracleCoordinator", - "contractAddress": "0x063d4337f9f21f0a65f459b0d98a7c94e56a057b", + "contractName": "LLMOracleRegistry", + "contractAddress": "0x5fa8409fc725cf9a9113aa670be7a7f8bef381e7", "function": null, "arguments": null, "transaction": { "from": "0x2aa47bc684aec9093ab9e85c2cb19052887c1aee", - "gas": "0x464ad5", + "gas": "0x19c383", "value": "0x0", - "input": "0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613e966100f95f395f81816122d4015281816122fd01526124410152613e965ff3fe6080604052600436106101e5575f3560e01c806381d12c5811610108578063cec10c111161009d578063e9ca8b461161006d578063e9ca8b461461060b578063edbf4ac21461062a578063f2fde38b14610649578063f8bbf27e14610668578063fdc3d8d71461067d575f80fd5b8063cec10c11146105a4578063d0b7830b146105c3578063e3c98ba0146105d7578063e76aec11146105ec575f80fd5b8063b13fc8f4116100d8578063b13fc8f4146104f5578063b584e6171461052f578063b84b8ac71461054e578063ca287c351461056d575f80fd5b806381d12c581461045b5780638da5cb5b1461048f5780639a1b4b38146104a3578063ad3cb1cc146104b8575f80fd5b80634b5a82d11161017e5780636b4d5bfc1161014e5780636b4d5bfc146103dd578063715018a6146103fc57806371ee2ce1146104105780637b1039991461043c575f80fd5b80634b5a82d11461034f5780634f1ef2861461037d57806352d1902d14610392578063647846a5146103a6575f80fd5b806326232a2e116101b957806326232a2e146102b25780632bafb614146102c657806332f77659146102f7578063434dbaee14610323575f80fd5b806257efc2146101e95780630566f18a1461022257806313c2bedc146102455780631da7bc9a1461025a575b5f80fd5b3480156101f4575f80fd5b506102086102033660046131f2565b610692565b604051610219959493929190613240565b60405180910390f35b34801561022d575f80fd5b5061023760015481565b604051908152602001610219565b348015610250575f80fd5b5061023760065481565b348015610265575f80fd5b5060055461028b9060ff81169064ffffffffff6101008204811691600160301b90041683565b6040805160ff909416845264ffffffffff9283166020850152911690820152606001610219565b3480156102bd575f80fd5b506102375f5481565b3480156102d1575f80fd5b5060045461028b9060ff81169064ffffffffff6101008204811691600160301b90041683565b348015610302575f80fd5b5061031661031136600461328a565b6107f4565b60405161021991906132f4565b34801561032e575f80fd5b5061034261033d36600461328a565b610aaa565b6040516102199190613306565b34801561035a575f80fd5b5061036e6103693660046131f2565b610c12565b604051610219939291906133da565b61039061038b3660046134c1565b610ce2565b005b34801561039d575f80fd5b50610237610d01565b3480156103b1575f80fd5b506009546103c5906001600160a01b031681565b6040516001600160a01b039091168152602001610219565b3480156103e8575f80fd5b506103906103f7366004613548565b610d1c565b348015610407575f80fd5b50610390611263565b34801561041b575f80fd5b5061042f61042a36600461328a565b611276565b60405161021991906135f9565b348015610447575f80fd5b506008546103c5906001600160a01b031681565b348015610466575f80fd5b5061047a61047536600461328a565b611424565b60405161021999989796959493929190613678565b34801561049a575f80fd5b506103c56115c4565b3480156104ae575f80fd5b5061023760075481565b3480156104c3575f80fd5b506104e8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102199190613710565b348015610500575f80fd5b5061051461050f366004613738565b6115f2565b60408051938452602084019290925290820152606001610219565b34801561053a575f80fd5b50610390610549366004613752565b61168f565b348015610559575f80fd5b506103906105683660046137b4565b611a63565b348015610578575f80fd5b5060035461058c906001600160401b031681565b6040516001600160401b039091168152602001610219565b3480156105af575f80fd5b506103906105be3660046137e7565b611a8e565b3480156105ce575f80fd5b50610390611aa3565b3480156105e2575f80fd5b50610237600e5481565b3480156105f7575f80fd5b50610237610606366004613810565b611b3a565b348015610616575f80fd5b5061039061062536600461388d565b61210e565b348015610635575f80fd5b506103906106443660046138b3565b612139565b348015610654575f80fd5b5061039061066336600461390c565b61228c565b348015610673575f80fd5b5061023760025481565b348015610688575f80fd5b50610237600a5481565b600c602052815f5260405f2081815481106106ab575f80fd5b5f91825260209091206005909102018054600182015460028301546003840180546001600160a01b03909416965091945092916106e790613925565b80601f016020809104026020016040519081016040528092919081815260200182805461071390613925565b801561075e5780601f106107355761010080835404028352916020019161075e565b820191905f5260205f20905b81548152906001019060200180831161074157829003601f168201915b50505050509080600401805461077390613925565b80601f016020809104026020016040519081016040528092919081815260200182805461079f90613925565b80156107ea5780601f106107c1576101008083540402835291602001916107ea565b820191905f5260205f20905b8154815290600101906020018083116107cd57829003601f168201915b5050505050905085565b61082c6040518060a001604052805f6001600160a01b031681526020015f81526020015f815260200160608152602001606081525090565b5f828152600c60209081526040808320600b90925290912060039081015460ff168181111561085d5761085d613650565b146108a0575f838152600b602052604090819020600390810154915163091e2f1760e31b815261089792869260ff90911691600401613957565b60405180910390fd5b5f815f815481106108b3576108b3613980565b5f9182526020909120600590910201600281015490915060015b835481101561094c57818482815481106108e9576108e9613980565b905f5260205f2090600502016002015411156109445783818154811061091157610911613980565b905f5260205f20906005020160020154915083818154811061093557610935613980565b905f5260205f20906005020192505b6001016108cd565b506040805160a08101825283546001600160a01b03168152600184015460208201526002840154918101919091526003830180548491606084019161099090613925565b80601f01602080910402602001604051908101604052809291908181526020018280546109bc90613925565b8015610a075780601f106109de57610100808354040283529160200191610a07565b820191905f5260205f20905b8154815290600101906020018083116109ea57829003601f168201915b50505050508152602001600482018054610a2090613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90613925565b8015610a975780601f10610a6e57610100808354040283529160200191610a97565b820191905f5260205f20905b815481529060010190602001808311610a7a57829003601f168201915b5050505050815250509350505050919050565b6060600d5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c07575f848152602090819020604080516080810182526004860290920180546001600160a01b031683526001810154838501526002810180548351818702810187018552818152949592949386019392830182828015610b5f57602002820191905f5260205f20905b815481526020019060010190808311610b4b575b50505050508152602001600382018054610b7890613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba490613925565b8015610bef5780601f10610bc657610100808354040283529160200191610bef565b820191905f5260205f20905b815481529060010190602001808311610bd257829003601f168201915b50505050508152505081526020019060010190610adc565b505050509050919050565b600d602052815f5260405f208181548110610c2b575f80fd5b5f9182526020909120600490910201805460018201546003830180546001600160a01b03909316955090935090610c6190613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8d90613925565b8015610cd85780601f10610caf57610100808354040283529160200191610cd8565b820191905f5260205f20905b815481529060010190602001808311610cbb57829003601f168201915b5050505050905083565b610cea6122c9565b610cf38261236d565b610cfd8282612375565b5050565b5f610d0a612436565b505f80516020613e4183398151915290565b600854604051635f5b248b60e01b81526001916001600160a01b031690635f5b248b90610d4f9033908590600401613994565b602060405180830381865afa158015610d6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8e91906139c1565b610dad5760405163bfc6c33760e01b8152336004820152602401610897565b866002805f838152600b6020526040902060039081015460ff1690811115610dd757610dd7613650565b14610e11575f828152600b60205260409081902060030154905163091e2f1760e31b815261089791849160ff909116908490600401613957565b600854604051633af32abf60e01b81523360048201819052916001600160a01b031690633af32abf90602401602060405180830381865afa158015610e58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7c91906139c1565b610ea457604051636f8bf18b60e11b81526001600160a01b0382166004820152602401610897565b5f8a8152600b602052604090206002810154610100900464ffffffffff168814610eea576040516355c56a4560e11b8152600481018c9052336024820152604401610897565b5f5b88811015610f8c576007548a8a83818110610f0957610f09613980565b905060200201351180610f3557506006548a8a83818110610f2c57610f2c613980565b90506020020135105b15610f8457898982818110610f4c57610f4c613980565b6007546006546040516371a6675960e11b81526020909302949094013560048301526024820152604481019290925250606401610897565b600101610eec565b505f5b6002820154610100900464ffffffffff16811015611011575f8c8152600c60205260409020805433919083908110610fc957610fc9613980565b5f9182526020909120600590910201546001600160a01b031603611009576040516301011bf360e71b8152600481018d9052336024820152604401610897565b600101610f8f565b505f5b5f8c8152600d6020526040902054811015611093575f8c8152600d6020526040902080543391908390811061104b5761104b613980565b5f9182526020909120600490910201546001600160a01b03160361108b576040516301011bf360e71b8152600481018d9052336024820152604401610897565b600101611014565b5061109f8b828c61247f565b600d5f8c81526020019081526020015f206040518060800160405280336001600160a01b031681526020018c81526020018b8b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250505090825250604080516020601f8c018190048102820181019092528a815291810191908b908b90819084018382808284375f920182905250939094525050835460018082018655948252602091829020845160049092020180546001600160a01b0319166001600160a01b0390921691909117815583820151948101949094556040830151805193949361119e935060028501929190910190613195565b50606082015160038201906111b39082613a2b565b50506040513391508c907fa1afe65d2285036595be8f15025c4421a593141666e15e5a980e742920646b1e905f90a360028101545f8c8152600d6020526040902054600160301b90910464ffffffffff16148015611255576003828101805460ff1916600183021790555081600101548c5f80516020613e2183398151915260026003604051611244929190613ae5565b60405180910390a36112558c6124f8565b505050505050505050505050565b61126b612912565b6112745f612944565b565b6060600c5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c07575f8481526020908190206040805160a0810182526005860290920180546001600160a01b0316835260018101549383019390935260028301549082015260038201805491929160608401919061130590613925565b80601f016020809104026020016040519081016040528092919081815260200182805461133190613925565b801561137c5780601f106113535761010080835404028352916020019161137c565b820191905f5260205f20905b81548152906001019060200180831161135f57829003601f168201915b5050505050815260200160048201805461139590613925565b80601f01602080910402602001604051908101604052809291908181526020018280546113c190613925565b801561140c5780601f106113e35761010080835404028352916020019161140c565b820191905f5260205f20905b8154815290600101906020018083116113ef57829003601f168201915b505050505081525050815260200190600101906112a8565b600b60209081525f918252604091829020805460018201548451606081018652600284015460ff808216835264ffffffffff6101008304811697840197909752600160301b9091049095169581019590955260038301546004840154600585015460068601546007870180546001600160a01b03909716999598959794909516959294919390929091906114b790613925565b80601f01602080910402602001604051908101604052809291908181526020018280546114e390613925565b801561152e5780601f106115055761010080835404028352916020019161152e565b820191905f5260205f20905b81548152906001019060200180831161151157829003601f168201915b50505050509080600801805461154390613925565b80601f016020809104026020016040519081016040528092919081815260200182805461156f90613925565b80156115ba5780601f10611591576101008083540402835291602001916115ba565b820191905f5260205f20905b81548152906001019060200180831161159d57829003601f168201915b5050505050905089565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f8080806116036020860186613b0e565b60ff166002901b90506001548161161a9190613b3d565b92506002548161162a9190613b3d565b91508161163d6060870160408801613b66565b64ffffffffff1661164e9190613b3d565b6116589084613b81565b6116686040870160208801613b66565b64ffffffffff166116799190613b3d565b5f546116859190613b81565b9350509193909250565b600854604051635f5b248b60e01b81525f916001600160a01b031690635f5b248b906116c19033908590600401613994565b602060405180830381865afa1580156116dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170091906139c1565b61171f5760405163bfc6c33760e01b8152336004820152602401610897565b866001805f838152600b6020526040902060039081015460ff169081111561174957611749613650565b14611783575f828152600b60205260409081902060030154905163091e2f1760e31b815261089791849160ff909116908490600401613957565b5f898152600b60205260408120905b5f8b8152600c6020526040902054811015611811575f8b8152600c602052604090208054339190839081106117c9576117c9613980565b5f9182526020909120600590910201546001600160a01b031603611809576040516301011bf360e71b8152600481018c9052336024820152604401610897565b600101611792565b5061181d8a828b61247f565b5f6040518060a00160405280336001600160a01b031681526020018b81526020015f81526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a90819084018382808284375f9201829052509390945250508d8152600c6020908152604080832080546001808201835591855293839020865160059095020180546001600160a01b0319166001600160a01b03909516949094178455918501519183019190915583015160028201556060830151929350839290915060038201906119289082613a2b565b506080820151600482019061193d9082613a2b565b50506040513391508c907f6c809136a3b8faf74ae9e955b7e7b758baa66bde976764a29fa74a4eb1e3702e905f90a36002820154600160301b900464ffffffffff165f03611993576119933383600401546129b4565b60028201545f8c8152600c602052604090205461010090910464ffffffffff16148015611255576002830154600160301b900464ffffffffff165f03611a15576003838101805460ff19168217905560018085015460405190928f925f80516020613e2183398151915292611a089290613ae5565b60405180910390a3611255565b60038301805460ff1916600290811790915560018085015460405190928f925f80516020613e2183398151915292611a4d9290613ae5565b60405180910390a3505050505050505050505050565b611a6b612912565b816004611a788282613b94565b508190506005611a888282613b94565b50505050565b611a96612912565b5f92909255600155600255565b611aab612912565b6009546001600160a01b031663a9059cbb611ac46115c4565b600e546040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611b0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3391906139c1565b505f600e55565b6004545f90829060ff16611b516020830183613b0e565b60ff161080611b73575060055460ff16611b6e6020830183613b0e565b60ff16115b15611bbe57611b856020820182613b0e565b600480546005546040516371a6675960e11b815260ff948516938101939093529083166024830152919091166044820152606401610897565b600454610100900464ffffffffff16611bdd6040830160208401613b66565b64ffffffffff161080611c135750600554610100900464ffffffffff16611c0a6040830160208401613b66565b64ffffffffff16115b15611c6b57611c286040820160208301613b66565b600480546005546040516371a6675960e11b815264ffffffffff948516938101939093526101009182900484166024840152049091166044820152606401610897565b600454600160301b900464ffffffffff16611c8c6060830160408401613b66565b64ffffffffff161080611cc45750600554600160301b900464ffffffffff16611cbb6060830160408401613b66565b64ffffffffff16115b15611d1e57611cd96060820160408301613b66565b600480546005546040516371a6675960e11b815264ffffffffff94851693810193909352600160301b9182900484166024840152049091166044820152606401610897565b5f805f611d2a866115f2565b92509250925087515f03611d515760405163b4fa3fb360e01b815260040160405180910390fd5b600954604051636eb1769f60e11b81523360048201523060248201525f916001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015611d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc19190613c19565b905083811015611dee576040516311e9ebaf60e31b81526004810182905260248101859052604401610897565b6009546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e589190613c19565b905084811015611e85576040516311e9ebaf60e31b81526004810182905260248101869052604401610897565b5f54600e5f828254611e979190613b81565b90915550506009546040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015611ef0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1491906139c1565b50600a8054600181019091556040518c90339083907f7f371482986a3450b759cc4a079353a8eaa36a650b5eba1fb9c00693026f254a905f90a46040805161012081018252338152602081018e9052908101611f75368c90038c018c613c30565b8152602001600181526020018681526020018581526020015f5481526020018c81526020018b815250600b5f8381526020019081526020015f205f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101556040820151816002015f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548164ffffffffff021916908364ffffffffff1602179055506040820151815f0160066101000a81548164ffffffffff021916908364ffffffffff16021790555050506060820151816003015f6101000a81548160ff0219169083600381111561208557612085613650565b02179055506080820151600482015560a0820151600582015560c0820151600682015560e082015160078201906120bc9082613a2b565b5061010082015160088201906120d29082613a2b565b509050508b815f80516020613e218339815191525f60016040516120f7929190613ae5565b60405180910390a39b9a5050505050505050505050565b612116612912565b6003805467ffffffffffffffff19166001600160401b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561217d5750825b90505f826001600160401b031660011480156121985750303b155b9050811580156121a6575080155b156121c45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156121ee57845460ff60401b1916600160401b1785555b6121f733612aa8565b6122048a8a8a8a8a612ab9565b600880546001600160a01b03808f166001600160a01b03199283161790925560098054928e16929091169190911790556001600a55831561125557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050505050505050565b612294612912565b6001600160a01b0381166122bd57604051631e4fbdf760e01b81525f6004820152602401610897565b6122c681612944565b50565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061234f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123435f80516020613e41833981519152546001600160a01b031690565b6001600160a01b031614155b156112745760405163703e46dd60e11b815260040160405180910390fd5b6122c6612912565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156123cf575060408051601f3d908101601f191682019092526123cc91810190613c19565b60015b6123f757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610897565b5f80516020613e41833981519152811461242757604051632a87526960e21b815260048101829052602401610897565b6124318383612b56565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112745760405163703e46dd60e11b815260040160405180910390fd5b81546040515f916124a991869160078701916001600160a01b039091169033908790602001613ca1565b60408051601f198184030181529190526002840154815160208301209192505f1960ff9091161c11611a88576040516306427aeb60e01b81526004810185905260248101839052604401610897565b5f818152600b60205260408120905b6002820154610100900464ffffffffff168110156127545760028201545f90600160301b900464ffffffffff166001600160401b0381111561254b5761254b613424565b604051908082528060200260200182016040528015612574578160200160208202803683370190505b5090505f5b6002840154600160301b900464ffffffffff16811015612600575f858152600d602052604090208054829081106125b2576125b2613980565b905f5260205f20906004020160020183815481106125d2576125d2613980565b905f5260205f2001548282815181106125ed576125ed613980565b6020908102919091010152600101612579565b505f8061260c83612bab565b915091505f805f5b6002880154600160301b900464ffffffffff168110156126f2575f670de0b6b3a764000087838151811061264a5761264a613980565b602002602001015161265c9190613b3d565b9050846126698783613b81565b10158015612680575061267c8686613b81565b8111155b156126e95761268f8185613b81565b93508261269b81613d6a565b9350506126e9600d5f8c81526020019081526020015f2083815481106126c3576126c3613980565b5f91825260209091206004909102015460058b01546001600160a01b03909116906129b4565b50600101612614565b505f8115612709576127048284613d96565b61270b565b5f5b5f8a8152600c60205260409020805491925082918990811061272f5761272f613980565b5f91825260209091206002600590920201015550506001909401935061250792505050565b5060028101545f90610100900464ffffffffff166001600160401b0381111561277f5761277f613424565b6040519080825280602002602001820160405280156127a8578160200160208202803683370190505b5090505f5b6002830154610100900464ffffffffff16811015612819575f848152600c602052604090208054829081106127e4576127e4613980565b905f5260205f2090600502016002015482828151811061280657612806613980565b60209081029190910101526001016127ad565b505f8061282583612bab565b915091505f5b6002850154610100900464ffffffffff1681101561290a57600354829061285c9085906001600160401b0316613b3d565b670de0b6b3a764000086848151811061287757612877613980565b60200260200101516128899190613b3d565b6128939190613b81565b106128e7575f868152600c6020526040902080546128e29190839081106128bc576128bc613980565b5f91825260209091206005909102015460048701546001600160a01b03909116906129b4565b612902565b8460040154600e5f8282546128fc9190613b81565b90915550505b60010161282b565b505050505050565b3361291b6115c4565b6001600160a01b0316146112745760405163118cdaa760e01b8152336004820152602401610897565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b600954604051636eb1769f60e11b81523060048201526001600160a01b0384811660248301529091169063095ea7b39084908490849063dd62ed3e90604401602060405180830381865afa158015612a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a329190613c19565b612a3c9190613b81565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015612a84573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243191906139c1565b612ab0612c09565b6122c681612c52565b612ac1612c09565b60038054600167ffffffffffffffff19909116811790915560408051606080820183528382526020808301949094525f91830191909152600480546101016affffffffffffffffffffff199182161790915582519182018352600a80835293820184905291019190915260058054909116660a000000000a0a179055612b48858585611a8e565b600691909155600755505050565b612b5f82612c5a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612ba3576124318282612cbd565b610cfd612d31565b5f805f80612bb885612d50565b915091508092505f80612bd384670de0b6b3a7640000612e23565b9150915081612bf557604051630e9e2ceb60e11b815260040160405180910390fd5b612bfe81612e6a565b955050505050915091565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661127457604051631afcd79f60e31b815260040160405180910390fd5b612294612c09565b806001600160a01b03163b5f03612c8f57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610897565b5f80516020613e4183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051612cd99190613db5565b5f60405180830381855af49150503d805f8114612d11576040519150601f19603f3d011682016040523d82523d5f602084013e612d16565b606091505b5091509150612d26858383612fbd565b925050505b92915050565b34156112745760405163b398979f60e01b815260040160405180910390fd5b5f80612d5b8361301c565b90505f805b8451811015612dd5575f670de0b6b3a7640000868381518110612d8557612d85613980565b6020026020010151612d979190613b3d565b90505f612da48583613dcb565b9050612dbf612db38280613df1565b60ff81901d9081011890565b612dc99085613b81565b93505050600101612d60565b505f80612deb8651670de0b6b3a7640000612e23565b9150915081612e0d57604051630e9e2ceb60e11b815260040160405180910390fd5b612e198360018361308c565b9450505050915091565b5f80835f03612e375750600190505f612e63565b83830283858281612e4a57612e4a613d82565b0414612e5c575f809250925050612e63565b6001925090505b9250929050565b5f60018211612e77575090565b816001600160801b8210612e905760809190911c9060401b5b600160401b8210612ea65760409190911c9060201b5b6401000000008210612ebd5760209190911c9060101b5b620100008210612ed25760109190911c9060081b5b6101008210612ee65760089190911c9060041b5b60108210612ef95760049190911c9060021b5b60048210612f055760011b5b600302600190811c90818581612f1d57612f1d613d82565b048201901c90506001818581612f3557612f35613d82565b048201901c90506001818581612f4d57612f4d613d82565b048201901c90506001818581612f6557612f65613d82565b048201901c90506001818581612f7d57612f7d613d82565b048201901c90506001818581612f9557612f95613d82565b048201901c9050612fb4818581612fae57612fae613d82565b04821190565b90039392505050565b606082612fd257612fcd82613142565b613015565b8151158015612fe957506001600160a01b0384163b155b1561301257604051639996b31560e01b81526001600160a01b0385166004820152602401610897565b50805b9392505050565b5f80805b835181101561307b575f8061304e86848151811061304057613040613980565b60200260200101518561316b565b915091508161307057604051630e9e2ceb60e11b815260040160405180910390fd5b925050600101613020565b5061301581670de0b6b3a764000085515b5f838302815f1985870982811083820303915050805f036130c0578382816130b6576130b6613d82565b0492505050613015565b8084116130d7576130d76003851502601118613184565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b8051156131525780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8083830184811015612e5c575f809250925050612e63565b634e487b715f52806020526024601cfd5b828054828255905f5260205f209081019282156131ce579160200282015b828111156131ce5782518255916020019190600101906131b3565b506131da9291506131de565b5090565b5b808211156131da575f81556001016131df565b5f8060408385031215613203575f80fd5b50508035926020909101359150565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b038616815284602082015283604082015260a060608201525f61326c60a0830185613212565b828103608084015261327e8185613212565b98975050505050505050565b5f6020828403121561329a575f80fd5b5035919050565b60018060a01b03815116825260208101516020830152604081015160408301525f606082015160a060608501526132db60a0850182613212565b905060808301518482036080860152612d268282613212565b602081525f61301560208301846132a1565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133ce57868503603f19018452815180516001600160a01b031686526020808201518188015260408083015160809189018290528051918901829052909101905f9060a08901905b8083101561339b5783518252602082019150602084019350600183019250613378565b506060840151935088810360608a01526133b58185613212565b985050506020958601959390930192505060010161332c565b50929695505050505050565b60018060a01b0384168152826020820152606060408201525f6134006060830184613212565b95945050505050565b80356001600160a01b038116811461341f575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613447575f80fd5b81356001600160401b0381111561346057613460613424565b604051601f8201601f19908116603f011681016001600160401b038111828210171561348e5761348e613424565b6040528181528382016020018510156134a5575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156134d2575f80fd5b6134db83613409565b915060208301356001600160401b038111156134f5575f80fd5b61350185828601613438565b9150509250929050565b5f8083601f84011261351b575f80fd5b5081356001600160401b03811115613531575f80fd5b602083019150836020828501011115612e63575f80fd5b5f805f805f806080878903121561355d575f80fd5b863595506020870135945060408701356001600160401b03811115613580575f80fd5b8701601f81018913613590575f80fd5b80356001600160401b038111156135a5575f80fd5b8960208260051b84010111156135b9575f80fd5b6020919091019450925060608701356001600160401b038111156135db575f80fd5b6135e789828a0161350b565b979a9699509497509295939492505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133ce57603f1987860301845261363b8583516132a1565b9450602093840193919091019060010161361f565b634e487b7160e01b5f52602160045260245ffd5b6004811061367457613674613650565b9052565b60018060a01b038a16815288602082015260ff885116604082015264ffffffffff602089015116606082015264ffffffffff60408901511660808201526136c260a0820188613664565b8560c08201528460e0820152836101008201526101606101208201525f6136ed610160830185613212565b8281036101408401526137008185613212565b9c9b505050505050505050505050565b602081525f6130156020830184613212565b5f60608284031215613732575f80fd5b50919050565b5f60608284031215613748575f80fd5b6130158383613722565b5f805f805f8060808789031215613767575f80fd5b863595506020870135945060408701356001600160401b0381111561378a575f80fd5b61379689828a0161350b565b90955093505060608701356001600160401b038111156135db575f80fd5b5f8060c083850312156137c5575f80fd5b6137cf8484613722565b91506137de8460608501613722565b90509250929050565b5f805f606084860312156137f9575f80fd5b505081359360208301359350604090920135919050565b5f805f8060c08587031215613823575f80fd5b8435935060208501356001600160401b0381111561383f575f80fd5b61384b87828801613438565b93505060408501356001600160401b03811115613866575f80fd5b61387287828801613438565b9250506138828660608701613722565b905092959194509250565b5f6020828403121561389d575f80fd5b81356001600160401b0381168114613015575f80fd5b5f805f805f805f60e0888a0312156138c9575f80fd5b6138d288613409565b96506138e060208901613409565b96999698505050506040850135946060810135946080820135945060a0820135935060c0909101359150565b5f6020828403121561391c575f80fd5b61301582613409565b600181811c9082168061393957607f821691505b60208210810361373257634e487b7160e01b5f52602260045260245ffd5b8381526060810161396b6020830185613664565b6139786040830184613664565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b038316815260408101600283106139b4576139b4613650565b8260208301529392505050565b5f602082840312156139d1575f80fd5b81518015158114613015575f80fd5b601f82111561243157805f5260205f20601f840160051c81016020851015613a055750805b601f840160051c820191505b81811015613a24575f8155600101613a11565b5050505050565b81516001600160401b03811115613a4457613a44613424565b613a5881613a528454613925565b846139e0565b6020601f821160018114613a8a575f8315613a735750848201515b5f19600385901b1c1916600184901b178455613a24565b5f84815260208120601f198516915b82811015613ab95787850151825560209485019460019092019101613a99565b5084821015613ad657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60408101613af38285613664565b6130156020830184613664565b60ff811681146122c6575f80fd5b5f60208284031215613b1e575f80fd5b813561301581613b00565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417612d2b57612d2b613b29565b64ffffffffff811681146122c6575f80fd5b5f60208284031215613b76575f80fd5b813561301581613b54565b80820180821115612d2b57612d2b613b29565b8135613b9f81613b00565b60ff8116905081548160ff1982161783556020840135613bbe81613b54565b65ffffffffff008160081b169050808365ffffffffffff198416171784556040850135613bea81613b54565b6affffffffff0000000000008160301b16846affffffffffffffffffffff198516178317178555505050505050565b5f60208284031215613c29575f80fd5b5051919050565b5f6060828403128015613c41575f80fd5b50604051606081016001600160401b0381118282101715613c6457613c64613424565b6040528235613c7281613b00565b81526020830135613c8281613b54565b60208201526040830135613c9581613b54565b60408201529392505050565b8581525f808654613cb181613925565b600182168015613cc85760018114613ce357613d19565b60ff1983166020870152602082151583028701019350613d19565b895f5260205f205f5b83811015613d0e5781546020828a010152600182019150602081019050613cec565b505060208287010193505b505050613d37818760601b6bffffffffffffffffffffffff19169052565b613d55601482018660601b6bffffffffffffffffffffffff19169052565b60288101939093525050604801949350505050565b5f60018201613d7b57613d7b613b29565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f82613db057634e487b7160e01b5f52601260045260245ffd5b500490565b5f82518060208501845e5f920191825250919050565b8181035f831280158383131683831282161715613dea57613dea613b29565b5092915050565b8082025f8212600160ff1b84141615613e0c57613e0c613b29565b8181058314821517612d2b57612d2b613b2956fe1c0a5e4b371d60717068c91e93b5e94c91d4c6d6c3fab36082a78f987e5a69f5360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220978aa27c8f683de644d77b8c9c3a2110c675b95d455578320a9e75facebe9f5364736f6c634300081a0033", - "nonce": "0x284", + "input": "0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516116086100f95f395f8181610d8101528181610daa0152610eee01526116085ff3fe608060405260043610610126575f3560e01c80637f649783116100a8578063cf9640b41161006d578063cf9640b414610380578063ee12a7a01461039f578063eea5353d146103b4578063f149444b146103c9578063f2fde38b146103e8578063fc0c546a14610407575f80fd5b80637f6497831461027f57806381e1c6ca1461029e5780638ab1d681146102d45780638da5cb5b146102f3578063ad3cb1cc14610343575f80fd5b806352d1902d116100ee57806352d1902d146101fa5780635f5b248b1461020e57806361d689fa1461022d578063715018a61461024c578063771007a914610260575f80fd5b80631a00d4ea1461012a57806323d2f5f6146101525780632d118d5c146101715780633af32abf146101a75780634f1ef286146101e5575b5f80fd5b348015610135575f80fd5b5061013f60035481565b6040519081526020015b60405180910390f35b34801561015d575f80fd5b5061013f61016c36600461123d565b610426565b34801561017c575f80fd5b5061013f61018b36600461126c565b600560209081525f928352604080842090915290825290205481565b3480156101b2575f80fd5b506101d56101c136600461129d565b5f6020819052908152604090205460ff1681565b6040519015158152602001610149565b6101f86101f33660046112fb565b610755565b005b348015610205575f80fd5b5061013f610774565b348015610219575f80fd5b506101d561022836600461126c565b61078f565b348015610238575f80fd5b506101f861024736600461123d565b6107ed565b348015610257575f80fd5b506101f8610a45565b34801561026b575f80fd5b5061013f61027a36600461123d565b610a58565b34801561028a575f80fd5b506101f86102993660046113a0565b610a81565b3480156102a9575f80fd5b5061013f6102b836600461126c565b600460209081525f928352604080842090915290825290205481565b3480156102df575f80fd5b506101f86102ee36600461129d565b610b7d565b3480156102fe575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610149565b34801561034e575f80fd5b50610373604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610149919061144f565b34801561038b575f80fd5b506101f861039a366004611484565b610bee565b3480156103aa575f80fd5b5061013f60015481565b3480156103bf575f80fd5b5061013f60025481565b3480156103d4575f80fd5b506101f86103e33660046114be565b610d29565b3480156103f3575f80fd5b506101f861040236600461129d565b610d3c565b348015610412575f80fd5b5060065461032b906001600160a01b031681565b335f90815260046020526040812081836001811115610447576104476114de565b6001811115610458576104586114de565b81526020019081526020015f20549050805f0361048f5760405163bfc6c33760e01b81523360048201526024015b60405180910390fd5b60018260018111156104a3576104a36114de565b1480156104be5750335f9081526020819052604090205460ff165b156104da57335f908152602081905260409020805460ff191690555b600354335f908152600560205260408120908460018111156104fe576104fe6114de565b600181111561050f5761050f6114de565b81526020019081526020015f2054426105289190611506565b101561059557335f9081526005602052604081209083600181111561054f5761054f6114de565b6001811115610560576105606114de565b81526020019081526020015f2054426105799190611506565b60405163fbedc41360e01b815260040161048691815260200190565b335f908152600460205260408120908360018111156105b6576105b66114de565b60018111156105c7576105c76114de565b815260208082019290925260409081015f90812081905533815260059092528120908360018111156105fb576105fb6114de565b600181111561060c5761060c6114de565b81526020019081526020015f205f9055336001600160a01b03167feebfdaadda46c435881bbe8bac1fc3974f3323b1c809c7aabd37ae7b83ca4442836040516106559190611519565b60405180910390a2600654604051636eb1769f60e11b815230600482015233602482018190526001600160a01b039092169163095ea7b3918490849063dd62ed3e90604401602060405180830381865afa1580156106b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d9919061153f565b6106e39190611556565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561072b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f9190611569565b50919050565b61075d610d76565b61076682610e1a565b6107708282610e22565b5050565b5f61077d610ee3565b505f805160206115b383398151915290565b5f61079982610a58565b6001600160a01b0384165f908152600460205260408120908460018111156107c3576107c36114de565b60018111156107d4576107d46114de565b81526020019081526020015f2054101590505b92915050565b6001816001811115610801576108016114de565b0361083757335f9081526020819052604090205460ff1661083757604051636f8bf18b60e11b8152336004820152602401610486565b5f61084182610a58565b905061084d338361078f565b1561086d576040516345ed80e960e01b8152336004820152602401610486565b600654604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa1580156108b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dd919061153f565b10156108fc5760405163356680b760e01b815260040160405180910390fd5b6006546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015610950573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109749190611569565b50335f9081526004602052604081208291846001811115610997576109976114de565b60018111156109a8576109a86114de565b815260208082019290925260409081015f908120939093553383526005909152812042918460018111156109de576109de6114de565b60018111156109ef576109ef6114de565b81526020019081526020015f2081905550336001600160a01b03167f89b4e995568c900aa52376cbed225dc1a013c9a43cb58186d69676ff593d7c4e83604051610a399190611519565b60405180910390a25050565b610a4d610f2c565b610a565f610f87565b565b5f80826001811115610a6c57610a6c6114de565b14610a79576002546107e7565b505060015490565b610a89610f2c565b5f5b8151811015610770575f80838381518110610aa857610aa8611588565b6020908102919091018101516001600160a01b031682528101919091526040015f205460ff16610b755760015f80848481518110610ae857610ae8611588565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff021916908315150217905550818181518110610b3757610b37611588565b60200260200101516001600160a01b03167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a25b600101610a8b565b610b85610f2c565b6001600160a01b0381165f9081526020819052604090205460ff1615610beb576001600160a01b0381165f81815260208190526040808220805460ff19169055517fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df7579190a25b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610c335750825b90505f8267ffffffffffffffff166001148015610c4f5750303b155b905081158015610c5d575080155b15610c7b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ca557845460ff60401b1916600160401b1785555b610cae33610ff7565b600189905560028890556003869055600680546001600160a01b0319166001600160a01b0389161790558315610d1e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610d31610f2c565b600191909155600255565b610d44610f2c565b6001600160a01b038116610d6d57604051631e4fbdf760e01b81525f6004820152602401610486565b610beb81610f87565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610dfc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610df05f805160206115b3833981519152546001600160a01b031690565b6001600160a01b031614155b15610a565760405163703e46dd60e11b815260040160405180910390fd5b610beb610f2c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e7c575060408051601f3d908101601f19168201909252610e799181019061153f565b60015b610ea457604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610486565b5f805160206115b38339815191528114610ed457604051632a87526960e21b815260048101829052602401610486565b610ede8383611008565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a565760405163703e46dd60e11b815260040160405180910390fd5b33610f5e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610a565760405163118cdaa760e01b8152336004820152602401610486565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b610fff61105d565b610beb816110a6565b611011826110ae565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561105557610ede8282611111565b610770611183565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610a5657604051631afcd79f60e31b815260040160405180910390fd5b610d4461105d565b806001600160a01b03163b5f036110e357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610486565b5f805160206115b383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b03168460405161112d919061159c565b5f60405180830381855af49150503d805f8114611165576040519150601f19603f3d011682016040523d82523d5f602084013e61116a565b606091505b509150915061117a8583836111a2565b95945050505050565b3415610a565760405163b398979f60e01b815260040160405180910390fd5b6060826111b7576111b282611201565b6111fa565b81511580156111ce57506001600160a01b0384163b155b156111f757604051639996b31560e01b81526001600160a01b0385166004820152602401610486565b50805b9392505050565b8051156112115780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b803560028110611238575f80fd5b919050565b5f6020828403121561124d575f80fd5b6111fa8261122a565b80356001600160a01b0381168114611238575f80fd5b5f806040838503121561127d575f80fd5b61128683611256565b91506112946020840161122a565b90509250929050565b5f602082840312156112ad575f80fd5b6111fa82611256565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112f3576112f36112b6565b604052919050565b5f806040838503121561130c575f80fd5b61131583611256565b9150602083013567ffffffffffffffff811115611330575f80fd5b8301601f81018513611340575f80fd5b803567ffffffffffffffff81111561135a5761135a6112b6565b61136d601f8201601f19166020016112ca565b818152866020838501011115611381575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f602082840312156113b0575f80fd5b813567ffffffffffffffff8111156113c6575f80fd5b8201601f810184136113d6575f80fd5b803567ffffffffffffffff8111156113f0576113f06112b6565b8060051b611400602082016112ca565b9182526020818401810192908101908784111561141b575f80fd5b6020850194505b838510156114445761143385611256565b825260209485019490910190611422565b979650505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f8060808587031215611497575f80fd5b84359350602085013592506114ae60408601611256565b9396929550929360600135925050565b5f80604083850312156114cf575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156107e7576107e76114f2565b602081016002831061153957634e487b7160e01b5f52602160045260245ffd5b91905290565b5f6020828403121561154f575f80fd5b5051919050565b808201808211156107e7576107e76114f2565b5f60208284031215611579575f80fd5b815180151581146111fa575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a48298e56c99c531cd83e0ebfdb796e8a22fe8b486771f00cc6d4b80071c85a064736f6c634300081a0033", + "nonce": "0x2a6", "chainId": "0x14a34" }, "additionalContracts": [], "isFixedGasLimit": false }, { - "hash": "0x95fe4fb4b9585179ca5b73fa730dfb3e2d9d0222114a2cce9de76669c01519cd", + "hash": "0x238354d482e3738a8c58e5585a0e030280c180a19ac5ea06978b961930946aea", "transactionType": "CREATE", "contractName": "ERC1967Proxy", - "contractAddress": "0x8a218908dbe438bdbc9a2f7301a98fdde7ad5b43", + "contractAddress": "0x4e76835855d5e0a929b8de145552d5ec0d55a757", "function": null, "arguments": [ - "0x063d4337F9F21F0a65f459b0D98a7C94E56A057b", - "0xedbf4ac20000000000000000000000003cbf58a789e8f73d3d0cf6b3099bbb5619ea1d8d000000000000000000000000420000000000000000000000000000000000000600000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000ff" + "0x5Fa8409fc725CF9A9113aA670Be7a7f8BEF381e7", + "0xcf9640b400000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000000000000000000000000000000000e8d4a5100000000000000000000000000042000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000015180" ], "transaction": { "from": "0x2aa47bc684aec9093ab9e85c2cb19052887c1aee", - "gas": "0x86610", + "gas": "0x54baf", "value": "0x0", - "input": "0x60806040526040516103d03803806103d08339810160408190526100229161023c565b61002c8282610033565b5050610321565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610128919061030b565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561024d575f80fd5b82516001600160a01b0381168114610263575f80fd5b60208401519092506001600160401b0381111561027e575f80fd5b8301601f8101851361028e575f80fd5b80516001600160401b038111156102a7576102a7610228565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d5576102d5610228565b6040528181528282016020018710156102ec575f80fd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60a38061032d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea2646970667358221220a4d55b684c34f467fb930e9efd885d5f1979afc6d58475e7108baba091cdfd4964736f6c634300081a0033000000000000000000000000063d4337f9f21f0a65f459b0d98a7c94e56a057b000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000e4edbf4ac20000000000000000000000003cbf58a789e8f73d3d0cf6b3099bbb5619ea1d8d000000000000000000000000420000000000000000000000000000000000000600000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000005af3107a400000000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000ff00000000000000000000000000000000000000000000000000000000", - "nonce": "0x285", + "input": "0x60806040526040516103d03803806103d08339810160408190526100229161023c565b61002c8282610033565b5050610321565b61003c82610091565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561008557610080828261010c565b505050565b61008d61017f565b5050565b806001600160a01b03163b5f036100cb57604051634c9c8ce360e01b81526001600160a01b03821660048201526024015b60405180910390fd5b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051610128919061030b565b5f60405180830381855af49150503d805f8114610160576040519150601f19603f3d011682016040523d82523d5f602084013e610165565b606091505b5090925090506101768583836101a0565b95945050505050565b341561019e5760405163b398979f60e01b815260040160405180910390fd5b565b6060826101b5576101b0826101ff565b6101f8565b81511580156101cc57506001600160a01b0384163b155b156101f557604051639996b31560e01b81526001600160a01b03851660048201526024016100c2565b50805b9392505050565b80511561020f5780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b634e487b7160e01b5f52604160045260245ffd5b5f806040838503121561024d575f80fd5b82516001600160a01b0381168114610263575f80fd5b60208401519092506001600160401b0381111561027e575f80fd5b8301601f8101851361028e575f80fd5b80516001600160401b038111156102a7576102a7610228565b604051601f8201601f19908116603f011681016001600160401b03811182821017156102d5576102d5610228565b6040528181528282016020018710156102ec575f80fd5b8160208401602083015e5f602083830101528093505050509250929050565b5f82518060208501845e5f920191825250919050565b60a38061032d5f395ff3fe6080604052600a600c565b005b60186014601a565b6050565b565b5f604b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b031690565b905090565b365f80375f80365f845af43d5f803e8080156069573d5ff35b3d5ffdfea26469706673582212208c971d67510cacfe0952891c73a7956ccf11eac1ac3615a6ee328260540bef4164736f6c634300081a00330000000000000000000000005fa8409fc725cf9a9113aa670be7a7f8bef381e700000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000084cf9640b400000000000000000000000000000000000000000000000000005af3107a4000000000000000000000000000000000000000000000000000000000e8d4a510000000000000000000000000004200000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000001518000000000000000000000000000000000000000000000000000000000", + "nonce": "0x2a7", "chainId": "0x14a34" }, "additionalContracts": [], @@ -43,104 +43,104 @@ "receipts": [ { "status": "0x1", - "cumulativeGasUsed": "0x50b635", + "cumulativeGasUsed": "0x29fc5c", "logs": [ { - "address": "0x063d4337f9f21f0a65f459b0d98a7c94e56a057b", + "address": "0x5fa8409fc725cf9a9113aa670be7a7f8bef381e7", "topics": [ "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" ], "data": "0x000000000000000000000000000000000000000000000000ffffffffffffffff", - "blockHash": "0xda11db769869c5d5d3c4818895659ba2456fbb42b8a6efc5d2f11a9cffbbdb61", - "blockNumber": "0x127be56", - "transactionHash": "0x8ae3cb33de8b8c9d05f8293282c52ee43d7acb6bab3c1c40932306c64f66c57e", - "transactionIndex": "0x10", - "logIndex": "0x2a", + "blockHash": "0xa74c31dcc964e5c1a5731d0bd64c1fc86a45cf06d2483a0dcb4095e40833ed64", + "blockNumber": "0x12b2d04", + "transactionHash": "0x205d0f0ab32b7fc856a66ec8b626f244f9e34ea4fc95a95776600c49c2dbce2f", + "transactionIndex": "0xb", + "logIndex": "0x1c", "removed": false } ], - "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000008000000000000000000000000", + "logsBloom": "0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000800000000800000800000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000000000000000000000000", "type": "0x2", - "transactionHash": "0x8ae3cb33de8b8c9d05f8293282c52ee43d7acb6bab3c1c40932306c64f66c57e", - "transactionIndex": "0x10", - "blockHash": "0xda11db769869c5d5d3c4818895659ba2456fbb42b8a6efc5d2f11a9cffbbdb61", - "blockNumber": "0x127be56", - "gasUsed": "0x36122e", - "effectiveGasPrice": "0x18848", + "transactionHash": "0x205d0f0ab32b7fc856a66ec8b626f244f9e34ea4fc95a95776600c49c2dbce2f", + "transactionIndex": "0xb", + "blockHash": "0xa74c31dcc964e5c1a5731d0bd64c1fc86a45cf06d2483a0dcb4095e40833ed64", + "blockNumber": "0x12b2d04", + "gasUsed": "0x13d179", + "effectiveGasPrice": "0x187d7", "from": "0x2aa47bc684aec9093ab9e85c2cb19052887c1aee", "to": null, - "contractAddress": "0x063d4337f9f21f0a65f459b0d98a7c94e56a057b", + "contractAddress": "0x5fa8409fc725cf9a9113aa670be7a7f8bef381e7", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x1", + "l1BlobBaseFee": "0x1309423560", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x244ec64217dd", - "l1GasPrice": "0x3ddb68c034", - "l1GasUsed": "0x2151d" + "l1Fee": "0xa29d90c14268", + "l1GasPrice": "0x13d3ca4f7", + "l1GasUsed": "0xcec6" }, { "status": "0x1", - "cumulativeGasUsed": "0x572c1a", + "cumulativeGasUsed": "0x2e0f32", "logs": [ { - "address": "0x8a218908dbe438bdbc9a2f7301a98fdde7ad5b43", + "address": "0x4e76835855d5e0a929b8de145552d5ec0d55a757", "topics": [ "0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b", - "0x000000000000000000000000063d4337f9f21f0a65f459b0d98a7c94e56a057b" + "0x0000000000000000000000005fa8409fc725cf9a9113aa670be7a7f8bef381e7" ], "data": "0x", - "blockHash": "0xda11db769869c5d5d3c4818895659ba2456fbb42b8a6efc5d2f11a9cffbbdb61", - "blockNumber": "0x127be56", - "transactionHash": "0x95fe4fb4b9585179ca5b73fa730dfb3e2d9d0222114a2cce9de76669c01519cd", - "transactionIndex": "0x11", - "logIndex": "0x2b", + "blockHash": "0xa74c31dcc964e5c1a5731d0bd64c1fc86a45cf06d2483a0dcb4095e40833ed64", + "blockNumber": "0x12b2d04", + "transactionHash": "0x238354d482e3738a8c58e5585a0e030280c180a19ac5ea06978b961930946aea", + "transactionIndex": "0xc", + "logIndex": "0x1d", "removed": false }, { - "address": "0x8a218908dbe438bdbc9a2f7301a98fdde7ad5b43", + "address": "0x4e76835855d5e0a929b8de145552d5ec0d55a757", "topics": [ "0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0", "0x0000000000000000000000000000000000000000000000000000000000000000", "0x0000000000000000000000002aa47bc684aec9093ab9e85c2cb19052887c1aee" ], "data": "0x", - "blockHash": "0xda11db769869c5d5d3c4818895659ba2456fbb42b8a6efc5d2f11a9cffbbdb61", - "blockNumber": "0x127be56", - "transactionHash": "0x95fe4fb4b9585179ca5b73fa730dfb3e2d9d0222114a2cce9de76669c01519cd", - "transactionIndex": "0x11", - "logIndex": "0x2c", + "blockHash": "0xa74c31dcc964e5c1a5731d0bd64c1fc86a45cf06d2483a0dcb4095e40833ed64", + "blockNumber": "0x12b2d04", + "transactionHash": "0x238354d482e3738a8c58e5585a0e030280c180a19ac5ea06978b961930946aea", + "transactionIndex": "0xc", + "logIndex": "0x1e", "removed": false }, { - "address": "0x8a218908dbe438bdbc9a2f7301a98fdde7ad5b43", + "address": "0x4e76835855d5e0a929b8de145552d5ec0d55a757", "topics": [ "0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2" ], "data": "0x0000000000000000000000000000000000000000000000000000000000000001", - "blockHash": "0xda11db769869c5d5d3c4818895659ba2456fbb42b8a6efc5d2f11a9cffbbdb61", - "blockNumber": "0x127be56", - "transactionHash": "0x95fe4fb4b9585179ca5b73fa730dfb3e2d9d0222114a2cce9de76669c01519cd", - "transactionIndex": "0x11", - "logIndex": "0x2d", + "blockHash": "0xa74c31dcc964e5c1a5731d0bd64c1fc86a45cf06d2483a0dcb4095e40833ed64", + "blockNumber": "0x12b2d04", + "transactionHash": "0x238354d482e3738a8c58e5585a0e030280c180a19ac5ea06978b961930946aea", + "transactionIndex": "0xc", + "logIndex": "0x1f", "removed": false } ], - "logsBloom": "0x00000040000000000000000000000000400000000000000000800000000000000000000000010000000000000000000000000000000000000000000000000000000000000400000000000000000002000003000000000020000800000000000000000000020000000000000000000800000000000001000000000000100000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000001000020000000000000000000000000000000000004000000000000000020000000000000000000000000000000000000000000000000000000000000000000", + "logsBloom": "0x00000040000000000000000000000000400000000000000000800000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000002000001000020000000000000000000000000000000020000000000000000000800000000000000040000000400100000400000000000000000000800000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000000001000020000000000000000000000000000000004004000000000000000020000000000000000000000000000000000000000000000000000002000000000000", "type": "0x2", - "transactionHash": "0x95fe4fb4b9585179ca5b73fa730dfb3e2d9d0222114a2cce9de76669c01519cd", - "transactionIndex": "0x11", - "blockHash": "0xda11db769869c5d5d3c4818895659ba2456fbb42b8a6efc5d2f11a9cffbbdb61", - "blockNumber": "0x127be56", - "gasUsed": "0x675e5", - "effectiveGasPrice": "0x18848", + "transactionHash": "0x238354d482e3738a8c58e5585a0e030280c180a19ac5ea06978b961930946aea", + "transactionIndex": "0xc", + "blockHash": "0xa74c31dcc964e5c1a5731d0bd64c1fc86a45cf06d2483a0dcb4095e40833ed64", + "blockNumber": "0x12b2d04", + "gasUsed": "0x412d6", + "effectiveGasPrice": "0x187d7", "from": "0x2aa47bc684aec9093ab9e85c2cb19052887c1aee", "to": null, - "contractAddress": "0x8a218908dbe438bdbc9a2f7301a98fdde7ad5b43", + "contractAddress": "0x4e76835855d5e0a929b8de145552d5ec0d55a757", "l1BaseFeeScalar": "0x44d", - "l1BlobBaseFee": "0x1", + "l1BlobBaseFee": "0x1309423560", "l1BlobBaseFeeScalar": "0xa118b", - "l1Fee": "0x38f9857943b", - "l1GasPrice": "0x3ddb68c034", - "l1GasUsed": "0x3449" + "l1Fee": "0x27f7cdeec291", + "l1GasPrice": "0x13d3ca4f7", + "l1GasUsed": "0x32d2" } ], "libraries": [], @@ -148,14 +148,14 @@ "returns": { "proxy": { "internal_type": "address", - "value": "0x8A218908DBe438BDbc9a2f7301A98fDdE7Ad5b43" + "value": "0x4E76835855D5e0a929B8De145552d5ec0d55A757" }, "impl": { "internal_type": "address", - "value": "0x063d4337F9F21F0a65f459b0D98a7C94E56A057b" + "value": "0x5Fa8409fc725CF9A9113aA670Be7a7f8BEF381e7" } }, - "timestamp": 1734532014, + "timestamp": 1734981864, "chain": 84532, - "commit": "a6520b3" + "commit": "45b119b" } \ No newline at end of file diff --git a/deployments/.gitignore b/deployments/.gitignore index e6a0926..0960d0a 100644 --- a/deployments/.gitignore +++ b/deployments/.gitignore @@ -1 +1 @@ -31337.json +31337/ diff --git a/deployments/abis/LLMOracleCoordinator.abi.json b/deployments/abis/LLMOracleCoordinator.abi.json deleted file mode 100644 index ff2af93..0000000 --- a/deployments/abis/LLMOracleCoordinator.abi.json +++ /dev/null @@ -1,1195 +0,0 @@ -[ - { - "type": "constructor", - "inputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "UPGRADE_INTERFACE_VERSION", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "string", - "internalType": "string" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "feeToken", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "contract ERC20" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "generationDeviationFactor", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint64", - "internalType": "uint64" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "generationFee", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getBestResponse", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "", - "type": "tuple", - "internalType": "struct LLMOracleTask.TaskResponse", - "components": [ - { - "name": "responder", - "type": "address", - "internalType": "address" - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "score", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "output", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ] - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getFee", - "inputs": [ - { - "name": "parameters", - "type": "tuple", - "internalType": "struct LLMOracleTaskParameters", - "components": [ - { - "name": "difficulty", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "numGenerations", - "type": "uint40", - "internalType": "uint40" - }, - { - "name": "numValidations", - "type": "uint40", - "internalType": "uint40" - } - ] - } - ], - "outputs": [ - { - "name": "totalFee", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "generatorFee", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "validatorFee", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getResponses", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "", - "type": "tuple[]", - "internalType": "struct LLMOracleTask.TaskResponse[]", - "components": [ - { - "name": "responder", - "type": "address", - "internalType": "address" - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "score", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "output", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ] - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getValidations", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "", - "type": "tuple[]", - "internalType": "struct LLMOracleTask.TaskValidation[]", - "components": [ - { - "name": "validator", - "type": "address", - "internalType": "address" - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "scores", - "type": "uint256[]", - "internalType": "uint256[]" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ] - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "initialize", - "inputs": [ - { - "name": "_oracleRegistry", - "type": "address", - "internalType": "address" - }, - { - "name": "_feeToken", - "type": "address", - "internalType": "address" - }, - { - "name": "_platformFee", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_generationFee", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_validationFee", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_minScore", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_maxScore", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "maxScore", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "maximumParameters", - "inputs": [], - "outputs": [ - { - "name": "difficulty", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "numGenerations", - "type": "uint40", - "internalType": "uint40" - }, - { - "name": "numValidations", - "type": "uint40", - "internalType": "uint40" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "minScore", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "minimumParameters", - "inputs": [], - "outputs": [ - { - "name": "difficulty", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "numGenerations", - "type": "uint40", - "internalType": "uint40" - }, - { - "name": "numValidations", - "type": "uint40", - "internalType": "uint40" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "nextTaskId", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "owner", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "platformFee", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "platformFeeBalance", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "proxiableUUID", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "registry", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "contract LLMOracleRegistry" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "renounceOwnership", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "request", - "inputs": [ - { - "name": "protocol", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "input", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "models", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "parameters", - "type": "tuple", - "internalType": "struct LLMOracleTaskParameters", - "components": [ - { - "name": "difficulty", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "numGenerations", - "type": "uint40", - "internalType": "uint40" - }, - { - "name": "numValidations", - "type": "uint40", - "internalType": "uint40" - } - ] - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "requests", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "requester", - "type": "address", - "internalType": "address" - }, - { - "name": "protocol", - "type": "bytes32", - "internalType": "bytes32" - }, - { - "name": "parameters", - "type": "tuple", - "internalType": "struct LLMOracleTaskParameters", - "components": [ - { - "name": "difficulty", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "numGenerations", - "type": "uint40", - "internalType": "uint40" - }, - { - "name": "numValidations", - "type": "uint40", - "internalType": "uint40" - } - ] - }, - { - "name": "status", - "type": "uint8", - "internalType": "enum LLMOracleTask.TaskStatus" - }, - { - "name": "generatorFee", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "validatorFee", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "platformFee", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "input", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "models", - "type": "bytes", - "internalType": "bytes" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "respond", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "output", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "responses", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "responder", - "type": "address", - "internalType": "address" - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "score", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "output", - "type": "bytes", - "internalType": "bytes" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "setFees", - "inputs": [ - { - "name": "_platformFee", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_generationFee", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_validationFee", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setGenerationDeviationFactor", - "inputs": [ - { - "name": "_generationDeviationFactor", - "type": "uint64", - "internalType": "uint64" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setParameters", - "inputs": [ - { - "name": "minimums", - "type": "tuple", - "internalType": "struct LLMOracleTaskParameters", - "components": [ - { - "name": "difficulty", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "numGenerations", - "type": "uint40", - "internalType": "uint40" - }, - { - "name": "numValidations", - "type": "uint40", - "internalType": "uint40" - } - ] - }, - { - "name": "maximums", - "type": "tuple", - "internalType": "struct LLMOracleTaskParameters", - "components": [ - { - "name": "difficulty", - "type": "uint8", - "internalType": "uint8" - }, - { - "name": "numGenerations", - "type": "uint40", - "internalType": "uint40" - }, - { - "name": "numValidations", - "type": "uint40", - "internalType": "uint40" - } - ] - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "transferOwnership", - "inputs": [ - { - "name": "newOwner", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "upgradeToAndCall", - "inputs": [ - { - "name": "newImplementation", - "type": "address", - "internalType": "address" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "validate", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "scores", - "type": "uint256[]", - "internalType": "uint256[]" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "validationFee", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "validations", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [ - { - "name": "validator", - "type": "address", - "internalType": "address" - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "metadata", - "type": "bytes", - "internalType": "bytes" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "withdrawPlatformFees", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "event", - "name": "Initialized", - "inputs": [ - { - "name": "version", - "type": "uint64", - "indexed": false, - "internalType": "uint64" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "OwnershipTransferred", - "inputs": [ - { - "name": "previousOwner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "newOwner", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Request", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "indexed": true, - "internalType": "uint256" - }, - { - "name": "requester", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "protocol", - "type": "bytes32", - "indexed": true, - "internalType": "bytes32" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Response", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "indexed": true, - "internalType": "uint256" - }, - { - "name": "responder", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "StatusUpdate", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "indexed": true, - "internalType": "uint256" - }, - { - "name": "protocol", - "type": "bytes32", - "indexed": true, - "internalType": "bytes32" - }, - { - "name": "statusBefore", - "type": "uint8", - "indexed": false, - "internalType": "enum LLMOracleTask.TaskStatus" - }, - { - "name": "statusAfter", - "type": "uint8", - "indexed": false, - "internalType": "enum LLMOracleTask.TaskStatus" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Upgraded", - "inputs": [ - { - "name": "implementation", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Validation", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "indexed": true, - "internalType": "uint256" - }, - { - "name": "validator", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "error", - "name": "AddressEmptyCode", - "inputs": [ - { - "name": "target", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "AlreadyResponded", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "oracle", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "ComputeError", - "inputs": [] - }, - { - "type": "error", - "name": "ERC1967InvalidImplementation", - "inputs": [ - { - "name": "implementation", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "ERC1967NonPayable", - "inputs": [] - }, - { - "type": "error", - "name": "FailedCall", - "inputs": [] - }, - { - "type": "error", - "name": "InsufficientFees", - "inputs": [ - { - "name": "have", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "want", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "InvalidInitialization", - "inputs": [] - }, - { - "type": "error", - "name": "InvalidInput", - "inputs": [] - }, - { - "type": "error", - "name": "InvalidNonce", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "nonce", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "InvalidParameterRange", - "inputs": [ - { - "name": "have", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "min", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "max", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "InvalidTaskStatus", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "have", - "type": "uint8", - "internalType": "enum LLMOracleTask.TaskStatus" - }, - { - "name": "want", - "type": "uint8", - "internalType": "enum LLMOracleTask.TaskStatus" - } - ] - }, - { - "type": "error", - "name": "InvalidValidation", - "inputs": [ - { - "name": "taskId", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "validator", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "NotInitializing", - "inputs": [] - }, - { - "type": "error", - "name": "NotRegistered", - "inputs": [ - { - "name": "oracle", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "NotWhitelisted", - "inputs": [ - { - "name": "validator", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "OwnableInvalidOwner", - "inputs": [ - { - "name": "owner", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "OwnableUnauthorizedAccount", - "inputs": [ - { - "name": "account", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "UUPSUnauthorizedCallContext", - "inputs": [] - }, - { - "type": "error", - "name": "UUPSUnsupportedProxiableUUID", - "inputs": [ - { - "name": "slot", - "type": "bytes32", - "internalType": "bytes32" - } - ] - } -] \ No newline at end of file diff --git a/deployments/abis/LLMOracleCoordinator.json b/deployments/abis/LLMOracleCoordinator.json index d3df830..f0b8132 100644 --- a/deployments/abis/LLMOracleCoordinator.json +++ b/deployments/abis/LLMOracleCoordinator.json @@ -1 +1,1195 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"feeToken","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ERC20"}],"stateMutability":"view"},{"type":"function","name":"generationDeviationFactor","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"generationFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getBestResponse","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct LLMOracleTask.TaskResponse","components":[{"name":"responder","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"score","type":"uint256","internalType":"uint256"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"metadata","type":"bytes","internalType":"bytes"}]}],"stateMutability":"view"},{"type":"function","name":"getFee","inputs":[{"name":"parameters","type":"tuple","internalType":"struct LLMOracleTaskParameters","components":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}]}],"outputs":[{"name":"totalFee","type":"uint256","internalType":"uint256"},{"name":"generatorFee","type":"uint256","internalType":"uint256"},{"name":"validatorFee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getResponses","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct LLMOracleTask.TaskResponse[]","components":[{"name":"responder","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"score","type":"uint256","internalType":"uint256"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"metadata","type":"bytes","internalType":"bytes"}]}],"stateMutability":"view"},{"type":"function","name":"getValidations","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct LLMOracleTask.TaskValidation[]","components":[{"name":"validator","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"scores","type":"uint256[]","internalType":"uint256[]"},{"name":"metadata","type":"bytes","internalType":"bytes"}]}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_oracleRegistry","type":"address","internalType":"address"},{"name":"_feeToken","type":"address","internalType":"address"},{"name":"_platformFee","type":"uint256","internalType":"uint256"},{"name":"_generationFee","type":"uint256","internalType":"uint256"},{"name":"_validationFee","type":"uint256","internalType":"uint256"},{"name":"_minScore","type":"uint256","internalType":"uint256"},{"name":"_maxScore","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"maxScore","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"maximumParameters","inputs":[],"outputs":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}],"stateMutability":"view"},{"type":"function","name":"minScore","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"minimumParameters","inputs":[],"outputs":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}],"stateMutability":"view"},{"type":"function","name":"nextTaskId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"platformFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"platformFeeBalance","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"registry","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract LLMOracleRegistry"}],"stateMutability":"view"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"request","inputs":[{"name":"protocol","type":"bytes32","internalType":"bytes32"},{"name":"input","type":"bytes","internalType":"bytes"},{"name":"models","type":"bytes","internalType":"bytes"},{"name":"parameters","type":"tuple","internalType":"struct LLMOracleTaskParameters","components":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}]}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"requests","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"requester","type":"address","internalType":"address"},{"name":"protocol","type":"bytes32","internalType":"bytes32"},{"name":"parameters","type":"tuple","internalType":"struct LLMOracleTaskParameters","components":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}]},{"name":"status","type":"uint8","internalType":"enum LLMOracleTask.TaskStatus"},{"name":"generatorFee","type":"uint256","internalType":"uint256"},{"name":"validatorFee","type":"uint256","internalType":"uint256"},{"name":"platformFee","type":"uint256","internalType":"uint256"},{"name":"input","type":"bytes","internalType":"bytes"},{"name":"models","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"respond","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"metadata","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"responses","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"responder","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"score","type":"uint256","internalType":"uint256"},{"name":"output","type":"bytes","internalType":"bytes"},{"name":"metadata","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"setFees","inputs":[{"name":"_platformFee","type":"uint256","internalType":"uint256"},{"name":"_generationFee","type":"uint256","internalType":"uint256"},{"name":"_validationFee","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setGenerationDeviationFactor","inputs":[{"name":"_generationDeviationFactor","type":"uint64","internalType":"uint64"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setParameters","inputs":[{"name":"minimums","type":"tuple","internalType":"struct LLMOracleTaskParameters","components":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}]},{"name":"maximums","type":"tuple","internalType":"struct LLMOracleTaskParameters","components":[{"name":"difficulty","type":"uint8","internalType":"uint8"},{"name":"numGenerations","type":"uint40","internalType":"uint40"},{"name":"numValidations","type":"uint40","internalType":"uint40"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"validate","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"scores","type":"uint256[]","internalType":"uint256[]"},{"name":"metadata","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"validationFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"validations","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"validator","type":"address","internalType":"address"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"metadata","type":"bytes","internalType":"bytes"}],"stateMutability":"view"},{"type":"function","name":"withdrawPlatformFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Request","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"requester","type":"address","indexed":true,"internalType":"address"},{"name":"protocol","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"Response","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"responder","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"StatusUpdate","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"protocol","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"statusBefore","type":"uint8","indexed":false,"internalType":"enum LLMOracleTask.TaskStatus"},{"name":"statusAfter","type":"uint8","indexed":false,"internalType":"enum LLMOracleTask.TaskStatus"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Validation","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"validator","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyResponded","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"oracle","type":"address","internalType":"address"}]},{"type":"error","name":"ComputeError","inputs":[]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientFees","inputs":[{"name":"have","type":"uint256","internalType":"uint256"},{"name":"want","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"InvalidInput","inputs":[]},{"type":"error","name":"InvalidNonce","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidParameterRange","inputs":[{"name":"have","type":"uint256","internalType":"uint256"},{"name":"min","type":"uint256","internalType":"uint256"},{"name":"max","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"InvalidTaskStatus","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"have","type":"uint8","internalType":"enum LLMOracleTask.TaskStatus"},{"name":"want","type":"uint8","internalType":"enum LLMOracleTask.TaskStatus"}]},{"type":"error","name":"InvalidValidation","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"validator","type":"address","internalType":"address"}]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotRegistered","inputs":[{"name":"oracle","type":"address","internalType":"address"}]},{"type":"error","name":"NotWhitelisted","inputs":[{"name":"validator","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051613e966100f95f395f81816122d4015281816122fd01526124410152613e965ff3fe6080604052600436106101e5575f3560e01c806381d12c5811610108578063cec10c111161009d578063e9ca8b461161006d578063e9ca8b461461060b578063edbf4ac21461062a578063f2fde38b14610649578063f8bbf27e14610668578063fdc3d8d71461067d575f80fd5b8063cec10c11146105a4578063d0b7830b146105c3578063e3c98ba0146105d7578063e76aec11146105ec575f80fd5b8063b13fc8f4116100d8578063b13fc8f4146104f5578063b584e6171461052f578063b84b8ac71461054e578063ca287c351461056d575f80fd5b806381d12c581461045b5780638da5cb5b1461048f5780639a1b4b38146104a3578063ad3cb1cc146104b8575f80fd5b80634b5a82d11161017e5780636b4d5bfc1161014e5780636b4d5bfc146103dd578063715018a6146103fc57806371ee2ce1146104105780637b1039991461043c575f80fd5b80634b5a82d11461034f5780634f1ef2861461037d57806352d1902d14610392578063647846a5146103a6575f80fd5b806326232a2e116101b957806326232a2e146102b25780632bafb614146102c657806332f77659146102f7578063434dbaee14610323575f80fd5b806257efc2146101e95780630566f18a1461022257806313c2bedc146102455780631da7bc9a1461025a575b5f80fd5b3480156101f4575f80fd5b506102086102033660046131f2565b610692565b604051610219959493929190613240565b60405180910390f35b34801561022d575f80fd5b5061023760015481565b604051908152602001610219565b348015610250575f80fd5b5061023760065481565b348015610265575f80fd5b5060055461028b9060ff81169064ffffffffff6101008204811691600160301b90041683565b6040805160ff909416845264ffffffffff9283166020850152911690820152606001610219565b3480156102bd575f80fd5b506102375f5481565b3480156102d1575f80fd5b5060045461028b9060ff81169064ffffffffff6101008204811691600160301b90041683565b348015610302575f80fd5b5061031661031136600461328a565b6107f4565b60405161021991906132f4565b34801561032e575f80fd5b5061034261033d36600461328a565b610aaa565b6040516102199190613306565b34801561035a575f80fd5b5061036e6103693660046131f2565b610c12565b604051610219939291906133da565b61039061038b3660046134c1565b610ce2565b005b34801561039d575f80fd5b50610237610d01565b3480156103b1575f80fd5b506009546103c5906001600160a01b031681565b6040516001600160a01b039091168152602001610219565b3480156103e8575f80fd5b506103906103f7366004613548565b610d1c565b348015610407575f80fd5b50610390611263565b34801561041b575f80fd5b5061042f61042a36600461328a565b611276565b60405161021991906135f9565b348015610447575f80fd5b506008546103c5906001600160a01b031681565b348015610466575f80fd5b5061047a61047536600461328a565b611424565b60405161021999989796959493929190613678565b34801561049a575f80fd5b506103c56115c4565b3480156104ae575f80fd5b5061023760075481565b3480156104c3575f80fd5b506104e8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102199190613710565b348015610500575f80fd5b5061051461050f366004613738565b6115f2565b60408051938452602084019290925290820152606001610219565b34801561053a575f80fd5b50610390610549366004613752565b61168f565b348015610559575f80fd5b506103906105683660046137b4565b611a63565b348015610578575f80fd5b5060035461058c906001600160401b031681565b6040516001600160401b039091168152602001610219565b3480156105af575f80fd5b506103906105be3660046137e7565b611a8e565b3480156105ce575f80fd5b50610390611aa3565b3480156105e2575f80fd5b50610237600e5481565b3480156105f7575f80fd5b50610237610606366004613810565b611b3a565b348015610616575f80fd5b5061039061062536600461388d565b61210e565b348015610635575f80fd5b506103906106443660046138b3565b612139565b348015610654575f80fd5b5061039061066336600461390c565b61228c565b348015610673575f80fd5b5061023760025481565b348015610688575f80fd5b50610237600a5481565b600c602052815f5260405f2081815481106106ab575f80fd5b5f91825260209091206005909102018054600182015460028301546003840180546001600160a01b03909416965091945092916106e790613925565b80601f016020809104026020016040519081016040528092919081815260200182805461071390613925565b801561075e5780601f106107355761010080835404028352916020019161075e565b820191905f5260205f20905b81548152906001019060200180831161074157829003601f168201915b50505050509080600401805461077390613925565b80601f016020809104026020016040519081016040528092919081815260200182805461079f90613925565b80156107ea5780601f106107c1576101008083540402835291602001916107ea565b820191905f5260205f20905b8154815290600101906020018083116107cd57829003601f168201915b5050505050905085565b61082c6040518060a001604052805f6001600160a01b031681526020015f81526020015f815260200160608152602001606081525090565b5f828152600c60209081526040808320600b90925290912060039081015460ff168181111561085d5761085d613650565b146108a0575f838152600b602052604090819020600390810154915163091e2f1760e31b815261089792869260ff90911691600401613957565b60405180910390fd5b5f815f815481106108b3576108b3613980565b5f9182526020909120600590910201600281015490915060015b835481101561094c57818482815481106108e9576108e9613980565b905f5260205f2090600502016002015411156109445783818154811061091157610911613980565b905f5260205f20906005020160020154915083818154811061093557610935613980565b905f5260205f20906005020192505b6001016108cd565b506040805160a08101825283546001600160a01b03168152600184015460208201526002840154918101919091526003830180548491606084019161099090613925565b80601f01602080910402602001604051908101604052809291908181526020018280546109bc90613925565b8015610a075780601f106109de57610100808354040283529160200191610a07565b820191905f5260205f20905b8154815290600101906020018083116109ea57829003601f168201915b50505050508152602001600482018054610a2090613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90613925565b8015610a975780601f10610a6e57610100808354040283529160200191610a97565b820191905f5260205f20905b815481529060010190602001808311610a7a57829003601f168201915b5050505050815250509350505050919050565b6060600d5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c07575f848152602090819020604080516080810182526004860290920180546001600160a01b031683526001810154838501526002810180548351818702810187018552818152949592949386019392830182828015610b5f57602002820191905f5260205f20905b815481526020019060010190808311610b4b575b50505050508152602001600382018054610b7890613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba490613925565b8015610bef5780601f10610bc657610100808354040283529160200191610bef565b820191905f5260205f20905b815481529060010190602001808311610bd257829003601f168201915b50505050508152505081526020019060010190610adc565b505050509050919050565b600d602052815f5260405f208181548110610c2b575f80fd5b5f9182526020909120600490910201805460018201546003830180546001600160a01b03909316955090935090610c6190613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8d90613925565b8015610cd85780601f10610caf57610100808354040283529160200191610cd8565b820191905f5260205f20905b815481529060010190602001808311610cbb57829003601f168201915b5050505050905083565b610cea6122c9565b610cf38261236d565b610cfd8282612375565b5050565b5f610d0a612436565b505f80516020613e4183398151915290565b600854604051635f5b248b60e01b81526001916001600160a01b031690635f5b248b90610d4f9033908590600401613994565b602060405180830381865afa158015610d6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8e91906139c1565b610dad5760405163bfc6c33760e01b8152336004820152602401610897565b866002805f838152600b6020526040902060039081015460ff1690811115610dd757610dd7613650565b14610e11575f828152600b60205260409081902060030154905163091e2f1760e31b815261089791849160ff909116908490600401613957565b600854604051633af32abf60e01b81523360048201819052916001600160a01b031690633af32abf90602401602060405180830381865afa158015610e58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7c91906139c1565b610ea457604051636f8bf18b60e11b81526001600160a01b0382166004820152602401610897565b5f8a8152600b602052604090206002810154610100900464ffffffffff168814610eea576040516355c56a4560e11b8152600481018c9052336024820152604401610897565b5f5b88811015610f8c576007548a8a83818110610f0957610f09613980565b905060200201351180610f3557506006548a8a83818110610f2c57610f2c613980565b90506020020135105b15610f8457898982818110610f4c57610f4c613980565b6007546006546040516371a6675960e11b81526020909302949094013560048301526024820152604481019290925250606401610897565b600101610eec565b505f5b6002820154610100900464ffffffffff16811015611011575f8c8152600c60205260409020805433919083908110610fc957610fc9613980565b5f9182526020909120600590910201546001600160a01b031603611009576040516301011bf360e71b8152600481018d9052336024820152604401610897565b600101610f8f565b505f5b5f8c8152600d6020526040902054811015611093575f8c8152600d6020526040902080543391908390811061104b5761104b613980565b5f9182526020909120600490910201546001600160a01b03160361108b576040516301011bf360e71b8152600481018d9052336024820152604401610897565b600101611014565b5061109f8b828c61247f565b600d5f8c81526020019081526020015f206040518060800160405280336001600160a01b031681526020018c81526020018b8b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250505090825250604080516020601f8c018190048102820181019092528a815291810191908b908b90819084018382808284375f920182905250939094525050835460018082018655948252602091829020845160049092020180546001600160a01b0319166001600160a01b0390921691909117815583820151948101949094556040830151805193949361119e935060028501929190910190613195565b50606082015160038201906111b39082613a2b565b50506040513391508c907fa1afe65d2285036595be8f15025c4421a593141666e15e5a980e742920646b1e905f90a360028101545f8c8152600d6020526040902054600160301b90910464ffffffffff16148015611255576003828101805460ff1916600183021790555081600101548c5f80516020613e2183398151915260026003604051611244929190613ae5565b60405180910390a36112558c6124f8565b505050505050505050505050565b61126b612912565b6112745f612944565b565b6060600c5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c07575f8481526020908190206040805160a0810182526005860290920180546001600160a01b0316835260018101549383019390935260028301549082015260038201805491929160608401919061130590613925565b80601f016020809104026020016040519081016040528092919081815260200182805461133190613925565b801561137c5780601f106113535761010080835404028352916020019161137c565b820191905f5260205f20905b81548152906001019060200180831161135f57829003601f168201915b5050505050815260200160048201805461139590613925565b80601f01602080910402602001604051908101604052809291908181526020018280546113c190613925565b801561140c5780601f106113e35761010080835404028352916020019161140c565b820191905f5260205f20905b8154815290600101906020018083116113ef57829003601f168201915b505050505081525050815260200190600101906112a8565b600b60209081525f918252604091829020805460018201548451606081018652600284015460ff808216835264ffffffffff6101008304811697840197909752600160301b9091049095169581019590955260038301546004840154600585015460068601546007870180546001600160a01b03909716999598959794909516959294919390929091906114b790613925565b80601f01602080910402602001604051908101604052809291908181526020018280546114e390613925565b801561152e5780601f106115055761010080835404028352916020019161152e565b820191905f5260205f20905b81548152906001019060200180831161151157829003601f168201915b50505050509080600801805461154390613925565b80601f016020809104026020016040519081016040528092919081815260200182805461156f90613925565b80156115ba5780601f10611591576101008083540402835291602001916115ba565b820191905f5260205f20905b81548152906001019060200180831161159d57829003601f168201915b5050505050905089565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f8080806116036020860186613b0e565b60ff166002901b90506001548161161a9190613b3d565b92506002548161162a9190613b3d565b91508161163d6060870160408801613b66565b64ffffffffff1661164e9190613b3d565b6116589084613b81565b6116686040870160208801613b66565b64ffffffffff166116799190613b3d565b5f546116859190613b81565b9350509193909250565b600854604051635f5b248b60e01b81525f916001600160a01b031690635f5b248b906116c19033908590600401613994565b602060405180830381865afa1580156116dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170091906139c1565b61171f5760405163bfc6c33760e01b8152336004820152602401610897565b866001805f838152600b6020526040902060039081015460ff169081111561174957611749613650565b14611783575f828152600b60205260409081902060030154905163091e2f1760e31b815261089791849160ff909116908490600401613957565b5f898152600b60205260408120905b5f8b8152600c6020526040902054811015611811575f8b8152600c602052604090208054339190839081106117c9576117c9613980565b5f9182526020909120600590910201546001600160a01b031603611809576040516301011bf360e71b8152600481018c9052336024820152604401610897565b600101611792565b5061181d8a828b61247f565b5f6040518060a00160405280336001600160a01b031681526020018b81526020015f81526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a90819084018382808284375f9201829052509390945250508d8152600c6020908152604080832080546001808201835591855293839020865160059095020180546001600160a01b0319166001600160a01b03909516949094178455918501519183019190915583015160028201556060830151929350839290915060038201906119289082613a2b565b506080820151600482019061193d9082613a2b565b50506040513391508c907f6c809136a3b8faf74ae9e955b7e7b758baa66bde976764a29fa74a4eb1e3702e905f90a36002820154600160301b900464ffffffffff165f03611993576119933383600401546129b4565b60028201545f8c8152600c602052604090205461010090910464ffffffffff16148015611255576002830154600160301b900464ffffffffff165f03611a15576003838101805460ff19168217905560018085015460405190928f925f80516020613e2183398151915292611a089290613ae5565b60405180910390a3611255565b60038301805460ff1916600290811790915560018085015460405190928f925f80516020613e2183398151915292611a4d9290613ae5565b60405180910390a3505050505050505050505050565b611a6b612912565b816004611a788282613b94565b508190506005611a888282613b94565b50505050565b611a96612912565b5f92909255600155600255565b611aab612912565b6009546001600160a01b031663a9059cbb611ac46115c4565b600e546040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611b0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3391906139c1565b505f600e55565b6004545f90829060ff16611b516020830183613b0e565b60ff161080611b73575060055460ff16611b6e6020830183613b0e565b60ff16115b15611bbe57611b856020820182613b0e565b600480546005546040516371a6675960e11b815260ff948516938101939093529083166024830152919091166044820152606401610897565b600454610100900464ffffffffff16611bdd6040830160208401613b66565b64ffffffffff161080611c135750600554610100900464ffffffffff16611c0a6040830160208401613b66565b64ffffffffff16115b15611c6b57611c286040820160208301613b66565b600480546005546040516371a6675960e11b815264ffffffffff948516938101939093526101009182900484166024840152049091166044820152606401610897565b600454600160301b900464ffffffffff16611c8c6060830160408401613b66565b64ffffffffff161080611cc45750600554600160301b900464ffffffffff16611cbb6060830160408401613b66565b64ffffffffff16115b15611d1e57611cd96060820160408301613b66565b600480546005546040516371a6675960e11b815264ffffffffff94851693810193909352600160301b9182900484166024840152049091166044820152606401610897565b5f805f611d2a866115f2565b92509250925087515f03611d515760405163b4fa3fb360e01b815260040160405180910390fd5b600954604051636eb1769f60e11b81523360048201523060248201525f916001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015611d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc19190613c19565b905083811015611dee576040516311e9ebaf60e31b81526004810182905260248101859052604401610897565b6009546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e589190613c19565b905084811015611e85576040516311e9ebaf60e31b81526004810182905260248101869052604401610897565b5f54600e5f828254611e979190613b81565b90915550506009546040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015611ef0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1491906139c1565b50600a8054600181019091556040518c90339083907f7f371482986a3450b759cc4a079353a8eaa36a650b5eba1fb9c00693026f254a905f90a46040805161012081018252338152602081018e9052908101611f75368c90038c018c613c30565b8152602001600181526020018681526020018581526020015f5481526020018c81526020018b815250600b5f8381526020019081526020015f205f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101556040820151816002015f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548164ffffffffff021916908364ffffffffff1602179055506040820151815f0160066101000a81548164ffffffffff021916908364ffffffffff16021790555050506060820151816003015f6101000a81548160ff0219169083600381111561208557612085613650565b02179055506080820151600482015560a0820151600582015560c0820151600682015560e082015160078201906120bc9082613a2b565b5061010082015160088201906120d29082613a2b565b509050508b815f80516020613e218339815191525f60016040516120f7929190613ae5565b60405180910390a39b9a5050505050505050505050565b612116612912565b6003805467ffffffffffffffff19166001600160401b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561217d5750825b90505f826001600160401b031660011480156121985750303b155b9050811580156121a6575080155b156121c45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156121ee57845460ff60401b1916600160401b1785555b6121f733612aa8565b6122048a8a8a8a8a612ab9565b600880546001600160a01b03808f166001600160a01b03199283161790925560098054928e16929091169190911790556001600a55831561125557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050505050505050565b612294612912565b6001600160a01b0381166122bd57604051631e4fbdf760e01b81525f6004820152602401610897565b6122c681612944565b50565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061234f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123435f80516020613e41833981519152546001600160a01b031690565b6001600160a01b031614155b156112745760405163703e46dd60e11b815260040160405180910390fd5b6122c6612912565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156123cf575060408051601f3d908101601f191682019092526123cc91810190613c19565b60015b6123f757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610897565b5f80516020613e41833981519152811461242757604051632a87526960e21b815260048101829052602401610897565b6124318383612b56565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112745760405163703e46dd60e11b815260040160405180910390fd5b81546040515f916124a991869160078701916001600160a01b039091169033908790602001613ca1565b60408051601f198184030181529190526002840154815160208301209192505f1960ff9091161c11611a88576040516306427aeb60e01b81526004810185905260248101839052604401610897565b5f818152600b60205260408120905b6002820154610100900464ffffffffff168110156127545760028201545f90600160301b900464ffffffffff166001600160401b0381111561254b5761254b613424565b604051908082528060200260200182016040528015612574578160200160208202803683370190505b5090505f5b6002840154600160301b900464ffffffffff16811015612600575f858152600d602052604090208054829081106125b2576125b2613980565b905f5260205f20906004020160020183815481106125d2576125d2613980565b905f5260205f2001548282815181106125ed576125ed613980565b6020908102919091010152600101612579565b505f8061260c83612bab565b915091505f805f5b6002880154600160301b900464ffffffffff168110156126f2575f670de0b6b3a764000087838151811061264a5761264a613980565b602002602001015161265c9190613b3d565b9050846126698783613b81565b10158015612680575061267c8686613b81565b8111155b156126e95761268f8185613b81565b93508261269b81613d6a565b9350506126e9600d5f8c81526020019081526020015f2083815481106126c3576126c3613980565b5f91825260209091206004909102015460058b01546001600160a01b03909116906129b4565b50600101612614565b505f8115612709576127048284613d96565b61270b565b5f5b5f8a8152600c60205260409020805491925082918990811061272f5761272f613980565b5f91825260209091206002600590920201015550506001909401935061250792505050565b5060028101545f90610100900464ffffffffff166001600160401b0381111561277f5761277f613424565b6040519080825280602002602001820160405280156127a8578160200160208202803683370190505b5090505f5b6002830154610100900464ffffffffff16811015612819575f848152600c602052604090208054829081106127e4576127e4613980565b905f5260205f2090600502016002015482828151811061280657612806613980565b60209081029190910101526001016127ad565b505f8061282583612bab565b915091505f5b6002850154610100900464ffffffffff1681101561290a57600354829061285c9085906001600160401b0316613b3d565b670de0b6b3a764000086848151811061287757612877613980565b60200260200101516128899190613b3d565b6128939190613b81565b106128e7575f868152600c6020526040902080546128e29190839081106128bc576128bc613980565b5f91825260209091206005909102015460048701546001600160a01b03909116906129b4565b612902565b8460040154600e5f8282546128fc9190613b81565b90915550505b60010161282b565b505050505050565b3361291b6115c4565b6001600160a01b0316146112745760405163118cdaa760e01b8152336004820152602401610897565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b600954604051636eb1769f60e11b81523060048201526001600160a01b0384811660248301529091169063095ea7b39084908490849063dd62ed3e90604401602060405180830381865afa158015612a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a329190613c19565b612a3c9190613b81565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015612a84573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243191906139c1565b612ab0612c09565b6122c681612c52565b612ac1612c09565b60038054600167ffffffffffffffff19909116811790915560408051606080820183528382526020808301949094525f91830191909152600480546101016affffffffffffffffffffff199182161790915582519182018352600a80835293820184905291019190915260058054909116660a000000000a0a179055612b48858585611a8e565b600691909155600755505050565b612b5f82612c5a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612ba3576124318282612cbd565b610cfd612d31565b5f805f80612bb885612d50565b915091508092505f80612bd384670de0b6b3a7640000612e23565b9150915081612bf557604051630e9e2ceb60e11b815260040160405180910390fd5b612bfe81612e6a565b955050505050915091565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661127457604051631afcd79f60e31b815260040160405180910390fd5b612294612c09565b806001600160a01b03163b5f03612c8f57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610897565b5f80516020613e4183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051612cd99190613db5565b5f60405180830381855af49150503d805f8114612d11576040519150601f19603f3d011682016040523d82523d5f602084013e612d16565b606091505b5091509150612d26858383612fbd565b925050505b92915050565b34156112745760405163b398979f60e01b815260040160405180910390fd5b5f80612d5b8361301c565b90505f805b8451811015612dd5575f670de0b6b3a7640000868381518110612d8557612d85613980565b6020026020010151612d979190613b3d565b90505f612da48583613dcb565b9050612dbf612db38280613df1565b60ff81901d9081011890565b612dc99085613b81565b93505050600101612d60565b505f80612deb8651670de0b6b3a7640000612e23565b9150915081612e0d57604051630e9e2ceb60e11b815260040160405180910390fd5b612e198360018361308c565b9450505050915091565b5f80835f03612e375750600190505f612e63565b83830283858281612e4a57612e4a613d82565b0414612e5c575f809250925050612e63565b6001925090505b9250929050565b5f60018211612e77575090565b816001600160801b8210612e905760809190911c9060401b5b600160401b8210612ea65760409190911c9060201b5b6401000000008210612ebd5760209190911c9060101b5b620100008210612ed25760109190911c9060081b5b6101008210612ee65760089190911c9060041b5b60108210612ef95760049190911c9060021b5b60048210612f055760011b5b600302600190811c90818581612f1d57612f1d613d82565b048201901c90506001818581612f3557612f35613d82565b048201901c90506001818581612f4d57612f4d613d82565b048201901c90506001818581612f6557612f65613d82565b048201901c90506001818581612f7d57612f7d613d82565b048201901c90506001818581612f9557612f95613d82565b048201901c9050612fb4818581612fae57612fae613d82565b04821190565b90039392505050565b606082612fd257612fcd82613142565b613015565b8151158015612fe957506001600160a01b0384163b155b1561301257604051639996b31560e01b81526001600160a01b0385166004820152602401610897565b50805b9392505050565b5f80805b835181101561307b575f8061304e86848151811061304057613040613980565b60200260200101518561316b565b915091508161307057604051630e9e2ceb60e11b815260040160405180910390fd5b925050600101613020565b5061301581670de0b6b3a764000085515b5f838302815f1985870982811083820303915050805f036130c0578382816130b6576130b6613d82565b0492505050613015565b8084116130d7576130d76003851502601118613184565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b8051156131525780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8083830184811015612e5c575f809250925050612e63565b634e487b715f52806020526024601cfd5b828054828255905f5260205f209081019282156131ce579160200282015b828111156131ce5782518255916020019190600101906131b3565b506131da9291506131de565b5090565b5b808211156131da575f81556001016131df565b5f8060408385031215613203575f80fd5b50508035926020909101359150565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b038616815284602082015283604082015260a060608201525f61326c60a0830185613212565b828103608084015261327e8185613212565b98975050505050505050565b5f6020828403121561329a575f80fd5b5035919050565b60018060a01b03815116825260208101516020830152604081015160408301525f606082015160a060608501526132db60a0850182613212565b905060808301518482036080860152612d268282613212565b602081525f61301560208301846132a1565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133ce57868503603f19018452815180516001600160a01b031686526020808201518188015260408083015160809189018290528051918901829052909101905f9060a08901905b8083101561339b5783518252602082019150602084019350600183019250613378565b506060840151935088810360608a01526133b58185613212565b985050506020958601959390930192505060010161332c565b50929695505050505050565b60018060a01b0384168152826020820152606060408201525f6134006060830184613212565b95945050505050565b80356001600160a01b038116811461341f575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613447575f80fd5b81356001600160401b0381111561346057613460613424565b604051601f8201601f19908116603f011681016001600160401b038111828210171561348e5761348e613424565b6040528181528382016020018510156134a5575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156134d2575f80fd5b6134db83613409565b915060208301356001600160401b038111156134f5575f80fd5b61350185828601613438565b9150509250929050565b5f8083601f84011261351b575f80fd5b5081356001600160401b03811115613531575f80fd5b602083019150836020828501011115612e63575f80fd5b5f805f805f806080878903121561355d575f80fd5b863595506020870135945060408701356001600160401b03811115613580575f80fd5b8701601f81018913613590575f80fd5b80356001600160401b038111156135a5575f80fd5b8960208260051b84010111156135b9575f80fd5b6020919091019450925060608701356001600160401b038111156135db575f80fd5b6135e789828a0161350b565b979a9699509497509295939492505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133ce57603f1987860301845261363b8583516132a1565b9450602093840193919091019060010161361f565b634e487b7160e01b5f52602160045260245ffd5b6004811061367457613674613650565b9052565b60018060a01b038a16815288602082015260ff885116604082015264ffffffffff602089015116606082015264ffffffffff60408901511660808201526136c260a0820188613664565b8560c08201528460e0820152836101008201526101606101208201525f6136ed610160830185613212565b8281036101408401526137008185613212565b9c9b505050505050505050505050565b602081525f6130156020830184613212565b5f60608284031215613732575f80fd5b50919050565b5f60608284031215613748575f80fd5b6130158383613722565b5f805f805f8060808789031215613767575f80fd5b863595506020870135945060408701356001600160401b0381111561378a575f80fd5b61379689828a0161350b565b90955093505060608701356001600160401b038111156135db575f80fd5b5f8060c083850312156137c5575f80fd5b6137cf8484613722565b91506137de8460608501613722565b90509250929050565b5f805f606084860312156137f9575f80fd5b505081359360208301359350604090920135919050565b5f805f8060c08587031215613823575f80fd5b8435935060208501356001600160401b0381111561383f575f80fd5b61384b87828801613438565b93505060408501356001600160401b03811115613866575f80fd5b61387287828801613438565b9250506138828660608701613722565b905092959194509250565b5f6020828403121561389d575f80fd5b81356001600160401b0381168114613015575f80fd5b5f805f805f805f60e0888a0312156138c9575f80fd5b6138d288613409565b96506138e060208901613409565b96999698505050506040850135946060810135946080820135945060a0820135935060c0909101359150565b5f6020828403121561391c575f80fd5b61301582613409565b600181811c9082168061393957607f821691505b60208210810361373257634e487b7160e01b5f52602260045260245ffd5b8381526060810161396b6020830185613664565b6139786040830184613664565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b038316815260408101600283106139b4576139b4613650565b8260208301529392505050565b5f602082840312156139d1575f80fd5b81518015158114613015575f80fd5b601f82111561243157805f5260205f20601f840160051c81016020851015613a055750805b601f840160051c820191505b81811015613a24575f8155600101613a11565b5050505050565b81516001600160401b03811115613a4457613a44613424565b613a5881613a528454613925565b846139e0565b6020601f821160018114613a8a575f8315613a735750848201515b5f19600385901b1c1916600184901b178455613a24565b5f84815260208120601f198516915b82811015613ab95787850151825560209485019460019092019101613a99565b5084821015613ad657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60408101613af38285613664565b6130156020830184613664565b60ff811681146122c6575f80fd5b5f60208284031215613b1e575f80fd5b813561301581613b00565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417612d2b57612d2b613b29565b64ffffffffff811681146122c6575f80fd5b5f60208284031215613b76575f80fd5b813561301581613b54565b80820180821115612d2b57612d2b613b29565b8135613b9f81613b00565b60ff8116905081548160ff1982161783556020840135613bbe81613b54565b65ffffffffff008160081b169050808365ffffffffffff198416171784556040850135613bea81613b54565b6affffffffff0000000000008160301b16846affffffffffffffffffffff198516178317178555505050505050565b5f60208284031215613c29575f80fd5b5051919050565b5f6060828403128015613c41575f80fd5b50604051606081016001600160401b0381118282101715613c6457613c64613424565b6040528235613c7281613b00565b81526020830135613c8281613b54565b60208201526040830135613c9581613b54565b60408201529392505050565b8581525f808654613cb181613925565b600182168015613cc85760018114613ce357613d19565b60ff1983166020870152602082151583028701019350613d19565b895f5260205f205f5b83811015613d0e5781546020828a010152600182019150602081019050613cec565b505060208287010193505b505050613d37818760601b6bffffffffffffffffffffffff19169052565b613d55601482018660601b6bffffffffffffffffffffffff19169052565b60288101939093525050604801949350505050565b5f60018201613d7b57613d7b613b29565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f82613db057634e487b7160e01b5f52601260045260245ffd5b500490565b5f82518060208501845e5f920191825250919050565b8181035f831280158383131683831282161715613dea57613dea613b29565b5092915050565b8082025f8212600160ff1b84141615613e0c57613e0c613b29565b8181058314821517612d2b57612d2b613b2956fe1c0a5e4b371d60717068c91e93b5e94c91d4c6d6c3fab36082a78f987e5a69f5360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220ea436402179790a4a9250d2b1104e8d30c1c11b00b6a847c700996129c68e59064736f6c634300081a0033","sourceMap":"656:19220:60:-:0;;;1171:4:21;1128:48;;5086:53:60;;;;;;;;;-1:-1:-1;5110:22:60;:20;:22::i;:::-;656:19220;;7711:422:20;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:20;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:20;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:20;-1:-1:-1;;;;;8035:33:20;;;;;8087:29;;158:50:66;;;8087:29:20;;146:2:66;131:18;8087:29:20;;;;;;;7981:146;7760:373;7711:422::o;14:200:66:-;656:19220:60;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x6080604052600436106101e5575f3560e01c806381d12c5811610108578063cec10c111161009d578063e9ca8b461161006d578063e9ca8b461461060b578063edbf4ac21461062a578063f2fde38b14610649578063f8bbf27e14610668578063fdc3d8d71461067d575f80fd5b8063cec10c11146105a4578063d0b7830b146105c3578063e3c98ba0146105d7578063e76aec11146105ec575f80fd5b8063b13fc8f4116100d8578063b13fc8f4146104f5578063b584e6171461052f578063b84b8ac71461054e578063ca287c351461056d575f80fd5b806381d12c581461045b5780638da5cb5b1461048f5780639a1b4b38146104a3578063ad3cb1cc146104b8575f80fd5b80634b5a82d11161017e5780636b4d5bfc1161014e5780636b4d5bfc146103dd578063715018a6146103fc57806371ee2ce1146104105780637b1039991461043c575f80fd5b80634b5a82d11461034f5780634f1ef2861461037d57806352d1902d14610392578063647846a5146103a6575f80fd5b806326232a2e116101b957806326232a2e146102b25780632bafb614146102c657806332f77659146102f7578063434dbaee14610323575f80fd5b806257efc2146101e95780630566f18a1461022257806313c2bedc146102455780631da7bc9a1461025a575b5f80fd5b3480156101f4575f80fd5b506102086102033660046131f2565b610692565b604051610219959493929190613240565b60405180910390f35b34801561022d575f80fd5b5061023760015481565b604051908152602001610219565b348015610250575f80fd5b5061023760065481565b348015610265575f80fd5b5060055461028b9060ff81169064ffffffffff6101008204811691600160301b90041683565b6040805160ff909416845264ffffffffff9283166020850152911690820152606001610219565b3480156102bd575f80fd5b506102375f5481565b3480156102d1575f80fd5b5060045461028b9060ff81169064ffffffffff6101008204811691600160301b90041683565b348015610302575f80fd5b5061031661031136600461328a565b6107f4565b60405161021991906132f4565b34801561032e575f80fd5b5061034261033d36600461328a565b610aaa565b6040516102199190613306565b34801561035a575f80fd5b5061036e6103693660046131f2565b610c12565b604051610219939291906133da565b61039061038b3660046134c1565b610ce2565b005b34801561039d575f80fd5b50610237610d01565b3480156103b1575f80fd5b506009546103c5906001600160a01b031681565b6040516001600160a01b039091168152602001610219565b3480156103e8575f80fd5b506103906103f7366004613548565b610d1c565b348015610407575f80fd5b50610390611263565b34801561041b575f80fd5b5061042f61042a36600461328a565b611276565b60405161021991906135f9565b348015610447575f80fd5b506008546103c5906001600160a01b031681565b348015610466575f80fd5b5061047a61047536600461328a565b611424565b60405161021999989796959493929190613678565b34801561049a575f80fd5b506103c56115c4565b3480156104ae575f80fd5b5061023760075481565b3480156104c3575f80fd5b506104e8604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102199190613710565b348015610500575f80fd5b5061051461050f366004613738565b6115f2565b60408051938452602084019290925290820152606001610219565b34801561053a575f80fd5b50610390610549366004613752565b61168f565b348015610559575f80fd5b506103906105683660046137b4565b611a63565b348015610578575f80fd5b5060035461058c906001600160401b031681565b6040516001600160401b039091168152602001610219565b3480156105af575f80fd5b506103906105be3660046137e7565b611a8e565b3480156105ce575f80fd5b50610390611aa3565b3480156105e2575f80fd5b50610237600e5481565b3480156105f7575f80fd5b50610237610606366004613810565b611b3a565b348015610616575f80fd5b5061039061062536600461388d565b61210e565b348015610635575f80fd5b506103906106443660046138b3565b612139565b348015610654575f80fd5b5061039061066336600461390c565b61228c565b348015610673575f80fd5b5061023760025481565b348015610688575f80fd5b50610237600a5481565b600c602052815f5260405f2081815481106106ab575f80fd5b5f91825260209091206005909102018054600182015460028301546003840180546001600160a01b03909416965091945092916106e790613925565b80601f016020809104026020016040519081016040528092919081815260200182805461071390613925565b801561075e5780601f106107355761010080835404028352916020019161075e565b820191905f5260205f20905b81548152906001019060200180831161074157829003601f168201915b50505050509080600401805461077390613925565b80601f016020809104026020016040519081016040528092919081815260200182805461079f90613925565b80156107ea5780601f106107c1576101008083540402835291602001916107ea565b820191905f5260205f20905b8154815290600101906020018083116107cd57829003601f168201915b5050505050905085565b61082c6040518060a001604052805f6001600160a01b031681526020015f81526020015f815260200160608152602001606081525090565b5f828152600c60209081526040808320600b90925290912060039081015460ff168181111561085d5761085d613650565b146108a0575f838152600b602052604090819020600390810154915163091e2f1760e31b815261089792869260ff90911691600401613957565b60405180910390fd5b5f815f815481106108b3576108b3613980565b5f9182526020909120600590910201600281015490915060015b835481101561094c57818482815481106108e9576108e9613980565b905f5260205f2090600502016002015411156109445783818154811061091157610911613980565b905f5260205f20906005020160020154915083818154811061093557610935613980565b905f5260205f20906005020192505b6001016108cd565b506040805160a08101825283546001600160a01b03168152600184015460208201526002840154918101919091526003830180548491606084019161099090613925565b80601f01602080910402602001604051908101604052809291908181526020018280546109bc90613925565b8015610a075780601f106109de57610100808354040283529160200191610a07565b820191905f5260205f20905b8154815290600101906020018083116109ea57829003601f168201915b50505050508152602001600482018054610a2090613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90613925565b8015610a975780601f10610a6e57610100808354040283529160200191610a97565b820191905f5260205f20905b815481529060010190602001808311610a7a57829003601f168201915b5050505050815250509350505050919050565b6060600d5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c07575f848152602090819020604080516080810182526004860290920180546001600160a01b031683526001810154838501526002810180548351818702810187018552818152949592949386019392830182828015610b5f57602002820191905f5260205f20905b815481526020019060010190808311610b4b575b50505050508152602001600382018054610b7890613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610ba490613925565b8015610bef5780601f10610bc657610100808354040283529160200191610bef565b820191905f5260205f20905b815481529060010190602001808311610bd257829003601f168201915b50505050508152505081526020019060010190610adc565b505050509050919050565b600d602052815f5260405f208181548110610c2b575f80fd5b5f9182526020909120600490910201805460018201546003830180546001600160a01b03909316955090935090610c6190613925565b80601f0160208091040260200160405190810160405280929190818152602001828054610c8d90613925565b8015610cd85780601f10610caf57610100808354040283529160200191610cd8565b820191905f5260205f20905b815481529060010190602001808311610cbb57829003601f168201915b5050505050905083565b610cea6122c9565b610cf38261236d565b610cfd8282612375565b5050565b5f610d0a612436565b505f80516020613e4183398151915290565b600854604051635f5b248b60e01b81526001916001600160a01b031690635f5b248b90610d4f9033908590600401613994565b602060405180830381865afa158015610d6a573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d8e91906139c1565b610dad5760405163bfc6c33760e01b8152336004820152602401610897565b866002805f838152600b6020526040902060039081015460ff1690811115610dd757610dd7613650565b14610e11575f828152600b60205260409081902060030154905163091e2f1760e31b815261089791849160ff909116908490600401613957565b600854604051633af32abf60e01b81523360048201819052916001600160a01b031690633af32abf90602401602060405180830381865afa158015610e58573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e7c91906139c1565b610ea457604051636f8bf18b60e11b81526001600160a01b0382166004820152602401610897565b5f8a8152600b602052604090206002810154610100900464ffffffffff168814610eea576040516355c56a4560e11b8152600481018c9052336024820152604401610897565b5f5b88811015610f8c576007548a8a83818110610f0957610f09613980565b905060200201351180610f3557506006548a8a83818110610f2c57610f2c613980565b90506020020135105b15610f8457898982818110610f4c57610f4c613980565b6007546006546040516371a6675960e11b81526020909302949094013560048301526024820152604481019290925250606401610897565b600101610eec565b505f5b6002820154610100900464ffffffffff16811015611011575f8c8152600c60205260409020805433919083908110610fc957610fc9613980565b5f9182526020909120600590910201546001600160a01b031603611009576040516301011bf360e71b8152600481018d9052336024820152604401610897565b600101610f8f565b505f5b5f8c8152600d6020526040902054811015611093575f8c8152600d6020526040902080543391908390811061104b5761104b613980565b5f9182526020909120600490910201546001600160a01b03160361108b576040516301011bf360e71b8152600481018d9052336024820152604401610897565b600101611014565b5061109f8b828c61247f565b600d5f8c81526020019081526020015f206040518060800160405280336001600160a01b031681526020018c81526020018b8b808060200260200160405190810160405280939291908181526020018383602002808284375f92019190915250505090825250604080516020601f8c018190048102820181019092528a815291810191908b908b90819084018382808284375f920182905250939094525050835460018082018655948252602091829020845160049092020180546001600160a01b0319166001600160a01b0390921691909117815583820151948101949094556040830151805193949361119e935060028501929190910190613195565b50606082015160038201906111b39082613a2b565b50506040513391508c907fa1afe65d2285036595be8f15025c4421a593141666e15e5a980e742920646b1e905f90a360028101545f8c8152600d6020526040902054600160301b90910464ffffffffff16148015611255576003828101805460ff1916600183021790555081600101548c5f80516020613e2183398151915260026003604051611244929190613ae5565b60405180910390a36112558c6124f8565b505050505050505050505050565b61126b612912565b6112745f612944565b565b6060600c5f8381526020019081526020015f20805480602002602001604051908101604052809291908181526020015f905b82821015610c07575f8481526020908190206040805160a0810182526005860290920180546001600160a01b0316835260018101549383019390935260028301549082015260038201805491929160608401919061130590613925565b80601f016020809104026020016040519081016040528092919081815260200182805461133190613925565b801561137c5780601f106113535761010080835404028352916020019161137c565b820191905f5260205f20905b81548152906001019060200180831161135f57829003601f168201915b5050505050815260200160048201805461139590613925565b80601f01602080910402602001604051908101604052809291908181526020018280546113c190613925565b801561140c5780601f106113e35761010080835404028352916020019161140c565b820191905f5260205f20905b8154815290600101906020018083116113ef57829003601f168201915b505050505081525050815260200190600101906112a8565b600b60209081525f918252604091829020805460018201548451606081018652600284015460ff808216835264ffffffffff6101008304811697840197909752600160301b9091049095169581019590955260038301546004840154600585015460068601546007870180546001600160a01b03909716999598959794909516959294919390929091906114b790613925565b80601f01602080910402602001604051908101604052809291908181526020018280546114e390613925565b801561152e5780601f106115055761010080835404028352916020019161152e565b820191905f5260205f20905b81548152906001019060200180831161151157829003601f168201915b50505050509080600801805461154390613925565b80601f016020809104026020016040519081016040528092919081815260200182805461156f90613925565b80156115ba5780601f10611591576101008083540402835291602001916115ba565b820191905f5260205f20905b81548152906001019060200180831161159d57829003601f168201915b5050505050905089565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b5f8080806116036020860186613b0e565b60ff166002901b90506001548161161a9190613b3d565b92506002548161162a9190613b3d565b91508161163d6060870160408801613b66565b64ffffffffff1661164e9190613b3d565b6116589084613b81565b6116686040870160208801613b66565b64ffffffffff166116799190613b3d565b5f546116859190613b81565b9350509193909250565b600854604051635f5b248b60e01b81525f916001600160a01b031690635f5b248b906116c19033908590600401613994565b602060405180830381865afa1580156116dc573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061170091906139c1565b61171f5760405163bfc6c33760e01b8152336004820152602401610897565b866001805f838152600b6020526040902060039081015460ff169081111561174957611749613650565b14611783575f828152600b60205260409081902060030154905163091e2f1760e31b815261089791849160ff909116908490600401613957565b5f898152600b60205260408120905b5f8b8152600c6020526040902054811015611811575f8b8152600c602052604090208054339190839081106117c9576117c9613980565b5f9182526020909120600590910201546001600160a01b031603611809576040516301011bf360e71b8152600481018c9052336024820152604401610897565b600101611792565b5061181d8a828b61247f565b5f6040518060a00160405280336001600160a01b031681526020018b81526020015f81526020018a8a8080601f0160208091040260200160405190810160405280939291908181526020018383808284375f92019190915250505090825250604080516020601f8b0181900481028201810190925289815291810191908a908a90819084018382808284375f9201829052509390945250508d8152600c6020908152604080832080546001808201835591855293839020865160059095020180546001600160a01b0319166001600160a01b03909516949094178455918501519183019190915583015160028201556060830151929350839290915060038201906119289082613a2b565b506080820151600482019061193d9082613a2b565b50506040513391508c907f6c809136a3b8faf74ae9e955b7e7b758baa66bde976764a29fa74a4eb1e3702e905f90a36002820154600160301b900464ffffffffff165f03611993576119933383600401546129b4565b60028201545f8c8152600c602052604090205461010090910464ffffffffff16148015611255576002830154600160301b900464ffffffffff165f03611a15576003838101805460ff19168217905560018085015460405190928f925f80516020613e2183398151915292611a089290613ae5565b60405180910390a3611255565b60038301805460ff1916600290811790915560018085015460405190928f925f80516020613e2183398151915292611a4d9290613ae5565b60405180910390a3505050505050505050505050565b611a6b612912565b816004611a788282613b94565b508190506005611a888282613b94565b50505050565b611a96612912565b5f92909255600155600255565b611aab612912565b6009546001600160a01b031663a9059cbb611ac46115c4565b600e546040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015611b0f573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b3391906139c1565b505f600e55565b6004545f90829060ff16611b516020830183613b0e565b60ff161080611b73575060055460ff16611b6e6020830183613b0e565b60ff16115b15611bbe57611b856020820182613b0e565b600480546005546040516371a6675960e11b815260ff948516938101939093529083166024830152919091166044820152606401610897565b600454610100900464ffffffffff16611bdd6040830160208401613b66565b64ffffffffff161080611c135750600554610100900464ffffffffff16611c0a6040830160208401613b66565b64ffffffffff16115b15611c6b57611c286040820160208301613b66565b600480546005546040516371a6675960e11b815264ffffffffff948516938101939093526101009182900484166024840152049091166044820152606401610897565b600454600160301b900464ffffffffff16611c8c6060830160408401613b66565b64ffffffffff161080611cc45750600554600160301b900464ffffffffff16611cbb6060830160408401613b66565b64ffffffffff16115b15611d1e57611cd96060820160408301613b66565b600480546005546040516371a6675960e11b815264ffffffffff94851693810193909352600160301b9182900484166024840152049091166044820152606401610897565b5f805f611d2a866115f2565b92509250925087515f03611d515760405163b4fa3fb360e01b815260040160405180910390fd5b600954604051636eb1769f60e11b81523360048201523060248201525f916001600160a01b03169063dd62ed3e90604401602060405180830381865afa158015611d9d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611dc19190613c19565b905083811015611dee576040516311e9ebaf60e31b81526004810182905260248101859052604401610897565b6009546040516370a0823160e01b81523360048201525f916001600160a01b0316906370a0823190602401602060405180830381865afa158015611e34573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611e589190613c19565b905084811015611e85576040516311e9ebaf60e31b81526004810182905260248101869052604401610897565b5f54600e5f828254611e979190613b81565b90915550506009546040516323b872dd60e01b8152336004820152306024820152604481018790526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015611ef0573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f1491906139c1565b50600a8054600181019091556040518c90339083907f7f371482986a3450b759cc4a079353a8eaa36a650b5eba1fb9c00693026f254a905f90a46040805161012081018252338152602081018e9052908101611f75368c90038c018c613c30565b8152602001600181526020018681526020018581526020015f5481526020018c81526020018b815250600b5f8381526020019081526020015f205f820151815f015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550602082015181600101556040820151816002015f820151815f015f6101000a81548160ff021916908360ff1602179055506020820151815f0160016101000a81548164ffffffffff021916908364ffffffffff1602179055506040820151815f0160066101000a81548164ffffffffff021916908364ffffffffff16021790555050506060820151816003015f6101000a81548160ff0219169083600381111561208557612085613650565b02179055506080820151600482015560a0820151600582015560c0820151600682015560e082015160078201906120bc9082613a2b565b5061010082015160088201906120d29082613a2b565b509050508b815f80516020613e218339815191525f60016040516120f7929190613ae5565b60405180910390a39b9a5050505050505050505050565b612116612912565b6003805467ffffffffffffffff19166001600160401b0392909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561217d5750825b90505f826001600160401b031660011480156121985750303b155b9050811580156121a6575080155b156121c45760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156121ee57845460ff60401b1916600160401b1785555b6121f733612aa8565b6122048a8a8a8a8a612ab9565b600880546001600160a01b03808f166001600160a01b03199283161790925560098054928e16929091169190911790556001600a55831561125557845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a1505050505050505050505050565b612294612912565b6001600160a01b0381166122bd57604051631e4fbdf760e01b81525f6004820152602401610897565b6122c681612944565b50565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061234f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166123435f80516020613e41833981519152546001600160a01b031690565b6001600160a01b031614155b156112745760405163703e46dd60e11b815260040160405180910390fd5b6122c6612912565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156123cf575060408051601f3d908101601f191682019092526123cc91810190613c19565b60015b6123f757604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610897565b5f80516020613e41833981519152811461242757604051632a87526960e21b815260048101829052602401610897565b6124318383612b56565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112745760405163703e46dd60e11b815260040160405180910390fd5b81546040515f916124a991869160078701916001600160a01b039091169033908790602001613ca1565b60408051601f198184030181529190526002840154815160208301209192505f1960ff9091161c11611a88576040516306427aeb60e01b81526004810185905260248101839052604401610897565b5f818152600b60205260408120905b6002820154610100900464ffffffffff168110156127545760028201545f90600160301b900464ffffffffff166001600160401b0381111561254b5761254b613424565b604051908082528060200260200182016040528015612574578160200160208202803683370190505b5090505f5b6002840154600160301b900464ffffffffff16811015612600575f858152600d602052604090208054829081106125b2576125b2613980565b905f5260205f20906004020160020183815481106125d2576125d2613980565b905f5260205f2001548282815181106125ed576125ed613980565b6020908102919091010152600101612579565b505f8061260c83612bab565b915091505f805f5b6002880154600160301b900464ffffffffff168110156126f2575f670de0b6b3a764000087838151811061264a5761264a613980565b602002602001015161265c9190613b3d565b9050846126698783613b81565b10158015612680575061267c8686613b81565b8111155b156126e95761268f8185613b81565b93508261269b81613d6a565b9350506126e9600d5f8c81526020019081526020015f2083815481106126c3576126c3613980565b5f91825260209091206004909102015460058b01546001600160a01b03909116906129b4565b50600101612614565b505f8115612709576127048284613d96565b61270b565b5f5b5f8a8152600c60205260409020805491925082918990811061272f5761272f613980565b5f91825260209091206002600590920201015550506001909401935061250792505050565b5060028101545f90610100900464ffffffffff166001600160401b0381111561277f5761277f613424565b6040519080825280602002602001820160405280156127a8578160200160208202803683370190505b5090505f5b6002830154610100900464ffffffffff16811015612819575f848152600c602052604090208054829081106127e4576127e4613980565b905f5260205f2090600502016002015482828151811061280657612806613980565b60209081029190910101526001016127ad565b505f8061282583612bab565b915091505f5b6002850154610100900464ffffffffff1681101561290a57600354829061285c9085906001600160401b0316613b3d565b670de0b6b3a764000086848151811061287757612877613980565b60200260200101516128899190613b3d565b6128939190613b81565b106128e7575f868152600c6020526040902080546128e29190839081106128bc576128bc613980565b5f91825260209091206005909102015460048701546001600160a01b03909116906129b4565b612902565b8460040154600e5f8282546128fc9190613b81565b90915550505b60010161282b565b505050505050565b3361291b6115c4565b6001600160a01b0316146112745760405163118cdaa760e01b8152336004820152602401610897565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b600954604051636eb1769f60e11b81523060048201526001600160a01b0384811660248301529091169063095ea7b39084908490849063dd62ed3e90604401602060405180830381865afa158015612a0e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a329190613c19565b612a3c9190613b81565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af1158015612a84573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061243191906139c1565b612ab0612c09565b6122c681612c52565b612ac1612c09565b60038054600167ffffffffffffffff19909116811790915560408051606080820183528382526020808301949094525f91830191909152600480546101016affffffffffffffffffffff199182161790915582519182018352600a80835293820184905291019190915260058054909116660a000000000a0a179055612b48858585611a8e565b600691909155600755505050565b612b5f82612c5a565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115612ba3576124318282612cbd565b610cfd612d31565b5f805f80612bb885612d50565b915091508092505f80612bd384670de0b6b3a7640000612e23565b9150915081612bf557604051630e9e2ceb60e11b815260040160405180910390fd5b612bfe81612e6a565b955050505050915091565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661127457604051631afcd79f60e31b815260040160405180910390fd5b612294612c09565b806001600160a01b03163b5f03612c8f57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610897565b5f80516020613e4183398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b031684604051612cd99190613db5565b5f60405180830381855af49150503d805f8114612d11576040519150601f19603f3d011682016040523d82523d5f602084013e612d16565b606091505b5091509150612d26858383612fbd565b925050505b92915050565b34156112745760405163b398979f60e01b815260040160405180910390fd5b5f80612d5b8361301c565b90505f805b8451811015612dd5575f670de0b6b3a7640000868381518110612d8557612d85613980565b6020026020010151612d979190613b3d565b90505f612da48583613dcb565b9050612dbf612db38280613df1565b60ff81901d9081011890565b612dc99085613b81565b93505050600101612d60565b505f80612deb8651670de0b6b3a7640000612e23565b9150915081612e0d57604051630e9e2ceb60e11b815260040160405180910390fd5b612e198360018361308c565b9450505050915091565b5f80835f03612e375750600190505f612e63565b83830283858281612e4a57612e4a613d82565b0414612e5c575f809250925050612e63565b6001925090505b9250929050565b5f60018211612e77575090565b816001600160801b8210612e905760809190911c9060401b5b600160401b8210612ea65760409190911c9060201b5b6401000000008210612ebd5760209190911c9060101b5b620100008210612ed25760109190911c9060081b5b6101008210612ee65760089190911c9060041b5b60108210612ef95760049190911c9060021b5b60048210612f055760011b5b600302600190811c90818581612f1d57612f1d613d82565b048201901c90506001818581612f3557612f35613d82565b048201901c90506001818581612f4d57612f4d613d82565b048201901c90506001818581612f6557612f65613d82565b048201901c90506001818581612f7d57612f7d613d82565b048201901c90506001818581612f9557612f95613d82565b048201901c9050612fb4818581612fae57612fae613d82565b04821190565b90039392505050565b606082612fd257612fcd82613142565b613015565b8151158015612fe957506001600160a01b0384163b155b1561301257604051639996b31560e01b81526001600160a01b0385166004820152602401610897565b50805b9392505050565b5f80805b835181101561307b575f8061304e86848151811061304057613040613980565b60200260200101518561316b565b915091508161307057604051630e9e2ceb60e11b815260040160405180910390fd5b925050600101613020565b5061301581670de0b6b3a764000085515b5f838302815f1985870982811083820303915050805f036130c0578382816130b6576130b6613d82565b0492505050613015565b8084116130d7576130d76003851502601118613184565b5f848688095f868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b8051156131525780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b5f8083830184811015612e5c575f809250925050612e63565b634e487b715f52806020526024601cfd5b828054828255905f5260205f209081019282156131ce579160200282015b828111156131ce5782518255916020019190600101906131b3565b506131da9291506131de565b5090565b5b808211156131da575f81556001016131df565b5f8060408385031215613203575f80fd5b50508035926020909101359150565b5f81518084528060208401602086015e5f602082860101526020601f19601f83011685010191505092915050565b60018060a01b038616815284602082015283604082015260a060608201525f61326c60a0830185613212565b828103608084015261327e8185613212565b98975050505050505050565b5f6020828403121561329a575f80fd5b5035919050565b60018060a01b03815116825260208101516020830152604081015160408301525f606082015160a060608501526132db60a0850182613212565b905060808301518482036080860152612d268282613212565b602081525f61301560208301846132a1565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133ce57868503603f19018452815180516001600160a01b031686526020808201518188015260408083015160809189018290528051918901829052909101905f9060a08901905b8083101561339b5783518252602082019150602084019350600183019250613378565b506060840151935088810360608a01526133b58185613212565b985050506020958601959390930192505060010161332c565b50929695505050505050565b60018060a01b0384168152826020820152606060408201525f6134006060830184613212565b95945050505050565b80356001600160a01b038116811461341f575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112613447575f80fd5b81356001600160401b0381111561346057613460613424565b604051601f8201601f19908116603f011681016001600160401b038111828210171561348e5761348e613424565b6040528181528382016020018510156134a5575f80fd5b816020850160208301375f918101602001919091529392505050565b5f80604083850312156134d2575f80fd5b6134db83613409565b915060208301356001600160401b038111156134f5575f80fd5b61350185828601613438565b9150509250929050565b5f8083601f84011261351b575f80fd5b5081356001600160401b03811115613531575f80fd5b602083019150836020828501011115612e63575f80fd5b5f805f805f806080878903121561355d575f80fd5b863595506020870135945060408701356001600160401b03811115613580575f80fd5b8701601f81018913613590575f80fd5b80356001600160401b038111156135a5575f80fd5b8960208260051b84010111156135b9575f80fd5b6020919091019450925060608701356001600160401b038111156135db575f80fd5b6135e789828a0161350b565b979a9699509497509295939492505050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b828110156133ce57603f1987860301845261363b8583516132a1565b9450602093840193919091019060010161361f565b634e487b7160e01b5f52602160045260245ffd5b6004811061367457613674613650565b9052565b60018060a01b038a16815288602082015260ff885116604082015264ffffffffff602089015116606082015264ffffffffff60408901511660808201526136c260a0820188613664565b8560c08201528460e0820152836101008201526101606101208201525f6136ed610160830185613212565b8281036101408401526137008185613212565b9c9b505050505050505050505050565b602081525f6130156020830184613212565b5f60608284031215613732575f80fd5b50919050565b5f60608284031215613748575f80fd5b6130158383613722565b5f805f805f8060808789031215613767575f80fd5b863595506020870135945060408701356001600160401b0381111561378a575f80fd5b61379689828a0161350b565b90955093505060608701356001600160401b038111156135db575f80fd5b5f8060c083850312156137c5575f80fd5b6137cf8484613722565b91506137de8460608501613722565b90509250929050565b5f805f606084860312156137f9575f80fd5b505081359360208301359350604090920135919050565b5f805f8060c08587031215613823575f80fd5b8435935060208501356001600160401b0381111561383f575f80fd5b61384b87828801613438565b93505060408501356001600160401b03811115613866575f80fd5b61387287828801613438565b9250506138828660608701613722565b905092959194509250565b5f6020828403121561389d575f80fd5b81356001600160401b0381168114613015575f80fd5b5f805f805f805f60e0888a0312156138c9575f80fd5b6138d288613409565b96506138e060208901613409565b96999698505050506040850135946060810135946080820135945060a0820135935060c0909101359150565b5f6020828403121561391c575f80fd5b61301582613409565b600181811c9082168061393957607f821691505b60208210810361373257634e487b7160e01b5f52602260045260245ffd5b8381526060810161396b6020830185613664565b6139786040830184613664565b949350505050565b634e487b7160e01b5f52603260045260245ffd5b6001600160a01b038316815260408101600283106139b4576139b4613650565b8260208301529392505050565b5f602082840312156139d1575f80fd5b81518015158114613015575f80fd5b601f82111561243157805f5260205f20601f840160051c81016020851015613a055750805b601f840160051c820191505b81811015613a24575f8155600101613a11565b5050505050565b81516001600160401b03811115613a4457613a44613424565b613a5881613a528454613925565b846139e0565b6020601f821160018114613a8a575f8315613a735750848201515b5f19600385901b1c1916600184901b178455613a24565b5f84815260208120601f198516915b82811015613ab95787850151825560209485019460019092019101613a99565b5084821015613ad657868401515f19600387901b60f8161c191681555b50505050600190811b01905550565b60408101613af38285613664565b6130156020830184613664565b60ff811681146122c6575f80fd5b5f60208284031215613b1e575f80fd5b813561301581613b00565b634e487b7160e01b5f52601160045260245ffd5b8082028115828204841417612d2b57612d2b613b29565b64ffffffffff811681146122c6575f80fd5b5f60208284031215613b76575f80fd5b813561301581613b54565b80820180821115612d2b57612d2b613b29565b8135613b9f81613b00565b60ff8116905081548160ff1982161783556020840135613bbe81613b54565b65ffffffffff008160081b169050808365ffffffffffff198416171784556040850135613bea81613b54565b6affffffffff0000000000008160301b16846affffffffffffffffffffff198516178317178555505050505050565b5f60208284031215613c29575f80fd5b5051919050565b5f6060828403128015613c41575f80fd5b50604051606081016001600160401b0381118282101715613c6457613c64613424565b6040528235613c7281613b00565b81526020830135613c8281613b54565b60208201526040830135613c9581613b54565b60408201529392505050565b8581525f808654613cb181613925565b600182168015613cc85760018114613ce357613d19565b60ff1983166020870152602082151583028701019350613d19565b895f5260205f205f5b83811015613d0e5781546020828a010152600182019150602081019050613cec565b505060208287010193505b505050613d37818760601b6bffffffffffffffffffffffff19169052565b613d55601482018660601b6bffffffffffffffffffffffff19169052565b60288101939093525050604801949350505050565b5f60018201613d7b57613d7b613b29565b5060010190565b634e487b7160e01b5f52601260045260245ffd5b5f82613db057634e487b7160e01b5f52601260045260245ffd5b500490565b5f82518060208501845e5f920191825250919050565b8181035f831280158383131683831282161715613dea57613dea613b29565b5092915050565b8082025f8212600160ff1b84141615613e0c57613e0c613b29565b8181058314821517612d2b57612d2b613b2956fe1c0a5e4b371d60717068c91e93b5e94c91d4c6d6c3fab36082a78f987e5a69f5360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220ea436402179790a4a9250d2b1104e8d30c1c11b00b6a847c700996129c68e59064736f6c634300081a0033","sourceMap":"656:19220:60:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3368:58;;;;;;;;;;-1:-1:-1;3368:58:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;:::i;:::-;;;;;;;;1211:28:61;;;;;;;;;;;;;;;;;;;1428:25:66;;;1416:2;1401:18;1211:28:61;1282:177:66;1817:23:61;;;;;;;;;;;;;;;;1710:48;;;;;;;;;;-1:-1:-1;1710:48:61;;;;;;;;;;;;;;;-1:-1:-1;;;1710:48:61;;;;;;;;;1688:4:66;1676:17;;;1658:36;;1742:12;1730:25;;;1725:2;1710:18;;1703:53;1792:25;;1772:18;;;1765:53;1646:2;1631:18;1710:48:61;1464:360:66;1009:26:61;;;;;;;;;;;;;;;;1608:48;;;;;;;;;;-1:-1:-1;1608:48:61;;;;;;;;;;;;;;;-1:-1:-1;;;1608:48:61;;;;;19053:821:60;;;;;;;;;;-1:-1:-1;19053:821:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;18269:129::-;;;;;;;;;;-1:-1:-1;18269:129:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3485:62::-;;;;;;;;;;-1:-1:-1;3485:62:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;4152:214:21:-;;;;;;:::i;:::-;;:::i;:::-;;3699:134;;;;;;;;;;;;;:::i;2983:21:60:-;;;;;;;;;;-1:-1:-1;2983:21:60;;;;-1:-1:-1;;;;;2983:21:60;;;;;;-1:-1:-1;;;;;6798:32:66;;;6780:51;;6768:2;6753:18;2983:21:60;6619:218:66;11914:2083:60;;;;;;;;;;-1:-1:-1;11914:2083:60;;;;;:::i;:::-;;:::i;3155:101:19:-;;;;;;;;;;;;;:::i;17962:123:60:-;;;;;;;;;;-1:-1:-1;17962:123:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;2889:33::-;;;;;;;;;;-1:-1:-1;2889:33:60;;;;-1:-1:-1;;;;;2889:33:60;;;3266:54;;;;;;;;;;-1:-1:-1;3266:54:60;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;;:::i;2441:144:19:-;;;;;;;;;;;;;:::i;1898:23:61:-;;;;;;;;;;;;;;;;1819:58:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;5050:467:61:-;;;;;;;;;;-1:-1:-1;5050:467:61;;;;;:::i;:::-;;:::i;:::-;;;;11994:25:66;;;12050:2;12035:18;;12028:34;;;;12078:18;;;12071:34;11982:2;11967:18;5050:467:61;11792:319:66;9529:1880:60;;;;;;;;;;-1:-1:-1;9529:1880:60;;;;;:::i;:::-;;:::i;5734:229:61:-;;;;;;;;;;-1:-1:-1;5734:229:61;;;;;:::i;:::-;;:::i;1514:39::-;;;;;;;;;;-1:-1:-1;1514:39:61;;;;-1:-1:-1;;;;;1514:39:61;;;;;;-1:-1:-1;;;;;13666:31:66;;;13648:50;;13636:2;13621:18;1514:39:61;13504:200:66;4495:227:61;;;;;;;;;;-1:-1:-1;4495:227:61;;;;;:::i;:::-;;:::i;17640:144:60:-;;;;;;;;;;;;;:::i;3652:33::-;;;;;;;;;;;;;;;;7239:1728;;;;;;;;;;-1:-1:-1;7239:1728:60;;;;;:::i;:::-;;:::i;6158:161:61:-;;;;;;;;;;-1:-1:-1;6158:161:61;;;;;:::i;:::-;;:::i;6110:513:60:-;;;;;;;;;;-1:-1:-1;6110:513:60;;;;;:::i;:::-;;:::i;3405:215:19:-;;;;;;;;;;-1:-1:-1;3405:215:19;;;;;:::i;:::-;;:::i;1415:28:61:-;;;;;;;;;;;;;;;;3194:25:60;;;;;;;;;;;;;;;;3368:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3368:58:60;;;;-1:-1:-1;3368:58:60;;-1:-1:-1;3368:58:60;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;19053:821::-;19117:19;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19117:19:60;19148:36;19187:17;;;:9;:17;;;;;;;;19260:8;:16;;;;;;19287:34;19260:23;;;;;;:61;;;;;;;;:::i;:::-;;19256:185;;19370:16;;;;:8;:16;;;;;;;:23;;;;;19344:86;;-1:-1:-1;;;19344:86:60;;;;19362:6;;19370:23;;;;;19344:86;;;:::i;:::-;;;;;;;;19256:185;19512:27;19542:13;19556:1;19542:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;19591:12;;;;19542:16;;-1:-1:-1;19630:1:60;19613:231;19637:20;;19633:24;;19613:231;;;19707:12;19682:13;19696:1;19682:16;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;:37;19678:156;;;19754:13;19768:1;19754:16;;;;;;;;:::i;:::-;;;;;;;;;;;:22;;;19739:37;;19803:13;19817:1;19803:16;;;;;;;;:::i;:::-;;;;;;;;;;;19794:25;;19678:156;19659:3;;19613:231;;;-1:-1:-1;19854:13:60;;;;;;;;;;-1:-1:-1;;;;;19854:13:60;;;;;;;;;;;;;;;;;;;;;;;;;;;19861:6;;19854:13;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19053:821;;;:::o;18269:129::-;18330:23;18372:11;:19;18384:6;18372:19;;;;;;;;;;;18365:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18365:26:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18269:129;;;:::o;3485:62::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3485:62:60;;;;-1:-1:-1;3485:62:60;;-1:-1:-1;3485:62:60;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4152:214:21:-;2655:13;:11;:13::i;:::-;4267:36:::1;4285:17;4267;:36::i;:::-;4313:46;4335:17;4354:4;4313:21;:46::i;:::-;4152:214:::0;;:::o;3699:134::-;3768:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3699:134:21;:::o;11914:2083:60:-;4001:8;;:39;;-1:-1:-1;;;4001:39:60;;12053:23;;-1:-1:-1;;;;;4001:8:60;;:21;;:39;;4023:10;;12053:23;;4001:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3996:181;;4141:25;;-1:-1:-1;;;4141:25:60;;4155:10;4141:25;;;6780:51:66;6753:18;;4141:25:60;6619:218:66;3996:181:60;12099:6;12107:28:::1;::::0;4331:16:::1;::::0;;;:8:::1;:16;::::0;;;;:23:::1;::::0;;::::1;::::0;::::1;;::::0;:33;::::1;;;;;;:::i;:::-;;4327:129;;4413:16;::::0;;;:8:::1;:16;::::0;;;;;;:23:::1;;::::0;4387:58;;-1:-1:-1;;;4387:58:60;;::::1;::::0;4405:6;;4413:23:::1;::::0;;::::1;::::0;4438:6;;4387:58:::1;;;:::i;4327:129::-;4536:8:::2;::::0;:31:::2;::::0;-1:-1:-1;;;4536:31:60;;12161:10:::2;4536:31;::::0;::::2;6780:51:66::0;;;12161:10:60;-1:-1:-1;;;;;4536:8:60::2;::::0;:22:::2;::::0;6753:18:66;;4536:31:60::2;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4531:103;;4590:33;::::0;-1:-1:-1;;;4590:33:60;;-1:-1:-1;;;;;6798:32:66;;4590:33:60::2;::::0;::::2;6780:51:66::0;6753:18;;4590:33:60::2;6619:218:66::0;4531:103:60::2;12187:24:::3;12214:16:::0;;;:8:::3;:16;::::0;;;;12317:15:::3;::::0;::::3;:30:::0;::::3;::::0;::::3;;;12300:47:::0;::::3;12296:122;;12370:37;::::0;-1:-1:-1;;;12370:37:60;;::::3;::::0;::::3;18007:25:66::0;;;12396:10:60::3;18048:18:66::0;;;18041:60;17980:18;;12370:37:60::3;17833:274:66::0;12296:122:60::3;12479:9;12474:210;12494:17:::0;;::::3;12474:210;;;12548:8;;12536:6;;12543:1;12536:9;;;;;;;:::i;:::-;;;;;;;:20;:44;;;;12572:8;;12560:6;;12567:1;12560:9;;;;;;;:::i;:::-;;;;;;;:20;12536:44;12532:142;;;12629:6;;12636:1;12629:9;;;;;;;:::i;:::-;12640:8;::::0;12650::::3;::::0;12607:52:::3;::::0;-1:-1:-1;;;12607:52:60;;12629:9:::3;::::0;;::::3;::::0;;;::::3;;12607:52;::::0;::::3;11994:25:66::0;12035:18;;;12028:34;12078:18;;;12071:34;;;;-1:-1:-1;11967:18:66;;12607:52:60::3;11792:319:66::0;12532:142:60::3;12513:3;;12474:210;;;;12761:9;12756:211;12780:15;::::0;::::3;:30:::0;::::3;::::0;::::3;;;12776:34:::0;::::3;12756:211;;;12835:17;::::0;;;:9:::3;:17;::::0;;;;:20;;12869:10:::3;::::0;12835:17;12853:1;;12835:20;::::3;;;;;:::i;:::-;;::::0;;;::::3;::::0;;;::::3;::::0;;::::3;;:30:::0;-1:-1:-1;;;;;12835:30:60::3;:44:::0;12831:126:::3;;12906:36;::::0;-1:-1:-1;;;12906:36:60;;::::3;::::0;::::3;18007:25:66::0;;;12931:10:60::3;18048:18:66::0;;;18041:60;17980:18;;12906:36:60::3;17833:274:66::0;12831:126:60::3;12812:3;;12756:211;;;;13037:9;13032:209;13056:19;::::0;;;:11:::3;:19;::::0;;;;:26;13052:30;::::3;13032:209;;;13107:19;::::0;;;:11:::3;:19;::::0;;;;:22;;13143:10:::3;::::0;13107:19;13127:1;;13107:22;::::3;;;;;:::i;:::-;;::::0;;;::::3;::::0;;;::::3;::::0;;::::3;;:32:::0;-1:-1:-1;;;;;13107:32:60::3;:46:::0;13103:128:::3;;13180:36;::::0;-1:-1:-1;;;13180:36:60;;::::3;::::0;::::3;18007:25:66::0;;;13205:10:60::3;18048:18:66::0;;;18041:60;17980:18;;13180:36:60::3;17833:274:66::0;13103:128:60::3;13084:3;;13032:209;;;;13290:37;13307:6;13315:4;13321:5;13290:16;:37::i;:::-;13374:11;:19;13386:6;13374:19;;;;;;;;;;;13412:89;;;;;;;;13489:10;-1:-1:-1::0;;;;;13412:89:60::3;;;;;13451:5;13412:89;;;;13436:6;;13412:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;::::0;;;;-1:-1:-1;;;13412:89:60;;;-1:-1:-1;13412:89:60::3;::::0;;::::3;;::::0;::::3;::::0;;::::3;::::0;::::3;::::0;;;;;;;;;;;;::::3;::::0;;13468:8;;;;;;13412:89;::::3;13468:8:::0;;;;13412:89;::::3;;::::0;::::3;::::0;;;-1:-1:-1;13412:89:60;;;;-1:-1:-1;;13374:137:60;;::::3;::::0;;::::3;::::0;;;;;::::3;::::0;;;;;;::::3;::::0;;::::3;;::::0;;-1:-1:-1;;;;;;13374:137:60::3;-1:-1:-1::0;;;;;13374:137:60;;::::3;::::0;;;::::3;::::0;;;;::::3;::::0;;;::::3;::::0;;;;::::3;::::0;::::3;::::0;;;;;;::::3;::::0;-1:-1:-1;13374:137:60::3;::::0;::::3;::::0;;;;::::3;::::0;::::3;:::i;:::-;-1:-1:-1::0;13374:137:60::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;::::3;::::0;;::::3;:::i;:::-;-1:-1:-1::0;;13560:30:60::3;::::0;13579:10:::3;::::0;-1:-1:-1;13571:6:60;;13560:30:::3;::::0;;;::::3;13686:15;::::0;::::3;:30:::0;13637:16:::3;13656:19:::0;;;:11:::3;:19;::::0;;;;:26;-1:-1:-1;;;13686:30:60;;::::3;;;13656:60;13726:265:::0;::::3;;;13771:20;13757:11:::0;;::::3;:34:::0;;-1:-1:-1;;13757:34:60::3;::::0;13771:20;13757:34:::3;;;;;13831:4;:13;;;13823:6;-1:-1:-1::0;;;;;;;;;;;13846:28:60::3;13876:20;13810:87;;;;;;;:::i;:::-;;;;;;;;13954:26;13973:6;13954:18;:26::i;:::-;12177:1820;;4465:1:::2;4186::::1;;11914:2083:::0;;;;;;;:::o;3155:101:19:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;17962:123:60:-;18021:21;18061:9;:17;18071:6;18061:17;;;;;;;;;;;18054:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18054:24:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3266:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3266:54:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3266:54:60;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2441:144:19:-;1313:22;2570:8;-1:-1:-1;;;;;2570:8:19;;2441:144::o;5050:467:61:-;5156:16;;;;5261:21;;;;:10;:21;:::i;:::-;5253:30;;5248:1;:35;;5232:52;;5316:13;;5309:4;:20;;;;:::i;:::-;5294:35;;5361:13;;5354:4;:20;;;;:::i;:::-;5339:35;-1:-1:-1;5339:35:61;5467:25;;;;;;;;:::i;:::-;:40;;;;;;:::i;:::-;5451:57;;:12;:57;:::i;:::-;5422:25;;;;;;;;:::i;:::-;:87;;;;;;:::i;:::-;5407:11;;:103;;;;:::i;:::-;5384:126;;5222:295;5050:467;;;;;:::o;9529:1880:60:-;4001:8;;:39;;-1:-1:-1;;;4001:39:60;;9663:23;;-1:-1:-1;;;;;4001:8:60;;:21;;:39;;4023:10;;9663:23;;4001:39;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3996:181;;4141:25;;-1:-1:-1;;;4141:25:60;;4155:10;4141:25;;;6780:51:66;6753:18;;4141:25:60;6619:218:66;3996:181:60;9709:6;9717:28:::1;::::0;4331:16:::1;::::0;;;:8:::1;:16;::::0;;;;:23:::1;::::0;;::::1;::::0;::::1;;::::0;:33;::::1;;;;;;:::i;:::-;;4327:129;;4413:16;::::0;;;:8:::1;:16;::::0;;;;;;:23:::1;;::::0;4387:58;;-1:-1:-1;;;4387:58:60;;::::1;::::0;4405:6;;4413:23:::1;::::0;;::::1;::::0;4438:6;;4387:58:::1;;;:::i;4327:129::-;9761:24:::2;9788:16:::0;;;:8:::2;:16;::::0;;;;;9870:205:::2;9894:17;::::0;;;:9:::2;:17;::::0;;;;:24;9890:28;::::2;9870:205;;;9943:17;::::0;;;:9:::2;:17;::::0;;;;:20;;9977:10:::2;::::0;9943:17;9961:1;;9943:20;::::2;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;::::2;::::0;;::::2;;:30:::0;-1:-1:-1;;;;;9943:30:60::2;:44:::0;9939:126:::2;;10014:36;::::0;-1:-1:-1;;;10014:36:60;;::::2;::::0;::::2;18007:25:66::0;;;10039:10:60::2;18048:18:66::0;;;18041:60;17980:18;;10014:36:60::2;17833:274:66::0;9939:126:60::2;9920:3;;9870:205;;;;10124:37;10141:6;10149:4;10155:5;10124:16;:37::i;:::-;10197:28;10240:97;;;;;;;;10265:10;-1:-1:-1::0;;;;;10240:97:60::2;;;;;10284:5;10240:97;;;;10334:1;10240:97;;;;10299:6;;10240:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;::::0;;;;-1:-1:-1;;;10240:97:60;;;-1:-1:-1;10240:97:60::2;::::0;;::::2;;::::0;::::2;::::0;;::::2;::::0;::::2;::::0;;;;;;;;;;;;::::2;::::0;;10317:8;;;;;;10240:97;::::2;10317:8:::0;;;;10240:97;::::2;;::::0;::::2;::::0;;;-1:-1:-1;10240:97:60;;;;-1:-1:-1;;10347:17:60;;;:9:::2;:17;::::0;;;;;;;:32;;::::2;::::0;;::::2;::::0;;;;;;;;;;;::::2;::::0;;::::2;;::::0;;-1:-1:-1;;;;;;10347:32:60::2;-1:-1:-1::0;;;;;10347:32:60;;::::2;::::0;;;::::2;::::0;;;;::::2;::::0;;;::::2;::::0;;;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;-1:-1:-1;10347:32:60;;;;-1:-1:-1;10347:32:60::2;::::0;::::2;::::0;::::2;::::0;;::::2;:::i;:::-;-1:-1:-1::0;10347:32:60::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;:::i;:::-;-1:-1:-1::0;;10427:28:60::2;::::0;10444:10:::2;::::0;-1:-1:-1;10436:6:60;;10427:28:::2;::::0;;;::::2;10537:15;::::0;::::2;:30:::0;-1:-1:-1;;;10537:30:60;::::2;;;;:35:::0;10533:115:::2;;10588:49;10607:10;10619:4;:17;;;10588:18;:49::i;:::-;10788:15;::::0;::::2;:30:::0;10733:16:::2;10752:17:::0;;;:9:::2;:17;::::0;;;;:24;10788:30:::2;::::0;;::::2;;;10752:67;10829:574:::0;::::2;;;10864:15;::::0;::::2;:30:::0;-1:-1:-1;;;10864:30:60;::::2;;;;:35:::0;10860:533:::2;;10995:20;10981:11:::0;;::::2;:34:::0;;-1:-1:-1;;10981:34:60::2;::::0;::::2;::::0;;;11059:13;;::::2;::::0;11038:87:::2;::::0;11059:13;;11051:6;;-1:-1:-1;;;;;;;;;;;11038:87:60;::::2;::::0;10995:20;11038:87:::2;:::i;:::-;;;;;;;;10860:533;;;11218:11;::::0;::::2;:42:::0;;-1:-1:-1;;11218:42:60::2;11232:28;11218:42:::0;;::::2;::::0;;;;11304:13;;::::2;::::0;11283:95:::2;::::0;11304:13;;11296:6;;-1:-1:-1;;;;;;;;;;;11283:95:60;::::2;::::0;11232:28;11283:95:::2;:::i;:::-;;;;;;;;9751:1658;;;4186:1:::1;;9529:1880:::0;;;;;;;:::o;5734:229:61:-;2334:13:19;:11;:13::i;:::-;5910:8:61;5890:17:::1;:28;5910:8:::0;5890:17;:28:::1;:::i;:::-;-1:-1:-1::0;5948:8:61;;-1:-1:-1;5928:17:61::1;:28;5948:8:::0;5928:17;:28:::1;:::i;:::-;-1:-1:-1::0;;;;5734:229:61:o;4495:227::-;2334:13:19;:11;:13::i;:::-;4609:11:61::1;:26:::0;;;;4645:13:::1;:30:::0;4685:13:::1;:30:::0;4495:227::o;17640:144:60:-;2334:13:19;:11;:13::i;:::-;17699:8:60::1;::::0;-1:-1:-1;;;;;17699:8:60::1;:17;17717:7;:5;:7::i;:::-;17726:18;::::0;17699:46:::1;::::0;-1:-1:-1;;;;;;17699:46:60::1;::::0;;;;;;-1:-1:-1;;;;;22750:32:66;;;17699:46:60::1;::::0;::::1;22732:51:66::0;22799:18;;;22792:34;22705:18;;17699:46:60::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;17776:1:60::1;17755:18;:22:::0;17640:144::o;7239:1728::-;3181:17:61;:28;7446:7:60;;7425:10;;3181:28:61;;3157:21;;;;7425:10:60;3157:21:61;:::i;:::-;:52;;;:108;;;-1:-1:-1;3237:17:61;:28;;;3213:21;;;;:10;:21;:::i;:::-;:52;;;3157:108;3140:302;;;3336:21;;;;:10;:21;:::i;:::-;3359:17;:28;;3389:17;:28;3297:134;;-1:-1:-1;;;3297:134:61;;3359:28;23051:17:66;;;3297:134:61;;;23033:36:66;;;;3359:28:61;;;23085:18:66;;;23078:45;3389:28:61;;;;23139:18:66;;;23132:45;23006:18;;3297:134:61;22837:346:66;3140:302:61;3529:17;:32;;;;;;3501:25;;;;;;;;:::i;:::-;:60;;;:140;;;-1:-1:-1;3609:17:61;:32;;;;;;3581:25;;;;;;;;:::i;:::-;:60;;;3501:140;3484:346;;;3712:25;;;;;;;;:::i;:::-;3739:17;:32;;3773:17;:32;3673:146;;-1:-1:-1;;;3673:146:61;;3739:32;23405:25:66;;;3673:146:61;;;23387:44:66;;;;3739:32:61;;;;;;;23447:18:66;;;23440:53;3773:32:61;;;;23509:18:66;;;23502:53;23360:18;;3673:146:61;23188:373:66;3484:346:61;3917:17;:32;-1:-1:-1;;;3917:32:61;;;;3889:25;;;;;;;;:::i;:::-;:60;;;:140;;;-1:-1:-1;3997:17:61;:32;-1:-1:-1;;;3997:32:61;;;;3969:25;;;;;;;;:::i;:::-;:60;;;3889:140;3872:346;;;4100:25;;;;;;;;:::i;:::-;4127:17;:32;;4161:17;:32;4061:146;;-1:-1:-1;;;4061:146:61;;4127:32;23405:25:66;;;4061:146:61;;;23387:44:66;;;;-1:-1:-1;;;4127:32:61;;;;;;23447:18:66;;;23440:53;4161:32:61;;;;23509:18:66;;;23502:53;23360:18;;4061:146:61;23188:373:66;3872:346:61;7466:16:60::1;7484:20:::0;7506::::1;7530:18;7537:10;7530:6;:18::i;:::-;7465:83;;;;;;7563:5;:12;7579:1;7563:17:::0;7559:69:::1;;7603:14;;-1:-1:-1::0;;;7603:14:60::1;;;;;;;;;;;7559:69;7698:8;::::0;:45:::1;::::0;-1:-1:-1;;;7698:45:60;;7717:10:::1;7698:45;::::0;::::1;23740:51:66::0;7737:4:60::1;23807:18:66::0;;;23800:60;7678:17:60::1;::::0;-1:-1:-1;;;;;7698:8:60::1;::::0;:18:::1;::::0;23713::66;;7698:45:60::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7678:65;;7769:8;7757:9;:20;7753:95;;;7800:37;::::0;-1:-1:-1;;;7800:37:60;;::::1;::::0;::::1;24234:25:66::0;;;24275:18;;;24268:34;;;24207:18;;7800:37:60::1;24060:248:66::0;7753:95:60::1;7918:8;::::0;:30:::1;::::0;-1:-1:-1;;;7918:30:60;;7937:10:::1;7918:30;::::0;::::1;6780:51:66::0;7900:15:60::1;::::0;-1:-1:-1;;;;;7918:8:60::1;::::0;:18:::1;::::0;6753::66;;7918:30:60::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7900:48;;7972:8;7962:7;:18;7958:91;;;8003:35;::::0;-1:-1:-1;;;8003:35:60;;::::1;::::0;::::1;24234:25:66::0;;;24275:18;;;24268:34;;;24207:18;;8003:35:60::1;24060:248:66::0;7958:91:60::1;8108:11;;8086:18;;:33;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;8129:8:60::1;::::0;:58:::1;::::0;-1:-1:-1;;;8129:58:60;;8151:10:::1;8129:58;::::0;::::1;24515:51:66::0;8171:4:60::1;24582:18:66::0;;;24575:60;24651:18;;;24644:34;;;-1:-1:-1;;;;;8129:8:60;;::::1;::::0;:21:::1;::::0;24488:18:66;;8129:58:60::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;8290:10:60::1;::::0;;8334:12:::1;::::0;::::1;::::0;;;8371:37:::1;::::0;8399:8;;8387:10:::1;::::0;8290;;8371:37:::1;::::0;8273:14:::1;::::0;8371:37:::1;8496:348;::::0;;::::1;::::0;::::1;::::0;;8533:10:::1;8496:348:::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;::::0;;::::1;::::0;::::1;8627:10:::0;8496:348:::1;:::i;:::-;::::0;;::::1;;8659:28;8496:348;;;;8715:12;8496:348;;;;8755:12;8496:348;;;;8794:11;;8496:348;;;;8596:5;8496:348;;;;8827:6;8496:348;;::::0;8477:8:::1;:16;8486:6;8477:16;;;;;;;;;;;:367;;;;;;;;;;;;;-1:-1:-1::0;;;;;8477:367:60::1;;;;;-1:-1:-1::0;;;;;8477:367:60::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;::::0;;-1:-1:-1;8477:367:60::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;-1:-1:-1::0;8477:367:60::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;::::1;::::0;;::::1;:::i;:::-;;;;;8880:8;8872:6;-1:-1:-1::0;;;;;;;;;;;8890:15:60::1;8907:28;8859:77;;;;;;;:::i;:::-;;;;;;;;8954:6:::0;7239:1728;-1:-1:-1;;;;;;;;;;;7239:1728:60:o;6158:161:61:-;2334:13:19;:11;:13::i;:::-;6258:25:61::1;:54:::0;;-1:-1:-1;;6258:54:61::1;-1:-1:-1::0;;;;;6258:54:61;;;::::1;::::0;;;::::1;::::0;;6158:161::o;6110:513:60:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;-1:-1:-1;;;;;4348:14:20;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;-1:-1:-1;;;;;4790:16:20;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;6373:26:60::1;6388:10;6373:14;:26::i;:::-;6409:91;6433:12;6447:14;6463;6479:9;6490;6409:23;:91::i;:::-;6510:8;:45:::0;;-1:-1:-1;;;;;6510:45:60;;::::1;-1:-1:-1::0;;;;;;6510:45:60;;::::1;;::::0;;;6565:8:::1;:27:::0;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;6510:45;6602:10:::1;:14:::0;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;13648:50:66;;5142:14:20;;13636:2:66;13621:18;5142:14:20;;;;;;;4092:1081;;;;;6110:513:60;;;;;;;:::o;3405:215:19:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:19;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:19;;3562:1:::1;3534:31;::::0;::::1;6780:51:66::0;6753:18;;3534:31:19::1;6619:218:66::0;3485:91:19::1;3585:28;3604:8;3585:18;:28::i;:::-;3405:215:::0;:::o;4594:316:21:-;4674:4;-1:-1:-1;;;;;4683:6:21;4666:23;;;:124;;;4784:6;-1:-1:-1;;;;;4748:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:28;-1:-1:-1;;;;;1519:53:28;;1441:138;4748:32:21;-1:-1:-1;;;;;4748:42:21;;;4666:124;4649:255;;;4864:29;;-1:-1:-1;;;4864:29:21;;;;;;;;;;;5477:140:60;2334:13:19;:11;:13::i;6052:538:21:-;6169:17;-1:-1:-1;;;;;6151:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:21;;;;;;;;-1:-1:-1;;6151:52:21;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:21;;-1:-1:-1;;;;;6798:32:66;;6513:60:21;;;6780:51:66;6753:18;;6513:60:21;6619:218:66;6147:437:21;-1:-1:-1;;;;;;;;;;;6245:40:21;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:21;;;;;1428:25:66;;;1401:18;;6312:34:21;1282:177:66;6241:120:21;6374:54;6404:17;6423:4;6374:29;:54::i;:::-;6204:235;6052:538;;:::o;5027:213::-;5101:4;-1:-1:-1;;;;;5110:6:21;5093:23;;5089:145;;5194:29;;-1:-1:-1;;;5194:29:21;;;;;;;;;;;14334:369:60;14501:14;;14464:71;;14441:20;;14464:71;;14481:6;;14489:10;;;;-1:-1:-1;;;;;14501:14:60;;;;14517:10;;14529:5;;14464:71;;;:::i;:::-;;;;-1:-1:-1;;14464:71:60;;;;;;;;;14609:15;;;:26;14557:18;;14464:71;14557:18;;;14464:71;;-1:-1:-1;;;14609:26:60;;;;14580:56;-1:-1:-1;14545:152:60;;14659:27;;-1:-1:-1;;;14659:27:60;;;;;24234:25:66;;;24275:18;;;24268:34;;;24207:18;;14659:27:60;24060:248:66;14890:2652:60;14952:24;14979:16;;;:8;:16;;;;;;15051:1562;15079:15;;;:30;;;;;;15073:36;;15051:1562;;;15266:15;;;:30;15226:23;;-1:-1:-1;;;15266:30:60;;;;-1:-1:-1;;;;;15252:45:60;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15252:45:60;;15226:71;;15316:11;15311:150;15339:15;;;:30;-1:-1:-1;;;15339:30:60;;;;15333:36;;15311:150;;;15410:19;;;;:11;:19;;;;;:24;;15430:3;;15410:24;;;;;;:::i;:::-;;;;;;;;;;;:31;;15442:3;15410:36;;;;;;;;:::i;:::-;;;;;;;;;15396:6;15403:3;15396:11;;;;;;;;:::i;:::-;;;;;;;;;;:50;15371:5;;15311:150;;;;15531:15;15548:13;15565:25;15583:6;15565:17;:25::i;:::-;15530:60;;;;15750:16;15784:18;15825:11;15820:571;15848:15;;;:30;-1:-1:-1;;;15848:30:60;;;;15842:36;;15820:571;;;15994:13;353:4:64;16010:6:60;16017:3;16010:11;;;;;;;;:::i;:::-;;;;;;;:39;;;;:::i;:::-;15994:55;-1:-1:-1;16091:5:60;16072:15;16080:7;15994:55;16072:15;:::i;:::-;:24;;16071:56;;;;-1:-1:-1;16111:15:60;16119:7;16111:5;:15;:::i;:::-;16102:5;:24;;16071:56;16067:310;;;16151:17;16163:5;16151:17;;:::i;:::-;;-1:-1:-1;16190:12:60;;;;:::i;:::-;;;;16285:73;16304:11;:19;16316:6;16304:19;;;;;;;;;;;16324:3;16304:24;;;;;;;;:::i;:::-;;;;;;;;;;;;;;:34;16340:17;;;;-1:-1:-1;;;;;16304:34:60;;;;16285:18;:73::i;:::-;-1:-1:-1;15880:5:60;;15820:571;;;-1:-1:-1;16481:19:60;16503:15;;:43;;16525:21;16536:10;16525:8;:21;:::i;:::-;16503:43;;;16521:1;16503:43;16560:17;;;;:9;:17;;;;;:22;;16481:65;;-1:-1:-1;16481:65:60;;16578:3;;16560:22;;;;;;:::i;:::-;;;;;;;;;:28;:22;;;;;:28;:42;-1:-1:-1;;15111:5:60;;;;;-1:-1:-1;15051:1562:60;;-1:-1:-1;;;15051:1562:60;;-1:-1:-1;16800:15:60;;;:30;16750:33;;16800:30;;;;;-1:-1:-1;;;;;16786:45:60;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;16786:45:60;;16750:81;;16846:11;16841:144;16869:15;;;:30;;;;;;16863:36;;16841:144;;;16946:17;;;;:9;:17;;;;;:22;;16964:3;;16946:22;;;;;;:::i;:::-;;;;;;;;;;;:28;;;16922:16;16939:3;16922:21;;;;;;;;:::i;:::-;;;;;;;;;;:52;16901:5;;16841:144;;;;17047:14;17063:12;17079:35;17097:16;17079:17;:35::i;:::-;17046:68;;;;17129:11;17124:412;17152:15;;;:30;;;;;;17146:36;;17124:412;;;17300:25;;17338:4;;17300:34;;17328:6;;-1:-1:-1;;;;;17300:25:60;:34;:::i;:::-;353:4:64;17247:16:60;17264:3;17247:21;;;;;;;;:::i;:::-;;;;;;;:49;;;;:::i;:::-;17246:88;;;;:::i;:::-;:96;17242:284;;17381:17;;;;:9;:17;;;;;:22;;17362:71;;17381:17;17399:3;;17381:22;;;;;;:::i;:::-;;;;;;;;;;;;;;:32;17415:17;;;;-1:-1:-1;;;;;17381:32:60;;;;17362:18;:71::i;:::-;17242:284;;;17494:4;:17;;;17472:18;;:39;;;;;;;:::i;:::-;;;;-1:-1:-1;;17242:284:60;17184:5;;17124:412;;;;14942:2600;;;;14890:2652;:::o;2658:162:19:-;958:10:22;2717:7:19;:5;:7::i;:::-;-1:-1:-1;;;;;2717:23:19;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:19;;958:10:22;2763:40:19;;;6780:51:66;6753:18;;2763:40:19;6619:218:66;3774:248:19;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:19;;-1:-1:-1;;;;;3941:19:19;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;18615:165:60:-;18695:8;;18721:42;;-1:-1:-1;;;18721:42:60;;18748:4;18721:42;;;23740:51:66;-1:-1:-1;;;;;23827:32:66;;;23807:18;;;23800:60;18695:8:60;;;;:16;;18712:7;;18766:6;;18695:8;;18721:18;;23713::66;;18721:42:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;18695:78;;-1:-1:-1;;;;;;18695:78:60;;;;;;;-1:-1:-1;;;;;22750:32:66;;;18695:78:60;;;22732:51:66;22799:18;;;22792:34;22705:18;;18695:78:60;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1847:127:19:-;6931:20:20;:18;:20::i;:::-;1929:38:19::1;1954:12;1929:24;:38::i;2151:603:61:-:0;6931:20:20;:18;:20::i;:::-;2374:25:61::1;:29:::0;;2402:1:::1;-1:-1:-1::0;;2374:29:61;;::::1;::::0;::::1;::::0;;;2434:78:::1;::::0;;::::1;::::0;;::::1;::::0;;;;;::::1;::::0;;::::1;::::0;;;;-1:-1:-1;2434:78:61;;;;;;;2414:17:::1;:98:::0;;;-1:-1:-1;;2414:98:61;;;;;;;2542:81;;;;::::1;::::0;;2579:2:::1;2542:81:::0;;;;;::::1;::::0;;;;;;;;;2522:17:::1;:101:::0;;;;;;;;;2634:53:::1;2642:12:::0;2656:14;2672;2634:7:::1;:53::i;:::-;2697:8;:20:::0;;;;2727:8:::1;:20:::0;-1:-1:-1;;;2151:603:61:o;2264:344:28:-;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:28;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;1803:378:64:-;1865:11;1878:12;1903:17;1922:13;1939:14;1948:4;1939:8;:14::i;:::-;1902:51;;;;1970:5;1963:12;;1986;2000:22;2026:38;2038:9;353:4;2026:11;:38::i;:::-;1985:79;;;;2079:7;2074:60;;2109:14;;-1:-1:-1;;;2109:14:64;;;;;;;;;;;2074:60;2149:25;2159:14;2149:9;:25::i;:::-;2143:31;;1892:289;;;;1803:378;;;:::o;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;1980:235:19;6931:20:20;:18;:20::i;1671:281:28:-;1748:17;-1:-1:-1;;;;;1748:29:28;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:28;;-1:-1:-1;;;;;6798:32:66;;1805:47:28;;;6780:51:66;6753:18;;1805:47:28;6619:218:66;1744:119:28;-1:-1:-1;;;;;;;;;;;1872:73:28;;-1:-1:-1;;;;;;1872:73:28;-1:-1:-1;;;;;1872:73:28;;;;;;;;;;1671:281::o;3899:253:38:-;3982:12;4007;4021:23;4048:6;-1:-1:-1;;;;;4048:19:38;4068:4;4048:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4006:67;;;;4090:55;4117:6;4125:7;4134:10;4090:26;:55::i;:::-;4083:62;;;;3899:253;;;;;:::o;6113:122:28:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:28;;;;;;;;;;;984:626:64;1048:11;1061:12;1092:9;1096:4;1092:3;:9::i;:::-;1085:16;;1112:11;1142:9;1137:270;1161:4;:11;1157:1;:15;1137:270;;;1193:18;353:4;1214;1219:1;1214:7;;;;;;;;:::i;:::-;;;;;;;:24;;;;:::i;:::-;1193:45;-1:-1:-1;1301:11:64;1315:33;1343:4;1193:45;1315:33;:::i;:::-;1301:47;-1:-1:-1;1369:27:64;1384:11;1301:47;;1384:11;:::i;:::-;2436:3:46;2431:8;;;2576;;;2575:17;;1788:822;1369:27:64;1362:34;;;;:::i;:::-;;-1:-1:-1;;;1174:3:64;;1137:270;;;;1417:12;1431:15;1450:40;1462:4;:11;353:4;1450:11;:40::i;:::-;1416:74;;;;1505:7;1500:60;;1535:14;;-1:-1:-1;;;1535:14:64;;;;;;;;;;;1500:60;1575:28;1587:3;1592:1;1595:7;1575:11;:28::i;:::-;1569:34;;1075:535;;;984:626;;;:::o;1265:508:44:-;1326:12;1340:14;1624:1;1629;1624:6;1620:28;;-1:-1:-1;1640:4:44;;-1:-1:-1;1646:1:44;1632:16;;1620:28;1674:5;;;1678:1;1674;:5;:1;1697:5;;;;:::i;:::-;;:10;1693:33;;1717:5;1724:1;1709:17;;;;;;;1693:33;1748:4;;-1:-1:-1;1754:1:44;-1:-1:-1;1265:508:44;;;;;;:::o;18079:5181::-;18127:7;18245:1;18240;:6;18236:53;;-1:-1:-1;18273:1:44;18079:5181::o;18236:53::-;19229:1;19257;-1:-1:-1;;;19277:16:44;;19273:92;;19320:3;19313:10;;;;;19348:2;19341:9;19273:92;-1:-1:-1;;;19382:2:44;:15;19378:90;;19424:2;19417:9;;;;;19451:2;19444:9;19378:90;19492:7;19485:2;:15;19481:90;;19527:2;19520:9;;;;;19554:2;19547:9;19481:90;19595:7;19588:2;:15;19584:89;;19630:2;19623:9;;;;;19657:1;19650:8;19584:89;19697:6;19690:2;:14;19686:87;;19731:1;19724:8;;;;;19757:1;19750:8;19686:87;19797:6;19790:2;:14;19786:87;;19831:1;19824:8;;;;;19857:1;19850:8;19786:87;19897:6;19890:2;:14;19886:61;;19931:1;19924:8;19886:61;20373:1;:6;20384:1;20372:13;;;;;22283:1;20372:13;22283:6;;;;:::i;:::-;;22278:2;:11;22277:18;;22272:23;;22403:1;22396:2;22392:1;:6;;;;;:::i;:::-;;22387:2;:11;22386:18;;22381:23;;22514:1;22507:2;22503:1;:6;;;;;:::i;:::-;;22498:2;:11;22497:18;;22492:23;;22623:1;22616:2;22612:1;:6;;;;;:::i;:::-;;22607:2;:11;22606:18;;22601:23;;22733:1;22726:2;22722:1;:6;;;;;:::i;:::-;;22717:2;:11;22716:18;;22711:23;;22843:1;22836:2;22832:1;:6;;;;;:::i;:::-;;22827:2;:11;22826:18;;22821:23;;23215:28;23240:2;23236:1;:6;;;;;:::i;:::-;;23231:11;;;34795:145:45;23215:28:44;23210:33;;;18079:5181;-1:-1:-1;;;18079:5181:44:o;4420:580:38:-;4558:12;4591:7;4586:408;;4614:19;4622:10;4614:7;:19::i;:::-;4586:408;;;4838:17;;:22;:49;;;;-1:-1:-1;;;;;;4864:18:38;;;:23;4838:49;4834:119;;;4914:24;;-1:-1:-1;;;4914:24:38;;-1:-1:-1;;;;;6798:32:66;;4914:24:38;;;6780:51:66;6753:18;;4914:24:38;6619:218:66;4834:119:38;-1:-1:-1;4973:10:38;4586:408;4420:580;;;;;:::o;464:406:64:-;523:11;;;571:232;595:4;:11;591:1;:15;571:232;;;628:12;642:14;660:25;672:4;677:1;672:7;;;;;;;;:::i;:::-;;;;;;;681:3;660:11;:25::i;:::-;627:58;;;;704:7;699:68;;738:14;;-1:-1:-1;;;738:14:64;;;;;;;;;;;699:68;786:6;-1:-1:-1;;608:3:64;;571:232;;;;818:45;830:3;353:4;851;:11;4997:4226:44;5079:14;5450:5;;;5079:14;-1:-1:-1;;5454:1:44;5450;5622:20;5695:5;5691:2;5688:13;5680:5;5676:2;5672:14;5668:34;5659:43;;;5797:5;5806:1;5797:10;5793:368;;6135:11;6127:5;:19;;;;;:::i;:::-;;6120:26;;;;;;5793:368;6286:5;6271:11;:20;6267:143;;6311:84;3067:5;6331:16;;3066:36;940:4:41;3061:42:44;6311:11;:84::i;:::-;6665:17;6800:11;6797:1;6794;6787:25;7200:12;7230:15;;;7215:31;;7349:22;;;;;8095:1;8076;:15;;8075:21;;8328;;;8324:25;;8313:36;8398:21;;;8394:25;;8383:36;8470:21;;;8466:25;;8455:36;8541:21;;;8537:25;;8526:36;8614:21;;;8610:25;;8599:36;8688:21;;;8684:25;;;8673:36;7598:12;;;;7594:23;;;7619:1;7590:31;6914:20;;;6903:32;;;7710:12;;;;6961:21;;;;7447:16;;;;7701:21;;;;9164:15;;;;;-1:-1:-1;;4997:4226:44;;;;;:::o;5540:487:38:-;5671:17;;:21;5667:354;;5868:10;5862:17;5924:15;5911:10;5907:2;5903:19;5896:44;5667:354;5991:19;;-1:-1:-1;;;5991:19:38;;;;;;;;;;;587:231:44;648:12;;724:5;;;747;;;743:28;;;762:5;769:1;754:17;;;;;;;1776:194:41;1881:10;1875:4;1868:24;1918:4;1912;1905:18;1949:4;1943;1936:18;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;14:346:66;82:6;90;143:2;131:9;122:7;118:23;114:32;111:52;;;159:1;156;149:12;111:52;-1:-1:-1;;204:23:66;;;324:2;309:18;;;296:32;;-1:-1:-1;14:346:66:o;365:288::-;406:3;444:5;438:12;471:6;466:3;459:19;527:6;520:4;513:5;509:16;502:4;497:3;493:14;487:47;579:1;572:4;563:6;558:3;554:16;550:27;543:38;642:4;635:2;631:7;626:2;618:6;614:15;610:29;605:3;601:39;597:50;590:57;;;365:288;;;;:::o;658:619::-;964:1;960;955:3;951:11;947:19;939:6;935:32;924:9;917:51;1004:6;999:2;988:9;984:18;977:34;1047:6;1042:2;1031:9;1027:18;1020:34;1090:3;1085:2;1074:9;1070:18;1063:31;898:4;1117:45;1157:3;1146:9;1142:19;1134:6;1117:45;:::i;:::-;1211:9;1203:6;1199:22;1193:3;1182:9;1178:19;1171:51;1239:32;1264:6;1256;1239:32;:::i;:::-;1231:40;658:619;-1:-1:-1;;;;;;;;658:619:66:o;1829:226::-;1888:6;1941:2;1929:9;1920:7;1916:23;1912:32;1909:52;;;1957:1;1954;1947:12;1909:52;-1:-1:-1;2002:23:66;;1829:226;-1:-1:-1;1829:226:66:o;2060:553::-;2180:1;2176;2171:3;2167:11;2163:19;2155:5;2149:12;2145:38;2140:3;2133:51;2233:4;2226:5;2222:16;2216:23;2209:4;2204:3;2200:14;2193:47;2289:4;2282:5;2278:16;2272:23;2265:4;2260:3;2256:14;2249:47;2115:3;2342:4;2335:5;2331:16;2325:23;2380:4;2373;2368:3;2364:14;2357:28;2406:46;2446:4;2441:3;2437:14;2423:12;2406:46;:::i;:::-;2394:58;;2500:4;2493:5;2489:16;2483:23;2548:3;2542:4;2538:14;2531:4;2526:3;2522:14;2515:38;2569;2602:4;2586:14;2569:38;:::i;2618:275::-;2809:2;2798:9;2791:21;2772:4;2829:58;2883:2;2872:9;2868:18;2860:6;2829:58;:::i;2898:1685::-;3106:4;3154:2;3143:9;3139:18;3184:2;3173:9;3166:21;3207:6;3242;3236:13;3273:6;3265;3258:22;3311:2;3300:9;3296:18;3289:25;;3373:2;3363:6;3360:1;3356:14;3345:9;3341:30;3337:39;3323:53;;3411:2;3403:6;3399:15;3432:1;3442:1112;3456:6;3453:1;3450:13;3442:1112;;;3521:22;;;-1:-1:-1;;3517:36:66;3505:49;;3577:13;;3666:9;;-1:-1:-1;;;;;3662:35:66;3647:51;;3749:2;3741:11;;;3735:18;3718:15;;;3711:43;3801:2;3793:11;;;3787:18;3629:4;3825:15;;;3818:29;;;3908:19;;3617:17;;;3940:24;;;4031:21;;;;-1:-1:-1;;3685:3:66;3986:16;;;4090:209;4106:8;4101:3;4098:17;4090:209;;;4189:8;4183:15;4176:5;4169:30;4236:2;4229:5;4225:14;4216:23;;4282:2;4272:8;4268:17;4256:29;;4134:1;4129:3;4125:11;4118:18;;4090:209;;;4094:3;4348:4;4344:2;4340:13;4334:20;4312:42;;4404:6;4397:5;4393:18;4386:4;4378:6;4374:17;4367:45;4435:39;4468:5;4452:14;4435:39;:::i;:::-;4425:49;-1:-1:-1;;;4509:2:66;4532:12;;;;4497:15;;;;;-1:-1:-1;;3478:1:66;3471:9;3442:1112;;;-1:-1:-1;4571:6:66;;2898:1685;-1:-1:-1;;;;;;2898:1685:66:o;4588:385::-;4820:1;4816;4811:3;4807:11;4803:19;4795:6;4791:32;4780:9;4773:51;4860:6;4855:2;4844:9;4840:18;4833:34;4903:2;4898;4887:9;4883:18;4876:30;4754:4;4923:44;4963:2;4952:9;4948:18;4940:6;4923:44;:::i;:::-;4915:52;4588:385;-1:-1:-1;;;;;4588:385:66:o;4978:173::-;5046:20;;-1:-1:-1;;;;;5095:31:66;;5085:42;;5075:70;;5141:1;5138;5131:12;5075:70;4978:173;;;:::o;5156:127::-;5217:10;5212:3;5208:20;5205:1;5198:31;5248:4;5245:1;5238:15;5272:4;5269:1;5262:15;5288:745;5330:5;5383:3;5376:4;5368:6;5364:17;5360:27;5350:55;;5401:1;5398;5391:12;5350:55;5441:6;5428:20;-1:-1:-1;;;;;5463:6:66;5460:30;5457:56;;;5493:18;;:::i;:::-;5562:2;5556:9;5654:2;5616:17;;-1:-1:-1;;5612:31:66;;;5645:2;5608:40;5604:54;5592:67;;-1:-1:-1;;;;;5674:34:66;;5710:22;;;5671:62;5668:88;;;5736:18;;:::i;:::-;5772:2;5765:22;5796;;;5837:19;;;5858:4;5833:30;5830:39;-1:-1:-1;5827:59:66;;;5882:1;5879;5872:12;5827:59;5946:6;5939:4;5931:6;5927:17;5920:4;5912:6;5908:17;5895:58;6001:1;5973:19;;;5994:4;5969:30;5962:41;;;;5977:6;5288:745;-1:-1:-1;;;5288:745:66:o;6038:394::-;6115:6;6123;6176:2;6164:9;6155:7;6151:23;6147:32;6144:52;;;6192:1;6189;6182:12;6144:52;6215:29;6234:9;6215:29;:::i;:::-;6205:39;;6295:2;6284:9;6280:18;6267:32;-1:-1:-1;;;;;6314:6:66;6311:30;6308:50;;;6354:1;6351;6344:12;6308:50;6377:49;6418:7;6409:6;6398:9;6394:22;6377:49;:::i;:::-;6367:59;;;6038:394;;;;;:::o;6842:347::-;6893:8;6903:6;6957:3;6950:4;6942:6;6938:17;6934:27;6924:55;;6975:1;6972;6965:12;6924:55;-1:-1:-1;6998:20:66;;-1:-1:-1;;;;;7030:30:66;;7027:50;;;7073:1;7070;7063:12;7027:50;7110:4;7102:6;7098:17;7086:29;;7162:3;7155:4;7146:6;7138;7134:19;7130:30;7127:39;7124:59;;;7179:1;7176;7169:12;7194:1148;7318:6;7326;7334;7342;7350;7358;7411:3;7399:9;7390:7;7386:23;7382:33;7379:53;;;7428:1;7425;7418:12;7379:53;7473:23;;;-1:-1:-1;7593:2:66;7578:18;;7565:32;;-1:-1:-1;7674:2:66;7659:18;;7646:32;-1:-1:-1;;;;;7690:30:66;;7687:50;;;7733:1;7730;7723:12;7687:50;7756:22;;7809:4;7801:13;;7797:27;-1:-1:-1;7787:55:66;;7838:1;7835;7828:12;7787:55;7878:2;7865:16;-1:-1:-1;;;;;7896:6:66;7893:30;7890:50;;;7936:1;7933;7926:12;7890:50;7989:7;7984:2;7974:6;7971:1;7967:14;7963:2;7959:23;7955:32;7952:45;7949:65;;;8010:1;8007;8000:12;7949:65;8041:2;8033:11;;;;;-1:-1:-1;8063:6:66;-1:-1:-1;8122:2:66;8107:18;;8094:32;-1:-1:-1;;;;;8138:32:66;;8135:52;;;8183:1;8180;8173:12;8135:52;8222:60;8274:7;8263:8;8252:9;8248:24;8222:60;:::i;:::-;7194:1148;;;;-1:-1:-1;7194:1148:66;;-1:-1:-1;7194:1148:66;;8301:8;;7194:1148;-1:-1:-1;;;7194:1148:66:o;8347:837::-;8551:4;8599:2;8588:9;8584:18;8629:2;8618:9;8611:21;8652:6;8687;8681:13;8718:6;8710;8703:22;8756:2;8745:9;8741:18;8734:25;;8818:2;8808:6;8805:1;8801:14;8790:9;8786:30;8782:39;8768:53;;8856:2;8848:6;8844:15;8877:1;8887:268;8901:6;8898:1;8895:13;8887:268;;;8994:2;8990:7;8978:9;8970:6;8966:22;8962:36;8957:3;8950:49;9022:53;9068:6;9059;9053:13;9022:53;:::i;:::-;9012:63;-1:-1:-1;9110:2:66;9133:12;;;;9098:15;;;;;8923:1;8916:9;8887:268;;9424:127;9485:10;9480:3;9476:20;9473:1;9466:31;9516:4;9513:1;9506:15;9540:4;9537:1;9530:15;9556:141;9638:1;9631:5;9628:12;9618:46;;9644:18;;:::i;:::-;9673;;9556:141::o;9702:1201::-;10218:1;10214;10209:3;10205:11;10201:19;10193:6;10189:32;10178:9;10171:51;10258:6;10253:2;10242:9;10238:18;10231:34;10320:4;10311:6;10305:13;10301:24;10296:2;10285:9;10281:18;10274:52;10390:12;10384:2;10376:6;10372:15;10366:22;10362:41;10357:2;10346:9;10342:18;10335:69;10469:12;10463:2;10455:6;10451:15;10445:22;10441:41;10435:3;10424:9;10420:19;10413:70;10492:55;10542:3;10531:9;10527:19;10519:6;10492:55;:::i;:::-;10584:6;10578:3;10567:9;10563:19;10556:35;10628:6;10622:3;10611:9;10607:19;10600:35;10672:6;10666:3;10655:9;10651:19;10644:35;10716:3;10710;10699:9;10695:19;10688:32;10152:4;10743:45;10783:3;10772:9;10768:19;10760:6;10743:45;:::i;:::-;10837:9;10829:6;10825:22;10819:3;10808:9;10804:19;10797:51;10865:32;10890:6;10882;10865:32;:::i;:::-;10857:40;9702:1201;-1:-1:-1;;;;;;;;;;;;9702:1201:66:o;11116:219::-;11265:2;11254:9;11247:21;11228:4;11285:44;11325:2;11314:9;11310:18;11302:6;11285:44;:::i;11340:171::-;11416:5;11461:2;11452:6;11447:3;11443:16;11439:25;11436:45;;;11477:1;11474;11467:12;11436:45;-1:-1:-1;11499:6:66;11340:171;-1:-1:-1;11340:171:66:o;11516:271::-;11619:6;11672:2;11660:9;11651:7;11647:23;11643:32;11640:52;;;11688:1;11685;11678:12;11640:52;11711:70;11773:7;11762:9;11711:70;:::i;12116:947::-;12224:6;12232;12240;12248;12256;12264;12317:3;12305:9;12296:7;12292:23;12288:33;12285:53;;;12334:1;12331;12324:12;12285:53;12379:23;;;-1:-1:-1;12499:2:66;12484:18;;12471:32;;-1:-1:-1;12580:2:66;12565:18;;12552:32;-1:-1:-1;;;;;12596:30:66;;12593:50;;;12639:1;12636;12629:12;12593:50;12678:58;12728:7;12719:6;12708:9;12704:22;12678:58;:::i;:::-;12755:8;;-1:-1:-1;12652:84:66;-1:-1:-1;;12843:2:66;12828:18;;12815:32;-1:-1:-1;;;;;12859:32:66;;12856:52;;;12904:1;12901;12894:12;13068:431;13224:6;13232;13285:3;13273:9;13264:7;13260:23;13256:33;13253:53;;;13302:1;13299;13292:12;13253:53;13325:70;13387:7;13376:9;13325:70;:::i;:::-;13315:80;;13414:79;13485:7;13480:2;13469:9;13465:18;13414:79;:::i;:::-;13404:89;;13068:431;;;;;:::o;13709:466::-;13786:6;13794;13802;13855:2;13843:9;13834:7;13830:23;13826:32;13823:52;;;13871:1;13868;13861:12;13823:52;-1:-1:-1;;13916:23:66;;;14036:2;14021:18;;14008:32;;-1:-1:-1;14139:2:66;14124:18;;;14111:32;;13709:466;-1:-1:-1;13709:466:66:o;14180:762::-;14328:6;14336;14344;14352;14405:3;14393:9;14384:7;14380:23;14376:33;14373:53;;;14422:1;14419;14412:12;14373:53;14458:9;14445:23;14435:33;;14519:2;14508:9;14504:18;14491:32;-1:-1:-1;;;;;14538:6:66;14535:30;14532:50;;;14578:1;14575;14568:12;14532:50;14601:49;14642:7;14633:6;14622:9;14618:22;14601:49;:::i;:::-;14591:59;;;14703:2;14692:9;14688:18;14675:32;-1:-1:-1;;;;;14722:8:66;14719:32;14716:52;;;14764:1;14761;14754:12;14716:52;14787:51;14830:7;14819:8;14808:9;14804:24;14787:51;:::i;:::-;14777:61;;;14857:79;14928:7;14923:2;14912:9;14908:18;14857:79;:::i;:::-;14847:89;;14180:762;;;;;;;:::o;14947:284::-;15005:6;15058:2;15046:9;15037:7;15033:23;15029:32;15026:52;;;15074:1;15071;15064:12;15026:52;15113:9;15100:23;-1:-1:-1;;;;;15156:5:66;15152:30;15145:5;15142:41;15132:69;;15197:1;15194;15187:12;15236:858;15349:6;15357;15365;15373;15381;15389;15397;15450:3;15438:9;15429:7;15425:23;15421:33;15418:53;;;15467:1;15464;15457:12;15418:53;15490:29;15509:9;15490:29;:::i;:::-;15480:39;;15538:38;15572:2;15561:9;15557:18;15538:38;:::i;:::-;15236:858;;15528:48;;-1:-1:-1;;;;15645:2:66;15630:18;;15617:32;;15746:2;15731:18;;15718:32;;15849:3;15834:19;;15821:33;;-1:-1:-1;15953:3:66;15938:19;;15925:33;;-1:-1:-1;16057:3:66;16042:19;;;16029:33;;-1:-1:-1;15236:858:66:o;16099:186::-;16158:6;16211:2;16199:9;16190:7;16186:23;16182:32;16179:52;;;16227:1;16224;16217:12;16179:52;16250:29;16269:9;16250:29;:::i;16290:380::-;16369:1;16365:12;;;;16412;;;16433:61;;16487:4;16479:6;16475:17;16465:27;;16433:61;16540:2;16532:6;16529:14;16509:18;16506:38;16503:161;;16586:10;16581:3;16577:20;16574:1;16567:31;16621:4;16618:1;16611:15;16649:4;16646:1;16639:15;16675:387;16905:25;;;16893:2;16878:18;;16939:54;16989:2;16974:18;;16966:6;16939:54;:::i;:::-;17002;17052:2;17041:9;17037:18;17029:6;17002:54;:::i;:::-;16675:387;;;;;;:::o;17067:127::-;17128:10;17123:3;17119:20;17116:1;17109:31;17159:4;17156:1;17149:15;17183:4;17180:1;17173:15;17199:347;-1:-1:-1;;;;;17408:32:66;;17390:51;;17378:2;17363:18;;17471:1;17460:13;;17450:47;;17477:18;;:::i;:::-;17533:6;17528:2;17517:9;17513:18;17506:34;17199:347;;;;;:::o;17551:277::-;17618:6;17671:2;17659:9;17650:7;17646:23;17642:32;17639:52;;;17687:1;17684;17677:12;17639:52;17719:9;17713:16;17772:5;17765:13;17758:21;17751:5;17748:32;17738:60;;17794:1;17791;17784:12;18237:517;18338:2;18333:3;18330:11;18327:421;;;18374:5;18371:1;18364:16;18418:4;18415:1;18405:18;18488:2;18476:10;18472:19;18469:1;18465:27;18459:4;18455:38;18524:4;18512:10;18509:20;18506:47;;;-1:-1:-1;18547:4:66;18506:47;18602:2;18597:3;18593:12;18590:1;18586:20;18580:4;18576:31;18566:41;;18657:81;18675:2;18668:5;18665:13;18657:81;;;18734:1;18720:16;;18701:1;18690:13;18657:81;;;18661:3;;18237:517;;;:::o;18930:1295::-;19054:3;19048:10;-1:-1:-1;;;;;19073:6:66;19070:30;19067:56;;;19103:18;;:::i;:::-;19132:96;19221:6;19181:38;19213:4;19207:11;19181:38;:::i;:::-;19175:4;19132:96;:::i;:::-;19277:4;19308:2;19297:14;;19325:1;19320:648;;;;20012:1;20029:6;20026:89;;;-1:-1:-1;20081:19:66;;;20075:26;20026:89;-1:-1:-1;;18887:1:66;18883:11;;;18879:24;18875:29;18865:40;18911:1;18907:11;;;18862:57;20128:81;;19290:929;;19320:648;18184:1;18177:14;;;18221:4;18208:18;;-1:-1:-1;;19356:20:66;;;19473:222;19487:7;19484:1;19481:14;19473:222;;;19569:19;;;19563:26;19548:42;;19676:4;19661:20;;;;19629:1;19617:14;;;;19503:12;19473:222;;;19477:3;19723:6;19714:7;19711:19;19708:201;;;19784:19;;;19778:26;-1:-1:-1;;19867:1:66;19863:14;;;19879:3;19859:24;19855:37;19851:42;19836:58;19821:74;;19708:201;-1:-1:-1;;;;19955:1:66;19939:14;;;19935:22;19922:36;;-1:-1:-1;18930:1295:66:o;20230:316::-;20420:2;20405:18;;20432:45;20409:9;20459:6;20432:45;:::i;:::-;20486:54;20536:2;20525:9;20521:18;20513:6;20486:54;:::i;20551:114::-;20635:4;20628:5;20624:16;20617:5;20614:27;20604:55;;20655:1;20652;20645:12;20670:243;20727:6;20780:2;20768:9;20759:7;20755:23;20751:32;20748:52;;;20796:1;20793;20786:12;20748:52;20835:9;20822:23;20854:29;20877:5;20854:29;:::i;20918:127::-;20979:10;20974:3;20970:20;20967:1;20960:31;21010:4;21007:1;21000:15;21034:4;21031:1;21024:15;21050:168;21123:9;;;21154;;21171:15;;;21165:22;;21151:37;21141:71;;21192:18;;:::i;21223:123::-;21308:12;21301:5;21297:24;21290:5;21287:35;21277:63;;21336:1;21333;21326:12;21351:245;21409:6;21462:2;21450:9;21441:7;21437:23;21433:32;21430:52;;;21478:1;21475;21468:12;21430:52;21517:9;21504:23;21536:30;21560:5;21536:30;:::i;21601:125::-;21666:9;;;21687:10;;;21684:36;;;21700:18;;:::i;21731:822::-;21930:5;21917:19;21945:31;21968:7;21945:31;:::i;:::-;22008:4;21999:7;21995:18;21985:28;;22038:4;22032:11;22087:2;22080:3;22076:8;22072:2;22068:17;22065:25;22059:4;22052:39;22139:2;22132:5;22128:14;22115:28;22152:32;22176:7;22152:32;:::i;:::-;22230:14;22220:7;22217:1;22213:15;22209:36;22193:52;;22308:8;22303:2;22285:14;22281:19;22277:2;22273:28;22270:36;22267:50;22261:4;22254:64;22366:2;22359:5;22355:14;22342:28;22379:32;22403:7;22379:32;:::i;:::-;22520:24;22510:7;22506:2;22502:16;22498:47;22492:2;22464:24;22460:29;22456:2;22452:38;22449:46;22439:8;22436:60;22433:113;22427:4;22420:127;;;;;21731:822;;:::o;23871:184::-;23941:6;23994:2;23982:9;23973:7;23969:23;23965:32;23962:52;;;24010:1;24007;24000:12;23962:52;-1:-1:-1;24033:16:66;;23871:184;-1:-1:-1;23871:184:66:o;24689:853::-;24790:6;24850:2;24838:9;24829:7;24825:23;24821:32;24865:2;24862:22;;;24880:1;24877;24870:12;24862:22;-1:-1:-1;24949:2:66;24943:9;24991:2;24979:15;;-1:-1:-1;;;;;25009:34:66;;25045:22;;;25006:62;25003:88;;;25071:18;;:::i;:::-;25107:2;25100:22;25144:23;;25176:29;25144:23;25176:29;:::i;:::-;25214:21;;25287:2;25272:18;;25259:32;25300;25259;25300;:::i;:::-;25360:2;25348:15;;25341:32;25425:2;25410:18;;25397:32;25438;25397;25438;:::i;:::-;25498:2;25486:15;;25479:32;25490:6;24689:853;-1:-1:-1;;;24689:853:66:o;26080:1102::-;26348:6;26343:3;26336:19;26318:3;26375:1;26408:6;26402:13;26438:36;26464:9;26438:36;:::i;:::-;26505:1;26490:17;;26516:151;;;;26681:1;26676:346;;;;26483:539;;26516:151;26577:3;26573:8;26562:9;26558:24;26553:2;26548:3;26544:12;26537:46;26654:2;26642:6;26635:14;26628:22;26620:6;26616:35;26611:3;26607:45;26603:54;26596:61;;26516:151;;26676:346;26707:6;26704:1;26697:17;26755:2;26752:1;26742:16;26780:1;26794:173;26808:6;26805:1;26802:13;26794:173;;;26901:7;26895:14;26890:2;26886:1;26881:3;26877:11;26873:20;26866:44;26951:1;26942:7;26938:15;26927:26;;26830:2;26827:1;26823:10;26818:15;;26794:173;;;26798:3;;27009:2;27000:6;26995:3;26991:16;26987:25;26980:32;;26483:539;;;;27031:31;27058:3;27050:6;26024:2;26020:14;-1:-1:-1;;26016:52:66;26004:65;;25950:125;27031:31;27071:40;27107:2;27102:3;27098:12;27090:6;26024:2;26020:14;-1:-1:-1;;26016:52:66;26004:65;;25950:125;27071:40;27136:2;27127:12;;27120:28;;;;-1:-1:-1;;27173:2:66;27164:12;;26080:1102;-1:-1:-1;;;;26080:1102:66:o;27187:135::-;27226:3;27247:17;;;27244:43;;27267:18;;:::i;:::-;-1:-1:-1;27314:1:66;27303:13;;27187:135::o;27327:127::-;27388:10;27383:3;27379:20;27376:1;27369:31;27419:4;27416:1;27409:15;27443:4;27440:1;27433:15;27459:217;27499:1;27525;27515:132;;27569:10;27564:3;27560:20;27557:1;27550:31;27604:4;27601:1;27594:15;27632:4;27629:1;27622:15;27515:132;-1:-1:-1;27661:9:66;;27459:217::o;27681:301::-;27810:3;27848:6;27842:13;27894:6;27887:4;27879:6;27875:17;27870:3;27864:37;27956:1;27920:16;;27945:13;;;-1:-1:-1;27920:16:66;27681:301;-1:-1:-1;27681:301:66:o;27987:200::-;28053:9;;;28026:4;28081:9;;28109:10;;28121:12;;;28105:29;28144:12;;;28136:21;;28102:56;28099:82;;;28161:18;;:::i;:::-;28099:82;27987:200;;;;:::o;28192:237::-;28264:9;;;28231:7;28289:9;;-1:-1:-1;;;28300:18:66;;28285:34;28282:60;;;28322:18;;:::i;:::-;28395:1;28386:7;28381:16;28378:1;28375:23;28371:1;28364:9;28361:38;28351:72;;28403:18;;:::i","linkReferences":{},"immutableReferences":{"36949":[{"start":8916,"length":32},{"start":8957,"length":32},{"start":9281,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","feeToken()":"647846a5","generationDeviationFactor()":"ca287c35","generationFee()":"0566f18a","getBestResponse(uint256)":"32f77659","getFee((uint8,uint40,uint40))":"b13fc8f4","getResponses(uint256)":"71ee2ce1","getValidations(uint256)":"434dbaee","initialize(address,address,uint256,uint256,uint256,uint256,uint256)":"edbf4ac2","maxScore()":"9a1b4b38","maximumParameters()":"1da7bc9a","minScore()":"13c2bedc","minimumParameters()":"2bafb614","nextTaskId()":"fdc3d8d7","owner()":"8da5cb5b","platformFee()":"26232a2e","platformFeeBalance()":"e3c98ba0","proxiableUUID()":"52d1902d","registry()":"7b103999","renounceOwnership()":"715018a6","request(bytes32,bytes,bytes,(uint8,uint40,uint40))":"e76aec11","requests(uint256)":"81d12c58","respond(uint256,uint256,bytes,bytes)":"b584e617","responses(uint256,uint256)":"0057efc2","setFees(uint256,uint256,uint256)":"cec10c11","setGenerationDeviationFactor(uint64)":"e9ca8b46","setParameters((uint8,uint40,uint40),(uint8,uint40,uint40))":"b84b8ac7","transferOwnership(address)":"f2fde38b","upgradeToAndCall(address,bytes)":"4f1ef286","validate(uint256,uint256,uint256[],bytes)":"6b4d5bfc","validationFee()":"f8bbf27e","validations(uint256,uint256)":"4b5a82d1","withdrawPlatformFees()":"d0b7830b"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"AlreadyResponded\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ComputeError\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"want\",\"type\":\"uint256\"}],\"name\":\"InsufficientFees\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInput\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"}],\"name\":\"InvalidNonce\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"have\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"min\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"max\",\"type\":\"uint256\"}],\"name\":\"InvalidParameterRange\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"enum LLMOracleTask.TaskStatus\",\"name\":\"have\",\"type\":\"uint8\"},{\"internalType\":\"enum LLMOracleTask.TaskStatus\",\"name\":\"want\",\"type\":\"uint8\"}],\"name\":\"InvalidTaskStatus\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"InvalidValidation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"}],\"name\":\"NotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"NotWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"protocol\",\"type\":\"bytes32\"}],\"name\":\"Request\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"responder\",\"type\":\"address\"}],\"name\":\"Response\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"protocol\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"enum LLMOracleTask.TaskStatus\",\"name\":\"statusBefore\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"enum LLMOracleTask.TaskStatus\",\"name\":\"statusAfter\",\"type\":\"uint8\"}],\"name\":\"StatusUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"Validation\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeToken\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"generationDeviationFactor\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"generationFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"getBestResponse\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"responder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"struct LLMOracleTask.TaskResponse\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"internalType\":\"struct LLMOracleTaskParameters\",\"name\":\"parameters\",\"type\":\"tuple\"}],\"name\":\"getFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"generatorFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorFee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"getResponses\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"responder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"struct LLMOracleTask.TaskResponse[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"getValidations\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"scores\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"internalType\":\"struct LLMOracleTask.TaskValidation[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_oracleRegistry\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_feeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_platformFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_generationFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validationFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_minScore\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxScore\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maxScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"maximumParameters\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minScore\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minimumParameters\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextTaskId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"platformFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"platformFeeBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registry\",\"outputs\":[{\"internalType\":\"contract LLMOracleRegistry\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"protocol\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"models\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"internalType\":\"struct LLMOracleTaskParameters\",\"name\":\"parameters\",\"type\":\"tuple\"}],\"name\":\"request\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"requests\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"protocol\",\"type\":\"bytes32\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"internalType\":\"struct LLMOracleTaskParameters\",\"name\":\"parameters\",\"type\":\"tuple\"},{\"internalType\":\"enum LLMOracleTask.TaskStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"generatorFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"validatorFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"platformFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"input\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"models\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"respond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"responses\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"responder\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"score\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"output\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_platformFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_generationFee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validationFee\",\"type\":\"uint256\"}],\"name\":\"setFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"_generationDeviationFactor\",\"type\":\"uint64\"}],\"name\":\"setGenerationDeviationFactor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"internalType\":\"struct LLMOracleTaskParameters\",\"name\":\"minimums\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"uint8\",\"name\":\"difficulty\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"numGenerations\",\"type\":\"uint40\"},{\"internalType\":\"uint40\",\"name\":\"numValidations\",\"type\":\"uint40\"}],\"internalType\":\"struct LLMOracleTaskParameters\",\"name\":\"maximums\",\"type\":\"tuple\"}],\"name\":\"setParameters\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"uint256[]\",\"name\":\"scores\",\"type\":\"uint256[]\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"name\":\"validate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validationFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"validations\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"metadata\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawPlatformFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Request(uint256,address,bytes32)\":{\"details\":\"`protocol` is a short 32-byte string (e.g., \\\"dria/1.0.0\\\").Using the protocol topic, listeners can filter by protocol.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"details\":\"[See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--).\"},\"getBestResponse(uint256)\":{\"details\":\"For invalid task IDs, the status check will fail.\",\"params\":{\"taskId\":\"The ID of the task to get the result for.\"},\"returns\":{\"_0\":\"The best performing response w.r.t validation scores.\"}},\"getFee((uint8,uint40,uint40))\":{\"params\":{\"parameters\":\"The task parameters.\"},\"returns\":{\"generatorFee\":\"The fee paid to each generator per generation.\",\"totalFee\":\"The total fee for the task.\",\"validatorFee\":\"The fee paid to each validator per validated generation.\"}},\"getResponses(uint256)\":{\"params\":{\"taskId\":\"The ID of the task to get responses for.\"},\"returns\":{\"_0\":\"The responses for the given taskId.\"}},\"getValidations(uint256)\":{\"params\":{\"taskId\":\"The ID of the task to get validations for.\"},\"returns\":{\"_0\":\"The validations for the given taskId.\"}},\"initialize(address,address,uint256,uint256,uint256,uint256,uint256)\":{\"params\":{\"_feeToken\":\"The token (ERC20) to be used for fee payments (usually $BATCH).\",\"_generationFee\":\"The initial base fee for LLM generation.\",\"_oracleRegistry\":\"The Oracle Registry contract address.\",\"_platformFee\":\"The initial platform fee for each LLM generation.\",\"_validationFee\":\"The initial base fee for response validation.\"}},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"request(bytes32,bytes,bytes,(uint8,uint40,uint40))\":{\"details\":\"Input must be non-empty.Reverts if contract has not enough allowance for the fee.Reverts if difficulty is out of range.\",\"params\":{\"input\":\"The input data for the LLM generation.\",\"parameters\":\"The task parameters\",\"protocol\":\"The protocol string, should be a short 32-byte string (e.g., \\\"dria/1.0.0\\\").\"},\"returns\":{\"_0\":\"task id\"}},\"respond(uint256,uint256,bytes,bytes)\":{\"details\":\"Output must be non-empty.Reverts if the task is not pending generation.Reverts if the responder is not registered.Reverts if the responder has already responded to this task.Reverts if the nonce is not a valid proof-of-work.\",\"params\":{\"metadata\":\"Optional metadata for this output.\",\"nonce\":\"The proof-of-work nonce.\",\"output\":\"The output data for the LLM generation.\",\"taskId\":\"The task ID to respond to.\"}},\"setFees(uint256,uint256,uint256)\":{\"details\":\"To keep a fee unchanged, provide the same value.\",\"params\":{\"_generationFee\":\"The new generation fee\",\"_platformFee\":\"The new platform fee\",\"_validationFee\":\"The new validation fee\"}},\"setGenerationDeviationFactor(uint64)\":{\"details\":\"Provide the same value to keep it unchanged.\",\"params\":{\"_generationDeviationFactor\":\"The new generation deviation factor.\"}},\"setParameters((uint8,uint40,uint40),(uint8,uint40,uint40))\":{\"details\":\"Provide the same value to keep it unchanged.\",\"params\":{\"maximums\":\"The new maximum parameters.\",\"minimums\":\"The new minimum parameters.\"}},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"},\"validate(uint256,uint256,uint256[],bytes)\":{\"details\":\"Reverts if the task is not pending validation.Reverts if the number of scores is not equal to the number of generations.Reverts if any score is greater than the maximum score.\",\"params\":{\"metadata\":\"Optional metadata for this validation.\",\"nonce\":\"The proof-of-work nonce.\",\"scores\":\"The validation scores for each generation.\",\"taskId\":\"The ID of the task to validate.\"}}},\"stateVariables\":{\"nextTaskId\":{\"details\":\"TaskId starts from 1, as 0 is reserved.0 can be used in to check that a request/response/validation has not been made.\"}},\"title\":\"LLM Oracle Coordinator\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyResponded(uint256,address)\":[{\"notice\":\"The oracle has already responded to this task.\"}],\"InsufficientFees(uint256,uint256)\":[{\"notice\":\"Not enough funds were provided for the task.\"}],\"InvalidInput()\":[{\"notice\":\"Input is Empty.\"}],\"InvalidNonce(uint256,uint256)\":[{\"notice\":\"The given nonce is not a valid proof-of-work.\"}],\"InvalidParameterRange(uint256,uint256,uint256)\":[{\"notice\":\"Given parameter is out of range.\"}],\"InvalidTaskStatus(uint256,uint8,uint8)\":[{\"notice\":\"Unexpected status for this task.\"}],\"InvalidValidation(uint256,address)\":[{\"notice\":\"The provided validation does not have a score for all responses.\"}],\"NotRegistered(address)\":[{\"notice\":\"The oracle is not registered.\"}],\"NotWhitelisted(address)\":[{\"notice\":\"Error to be thrown when a non-whitelisted address tries to access a function.\"}]},\"events\":{\"Request(uint256,address,bytes32)\":{\"notice\":\"Indicates a generation request for LLM.\"},\"Response(uint256,address)\":{\"notice\":\"Indicates a single Oracle response for a request.\"},\"StatusUpdate(uint256,bytes32,uint8,uint8)\":{\"notice\":\"Indicates the status change of an LLM generation request.\"},\"Validation(uint256,address)\":{\"notice\":\"Indicates a single Oracle response for a request.\"}},\"kind\":\"user\",\"methods\":{\"constructor\":{\"notice\":\"Locks the contract, preventing any future re-initialization.\"},\"feeToken()\":{\"notice\":\"The token to be used for fee payments.\"},\"generationDeviationFactor()\":{\"notice\":\"The deviation factor for the generation scores.\"},\"generationFee()\":{\"notice\":\"The base fee factor for a generation of LLM generation.\"},\"getBestResponse(uint256)\":{\"notice\":\"Returns the best performing result of the given task.\"},\"getFee((uint8,uint40,uint40))\":{\"notice\":\"Get the total fee for a given task setting.\"},\"getResponses(uint256)\":{\"notice\":\"Returns the responses to a given taskId.\"},\"getValidations(uint256)\":{\"notice\":\"Returns the validations to a given taskId.\"},\"initialize(address,address,uint256,uint256,uint256,uint256,uint256)\":{\"notice\":\"Initialize the contract.Sets the Oracle Registry & Oracle Fee Manager.\"},\"maxScore()\":{\"notice\":\"The maximum score for a generation.\"},\"maximumParameters()\":{\"notice\":\"Maximums for oracle parameters.\"},\"minScore()\":{\"notice\":\"The minimum score for a generation.\"},\"minimumParameters()\":{\"notice\":\"Minimums for oracle parameters.\"},\"nextTaskId()\":{\"notice\":\"The task ID counter.\"},\"platformFee()\":{\"notice\":\"A fixed fee paid for the platform.\"},\"platformFeeBalance()\":{\"notice\":\"To track the platform fees to be able to owner withdraw the correct amount of fee.\"},\"registry()\":{\"notice\":\"The Oracle Registry.\"},\"request(bytes32,bytes,bytes,(uint8,uint40,uint40))\":{\"notice\":\"Request LLM generation.\"},\"requests(uint256)\":{\"notice\":\"LLM generation requests.\"},\"respond(uint256,uint256,bytes,bytes)\":{\"notice\":\"Respond to an LLM generation.\"},\"responses(uint256,uint256)\":{\"notice\":\"LLM generation responses.\"},\"setFees(uint256,uint256,uint256)\":{\"notice\":\"Update Oracle fees.\"},\"setGenerationDeviationFactor(uint64)\":{\"notice\":\"Update generation deviation factor.\"},\"setParameters((uint8,uint40,uint40),(uint8,uint40,uint40))\":{\"notice\":\"Update Oracle parameters bounds.\"},\"validate(uint256,uint256,uint256[],bytes)\":{\"notice\":\"Validate requests for a given taskId.\"},\"validationFee()\":{\"notice\":\"The base fee factor for a generation of LLM validation.\"},\"validations(uint256,uint256)\":{\"notice\":\"LLM generation response validations.\"},\"withdrawPlatformFees()\":{\"notice\":\"Withdraw the platform fees & along with remaining fees within the contract.\"}},\"notice\":\"Responsible for coordinating the Oracle responses to LLM generation requests.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LLMOracleCoordinator.sol\":\"LLMOracleCoordinator\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xaab065cbe0f562d1d7185da1e0def4e4ee026ed76da24895db0e02f68666e56e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e2161611bd6810eea79168fd56ffc55ae54ef9f7732bd751565f6324b19fbb5\",\"dweb:/ipfs/QmWHmc4rx1w96oCftjJvcUFgqs4Yo93FNGgQhc7yZBVHMa\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xc0ca0cf9ebb745f31e90584b1309c871a54d1c20c1bb09163ff5cc9083c1c929\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d45a6bcfbb149dad07bba6352fc8f0d90a09858c1dfba3044c4b12ed7e14f67\",\"dweb:/ipfs/QmPiyFySkJjcNfy4af42qQGcfi8DSNZXjSD1odjWRaHkPn\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x02caa0e5f7bade9a0d8ad6058467d641cb67697cd4678c7b1c170686bafe9128\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33b42a434f5d5fdc5071be05238059b9d8938bdab510071a5c300a975abc405a\",\"dweb:/ipfs/QmaThmoD3JMdHGhn4GUJbEGnKcojUG8PWMFoC7DFcQoeCw\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xd7c9f6f5f3386c29eee9321197fd83ac735c9c3c21431065f0e8e10fe3d0739c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://096db22b340a43c39b39383ca644dbe0a50c7984fe9cec6a0cf4c2ac8b985dd7\",\"dweb:/ipfs/QmNRjJL4pHyPd2eEbtdxhCTMK1xfSScGZ2RvEggnVdfrDN\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x68ae173e8ada4b8effc37f888cb937037aba3d2e45ce4becbc0c0c861e62da81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e295d0647e564d93e3b17e151c3b2be3609fac380a3f046d8defc268ca7cf9fb\",\"dweb:/ipfs/QmZVaD9YVT3Ss7s1vYSAW23xVLxh1LKSSVLwA8N7imeBRW\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/Math.sol\":{\"keccak256\":\"0x9a3edbfea14335a37f212fa3eef8fbc233a8c2987746485b9498992ab319500b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://72f1e6ed540d8f61805a4256ad17e65cd92ff743d09666a33d2914f9fef040ba\",\"dweb:/ipfs/QmXbajpjWG7noYMsaGrhR9wnSnH7Dor8hcEZsSYbBM6tkr\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/LLMOracleCoordinator.sol\":{\"keccak256\":\"0xe83792d5104dc766420f5fd2a9eb2b6533d04e5dd5f77fb834178c7f8dee255a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://72e533f78b5cf14bf5b4ba8056d6c2319ef7bf4c4364250881620a892dea2fb1\",\"dweb:/ipfs/QmVYocVoA1xW53aHnZunqAiyNuSXba4VszkWrayjkw5ryL\"]},\"src/LLMOracleManager.sol\":{\"keccak256\":\"0x67af84266d6ace5562f957759d69b4eaebe1bd64e0ff974fc97cafcbe08116c8\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c7b72af58f286ce45b10d02a7722fd0760e0ed03e2f807ff9db93e797240f34b\",\"dweb:/ipfs/QmeFZc71QD3K77EgcWtu9BC62LB1YX1FitXJDN8VrHwmP1\"]},\"src/LLMOracleRegistry.sol\":{\"keccak256\":\"0xa99ae44652d1bf56511081741b6a5a0217668fc1eddfecc102fed914fecb4942\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://081d30ffb7d37e40dd85149a5751cd1305deebff21e2592606f2d9ca3c064eda\",\"dweb:/ipfs/QmcwNXEVtyTezGfrVx8Xe6pbMvzXaqyd7Hd7kRcsA2SN5W\"]},\"src/LLMOracleTask.sol\":{\"keccak256\":\"0x513e33afbc11d0938ef9240d7d595a7bc396af61e250f341c3fc6dd0b3e10cc5\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://182b088ee206923289c93ebf5918470b8c89a19b4505f3e3af3eae660a621456\",\"dweb:/ipfs/QmVodUVJ8EUwdMjSJDfXRGqoA5UcdqaGUULFa4tQ9zusph\"]},\"src/Statistics.sol\":{\"keccak256\":\"0x2c8bdc72131f3e300adc0d8c3887f159daa6f1f95a64176f6dde26fdfecd1936\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3fe1b8370fc2c3bf2f849b5da6c9056b4f607ee3b71c391604de8f3497041b8f\",\"dweb:/ipfs/QmQH389E2gBCopZUbymMeSZeSgfy2UmbDy2xk6xV2wXHuf\"]},\"src/Whitelist.sol\":{\"keccak256\":\"0x10e850f4bd39e7ebffa6ee33f24026082f37cf0b78f2e86ff678266d51f046df\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5e139ccd80e55e2b5fa9490cc591d5f13364f712a68523ea93983406ad6c017e\",\"dweb:/ipfs/QmbzK1uXzyHBwr3i4EKMfEtz2qTbiiNWYkiCxWLtUiayfd\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"oracle","type":"address"}],"type":"error","name":"AlreadyResponded"},{"inputs":[],"type":"error","name":"ComputeError"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"want","type":"uint256"}],"type":"error","name":"InsufficientFees"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"InvalidInput"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"}],"type":"error","name":"InvalidNonce"},{"inputs":[{"internalType":"uint256","name":"have","type":"uint256"},{"internalType":"uint256","name":"min","type":"uint256"},{"internalType":"uint256","name":"max","type":"uint256"}],"type":"error","name":"InvalidParameterRange"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"enum LLMOracleTask.TaskStatus","name":"have","type":"uint8"},{"internalType":"enum LLMOracleTask.TaskStatus","name":"want","type":"uint8"}],"type":"error","name":"InvalidTaskStatus"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"validator","type":"address"}],"type":"error","name":"InvalidValidation"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"}],"type":"error","name":"NotRegistered"},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"type":"error","name":"NotWhitelisted"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"address","name":"requester","type":"address","indexed":true},{"internalType":"bytes32","name":"protocol","type":"bytes32","indexed":true}],"type":"event","name":"Request","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"address","name":"responder","type":"address","indexed":true}],"type":"event","name":"Response","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"protocol","type":"bytes32","indexed":true},{"internalType":"enum LLMOracleTask.TaskStatus","name":"statusBefore","type":"uint8","indexed":false},{"internalType":"enum LLMOracleTask.TaskStatus","name":"statusAfter","type":"uint8","indexed":false}],"type":"event","name":"StatusUpdate","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"address","name":"validator","type":"address","indexed":true}],"type":"event","name":"Validation","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"feeToken","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"generationDeviationFactor","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"generationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBestResponse","outputs":[{"internalType":"struct LLMOracleTask.TaskResponse","name":"","type":"tuple","components":[{"internalType":"address","name":"responder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}]}]},{"inputs":[{"internalType":"struct LLMOracleTaskParameters","name":"parameters","type":"tuple","components":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]}],"stateMutability":"view","type":"function","name":"getFee","outputs":[{"internalType":"uint256","name":"totalFee","type":"uint256"},{"internalType":"uint256","name":"generatorFee","type":"uint256"},{"internalType":"uint256","name":"validatorFee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getResponses","outputs":[{"internalType":"struct LLMOracleTask.TaskResponse[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"responder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}]}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getValidations","outputs":[{"internalType":"struct LLMOracleTask.TaskValidation[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"validator","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256[]","name":"scores","type":"uint256[]"},{"internalType":"bytes","name":"metadata","type":"bytes"}]}]},{"inputs":[{"internalType":"address","name":"_oracleRegistry","type":"address"},{"internalType":"address","name":"_feeToken","type":"address"},{"internalType":"uint256","name":"_platformFee","type":"uint256"},{"internalType":"uint256","name":"_generationFee","type":"uint256"},{"internalType":"uint256","name":"_validationFee","type":"uint256"},{"internalType":"uint256","name":"_minScore","type":"uint256"},{"internalType":"uint256","name":"_maxScore","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[],"stateMutability":"view","type":"function","name":"maxScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"maximumParameters","outputs":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minScore","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minimumParameters","outputs":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextTaskId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"platformFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"platformFeeBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"registry","outputs":[{"internalType":"contract LLMOracleRegistry","name":"","type":"address"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"bytes32","name":"protocol","type":"bytes32"},{"internalType":"bytes","name":"input","type":"bytes"},{"internalType":"bytes","name":"models","type":"bytes"},{"internalType":"struct LLMOracleTaskParameters","name":"parameters","type":"tuple","components":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]}],"stateMutability":"nonpayable","type":"function","name":"request","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"view","type":"function","name":"requests","outputs":[{"internalType":"address","name":"requester","type":"address"},{"internalType":"bytes32","name":"protocol","type":"bytes32"},{"internalType":"struct LLMOracleTaskParameters","name":"parameters","type":"tuple","components":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]},{"internalType":"enum LLMOracleTask.TaskStatus","name":"status","type":"uint8"},{"internalType":"uint256","name":"generatorFee","type":"uint256"},{"internalType":"uint256","name":"validatorFee","type":"uint256"},{"internalType":"uint256","name":"platformFee","type":"uint256"},{"internalType":"bytes","name":"input","type":"bytes"},{"internalType":"bytes","name":"models","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"respond"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"responses","outputs":[{"internalType":"address","name":"responder","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256","name":"score","type":"uint256"},{"internalType":"bytes","name":"output","type":"bytes"},{"internalType":"bytes","name":"metadata","type":"bytes"}]},{"inputs":[{"internalType":"uint256","name":"_platformFee","type":"uint256"},{"internalType":"uint256","name":"_generationFee","type":"uint256"},{"internalType":"uint256","name":"_validationFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setFees"},{"inputs":[{"internalType":"uint64","name":"_generationDeviationFactor","type":"uint64"}],"stateMutability":"nonpayable","type":"function","name":"setGenerationDeviationFactor"},{"inputs":[{"internalType":"struct LLMOracleTaskParameters","name":"minimums","type":"tuple","components":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]},{"internalType":"struct LLMOracleTaskParameters","name":"maximums","type":"tuple","components":[{"internalType":"uint8","name":"difficulty","type":"uint8"},{"internalType":"uint40","name":"numGenerations","type":"uint40"},{"internalType":"uint40","name":"numValidations","type":"uint40"}]}],"stateMutability":"nonpayable","type":"function","name":"setParameters"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"uint256[]","name":"scores","type":"uint256[]"},{"internalType":"bytes","name":"metadata","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"validate"},{"inputs":[],"stateMutability":"view","type":"function","name":"validationFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function","name":"validations","outputs":[{"internalType":"address","name":"validator","type":"address"},{"internalType":"uint256","name":"nonce","type":"uint256"},{"internalType":"bytes","name":"metadata","type":"bytes"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdrawPlatformFees"}],"devdoc":{"kind":"dev","methods":{"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor","details":"[See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--)."},"getBestResponse(uint256)":{"details":"For invalid task IDs, the status check will fail.","params":{"taskId":"The ID of the task to get the result for."},"returns":{"_0":"The best performing response w.r.t validation scores."}},"getFee((uint8,uint40,uint40))":{"params":{"parameters":"The task parameters."},"returns":{"generatorFee":"The fee paid to each generator per generation.","totalFee":"The total fee for the task.","validatorFee":"The fee paid to each validator per validated generation."}},"getResponses(uint256)":{"params":{"taskId":"The ID of the task to get responses for."},"returns":{"_0":"The responses for the given taskId."}},"getValidations(uint256)":{"params":{"taskId":"The ID of the task to get validations for."},"returns":{"_0":"The validations for the given taskId."}},"initialize(address,address,uint256,uint256,uint256,uint256,uint256)":{"params":{"_feeToken":"The token (ERC20) to be used for fee payments (usually $BATCH).","_generationFee":"The initial base fee for LLM generation.","_oracleRegistry":"The Oracle Registry contract address.","_platformFee":"The initial platform fee for each LLM generation.","_validationFee":"The initial base fee for response validation."}},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"request(bytes32,bytes,bytes,(uint8,uint40,uint40))":{"details":"Input must be non-empty.Reverts if contract has not enough allowance for the fee.Reverts if difficulty is out of range.","params":{"input":"The input data for the LLM generation.","parameters":"The task parameters","protocol":"The protocol string, should be a short 32-byte string (e.g., \"dria/1.0.0\")."},"returns":{"_0":"task id"}},"respond(uint256,uint256,bytes,bytes)":{"details":"Output must be non-empty.Reverts if the task is not pending generation.Reverts if the responder is not registered.Reverts if the responder has already responded to this task.Reverts if the nonce is not a valid proof-of-work.","params":{"metadata":"Optional metadata for this output.","nonce":"The proof-of-work nonce.","output":"The output data for the LLM generation.","taskId":"The task ID to respond to."}},"setFees(uint256,uint256,uint256)":{"details":"To keep a fee unchanged, provide the same value.","params":{"_generationFee":"The new generation fee","_platformFee":"The new platform fee","_validationFee":"The new validation fee"}},"setGenerationDeviationFactor(uint64)":{"details":"Provide the same value to keep it unchanged.","params":{"_generationDeviationFactor":"The new generation deviation factor."}},"setParameters((uint8,uint40,uint40),(uint8,uint40,uint40))":{"details":"Provide the same value to keep it unchanged.","params":{"maximums":"The new maximum parameters.","minimums":"The new minimum parameters."}},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."},"validate(uint256,uint256,uint256[],bytes)":{"details":"Reverts if the task is not pending validation.Reverts if the number of scores is not equal to the number of generations.Reverts if any score is greater than the maximum score.","params":{"metadata":"Optional metadata for this validation.","nonce":"The proof-of-work nonce.","scores":"The validation scores for each generation.","taskId":"The ID of the task to validate."}}},"version":1},"userdoc":{"kind":"user","methods":{"constructor":{"notice":"Locks the contract, preventing any future re-initialization."},"feeToken()":{"notice":"The token to be used for fee payments."},"generationDeviationFactor()":{"notice":"The deviation factor for the generation scores."},"generationFee()":{"notice":"The base fee factor for a generation of LLM generation."},"getBestResponse(uint256)":{"notice":"Returns the best performing result of the given task."},"getFee((uint8,uint40,uint40))":{"notice":"Get the total fee for a given task setting."},"getResponses(uint256)":{"notice":"Returns the responses to a given taskId."},"getValidations(uint256)":{"notice":"Returns the validations to a given taskId."},"initialize(address,address,uint256,uint256,uint256,uint256,uint256)":{"notice":"Initialize the contract.Sets the Oracle Registry & Oracle Fee Manager."},"maxScore()":{"notice":"The maximum score for a generation."},"maximumParameters()":{"notice":"Maximums for oracle parameters."},"minScore()":{"notice":"The minimum score for a generation."},"minimumParameters()":{"notice":"Minimums for oracle parameters."},"nextTaskId()":{"notice":"The task ID counter."},"platformFee()":{"notice":"A fixed fee paid for the platform."},"platformFeeBalance()":{"notice":"To track the platform fees to be able to owner withdraw the correct amount of fee."},"registry()":{"notice":"The Oracle Registry."},"request(bytes32,bytes,bytes,(uint8,uint40,uint40))":{"notice":"Request LLM generation."},"requests(uint256)":{"notice":"LLM generation requests."},"respond(uint256,uint256,bytes,bytes)":{"notice":"Respond to an LLM generation."},"responses(uint256,uint256)":{"notice":"LLM generation responses."},"setFees(uint256,uint256,uint256)":{"notice":"Update Oracle fees."},"setGenerationDeviationFactor(uint64)":{"notice":"Update generation deviation factor."},"setParameters((uint8,uint40,uint40),(uint8,uint40,uint40))":{"notice":"Update Oracle parameters bounds."},"validate(uint256,uint256,uint256[],bytes)":{"notice":"Validate requests for a given taskId."},"validationFee()":{"notice":"The base fee factor for a generation of LLM validation."},"validations(uint256,uint256)":{"notice":"LLM generation response validations."},"withdrawPlatformFees()":{"notice":"Withdraw the platform fees & along with remaining fees within the contract."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","@openzeppelin/foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LLMOracleCoordinator.sol":"LLMOracleCoordinator"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xaab065cbe0f562d1d7185da1e0def4e4ee026ed76da24895db0e02f68666e56e","urls":["bzz-raw://7e2161611bd6810eea79168fd56ffc55ae54ef9f7732bd751565f6324b19fbb5","dweb:/ipfs/QmWHmc4rx1w96oCftjJvcUFgqs4Yo93FNGgQhc7yZBVHMa"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xc0ca0cf9ebb745f31e90584b1309c871a54d1c20c1bb09163ff5cc9083c1c929","urls":["bzz-raw://7d45a6bcfbb149dad07bba6352fc8f0d90a09858c1dfba3044c4b12ed7e14f67","dweb:/ipfs/QmPiyFySkJjcNfy4af42qQGcfi8DSNZXjSD1odjWRaHkPn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x02caa0e5f7bade9a0d8ad6058467d641cb67697cd4678c7b1c170686bafe9128","urls":["bzz-raw://33b42a434f5d5fdc5071be05238059b9d8938bdab510071a5c300a975abc405a","dweb:/ipfs/QmaThmoD3JMdHGhn4GUJbEGnKcojUG8PWMFoC7DFcQoeCw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xd7c9f6f5f3386c29eee9321197fd83ac735c9c3c21431065f0e8e10fe3d0739c","urls":["bzz-raw://096db22b340a43c39b39383ca644dbe0a50c7984fe9cec6a0cf4c2ac8b985dd7","dweb:/ipfs/QmNRjJL4pHyPd2eEbtdxhCTMK1xfSScGZ2RvEggnVdfrDN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x68ae173e8ada4b8effc37f888cb937037aba3d2e45ce4becbc0c0c861e62da81","urls":["bzz-raw://e295d0647e564d93e3b17e151c3b2be3609fac380a3f046d8defc268ca7cf9fb","dweb:/ipfs/QmZVaD9YVT3Ss7s1vYSAW23xVLxh1LKSSVLwA8N7imeBRW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Panic.sol":{"keccak256":"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a","urls":["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a","dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/Math.sol":{"keccak256":"0x9a3edbfea14335a37f212fa3eef8fbc233a8c2987746485b9498992ab319500b","urls":["bzz-raw://72f1e6ed540d8f61805a4256ad17e65cd92ff743d09666a33d2914f9fef040ba","dweb:/ipfs/QmXbajpjWG7noYMsaGrhR9wnSnH7Dor8hcEZsSYbBM6tkr"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol":{"keccak256":"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54","urls":["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8","dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol":{"keccak256":"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3","urls":["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03","dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"],"license":"MIT"},"src/LLMOracleCoordinator.sol":{"keccak256":"0xe83792d5104dc766420f5fd2a9eb2b6533d04e5dd5f77fb834178c7f8dee255a","urls":["bzz-raw://72e533f78b5cf14bf5b4ba8056d6c2319ef7bf4c4364250881620a892dea2fb1","dweb:/ipfs/QmVYocVoA1xW53aHnZunqAiyNuSXba4VszkWrayjkw5ryL"],"license":"Apache-2.0"},"src/LLMOracleManager.sol":{"keccak256":"0x67af84266d6ace5562f957759d69b4eaebe1bd64e0ff974fc97cafcbe08116c8","urls":["bzz-raw://c7b72af58f286ce45b10d02a7722fd0760e0ed03e2f807ff9db93e797240f34b","dweb:/ipfs/QmeFZc71QD3K77EgcWtu9BC62LB1YX1FitXJDN8VrHwmP1"],"license":"Apache-2.0"},"src/LLMOracleRegistry.sol":{"keccak256":"0xa99ae44652d1bf56511081741b6a5a0217668fc1eddfecc102fed914fecb4942","urls":["bzz-raw://081d30ffb7d37e40dd85149a5751cd1305deebff21e2592606f2d9ca3c064eda","dweb:/ipfs/QmcwNXEVtyTezGfrVx8Xe6pbMvzXaqyd7Hd7kRcsA2SN5W"],"license":"Apache-2.0"},"src/LLMOracleTask.sol":{"keccak256":"0x513e33afbc11d0938ef9240d7d595a7bc396af61e250f341c3fc6dd0b3e10cc5","urls":["bzz-raw://182b088ee206923289c93ebf5918470b8c89a19b4505f3e3af3eae660a621456","dweb:/ipfs/QmVodUVJ8EUwdMjSJDfXRGqoA5UcdqaGUULFa4tQ9zusph"],"license":"Apache-2.0"},"src/Statistics.sol":{"keccak256":"0x2c8bdc72131f3e300adc0d8c3887f159daa6f1f95a64176f6dde26fdfecd1936","urls":["bzz-raw://3fe1b8370fc2c3bf2f849b5da6c9056b4f607ee3b71c391604de8f3497041b8f","dweb:/ipfs/QmQH389E2gBCopZUbymMeSZeSgfy2UmbDy2xk6xV2wXHuf"],"license":"Apache-2.0"},"src/Whitelist.sol":{"keccak256":"0x10e850f4bd39e7ebffa6ee33f24026082f37cf0b78f2e86ff678266d51f046df","urls":["bzz-raw://5e139ccd80e55e2b5fa9490cc591d5f13364f712a68523ea93983406ad6c017e","dweb:/ipfs/QmbzK1uXzyHBwr3i4EKMfEtz2qTbiiNWYkiCxWLtUiayfd"],"license":"Apache-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":52154,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"platformFee","offset":0,"slot":"0","type":"t_uint256"},{"astId":52157,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"generationFee","offset":0,"slot":"1","type":"t_uint256"},{"astId":52160,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"validationFee","offset":0,"slot":"2","type":"t_uint256"},{"astId":52163,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"generationDeviationFactor","offset":0,"slot":"3","type":"t_uint64"},{"astId":52167,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"minimumParameters","offset":0,"slot":"4","type":"t_struct(LLMOracleTaskParameters)52834_storage"},{"astId":52171,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"maximumParameters","offset":0,"slot":"5","type":"t_struct(LLMOracleTaskParameters)52834_storage"},{"astId":52174,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"minScore","offset":0,"slot":"6","type":"t_uint256"},{"astId":52177,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"maxScore","offset":0,"slot":"7","type":"t_uint256"},{"astId":50990,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"registry","offset":0,"slot":"8","type":"t_contract(LLMOracleRegistry)52821"},{"astId":50994,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"feeToken","offset":0,"slot":"9","type":"t_contract(ERC20)38696"},{"astId":50997,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"nextTaskId","offset":0,"slot":"10","type":"t_uint256"},{"astId":51003,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"requests","offset":0,"slot":"11","type":"t_mapping(t_uint256,t_struct(TaskRequest)52872_storage)"},{"astId":51010,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"responses","offset":0,"slot":"12","type":"t_mapping(t_uint256,t_array(t_struct(TaskResponse)52889_storage)dyn_storage)"},{"astId":51017,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"validations","offset":0,"slot":"13","type":"t_mapping(t_uint256,t_array(t_struct(TaskValidation)52904_storage)dyn_storage)"},{"astId":51020,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"platformFeeBalance","offset":0,"slot":"14","type":"t_uint256"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_array(t_struct(TaskResponse)52889_storage)dyn_storage":{"encoding":"dynamic_array","label":"struct LLMOracleTask.TaskResponse[]","numberOfBytes":"32","base":"t_struct(TaskResponse)52889_storage"},"t_array(t_struct(TaskValidation)52904_storage)dyn_storage":{"encoding":"dynamic_array","label":"struct LLMOracleTask.TaskValidation[]","numberOfBytes":"32","base":"t_struct(TaskValidation)52904_storage"},"t_array(t_uint256)dyn_storage":{"encoding":"dynamic_array","label":"uint256[]","numberOfBytes":"32","base":"t_uint256"},"t_bytes32":{"encoding":"inplace","label":"bytes32","numberOfBytes":"32"},"t_bytes_storage":{"encoding":"bytes","label":"bytes","numberOfBytes":"32"},"t_contract(ERC20)38696":{"encoding":"inplace","label":"contract ERC20","numberOfBytes":"20"},"t_contract(LLMOracleRegistry)52821":{"encoding":"inplace","label":"contract LLMOracleRegistry","numberOfBytes":"20"},"t_enum(TaskStatus)52841":{"encoding":"inplace","label":"enum LLMOracleTask.TaskStatus","numberOfBytes":"1"},"t_mapping(t_uint256,t_array(t_struct(TaskResponse)52889_storage)dyn_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct LLMOracleTask.TaskResponse[])","numberOfBytes":"32","value":"t_array(t_struct(TaskResponse)52889_storage)dyn_storage"},"t_mapping(t_uint256,t_array(t_struct(TaskValidation)52904_storage)dyn_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct LLMOracleTask.TaskValidation[])","numberOfBytes":"32","value":"t_array(t_struct(TaskValidation)52904_storage)dyn_storage"},"t_mapping(t_uint256,t_struct(TaskRequest)52872_storage)":{"encoding":"mapping","key":"t_uint256","label":"mapping(uint256 => struct LLMOracleTask.TaskRequest)","numberOfBytes":"32","value":"t_struct(TaskRequest)52872_storage"},"t_struct(LLMOracleTaskParameters)52834_storage":{"encoding":"inplace","label":"struct LLMOracleTaskParameters","numberOfBytes":"32","members":[{"astId":52827,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"difficulty","offset":0,"slot":"0","type":"t_uint8"},{"astId":52830,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"numGenerations","offset":1,"slot":"0","type":"t_uint40"},{"astId":52833,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"numValidations","offset":6,"slot":"0","type":"t_uint40"}]},"t_struct(TaskRequest)52872_storage":{"encoding":"inplace","label":"struct LLMOracleTask.TaskRequest","numberOfBytes":"288","members":[{"astId":52845,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"requester","offset":0,"slot":"0","type":"t_address"},{"astId":52848,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"protocol","offset":0,"slot":"1","type":"t_bytes32"},{"astId":52852,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"parameters","offset":0,"slot":"2","type":"t_struct(LLMOracleTaskParameters)52834_storage"},{"astId":52856,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"status","offset":0,"slot":"3","type":"t_enum(TaskStatus)52841"},{"astId":52859,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"generatorFee","offset":0,"slot":"4","type":"t_uint256"},{"astId":52862,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"validatorFee","offset":0,"slot":"5","type":"t_uint256"},{"astId":52865,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"platformFee","offset":0,"slot":"6","type":"t_uint256"},{"astId":52868,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"input","offset":0,"slot":"7","type":"t_bytes_storage"},{"astId":52871,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"models","offset":0,"slot":"8","type":"t_bytes_storage"}]},"t_struct(TaskResponse)52889_storage":{"encoding":"inplace","label":"struct LLMOracleTask.TaskResponse","numberOfBytes":"160","members":[{"astId":52876,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"responder","offset":0,"slot":"0","type":"t_address"},{"astId":52879,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"nonce","offset":0,"slot":"1","type":"t_uint256"},{"astId":52882,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"score","offset":0,"slot":"2","type":"t_uint256"},{"astId":52885,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"output","offset":0,"slot":"3","type":"t_bytes_storage"},{"astId":52888,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"metadata","offset":0,"slot":"4","type":"t_bytes_storage"}]},"t_struct(TaskValidation)52904_storage":{"encoding":"inplace","label":"struct LLMOracleTask.TaskValidation","numberOfBytes":"128","members":[{"astId":52893,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"validator","offset":0,"slot":"0","type":"t_address"},{"astId":52896,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"nonce","offset":0,"slot":"1","type":"t_uint256"},{"astId":52900,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"scores","offset":0,"slot":"2","type":"t_array(t_uint256)dyn_storage"},{"astId":52903,"contract":"src/LLMOracleCoordinator.sol:LLMOracleCoordinator","label":"metadata","offset":0,"slot":"3","type":"t_bytes_storage"}]},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"},"t_uint40":{"encoding":"inplace","label":"uint40","numberOfBytes":"5"},"t_uint64":{"encoding":"inplace","label":"uint64","numberOfBytes":"8"},"t_uint8":{"encoding":"inplace","label":"uint8","numberOfBytes":"1"}}},"ast":{"absolutePath":"src/LLMOracleCoordinator.sol","id":52134,"exportedSymbols":{"ERC20":[38696],"LLMOracleCoordinator":[52133],"LLMOracleKind":[52428],"LLMOracleManager":[52416],"LLMOracleRegistry":[52821],"LLMOracleTask":[52905],"LLMOracleTaskParameters":[52834],"Statistics":[53117],"UUPSUpgradeable":[37111],"Whitelist":[53213]},"nodeType":"SourceUnit","src":"39:19838:60","nodes":[{"id":50880,"nodeType":"PragmaDirective","src":"39:24:60","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":50882,"nodeType":"ImportDirective","src":"65:68:60","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":38697,"symbolAliases":[{"foreign":{"id":50881,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38696,"src":"73:5:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50884,"nodeType":"ImportDirective","src":"134:100:60","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":37112,"symbolAliases":[{"foreign":{"id":50883,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37111,"src":"142:15:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50887,"nodeType":"ImportDirective","src":"236:73:60","nodes":[],"absolutePath":"src/LLMOracleRegistry.sol","file":"./LLMOracleRegistry.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":52822,"symbolAliases":[{"foreign":{"id":50885,"name":"LLMOracleRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52821,"src":"244:17:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":50886,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"263:13:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50890,"nodeType":"ImportDirective","src":"310:75:60","nodes":[],"absolutePath":"src/LLMOracleTask.sol","file":"./LLMOracleTask.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":52906,"symbolAliases":[{"foreign":{"id":50888,"name":"LLMOracleTask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52905,"src":"318:13:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"},{"foreign":{"id":50889,"name":"LLMOracleTaskParameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52834,"src":"333:23:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50892,"nodeType":"ImportDirective","src":"386:56:60","nodes":[],"absolutePath":"src/LLMOracleManager.sol","file":"./LLMOracleManager.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":52417,"symbolAliases":[{"foreign":{"id":50891,"name":"LLMOracleManager","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52416,"src":"394:16:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50894,"nodeType":"ImportDirective","src":"443:44:60","nodes":[],"absolutePath":"src/Statistics.sol","file":"./Statistics.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":53118,"symbolAliases":[{"foreign":{"id":50893,"name":"Statistics","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53117,"src":"451:10:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":50896,"nodeType":"ImportDirective","src":"488:42:60","nodes":[],"absolutePath":"src/Whitelist.sol","file":"./Whitelist.sol","nameLocation":"-1:-1:-1","scope":52134,"sourceUnit":53214,"symbolAliases":[{"foreign":{"id":50895,"name":"Whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53213,"src":"496:9:60","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52133,"nodeType":"ContractDefinition","src":"656:19220:60","nodes":[{"id":50912,"nodeType":"EventDefinition","src":"1124:91:60","nodes":[],"anonymous":false,"documentation":{"id":50904,"nodeType":"StructuredDocumentation","src":"923:196:60","text":"@notice Indicates a generation request for LLM.\n @dev `protocol` is a short 32-byte string (e.g., \"dria/1.0.0\").\n @dev Using the protocol topic, listeners can filter by protocol."},"eventSelector":"7f371482986a3450b759cc4a079353a8eaa36a650b5eba1fb9c00693026f254a","name":"Request","nameLocation":"1130:7:60","parameters":{"id":50911,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50906,"indexed":true,"mutability":"mutable","name":"taskId","nameLocation":"1154:6:60","nodeType":"VariableDeclaration","scope":50912,"src":"1138:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50905,"name":"uint256","nodeType":"ElementaryTypeName","src":"1138:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50908,"indexed":true,"mutability":"mutable","name":"requester","nameLocation":"1178:9:60","nodeType":"VariableDeclaration","scope":50912,"src":"1162:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50907,"name":"address","nodeType":"ElementaryTypeName","src":"1162:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":50910,"indexed":true,"mutability":"mutable","name":"protocol","nameLocation":"1205:8:60","nodeType":"VariableDeclaration","scope":50912,"src":"1189:24:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":50909,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1189:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"}],"src":"1137:77:60"}},{"id":50919,"nodeType":"EventDefinition","src":"1287:66:60","nodes":[],"anonymous":false,"documentation":{"id":50913,"nodeType":"StructuredDocumentation","src":"1221:61:60","text":"@notice Indicates a single Oracle response for a request."},"eventSelector":"6c809136a3b8faf74ae9e955b7e7b758baa66bde976764a29fa74a4eb1e3702e","name":"Response","nameLocation":"1293:8:60","parameters":{"id":50918,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50915,"indexed":true,"mutability":"mutable","name":"taskId","nameLocation":"1318:6:60","nodeType":"VariableDeclaration","scope":50919,"src":"1302:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50914,"name":"uint256","nodeType":"ElementaryTypeName","src":"1302:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50917,"indexed":true,"mutability":"mutable","name":"responder","nameLocation":"1342:9:60","nodeType":"VariableDeclaration","scope":50919,"src":"1326:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50916,"name":"address","nodeType":"ElementaryTypeName","src":"1326:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1301:51:60"}},{"id":50926,"nodeType":"EventDefinition","src":"1425:68:60","nodes":[],"anonymous":false,"documentation":{"id":50920,"nodeType":"StructuredDocumentation","src":"1359:61:60","text":"@notice Indicates a single Oracle response for a request."},"eventSelector":"a1afe65d2285036595be8f15025c4421a593141666e15e5a980e742920646b1e","name":"Validation","nameLocation":"1431:10:60","parameters":{"id":50925,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50922,"indexed":true,"mutability":"mutable","name":"taskId","nameLocation":"1458:6:60","nodeType":"VariableDeclaration","scope":50926,"src":"1442:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50921,"name":"uint256","nodeType":"ElementaryTypeName","src":"1442:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50924,"indexed":true,"mutability":"mutable","name":"validator","nameLocation":"1482:9:60","nodeType":"VariableDeclaration","scope":50926,"src":"1466:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50923,"name":"address","nodeType":"ElementaryTypeName","src":"1466:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1441:51:60"}},{"id":50939,"nodeType":"EventDefinition","src":"1573:132:60","nodes":[],"anonymous":false,"documentation":{"id":50927,"nodeType":"StructuredDocumentation","src":"1499:69:60","text":"@notice Indicates the status change of an LLM generation request."},"eventSelector":"1c0a5e4b371d60717068c91e93b5e94c91d4c6d6c3fab36082a78f987e5a69f5","name":"StatusUpdate","nameLocation":"1579:12:60","parameters":{"id":50938,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50929,"indexed":true,"mutability":"mutable","name":"taskId","nameLocation":"1617:6:60","nodeType":"VariableDeclaration","scope":50939,"src":"1601:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50928,"name":"uint256","nodeType":"ElementaryTypeName","src":"1601:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50931,"indexed":true,"mutability":"mutable","name":"protocol","nameLocation":"1641:8:60","nodeType":"VariableDeclaration","scope":50939,"src":"1625:24:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":50930,"name":"bytes32","nodeType":"ElementaryTypeName","src":"1625:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":50934,"indexed":false,"mutability":"mutable","name":"statusBefore","nameLocation":"1662:12:60","nodeType":"VariableDeclaration","scope":50939,"src":"1651:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"typeName":{"id":50933,"nodeType":"UserDefinedTypeName","pathNode":{"id":50932,"name":"TaskStatus","nameLocations":["1651:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":52841,"src":"1651:10:60"},"referencedDeclaration":52841,"src":"1651:10:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"visibility":"internal"},{"constant":false,"id":50937,"indexed":false,"mutability":"mutable","name":"statusAfter","nameLocation":"1687:11:60","nodeType":"VariableDeclaration","scope":50939,"src":"1676:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"typeName":{"id":50936,"nodeType":"UserDefinedTypeName","pathNode":{"id":50935,"name":"TaskStatus","nameLocations":["1676:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":52841,"src":"1676:10:60"},"referencedDeclaration":52841,"src":"1676:10:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"visibility":"internal"}],"src":"1591:113:60"}},{"id":50946,"nodeType":"ErrorDefinition","src":"1951:51:60","nodes":[],"documentation":{"id":50940,"nodeType":"StructuredDocumentation","src":"1890:56:60","text":"@notice Not enough funds were provided for the task."},"errorSelector":"8f4f5d78","name":"InsufficientFees","nameLocation":"1957:16:60","parameters":{"id":50945,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50942,"mutability":"mutable","name":"have","nameLocation":"1982:4:60","nodeType":"VariableDeclaration","scope":50946,"src":"1974:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50941,"name":"uint256","nodeType":"ElementaryTypeName","src":"1974:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50944,"mutability":"mutable","name":"want","nameLocation":"1996:4:60","nodeType":"VariableDeclaration","scope":50946,"src":"1988:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50943,"name":"uint256","nodeType":"ElementaryTypeName","src":"1988:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1973:28:60"}},{"id":50957,"nodeType":"ErrorDefinition","src":"2057:74:60","nodes":[],"documentation":{"id":50947,"nodeType":"StructuredDocumentation","src":"2008:44:60","text":"@notice Unexpected status for this task."},"errorSelector":"48f178b8","name":"InvalidTaskStatus","nameLocation":"2063:17:60","parameters":{"id":50956,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50949,"mutability":"mutable","name":"taskId","nameLocation":"2089:6:60","nodeType":"VariableDeclaration","scope":50957,"src":"2081:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50948,"name":"uint256","nodeType":"ElementaryTypeName","src":"2081:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50952,"mutability":"mutable","name":"have","nameLocation":"2108:4:60","nodeType":"VariableDeclaration","scope":50957,"src":"2097:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"typeName":{"id":50951,"nodeType":"UserDefinedTypeName","pathNode":{"id":50950,"name":"TaskStatus","nameLocations":["2097:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":52841,"src":"2097:10:60"},"referencedDeclaration":52841,"src":"2097:10:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"visibility":"internal"},{"constant":false,"id":50955,"mutability":"mutable","name":"want","nameLocation":"2125:4:60","nodeType":"VariableDeclaration","scope":50957,"src":"2114:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"typeName":{"id":50954,"nodeType":"UserDefinedTypeName","pathNode":{"id":50953,"name":"TaskStatus","nameLocations":["2114:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":52841,"src":"2114:10:60"},"referencedDeclaration":52841,"src":"2114:10:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"visibility":"internal"}],"src":"2080:50:60"}},{"id":50964,"nodeType":"ErrorDefinition","src":"2199:50:60","nodes":[],"documentation":{"id":50958,"nodeType":"StructuredDocumentation","src":"2137:57:60","text":"@notice The given nonce is not a valid proof-of-work."},"errorSelector":"06427aeb","name":"InvalidNonce","nameLocation":"2205:12:60","parameters":{"id":50963,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50960,"mutability":"mutable","name":"taskId","nameLocation":"2226:6:60","nodeType":"VariableDeclaration","scope":50964,"src":"2218:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50959,"name":"uint256","nodeType":"ElementaryTypeName","src":"2218:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50962,"mutability":"mutable","name":"nonce","nameLocation":"2242:5:60","nodeType":"VariableDeclaration","scope":50964,"src":"2234:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50961,"name":"uint256","nodeType":"ElementaryTypeName","src":"2234:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"2217:31:60"}},{"id":50971,"nodeType":"ErrorDefinition","src":"2336:59:60","nodes":[],"documentation":{"id":50965,"nodeType":"StructuredDocumentation","src":"2255:76:60","text":"@notice The provided validation does not have a score for all responses."},"errorSelector":"ab8ad48a","name":"InvalidValidation","nameLocation":"2342:17:60","parameters":{"id":50970,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50967,"mutability":"mutable","name":"taskId","nameLocation":"2368:6:60","nodeType":"VariableDeclaration","scope":50971,"src":"2360:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50966,"name":"uint256","nodeType":"ElementaryTypeName","src":"2360:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50969,"mutability":"mutable","name":"validator","nameLocation":"2384:9:60","nodeType":"VariableDeclaration","scope":50971,"src":"2376:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50968,"name":"address","nodeType":"ElementaryTypeName","src":"2376:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2359:35:60"}},{"id":50976,"nodeType":"ErrorDefinition","src":"2447:36:60","nodes":[],"documentation":{"id":50972,"nodeType":"StructuredDocumentation","src":"2401:41:60","text":"@notice The oracle is not registered."},"errorSelector":"bfc6c337","name":"NotRegistered","nameLocation":"2453:13:60","parameters":{"id":50975,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50974,"mutability":"mutable","name":"oracle","nameLocation":"2475:6:60","nodeType":"VariableDeclaration","scope":50976,"src":"2467:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50973,"name":"address","nodeType":"ElementaryTypeName","src":"2467:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2466:16:60"}},{"id":50983,"nodeType":"ErrorDefinition","src":"2552:55:60","nodes":[],"documentation":{"id":50977,"nodeType":"StructuredDocumentation","src":"2489:58:60","text":"@notice The oracle has already responded to this task."},"errorSelector":"808df980","name":"AlreadyResponded","nameLocation":"2558:16:60","parameters":{"id":50982,"nodeType":"ParameterList","parameters":[{"constant":false,"id":50979,"mutability":"mutable","name":"taskId","nameLocation":"2583:6:60","nodeType":"VariableDeclaration","scope":50983,"src":"2575:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50978,"name":"uint256","nodeType":"ElementaryTypeName","src":"2575:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":50981,"mutability":"mutable","name":"oracle","nameLocation":"2599:6:60","nodeType":"VariableDeclaration","scope":50983,"src":"2591:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":50980,"name":"address","nodeType":"ElementaryTypeName","src":"2591:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"2574:32:60"}},{"id":50986,"nodeType":"ErrorDefinition","src":"2645:21:60","nodes":[],"documentation":{"id":50984,"nodeType":"StructuredDocumentation","src":"2613:27:60","text":"@notice Input is Empty."},"errorSelector":"b4fa3fb3","name":"InvalidInput","nameLocation":"2651:12:60","parameters":{"id":50985,"nodeType":"ParameterList","parameters":[],"src":"2663:2:60"}},{"id":50990,"nodeType":"VariableDeclaration","src":"2889:33:60","nodes":[],"constant":false,"documentation":{"id":50987,"nodeType":"StructuredDocumentation","src":"2852:32:60","text":"@notice The Oracle Registry."},"functionSelector":"7b103999","mutability":"mutable","name":"registry","nameLocation":"2914:8:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"},"typeName":{"id":50989,"nodeType":"UserDefinedTypeName","pathNode":{"id":50988,"name":"LLMOracleRegistry","nameLocations":["2889:17:60"],"nodeType":"IdentifierPath","referencedDeclaration":52821,"src":"2889:17:60"},"referencedDeclaration":52821,"src":"2889:17:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"visibility":"public"},{"id":50994,"nodeType":"VariableDeclaration","src":"2983:21:60","nodes":[],"constant":false,"documentation":{"id":50991,"nodeType":"StructuredDocumentation","src":"2928:50:60","text":"@notice The token to be used for fee payments."},"functionSelector":"647846a5","mutability":"mutable","name":"feeToken","nameLocation":"2996:8:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"},"typeName":{"id":50993,"nodeType":"UserDefinedTypeName","pathNode":{"id":50992,"name":"ERC20","nameLocations":["2983:5:60"],"nodeType":"IdentifierPath","referencedDeclaration":38696,"src":"2983:5:60"},"referencedDeclaration":38696,"src":"2983:5:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"visibility":"public"},{"id":50997,"nodeType":"VariableDeclaration","src":"3194:25:60","nodes":[],"constant":false,"documentation":{"id":50995,"nodeType":"StructuredDocumentation","src":"3011:178:60","text":"@notice The task ID counter.\n @dev TaskId starts from 1, as 0 is reserved.\n @dev 0 can be used in to check that a request/response/validation has not been made."},"functionSelector":"fdc3d8d7","mutability":"mutable","name":"nextTaskId","nameLocation":"3209:10:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":50996,"name":"uint256","nodeType":"ElementaryTypeName","src":"3194:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":51003,"nodeType":"VariableDeclaration","src":"3266:54:60","nodes":[],"constant":false,"documentation":{"id":50998,"nodeType":"StructuredDocumentation","src":"3225:36:60","text":"@notice LLM generation requests."},"functionSelector":"81d12c58","mutability":"mutable","name":"requests","nameLocation":"3312:8:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest)"},"typeName":{"id":51002,"keyName":"taskId","keyNameLocation":"3282:6:60","keyType":{"id":50999,"name":"uint256","nodeType":"ElementaryTypeName","src":"3274:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3266:38:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest)"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":51001,"nodeType":"UserDefinedTypeName","pathNode":{"id":51000,"name":"TaskRequest","nameLocations":["3292:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":52872,"src":"3292:11:60"},"referencedDeclaration":52872,"src":"3292:11:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"}}},"visibility":"public"},{"id":51010,"nodeType":"VariableDeclaration","src":"3368:58:60","nodes":[],"constant":false,"documentation":{"id":51004,"nodeType":"StructuredDocumentation","src":"3326:37:60","text":"@notice LLM generation responses."},"functionSelector":"0057efc2","mutability":"mutable","name":"responses","nameLocation":"3417:9:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse[])"},"typeName":{"id":51009,"keyName":"taskId","keyNameLocation":"3384:6:60","keyType":{"id":51005,"name":"uint256","nodeType":"ElementaryTypeName","src":"3376:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3368:41:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":51007,"nodeType":"UserDefinedTypeName","pathNode":{"id":51006,"name":"TaskResponse","nameLocations":["3394:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"3394:12:60"},"referencedDeclaration":52889,"src":"3394:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"id":51008,"nodeType":"ArrayTypeName","src":"3394:14:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse[]"}}},"visibility":"public"},{"id":51017,"nodeType":"VariableDeclaration","src":"3485:62:60","nodes":[],"constant":false,"documentation":{"id":51011,"nodeType":"StructuredDocumentation","src":"3432:48:60","text":"@notice LLM generation response validations."},"functionSelector":"4b5a82d1","mutability":"mutable","name":"validations","nameLocation":"3536:11:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation[])"},"typeName":{"id":51016,"keyName":"taskId","keyNameLocation":"3501:6:60","keyType":{"id":51012,"name":"uint256","nodeType":"ElementaryTypeName","src":"3493:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Mapping","src":"3485:43:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation[])"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"baseType":{"id":51014,"nodeType":"UserDefinedTypeName","pathNode":{"id":51013,"name":"TaskValidation","nameLocations":["3511:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":52904,"src":"3511:14:60"},"referencedDeclaration":52904,"src":"3511:14:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_storage_ptr","typeString":"struct LLMOracleTask.TaskValidation"}},"id":51015,"nodeType":"ArrayTypeName","src":"3511:16:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskValidation[]"}}},"visibility":"public"},{"id":51020,"nodeType":"VariableDeclaration","src":"3652:33:60","nodes":[],"constant":false,"documentation":{"id":51018,"nodeType":"StructuredDocumentation","src":"3553:94:60","text":"@notice To track the platform fees to be able to owner withdraw the correct amount of fee."},"functionSelector":"e3c98ba0","mutability":"mutable","name":"platformFeeBalance","nameLocation":"3667:18:60","scope":52133,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51019,"name":"uint256","nodeType":"ElementaryTypeName","src":"3652:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":51042,"nodeType":"ModifierDefinition","src":"3942:252:60","nodes":[],"body":{"id":51041,"nodeType":"Block","src":"3986:208:60","nodes":[],"statements":[{"condition":{"id":51032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4000:40:60","subExpression":{"arguments":[{"expression":{"id":51028,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4023:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4027:6:60","memberName":"sender","nodeType":"MemberAccess","src":"4023:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51030,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51024,"src":"4035:4:60","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"expression":{"id":51026,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50990,"src":"4001:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"id":51027,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4010:12:60","memberName":"isRegistered","nodeType":"MemberAccess","referencedDeclaration":52820,"src":"4001:21:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_enum$_LLMOracleKind_$52428_$returns$_t_bool_$","typeString":"function (address,enum LLMOracleKind) view external returns (bool)"}},"id":51031,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4001:39:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51039,"nodeType":"IfStatement","src":"3996:181:60","trueBody":{"id":51038,"nodeType":"Block","src":"4042:135:60","statements":[{"errorCall":{"arguments":[{"expression":{"id":51034,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4155:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51035,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4159:6:60","memberName":"sender","nodeType":"MemberAccess","src":"4155:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":51033,"name":"NotRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50976,"src":"4141:13:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":51036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4141:25:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51037,"nodeType":"RevertStatement","src":"4134:32:60"}]}},{"id":51040,"nodeType":"PlaceholderStatement","src":"4186:1:60"}]},"documentation":{"id":51021,"nodeType":"StructuredDocumentation","src":"3874:63:60","text":"@notice Reverts if `msg.sender` is not a registered oracle."},"name":"onlyRegistered","nameLocation":"3951:14:60","parameters":{"id":51025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51024,"mutability":"mutable","name":"kind","nameLocation":"3980:4:60","nodeType":"VariableDeclaration","scope":51042,"src":"3966:18:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":51023,"nodeType":"UserDefinedTypeName","pathNode":{"id":51022,"name":"LLMOracleKind","nameLocations":["3966:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"3966:13:60"},"referencedDeclaration":52428,"src":"3966:13:60","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"3965:20:60"},"virtual":false,"visibility":"internal"},{"id":51069,"nodeType":"ModifierDefinition","src":"4260:213:60","nodes":[],"body":{"id":51068,"nodeType":"Block","src":"4317:156:60","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"id":51055,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":51050,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"4331:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51052,"indexExpression":{"id":51051,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51045,"src":"4340:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4331:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"id":51053,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4348:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"4331:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"id":51054,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51048,"src":"4358:6:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"src":"4331:33:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51066,"nodeType":"IfStatement","src":"4327:129:60","trueBody":{"id":51065,"nodeType":"Block","src":"4366:90:60","statements":[{"errorCall":{"arguments":[{"id":51057,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51045,"src":"4405:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"id":51058,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"4413:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51060,"indexExpression":{"id":51059,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51045,"src":"4422:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4413:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"id":51061,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"4430:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"4413:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"id":51062,"name":"status","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51048,"src":"4438:6:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":51056,"name":"InvalidTaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50957,"src":"4387:17:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$_t_error_$","typeString":"function (uint256,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus) pure returns (error)"}},"id":51063,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4387:58:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51064,"nodeType":"RevertStatement","src":"4380:65:60"}]}},{"id":51067,"nodeType":"PlaceholderStatement","src":"4465:1:60"}]},"documentation":{"id":51043,"nodeType":"StructuredDocumentation","src":"4200:55:60","text":"@notice Reverts if the task status is not `status`."},"name":"onlyAtStatus","nameLocation":"4269:12:60","parameters":{"id":51049,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51045,"mutability":"mutable","name":"taskId","nameLocation":"4290:6:60","nodeType":"VariableDeclaration","scope":51069,"src":"4282:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51044,"name":"uint256","nodeType":"ElementaryTypeName","src":"4282:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51048,"mutability":"mutable","name":"status","nameLocation":"4309:6:60","nodeType":"VariableDeclaration","scope":51069,"src":"4298:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"typeName":{"id":51047,"nodeType":"UserDefinedTypeName","pathNode":{"id":51046,"name":"TaskStatus","nameLocations":["4298:10:60"],"nodeType":"IdentifierPath","referencedDeclaration":52841,"src":"4298:10:60"},"referencedDeclaration":52841,"src":"4298:10:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"visibility":"internal"}],"src":"4281:35:60"},"virtual":false,"visibility":"internal"},{"id":51088,"nodeType":"ModifierDefinition","src":"4479:172:60","nodes":[],"body":{"id":51087,"nodeType":"Block","src":"4521:130:60","nodes":[],"statements":[{"condition":{"id":51077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4535:32:60","subExpression":{"arguments":[{"id":51075,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51071,"src":"4559:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":51073,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50990,"src":"4536:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"id":51074,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4545:13:60","memberName":"isWhitelisted","nodeType":"MemberAccess","referencedDeclaration":53143,"src":"4536:22:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_bool_$","typeString":"function (address) view external returns (bool)"}},"id":51076,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4536:31:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51085,"nodeType":"IfStatement","src":"4531:103:60","trueBody":{"id":51084,"nodeType":"Block","src":"4569:65:60","statements":[{"errorCall":{"arguments":[{"id":51081,"name":"account","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51071,"src":"4615:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":51078,"name":"Whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53213,"src":"4590:9:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Whitelist_$53213_$","typeString":"type(contract Whitelist)"}},"id":51080,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4600:14:60","memberName":"NotWhitelisted","nodeType":"MemberAccess","referencedDeclaration":53138,"src":"4590:24:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":51082,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4590:33:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51083,"nodeType":"RevertStatement","src":"4583:40:60"}]}},{"id":51086,"nodeType":"PlaceholderStatement","src":"4643:1:60"}]},"name":"onlyWhitelisted","nameLocation":"4488:15:60","parameters":{"id":51072,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51071,"mutability":"mutable","name":"account","nameLocation":"4512:7:60","nodeType":"VariableDeclaration","scope":51088,"src":"4504:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":51070,"name":"address","nodeType":"ElementaryTypeName","src":"4504:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"4503:17:60"},"virtual":false,"visibility":"internal"},{"id":51096,"nodeType":"FunctionDefinition","src":"5086:53:60","nodes":[],"body":{"id":51095,"nodeType":"Block","src":"5100:39:60","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":51092,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36897,"src":"5110:20:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":51093,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5110:22:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51094,"nodeType":"ExpressionStatement","src":"5110:22:60"}]},"documentation":{"id":51089,"nodeType":"StructuredDocumentation","src":"4839:242:60","text":"@notice Locks the contract, preventing any future re-initialization.\n @dev [See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--).\n @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":51090,"nodeType":"ParameterList","parameters":[],"src":"5097:2:60"},"returnParameters":{"id":51091,"nodeType":"ParameterList","parameters":[],"src":"5100:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":51106,"nodeType":"FunctionDefinition","src":"5477:140:60","nodes":[],"body":{"id":51105,"nodeType":"Block","src":"5559:58:60","nodes":[],"statements":[]},"baseFunctions":[37065],"documentation":{"id":51097,"nodeType":"StructuredDocumentation","src":"5327:145:60","text":"@notice Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n @dev Called by and upgradeToAndCall."},"implemented":true,"kind":"function","modifiers":[{"id":51103,"kind":"modifierInvocation","modifierName":{"id":51102,"name":"onlyOwner","nameLocations":["5549:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":36570,"src":"5549:9:60"},"nodeType":"ModifierInvocation","src":"5549:9:60"}],"name":"_authorizeUpgrade","nameLocation":"5486:17:60","overrides":{"id":51101,"nodeType":"OverrideSpecifier","overrides":[],"src":"5540:8:60"},"parameters":{"id":51100,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51099,"mutability":"mutable","name":"newImplementation","nameLocation":"5512:17:60","nodeType":"VariableDeclaration","scope":51106,"src":"5504:25:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":51098,"name":"address","nodeType":"ElementaryTypeName","src":"5504:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"5503:27:60"},"returnParameters":{"id":51104,"nodeType":"ParameterList","parameters":[],"src":"5559:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":51156,"nodeType":"FunctionDefinition","src":"6110:513:60","nodes":[],"body":{"id":51155,"nodeType":"Block","src":"6363:260:60","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":51127,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6388:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51128,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6392:6:60","memberName":"sender","nodeType":"MemberAccess","src":"6388:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":51126,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36535,"src":"6373:14:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":51129,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6373:26:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51130,"nodeType":"ExpressionStatement","src":"6373:26:60"},{"expression":{"arguments":[{"id":51132,"name":"_platformFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51113,"src":"6433:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51133,"name":"_generationFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51115,"src":"6447:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51134,"name":"_validationFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51117,"src":"6463:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51135,"name":"_minScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51119,"src":"6479:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51136,"name":"_maxScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51121,"src":"6490:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51131,"name":"__LLMOracleManager_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52228,"src":"6409:23:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$__$","typeString":"function (uint256,uint256,uint256,uint256,uint256)"}},"id":51137,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6409:91:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51138,"nodeType":"ExpressionStatement","src":"6409:91:60"},{"expression":{"id":51143,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51139,"name":"registry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50990,"src":"6510:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":51141,"name":"_oracleRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51109,"src":"6539:15:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":51140,"name":"LLMOracleRegistry","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52821,"src":"6521:17:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LLMOracleRegistry_$52821_$","typeString":"type(contract LLMOracleRegistry)"}},"id":51142,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6521:34:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"src":"6510:45:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}},"id":51144,"nodeType":"ExpressionStatement","src":"6510:45:60"},{"expression":{"id":51149,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51145,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"6565:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":51147,"name":"_feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51111,"src":"6582:9:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":51146,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38696,"src":"6576:5:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$38696_$","typeString":"type(contract ERC20)"}},"id":51148,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6576:16:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"src":"6565:27:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":51150,"nodeType":"ExpressionStatement","src":"6565:27:60"},{"expression":{"id":51153,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51151,"name":"nextTaskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50997,"src":"6602:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"31","id":51152,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"6615:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"src":"6602:14:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51154,"nodeType":"ExpressionStatement","src":"6602:14:60"}]},"documentation":{"id":51107,"nodeType":"StructuredDocumentation","src":"5623:482:60","text":"@notice Initialize the contract.\n @notice Sets the Oracle Registry & Oracle Fee Manager.\n @param _oracleRegistry The Oracle Registry contract address.\n @param _feeToken The token (ERC20) to be used for fee payments (usually $BATCH).\n @param _platformFee The initial platform fee for each LLM generation.\n @param _generationFee The initial base fee for LLM generation.\n @param _validationFee The initial base fee for response validation."},"functionSelector":"edbf4ac2","implemented":true,"kind":"function","modifiers":[{"id":51124,"kind":"modifierInvocation","modifierName":{"id":51123,"name":"initializer","nameLocations":["6351:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":36783,"src":"6351:11:60"},"nodeType":"ModifierInvocation","src":"6351:11:60"}],"name":"initialize","nameLocation":"6119:10:60","parameters":{"id":51122,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51109,"mutability":"mutable","name":"_oracleRegistry","nameLocation":"6147:15:60","nodeType":"VariableDeclaration","scope":51156,"src":"6139:23:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":51108,"name":"address","nodeType":"ElementaryTypeName","src":"6139:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":51111,"mutability":"mutable","name":"_feeToken","nameLocation":"6180:9:60","nodeType":"VariableDeclaration","scope":51156,"src":"6172:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":51110,"name":"address","nodeType":"ElementaryTypeName","src":"6172:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":51113,"mutability":"mutable","name":"_platformFee","nameLocation":"6207:12:60","nodeType":"VariableDeclaration","scope":51156,"src":"6199:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51112,"name":"uint256","nodeType":"ElementaryTypeName","src":"6199:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51115,"mutability":"mutable","name":"_generationFee","nameLocation":"6237:14:60","nodeType":"VariableDeclaration","scope":51156,"src":"6229:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51114,"name":"uint256","nodeType":"ElementaryTypeName","src":"6229:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51117,"mutability":"mutable","name":"_validationFee","nameLocation":"6269:14:60","nodeType":"VariableDeclaration","scope":51156,"src":"6261:22:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51116,"name":"uint256","nodeType":"ElementaryTypeName","src":"6261:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51119,"mutability":"mutable","name":"_minScore","nameLocation":"6301:9:60","nodeType":"VariableDeclaration","scope":51156,"src":"6293:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51118,"name":"uint256","nodeType":"ElementaryTypeName","src":"6293:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51121,"mutability":"mutable","name":"_maxScore","nameLocation":"6328:9:60","nodeType":"VariableDeclaration","scope":51156,"src":"6320:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51120,"name":"uint256","nodeType":"ElementaryTypeName","src":"6320:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6129:214:60"},"returnParameters":{"id":51125,"nodeType":"ParameterList","parameters":[],"src":"6363:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":51294,"nodeType":"FunctionDefinition","src":"7239:1728:60","nodes":[],"body":{"id":51293,"nodeType":"Block","src":"7455:1512:60","nodes":[],"statements":[{"assignments":[51175,51177,51179],"declarations":[{"constant":false,"id":51175,"mutability":"mutable","name":"totalfee","nameLocation":"7474:8:60","nodeType":"VariableDeclaration","scope":51293,"src":"7466:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51174,"name":"uint256","nodeType":"ElementaryTypeName","src":"7466:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51177,"mutability":"mutable","name":"generatorFee","nameLocation":"7492:12:60","nodeType":"VariableDeclaration","scope":51293,"src":"7484:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51176,"name":"uint256","nodeType":"ElementaryTypeName","src":"7484:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51179,"mutability":"mutable","name":"validatorFee","nameLocation":"7514:12:60","nodeType":"VariableDeclaration","scope":51293,"src":"7506:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51178,"name":"uint256","nodeType":"ElementaryTypeName","src":"7506:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51183,"initialValue":{"arguments":[{"id":51181,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51166,"src":"7537:10:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters calldata"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters calldata"}],"id":51180,"name":"getFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52381,"src":"7530:6:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr_$returns$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"function (struct LLMOracleTaskParameters calldata) view returns (uint256,uint256,uint256)"}},"id":51182,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7530:18:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"7465:83:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51187,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":51184,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51161,"src":"7563:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"id":51185,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7569:6:60","memberName":"length","nodeType":"MemberAccess","src":"7563:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":51186,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"7579:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"7563:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51192,"nodeType":"IfStatement","src":"7559:69:60","trueBody":{"id":51191,"nodeType":"Block","src":"7582:46:60","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":51188,"name":"InvalidInput","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50986,"src":"7603:12:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":51189,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7603:14:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51190,"nodeType":"RevertStatement","src":"7596:21:60"}]}},{"assignments":[51194],"declarations":[{"constant":false,"id":51194,"mutability":"mutable","name":"allowance","nameLocation":"7686:9:60","nodeType":"VariableDeclaration","scope":51293,"src":"7678:17:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51193,"name":"uint256","nodeType":"ElementaryTypeName","src":"7678:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51204,"initialValue":{"arguments":[{"expression":{"id":51197,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7717:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51198,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7721:6:60","memberName":"sender","nodeType":"MemberAccess","src":"7717:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":51201,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"7737:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}],"id":51200,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"7729:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":51199,"name":"address","nodeType":"ElementaryTypeName","src":"7729:7:60","typeDescriptions":{}}},"id":51202,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7729:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":51195,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"7698:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":51196,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7707:9:60","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":38323,"src":"7698:18:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":51203,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7698:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7678:65:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51207,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51205,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51194,"src":"7757:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":51206,"name":"totalfee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51175,"src":"7769:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7757:20:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51214,"nodeType":"IfStatement","src":"7753:95:60","trueBody":{"id":51213,"nodeType":"Block","src":"7779:69:60","statements":[{"errorCall":{"arguments":[{"id":51209,"name":"allowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51194,"src":"7817:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51210,"name":"totalfee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51175,"src":"7828:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51208,"name":"InsufficientFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50946,"src":"7800:16:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":51211,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7800:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51212,"nodeType":"RevertStatement","src":"7793:44:60"}]}},{"assignments":[51216],"declarations":[{"constant":false,"id":51216,"mutability":"mutable","name":"balance","nameLocation":"7908:7:60","nodeType":"VariableDeclaration","scope":51293,"src":"7900:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51215,"name":"uint256","nodeType":"ElementaryTypeName","src":"7900:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51222,"initialValue":{"arguments":[{"expression":{"id":51219,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"7937:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51220,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7941:6:60","memberName":"sender","nodeType":"MemberAccess","src":"7937:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":51217,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"7918:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":51218,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"7927:9:60","memberName":"balanceOf","nodeType":"MemberAccess","referencedDeclaration":38282,"src":"7918:18:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$returns$_t_uint256_$","typeString":"function (address) view external returns (uint256)"}},"id":51221,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7918:30:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"7900:48:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51225,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51223,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51216,"src":"7962:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":51224,"name":"totalfee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51175,"src":"7972:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7962:18:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51232,"nodeType":"IfStatement","src":"7958:91:60","trueBody":{"id":51231,"nodeType":"Block","src":"7982:67:60","statements":[{"errorCall":{"arguments":[{"id":51227,"name":"balance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51216,"src":"8020:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51228,"name":"totalfee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51175,"src":"8029:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51226,"name":"InsufficientFees","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50946,"src":"8003:16:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":51229,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8003:35:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51230,"nodeType":"RevertStatement","src":"7996:42:60"}]}},{"expression":{"id":51235,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51233,"name":"platformFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51020,"src":"8086:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":51234,"name":"platformFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52154,"src":"8108:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"8086:33:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51236,"nodeType":"ExpressionStatement","src":"8086:33:60"},{"expression":{"arguments":[{"expression":{"id":51240,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8151:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51241,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8155:6:60","memberName":"sender","nodeType":"MemberAccess","src":"8151:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":51244,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"8171:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}],"id":51243,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"8163:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":51242,"name":"address","nodeType":"ElementaryTypeName","src":"8163:7:60","typeDescriptions":{}}},"id":51245,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8163:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51246,"name":"totalfee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51175,"src":"8178:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":51237,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"8129:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":51239,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8138:12:60","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":38379,"src":"8129:21:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":51247,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8129:58:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51248,"nodeType":"ExpressionStatement","src":"8129:58:60"},{"assignments":[51250],"declarations":[{"constant":false,"id":51250,"mutability":"mutable","name":"taskId","nameLocation":"8281:6:60","nodeType":"VariableDeclaration","scope":51293,"src":"8273:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51249,"name":"uint256","nodeType":"ElementaryTypeName","src":"8273:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51252,"initialValue":{"id":51251,"name":"nextTaskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50997,"src":"8290:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"8273:27:60"},{"id":51256,"nodeType":"UncheckedBlock","src":"8310:47:60","statements":[{"expression":{"id":51254,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"8334:12:60","subExpression":{"id":51253,"name":"nextTaskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50997,"src":"8336:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51255,"nodeType":"ExpressionStatement","src":"8334:12:60"}]},{"eventCall":{"arguments":[{"id":51258,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51250,"src":"8379:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51259,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8387:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51260,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8391:6:60","memberName":"sender","nodeType":"MemberAccess","src":"8387:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51261,"name":"protocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51159,"src":"8399:8:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":51257,"name":"Request","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50912,"src":"8371:7:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$_t_bytes32_$returns$__$","typeString":"function (uint256,address,bytes32)"}},"id":51262,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8371:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51263,"nodeType":"EmitStatement","src":"8366:42:60"},{"expression":{"id":51280,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":51264,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"8477:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51266,"indexExpression":{"id":51265,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51250,"src":"8486:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"8477:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"expression":{"id":51268,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"8533:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51269,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"8537:6:60","memberName":"sender","nodeType":"MemberAccess","src":"8533:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51270,"name":"protocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51159,"src":"8567:8:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"id":51271,"name":"input","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51161,"src":"8596:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},{"id":51272,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51166,"src":"8627:10:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters calldata"}},{"expression":{"id":51273,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"8659:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51274,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8670:17:60","memberName":"PendingGeneration","nodeType":"MemberAccess","referencedDeclaration":52838,"src":"8659:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"id":51275,"name":"generatorFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51177,"src":"8715:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51276,"name":"validatorFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51179,"src":"8755:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51277,"name":"platformFee","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52154,"src":"8794:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51278,"name":"models","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51163,"src":"8827:6:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters calldata"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":51267,"name":"TaskRequest","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52872,"src":"8496:11:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TaskRequest_$52872_storage_ptr_$","typeString":"type(struct LLMOracleTask.TaskRequest storage pointer)"}},"id":51279,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["8522:9:60","8557:8:60","8589:5:60","8615:10:60","8651:6:60","8701:12:60","8741:12:60","8781:11:60","8819:6:60"],"names":["requester","protocol","input","parameters","status","generatorFee","validatorFee","platformFee","models"],"nodeType":"FunctionCall","src":"8496:348:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_memory_ptr","typeString":"struct LLMOracleTask.TaskRequest memory"}},"src":"8477:367:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"id":51281,"nodeType":"ExpressionStatement","src":"8477:367:60"},{"eventCall":{"arguments":[{"id":51283,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51250,"src":"8872:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51284,"name":"protocol","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51159,"src":"8880:8:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":51285,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"8890:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51286,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8901:4:60","memberName":"None","nodeType":"MemberAccess","referencedDeclaration":52837,"src":"8890:15:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"expression":{"id":51287,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"8907:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51288,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"8918:17:60","memberName":"PendingGeneration","nodeType":"MemberAccess","referencedDeclaration":52838,"src":"8907:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":51282,"name":"StatusUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50939,"src":"8859:12:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes32_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$__$","typeString":"function (uint256,bytes32,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus)"}},"id":51289,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"8859:77:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51290,"nodeType":"EmitStatement","src":"8854:82:60"},{"expression":{"id":51291,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51250,"src":"8954:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":51173,"id":51292,"nodeType":"Return","src":"8947:13:60"}]},"documentation":{"id":51157,"nodeType":"StructuredDocumentation","src":"6808:426:60","text":"@notice Request LLM generation.\n @dev Input must be non-empty.\n @dev Reverts if contract has not enough allowance for the fee.\n @dev Reverts if difficulty is out of range.\n @param protocol The protocol string, should be a short 32-byte string (e.g., \"dria/1.0.0\").\n @param input The input data for the LLM generation.\n @param parameters The task parameters\n @return task id"},"functionSelector":"e76aec11","implemented":true,"kind":"function","modifiers":[{"arguments":[{"id":51169,"name":"parameters","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51166,"src":"7425:10:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters calldata"}}],"id":51170,"kind":"modifierInvocation","modifierName":{"id":51168,"name":"onlyValidParameters","nameLocations":["7405:19:60"],"nodeType":"IdentifierPath","referencedDeclaration":52302,"src":"7405:19:60"},"nodeType":"ModifierInvocation","src":"7405:31:60"}],"name":"request","nameLocation":"7248:7:60","parameters":{"id":51167,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51159,"mutability":"mutable","name":"protocol","nameLocation":"7273:8:60","nodeType":"VariableDeclaration","scope":51294,"src":"7265:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"typeName":{"id":51158,"name":"bytes32","nodeType":"ElementaryTypeName","src":"7265:7:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},"visibility":"internal"},{"constant":false,"id":51161,"mutability":"mutable","name":"input","nameLocation":"7304:5:60","nodeType":"VariableDeclaration","scope":51294,"src":"7291:18:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":51160,"name":"bytes","nodeType":"ElementaryTypeName","src":"7291:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":51163,"mutability":"mutable","name":"models","nameLocation":"7332:6:60","nodeType":"VariableDeclaration","scope":51294,"src":"7319:19:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":51162,"name":"bytes","nodeType":"ElementaryTypeName","src":"7319:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":51166,"mutability":"mutable","name":"parameters","nameLocation":"7381:10:60","nodeType":"VariableDeclaration","scope":51294,"src":"7348:43:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_calldata_ptr","typeString":"struct LLMOracleTaskParameters"},"typeName":{"id":51165,"nodeType":"UserDefinedTypeName","pathNode":{"id":51164,"name":"LLMOracleTaskParameters","nameLocations":["7348:23:60"],"nodeType":"IdentifierPath","referencedDeclaration":52834,"src":"7348:23:60"},"referencedDeclaration":52834,"src":"7348:23:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage_ptr","typeString":"struct LLMOracleTaskParameters"}},"visibility":"internal"}],"src":"7255:142:60"},"returnParameters":{"id":51173,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51172,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":51294,"src":"7446:7:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51171,"name":"uint256","nodeType":"ElementaryTypeName","src":"7446:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7445:9:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":51459,"nodeType":"FunctionDefinition","src":"9529:1880:60","nodes":[],"body":{"id":51458,"nodeType":"Block","src":"9751:1658:60","nodes":[],"statements":[{"assignments":[51317],"declarations":[{"constant":false,"id":51317,"mutability":"mutable","name":"task","nameLocation":"9781:4:60","nodeType":"VariableDeclaration","scope":51458,"src":"9761:24:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"},"typeName":{"id":51316,"nodeType":"UserDefinedTypeName","pathNode":{"id":51315,"name":"TaskRequest","nameLocations":["9761:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":52872,"src":"9761:11:60"},"referencedDeclaration":52872,"src":"9761:11:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"}},"visibility":"internal"}],"id":51321,"initialValue":{"baseExpression":{"id":51318,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"9788:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51320,"indexExpression":{"id":51319,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"9797:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9788:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"nodeType":"VariableDeclarationStatement","src":"9761:43:60"},{"body":{"id":51352,"nodeType":"Block","src":"9925:150:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":51343,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":51335,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"9943:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51337,"indexExpression":{"id":51336,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"9953:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9943:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51339,"indexExpression":{"id":51338,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51323,"src":"9961:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9943:20:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":51340,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"9964:9:60","memberName":"responder","nodeType":"MemberAccess","referencedDeclaration":52876,"src":"9943:30:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":51341,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"9977:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51342,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9981:6:60","memberName":"sender","nodeType":"MemberAccess","src":"9977:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"9943:44:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51351,"nodeType":"IfStatement","src":"9939:126:60","trueBody":{"id":51350,"nodeType":"Block","src":"9989:76:60","statements":[{"errorCall":{"arguments":[{"id":51345,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"10031:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51346,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10039:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51347,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10043:6:60","memberName":"sender","nodeType":"MemberAccess","src":"10039:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51344,"name":"AlreadyResponded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50983,"src":"10014:16:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (uint256,address) pure returns (error)"}},"id":51348,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10014:36:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51349,"nodeType":"RevertStatement","src":"10007:43:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51331,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51326,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51323,"src":"9890:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"baseExpression":{"id":51327,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"9894:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51329,"indexExpression":{"id":51328,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"9904:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"9894:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51330,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"9912:6:60","memberName":"length","nodeType":"MemberAccess","src":"9894:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"9890:28:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51353,"initializationExpression":{"assignments":[51323],"declarations":[{"constant":false,"id":51323,"mutability":"mutable","name":"i","nameLocation":"9883:1:60","nodeType":"VariableDeclaration","scope":51353,"src":"9875:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51322,"name":"uint256","nodeType":"ElementaryTypeName","src":"9875:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51325,"initialValue":{"hexValue":"30","id":51324,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"9887:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"9875:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51333,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"9920:3:60","subExpression":{"id":51332,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51323,"src":"9920:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51334,"nodeType":"ExpressionStatement","src":"9920:3:60"},"nodeType":"ForStatement","src":"9870:205:60"},{"expression":{"arguments":[{"id":51355,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"10141:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51356,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10149:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},{"id":51357,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51299,"src":"10155:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51354,"name":"assertValidNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51716,"src":"10124:16:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_ptr_$_t_uint256_$returns$__$","typeString":"function (uint256,struct LLMOracleTask.TaskRequest storage pointer,uint256) view"}},"id":51358,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10124:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51359,"nodeType":"ExpressionStatement","src":"10124:37:60"},{"assignments":[51362],"declarations":[{"constant":false,"id":51362,"mutability":"mutable","name":"response","nameLocation":"10217:8:60","nodeType":"VariableDeclaration","scope":51458,"src":"10197:28:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse"},"typeName":{"id":51361,"nodeType":"UserDefinedTypeName","pathNode":{"id":51360,"name":"TaskResponse","nameLocations":["10197:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"10197:12:60"},"referencedDeclaration":52889,"src":"10197:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"visibility":"internal"}],"id":51371,"initialValue":{"arguments":[{"expression":{"id":51364,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10265:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51365,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10269:6:60","memberName":"sender","nodeType":"MemberAccess","src":"10265:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51366,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51299,"src":"10284:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51367,"name":"output","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51301,"src":"10299:6:60","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"id":51368,"name":"metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51303,"src":"10317:8:60","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"hexValue":"30","id":51369,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10334:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"id":51363,"name":"TaskResponse","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52889,"src":"10240:12:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TaskResponse_$52889_storage_ptr_$","typeString":"type(struct LLMOracleTask.TaskResponse storage pointer)"}},"id":51370,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["10254:9:60","10277:5:60","10291:6:60","10307:8:60","10327:5:60"],"names":["responder","nonce","output","metadata","score"],"nodeType":"FunctionCall","src":"10240:97:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse memory"}},"nodeType":"VariableDeclarationStatement","src":"10197:140:60"},{"expression":{"arguments":[{"id":51376,"name":"response","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51362,"src":"10370:8:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TaskResponse_$52889_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse memory"}],"expression":{"baseExpression":{"id":51372,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"10347:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51374,"indexExpression":{"id":51373,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"10357:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10347:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51375,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10365:4:60","memberName":"push","nodeType":"MemberAccess","src":"10347:22:60","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr_$_t_struct$_TaskResponse_$52889_storage_$returns$__$attached_to$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr_$","typeString":"function (struct LLMOracleTask.TaskResponse storage ref[] storage pointer,struct LLMOracleTask.TaskResponse storage ref)"}},"id":51377,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10347:32:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51378,"nodeType":"ExpressionStatement","src":"10347:32:60"},{"eventCall":{"arguments":[{"id":51380,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"10436:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51381,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10444:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51382,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10448:6:60","memberName":"sender","nodeType":"MemberAccess","src":"10444:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51379,"name":"Response","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50919,"src":"10427:8:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":51383,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10427:28:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51384,"nodeType":"EmitStatement","src":"10422:33:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint40","typeString":"uint40"},"id":51389,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":51385,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10537:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51386,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10542:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"10537:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51387,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10553:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"10537:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":51388,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10571:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10537:35:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51398,"nodeType":"IfStatement","src":"10533:115:60","trueBody":{"id":51397,"nodeType":"Block","src":"10574:74:60","statements":[{"expression":{"arguments":[{"expression":{"id":51391,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"10607:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51392,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10611:6:60","memberName":"sender","nodeType":"MemberAccess","src":"10607:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":51393,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10619:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51394,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10624:12:60","memberName":"generatorFee","nodeType":"MemberAccess","referencedDeclaration":52859,"src":"10619:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51390,"name":"_increaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52044,"src":"10588:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":51395,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10588:49:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51396,"nodeType":"ExpressionStatement","src":"10588:49:60"}]}},{"assignments":[51400],"declarations":[{"constant":false,"id":51400,"mutability":"mutable","name":"isCompleted","nameLocation":"10738:11:60","nodeType":"VariableDeclaration","scope":51458,"src":"10733:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":51399,"name":"bool","nodeType":"ElementaryTypeName","src":"10733:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":51412,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51411,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":51401,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"10752:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51403,"indexExpression":{"id":51402,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"10762:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"10752:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51404,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"10770:6:60","memberName":"length","nodeType":"MemberAccess","src":"10752:24:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"arguments":[{"expression":{"expression":{"id":51407,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10788:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51408,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10793:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"10788:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51409,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10804:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"10788:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint40","typeString":"uint40"}],"id":51406,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"10780:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":51405,"name":"uint256","nodeType":"ElementaryTypeName","src":"10780:7:60","typeDescriptions":{}}},"id":51410,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"10780:39:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"10752:67:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"10733:86:60"},{"condition":{"id":51413,"name":"isCompleted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51400,"src":"10833:11:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51457,"nodeType":"IfStatement","src":"10829:574:60","trueBody":{"id":51456,"nodeType":"Block","src":"10846:557:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint40","typeString":"uint40"},"id":51418,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"expression":{"id":51414,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10864:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51415,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10869:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"10864:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51416,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"10880:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"10864:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":51417,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"10898:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"10864:35:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":51454,"nodeType":"Block","src":"11146:247:60","statements":[{"expression":{"id":51442,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":51437,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"11218:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51439,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"11223:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"11218:11:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":51440,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"11232:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51441,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11243:17:60","memberName":"PendingValidation","nodeType":"MemberAccess","referencedDeclaration":52839,"src":"11232:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"src":"11218:42:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"id":51443,"nodeType":"ExpressionStatement","src":"11218:42:60"},{"eventCall":{"arguments":[{"id":51445,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"11296:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51446,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"11304:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51447,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11309:8:60","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":52848,"src":"11304:13:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":51448,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"11319:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51449,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11330:17:60","memberName":"PendingGeneration","nodeType":"MemberAccess","referencedDeclaration":52838,"src":"11319:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"expression":{"id":51450,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"11349:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51451,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11360:17:60","memberName":"PendingValidation","nodeType":"MemberAccess","referencedDeclaration":52839,"src":"11349:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":51444,"name":"StatusUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50939,"src":"11283:12:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes32_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$__$","typeString":"function (uint256,bytes32,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus)"}},"id":51452,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11283:95:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51453,"nodeType":"EmitStatement","src":"11278:100:60"}]},"id":51455,"nodeType":"IfStatement","src":"10860:533:60","trueBody":{"id":51436,"nodeType":"Block","src":"10901:239:60","statements":[{"expression":{"id":51424,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":51419,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"10981:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51421,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"10986:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"10981:11:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":51422,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"10995:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51423,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11006:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"10995:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"src":"10981:34:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"id":51425,"nodeType":"ExpressionStatement","src":"10981:34:60"},{"eventCall":{"arguments":[{"id":51427,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"11051:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51428,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51317,"src":"11059:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51429,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"11064:8:60","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":52848,"src":"11059:13:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":51430,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"11074:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51431,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11085:17:60","memberName":"PendingGeneration","nodeType":"MemberAccess","referencedDeclaration":52838,"src":"11074:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"expression":{"id":51432,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"11104:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51433,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"11115:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"11104:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":51426,"name":"StatusUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50939,"src":"11038:12:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes32_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$__$","typeString":"function (uint256,bytes32,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus)"}},"id":51434,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"11038:87:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51435,"nodeType":"EmitStatement","src":"11033:92:60"}]}}]}}]},"documentation":{"id":51295,"nodeType":"StructuredDocumentation","src":"8973:551:60","text":"@notice Respond to an LLM generation.\n @dev Output must be non-empty.\n @dev Reverts if the task is not pending generation.\n @dev Reverts if the responder is not registered.\n @dev Reverts if the responder has already responded to this task.\n @dev Reverts if the nonce is not a valid proof-of-work.\n @param taskId The task ID to respond to.\n @param nonce The proof-of-work nonce.\n @param output The output data for the LLM generation.\n @param metadata Optional metadata for this output."},"functionSelector":"b584e617","implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":51306,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"9663:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LLMOracleKind_$52428_$","typeString":"type(enum LLMOracleKind)"}},"id":51307,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9677:9:60","memberName":"Generator","nodeType":"MemberAccess","referencedDeclaration":52426,"src":"9663:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"id":51308,"kind":"modifierInvocation","modifierName":{"id":51305,"name":"onlyRegistered","nameLocations":["9648:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":51042,"src":"9648:14:60"},"nodeType":"ModifierInvocation","src":"9648:39:60"},{"arguments":[{"id":51310,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51297,"src":"9709:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51311,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"9717:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51312,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"9728:17:60","memberName":"PendingGeneration","nodeType":"MemberAccess","referencedDeclaration":52838,"src":"9717:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"id":51313,"kind":"modifierInvocation","modifierName":{"id":51309,"name":"onlyAtStatus","nameLocations":["9696:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":51069,"src":"9696:12:60"},"nodeType":"ModifierInvocation","src":"9696:50:60"}],"name":"respond","nameLocation":"9538:7:60","parameters":{"id":51304,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51297,"mutability":"mutable","name":"taskId","nameLocation":"9554:6:60","nodeType":"VariableDeclaration","scope":51459,"src":"9546:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51296,"name":"uint256","nodeType":"ElementaryTypeName","src":"9546:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51299,"mutability":"mutable","name":"nonce","nameLocation":"9570:5:60","nodeType":"VariableDeclaration","scope":51459,"src":"9562:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51298,"name":"uint256","nodeType":"ElementaryTypeName","src":"9562:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51301,"mutability":"mutable","name":"output","nameLocation":"9592:6:60","nodeType":"VariableDeclaration","scope":51459,"src":"9577:21:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":51300,"name":"bytes","nodeType":"ElementaryTypeName","src":"9577:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"},{"constant":false,"id":51303,"mutability":"mutable","name":"metadata","nameLocation":"9615:8:60","nodeType":"VariableDeclaration","scope":51459,"src":"9600:23:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":51302,"name":"bytes","nodeType":"ElementaryTypeName","src":"9600:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"9545:79:60"},"returnParameters":{"id":51314,"nodeType":"ParameterList","parameters":[],"src":"9751:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":51664,"nodeType":"FunctionDefinition","src":"11914:2083:60","nodes":[],"body":{"id":51663,"nodeType":"Block","src":"12177:1820:60","nodes":[],"statements":[{"assignments":[51487],"declarations":[{"constant":false,"id":51487,"mutability":"mutable","name":"task","nameLocation":"12207:4:60","nodeType":"VariableDeclaration","scope":51663,"src":"12187:24:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"},"typeName":{"id":51486,"nodeType":"UserDefinedTypeName","pathNode":{"id":51485,"name":"TaskRequest","nameLocations":["12187:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":52872,"src":"12187:11:60"},"referencedDeclaration":52872,"src":"12187:11:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"}},"visibility":"internal"}],"id":51491,"initialValue":{"baseExpression":{"id":51488,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"12214:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51490,"indexExpression":{"id":51489,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"12223:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12214:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"nodeType":"VariableDeclarationStatement","src":"12187:43:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51497,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":51492,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"12300:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":51493,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12307:6:60","memberName":"length","nodeType":"MemberAccess","src":"12300:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":51494,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"12317:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51495,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12322:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"12317:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51496,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12333:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"12317:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"12300:47:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51505,"nodeType":"IfStatement","src":"12296:122:60","trueBody":{"id":51504,"nodeType":"Block","src":"12349:69:60","statements":[{"errorCall":{"arguments":[{"id":51499,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"12388:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51500,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12396:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51501,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12400:6:60","memberName":"sender","nodeType":"MemberAccess","src":"12396:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51498,"name":"InvalidValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50971,"src":"12370:17:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (uint256,address) pure returns (error)"}},"id":51502,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12370:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51503,"nodeType":"RevertStatement","src":"12363:44:60"}]}},{"body":{"id":51538,"nodeType":"Block","src":"12518:166:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":51527,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51521,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":51517,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"12536:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":51519,"indexExpression":{"id":51518,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51507,"src":"12543:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12536:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":51520,"name":"maxScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52177,"src":"12548:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12536:20:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"||","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51526,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":51522,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"12560:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":51524,"indexExpression":{"id":51523,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51507,"src":"12567:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12560:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":51525,"name":"minScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52174,"src":"12572:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12560:20:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"12536:44:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51537,"nodeType":"IfStatement","src":"12532:142:60","trueBody":{"id":51536,"nodeType":"Block","src":"12582:92:60","statements":[{"errorCall":{"arguments":[{"baseExpression":{"id":51529,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"12629:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":51531,"indexExpression":{"id":51530,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51507,"src":"12636:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12629:9:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51532,"name":"maxScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52177,"src":"12640:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51533,"name":"minScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52174,"src":"12650:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51528,"name":"InvalidParameterRange","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52151,"src":"12607:21:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256,uint256) pure returns (error)"}},"id":51534,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12607:52:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51535,"nodeType":"RevertStatement","src":"12600:59:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51513,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51510,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51507,"src":"12494:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":51511,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"12498:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},"id":51512,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12505:6:60","memberName":"length","nodeType":"MemberAccess","src":"12498:13:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"12494:17:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51539,"initializationExpression":{"assignments":[51507],"declarations":[{"constant":false,"id":51507,"mutability":"mutable","name":"i","nameLocation":"12487:1:60","nodeType":"VariableDeclaration","scope":51539,"src":"12479:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51506,"name":"uint256","nodeType":"ElementaryTypeName","src":"12479:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51509,"initialValue":{"hexValue":"30","id":51508,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12491:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12479:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51515,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12513:3:60","subExpression":{"id":51514,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51507,"src":"12513:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51516,"nodeType":"ExpressionStatement","src":"12513:3:60"},"nodeType":"ForStatement","src":"12474:210:60"},{"body":{"id":51569,"nodeType":"Block","src":"12817:150:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":51560,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":51552,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"12835:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51554,"indexExpression":{"id":51553,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"12845:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12835:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51556,"indexExpression":{"id":51555,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51541,"src":"12853:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"12835:20:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":51557,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12856:9:60","memberName":"responder","nodeType":"MemberAccess","referencedDeclaration":52876,"src":"12835:30:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":51558,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12869:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51559,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12873:6:60","memberName":"sender","nodeType":"MemberAccess","src":"12869:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"12835:44:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51568,"nodeType":"IfStatement","src":"12831:126:60","trueBody":{"id":51567,"nodeType":"Block","src":"12881:76:60","statements":[{"errorCall":{"arguments":[{"id":51562,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"12923:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51563,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12931:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51564,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12935:6:60","memberName":"sender","nodeType":"MemberAccess","src":"12931:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51561,"name":"AlreadyResponded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50983,"src":"12906:16:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (uint256,address) pure returns (error)"}},"id":51565,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"12906:36:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51566,"nodeType":"RevertStatement","src":"12899:43:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51548,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51544,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51541,"src":"12776:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51545,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"12780:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51546,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12785:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"12780:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51547,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"12796:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"12780:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"12776:34:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51570,"initializationExpression":{"assignments":[51541],"declarations":[{"constant":false,"id":51541,"mutability":"mutable","name":"i","nameLocation":"12769:1:60","nodeType":"VariableDeclaration","scope":51570,"src":"12761:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51540,"name":"uint256","nodeType":"ElementaryTypeName","src":"12761:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51543,"initialValue":{"hexValue":"30","id":51542,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"12773:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"12761:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51550,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"12812:3:60","subExpression":{"id":51549,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51541,"src":"12812:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51551,"nodeType":"ExpressionStatement","src":"12812:3:60"},"nodeType":"ForStatement","src":"12756:211:60"},{"body":{"id":51601,"nodeType":"Block","src":"13089:152:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_address","typeString":"address"},"id":51592,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"baseExpression":{"id":51584,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"13107:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51586,"indexExpression":{"id":51585,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13119:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13107:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51588,"indexExpression":{"id":51587,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51572,"src":"13127:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13107:22:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref"}},"id":51589,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13130:9:60","memberName":"validator","nodeType":"MemberAccess","referencedDeclaration":52893,"src":"13107:32:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":51590,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13143:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51591,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13147:6:60","memberName":"sender","nodeType":"MemberAccess","src":"13143:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"src":"13107:46:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51600,"nodeType":"IfStatement","src":"13103:128:60","trueBody":{"id":51599,"nodeType":"Block","src":"13155:76:60","statements":[{"errorCall":{"arguments":[{"id":51594,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13197:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51595,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13205:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13209:6:60","memberName":"sender","nodeType":"MemberAccess","src":"13205:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51593,"name":"AlreadyResponded","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50983,"src":"13180:16:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_address_$returns$_t_error_$","typeString":"function (uint256,address) pure returns (error)"}},"id":51597,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13180:36:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51598,"nodeType":"RevertStatement","src":"13173:43:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51580,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51575,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51572,"src":"13052:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"baseExpression":{"id":51576,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"13056:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51578,"indexExpression":{"id":51577,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13068:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13056:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51579,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13076:6:60","memberName":"length","nodeType":"MemberAccess","src":"13056:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"13052:30:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51602,"initializationExpression":{"assignments":[51572],"declarations":[{"constant":false,"id":51572,"mutability":"mutable","name":"i","nameLocation":"13045:1:60","nodeType":"VariableDeclaration","scope":51602,"src":"13037:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51571,"name":"uint256","nodeType":"ElementaryTypeName","src":"13037:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51574,"initialValue":{"hexValue":"30","id":51573,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"13049:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"13037:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51582,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"13084:3:60","subExpression":{"id":51581,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51572,"src":"13084:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51583,"nodeType":"ExpressionStatement","src":"13084:3:60"},"nodeType":"ForStatement","src":"13032:209:60"},{"expression":{"arguments":[{"id":51604,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13307:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51605,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"13315:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},{"id":51606,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51464,"src":"13321:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51603,"name":"assertValidNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51716,"src":"13290:16:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_ptr_$_t_uint256_$returns$__$","typeString":"function (uint256,struct LLMOracleTask.TaskRequest storage pointer,uint256) view"}},"id":51607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13290:37:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51608,"nodeType":"ExpressionStatement","src":"13290:37:60"},{"expression":{"arguments":[{"arguments":[{"id":51614,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51467,"src":"13436:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"}},{"id":51615,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51464,"src":"13451:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51616,"name":"metadata","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51469,"src":"13468:8:60","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}},{"expression":{"id":51617,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13489:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51618,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13493:6:60","memberName":"sender","nodeType":"MemberAccess","src":"13489:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[] calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51613,"name":"TaskValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52904,"src":"13412:14:60","typeDescriptions":{"typeIdentifier":"t_type$_t_struct$_TaskValidation_$52904_storage_ptr_$","typeString":"type(struct LLMOracleTask.TaskValidation storage pointer)"}},"id":51619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"structConstructorCall","lValueRequested":false,"nameLocations":["13428:6:60","13444:5:60","13458:8:60","13478:9:60"],"names":["scores","nonce","metadata","validator"],"nodeType":"FunctionCall","src":"13412:89:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_memory_ptr","typeString":"struct LLMOracleTask.TaskValidation memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_struct$_TaskValidation_$52904_memory_ptr","typeString":"struct LLMOracleTask.TaskValidation memory"}],"expression":{"baseExpression":{"id":51609,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"13374:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51611,"indexExpression":{"id":51610,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13386:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13374:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51612,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13394:4:60","memberName":"push","nodeType":"MemberAccess","src":"13374:24:60","typeDescriptions":{"typeIdentifier":"t_function_arraypush_nonpayable$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_ptr_$_t_struct$_TaskValidation_$52904_storage_$returns$__$attached_to$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_ptr_$","typeString":"function (struct LLMOracleTask.TaskValidation storage ref[] storage pointer,struct LLMOracleTask.TaskValidation storage ref)"}},"id":51620,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13374:137:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51621,"nodeType":"ExpressionStatement","src":"13374:137:60"},{"eventCall":{"arguments":[{"id":51623,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13571:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51624,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"13579:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13583:6:60","memberName":"sender","nodeType":"MemberAccess","src":"13579:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address","typeString":"address"}],"id":51622,"name":"Validation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50926,"src":"13560:10:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_address_$returns$__$","typeString":"function (uint256,address)"}},"id":51626,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13560:30:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51627,"nodeType":"EmitStatement","src":"13555:35:60"},{"assignments":[51629],"declarations":[{"constant":false,"id":51629,"mutability":"mutable","name":"isCompleted","nameLocation":"13642:11:60","nodeType":"VariableDeclaration","scope":51663,"src":"13637:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":51628,"name":"bool","nodeType":"ElementaryTypeName","src":"13637:4:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"id":51638,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51637,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":51630,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"13656:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51632,"indexExpression":{"id":51631,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13668:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"13656:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51633,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"13676:6:60","memberName":"length","nodeType":"MemberAccess","src":"13656:26:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"expression":{"id":51634,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"13686:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51635,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13691:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"13686:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51636,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13702:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"13686:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"13656:60:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"VariableDeclarationStatement","src":"13637:79:60"},{"condition":{"id":51639,"name":"isCompleted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51629,"src":"13730:11:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51662,"nodeType":"IfStatement","src":"13726:265:60","trueBody":{"id":51661,"nodeType":"Block","src":"13743:248:60","statements":[{"expression":{"id":51645,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"id":51640,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"13757:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51642,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"13762:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"13757:11:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":51643,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"13771:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51644,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13782:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"13771:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"src":"13757:34:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"id":51646,"nodeType":"ExpressionStatement","src":"13757:34:60"},{"eventCall":{"arguments":[{"id":51648,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13823:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51649,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51487,"src":"13831:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51650,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"13836:8:60","memberName":"protocol","nodeType":"MemberAccess","referencedDeclaration":52848,"src":"13831:13:60","typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}},{"expression":{"id":51651,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"13846:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51652,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13857:17:60","memberName":"PendingValidation","nodeType":"MemberAccess","referencedDeclaration":52839,"src":"13846:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"expression":{"id":51653,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"13876:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51654,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"13887:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"13876:20:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":51647,"name":"StatusUpdate","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50939,"src":"13810:12:60","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_uint256_$_t_bytes32_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$__$","typeString":"function (uint256,bytes32,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus)"}},"id":51655,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13810:87:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51656,"nodeType":"EmitStatement","src":"13805:92:60"},{"expression":{"arguments":[{"id":51658,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"13973:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51657,"name":"finalizeValidation","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51970,"src":"13954:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_uint256_$returns$__$","typeString":"function (uint256)"}},"id":51659,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"13954:26:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51660,"nodeType":"ExpressionStatement","src":"13954:26:60"}]}}]},"documentation":{"id":51460,"nodeType":"StructuredDocumentation","src":"11415:494:60","text":"@notice Validate requests for a given taskId.\n @dev Reverts if the task is not pending validation.\n @dev Reverts if the number of scores is not equal to the number of generations.\n @dev Reverts if any score is greater than the maximum score.\n @param taskId The ID of the task to validate.\n @param nonce The proof-of-work nonce.\n @param scores The validation scores for each generation.\n @param metadata Optional metadata for this validation."},"functionSelector":"6b4d5bfc","implemented":true,"kind":"function","modifiers":[{"arguments":[{"expression":{"id":51472,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"12053:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LLMOracleKind_$52428_$","typeString":"type(enum LLMOracleKind)"}},"id":51473,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12067:9:60","memberName":"Validator","nodeType":"MemberAccess","referencedDeclaration":52427,"src":"12053:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"id":51474,"kind":"modifierInvocation","modifierName":{"id":51471,"name":"onlyRegistered","nameLocations":["12038:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":51042,"src":"12038:14:60"},"nodeType":"ModifierInvocation","src":"12038:39:60"},{"arguments":[{"id":51476,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51462,"src":"12099:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51477,"name":"TaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52841,"src":"12107:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":51478,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"12118:17:60","memberName":"PendingValidation","nodeType":"MemberAccess","referencedDeclaration":52839,"src":"12107:28:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"id":51479,"kind":"modifierInvocation","modifierName":{"id":51475,"name":"onlyAtStatus","nameLocations":["12086:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":51069,"src":"12086:12:60"},"nodeType":"ModifierInvocation","src":"12086:50:60"},{"arguments":[{"expression":{"id":51481,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"12161:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51482,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"12165:6:60","memberName":"sender","nodeType":"MemberAccess","src":"12161:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"id":51483,"kind":"modifierInvocation","modifierName":{"id":51480,"name":"onlyWhitelisted","nameLocations":["12145:15:60"],"nodeType":"IdentifierPath","referencedDeclaration":51088,"src":"12145:15:60"},"nodeType":"ModifierInvocation","src":"12145:27:60"}],"name":"validate","nameLocation":"11923:8:60","parameters":{"id":51470,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51462,"mutability":"mutable","name":"taskId","nameLocation":"11940:6:60","nodeType":"VariableDeclaration","scope":51664,"src":"11932:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51461,"name":"uint256","nodeType":"ElementaryTypeName","src":"11932:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51464,"mutability":"mutable","name":"nonce","nameLocation":"11956:5:60","nodeType":"VariableDeclaration","scope":51664,"src":"11948:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51463,"name":"uint256","nodeType":"ElementaryTypeName","src":"11948:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51467,"mutability":"mutable","name":"scores","nameLocation":"11982:6:60","nodeType":"VariableDeclaration","scope":51664,"src":"11963:25:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_calldata_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":51465,"name":"uint256","nodeType":"ElementaryTypeName","src":"11963:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51466,"nodeType":"ArrayTypeName","src":"11963:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"},{"constant":false,"id":51469,"mutability":"mutable","name":"metadata","nameLocation":"12005:8:60","nodeType":"VariableDeclaration","scope":51664,"src":"11990:23:60","stateVariable":false,"storageLocation":"calldata","typeDescriptions":{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes"},"typeName":{"id":51468,"name":"bytes","nodeType":"ElementaryTypeName","src":"11990:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"src":"11931:83:60"},"returnParameters":{"id":51484,"nodeType":"ParameterList","parameters":[],"src":"12177:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":51716,"nodeType":"FunctionDefinition","src":"14334:369:60","nodes":[],"body":{"id":51715,"nodeType":"Block","src":"14431:272:60","nodes":[],"statements":[{"assignments":[51676],"declarations":[{"constant":false,"id":51676,"mutability":"mutable","name":"message","nameLocation":"14454:7:60","nodeType":"VariableDeclaration","scope":51715,"src":"14441:20:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes"},"typeName":{"id":51675,"name":"bytes","nodeType":"ElementaryTypeName","src":"14441:5:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage_ptr","typeString":"bytes"}},"visibility":"internal"}],"id":51688,"initialValue":{"arguments":[{"id":51679,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51667,"src":"14481:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"id":51680,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51670,"src":"14489:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51681,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14494:5:60","memberName":"input","nodeType":"MemberAccess","referencedDeclaration":52868,"src":"14489:10:60","typeDescriptions":{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"}},{"expression":{"id":51682,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51670,"src":"14501:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51683,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14506:9:60","memberName":"requester","nodeType":"MemberAccess","referencedDeclaration":52845,"src":"14501:14:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":51684,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"14517:3:60","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":51685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"14521:6:60","memberName":"sender","nodeType":"MemberAccess","src":"14517:10:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51686,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51672,"src":"14529:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":51677,"name":"abi","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-1,"src":"14464:3:60","typeDescriptions":{"typeIdentifier":"t_magic_abi","typeString":"abi"}},"id":51678,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14468:12:60","memberName":"encodePacked","nodeType":"MemberAccess","src":"14464:16:60","typeDescriptions":{"typeIdentifier":"t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$","typeString":"function () pure returns (bytes memory)"}},"id":51687,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14464:71:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}},"nodeType":"VariableDeclarationStatement","src":"14441:94:60"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51707,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":51692,"name":"message","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51676,"src":"14567:7:60","typeDescriptions":{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"id":51691,"name":"keccak256","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-8,"src":"14557:9:60","typeDescriptions":{"typeIdentifier":"t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$","typeString":"function (bytes memory) pure returns (bytes32)"}},"id":51693,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14557:18:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bytes32","typeString":"bytes32"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"id":51690,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14549:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":51689,"name":"uint256","nodeType":"ElementaryTypeName","src":"14549:7:60","typeDescriptions":{}}},"id":51694,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14549:27:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51706,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"arguments":[{"id":51697,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14585:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":51696,"name":"uint256","nodeType":"ElementaryTypeName","src":"14585:7:60","typeDescriptions":{}}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"}],"id":51695,"name":"type","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-27,"src":"14580:4:60","typeDescriptions":{"typeIdentifier":"t_function_metatype_pure$__$returns$__$","typeString":"function () pure"}},"id":51698,"isConstant":false,"isLValue":false,"isPure":true,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14580:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_magic_meta_type_t_uint256","typeString":"type(uint256)"}},"id":51699,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"14594:3:60","memberName":"max","nodeType":"MemberAccess","src":"14580:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">>","rightExpression":{"arguments":[{"expression":{"expression":{"id":51702,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51670,"src":"14609:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51703,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14614:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"14609:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51704,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"14625:10:60","memberName":"difficulty","nodeType":"MemberAccess","referencedDeclaration":52827,"src":"14609:26:60","typeDescriptions":{"typeIdentifier":"t_uint8","typeString":"uint8"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"id":51701,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"14601:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_uint256_$","typeString":"type(uint256)"},"typeName":{"id":51700,"name":"uint256","nodeType":"ElementaryTypeName","src":"14601:7:60","typeDescriptions":{}}},"id":51705,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14601:35:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14580:56:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"14549:87:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51714,"nodeType":"IfStatement","src":"14545:152:60","trueBody":{"id":51713,"nodeType":"Block","src":"14638:59:60","statements":[{"errorCall":{"arguments":[{"id":51709,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51667,"src":"14672:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"id":51710,"name":"nonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51672,"src":"14680:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51708,"name":"InvalidNonce","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50964,"src":"14659:12:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_uint256_$returns$_t_error_$","typeString":"function (uint256,uint256) pure returns (error)"}},"id":51711,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"14659:27:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":51712,"nodeType":"RevertStatement","src":"14652:34:60"}]}}]},"documentation":{"id":51665,"nodeType":"StructuredDocumentation","src":"14003:326:60","text":"@notice Checks that proof-of-work is valid for a given task with taskId and nonce.\n @dev Reverts if the nonce is not a valid proof-of-work.\n @param taskId The ID of the task to check proof-of-work.\n @param task The task (in storage) to validate.\n @param nonce The candidate proof-of-work nonce."},"implemented":true,"kind":"function","modifiers":[],"name":"assertValidNonce","nameLocation":"14343:16:60","parameters":{"id":51673,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51667,"mutability":"mutable","name":"taskId","nameLocation":"14368:6:60","nodeType":"VariableDeclaration","scope":51716,"src":"14360:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51666,"name":"uint256","nodeType":"ElementaryTypeName","src":"14360:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51670,"mutability":"mutable","name":"task","nameLocation":"14396:4:60","nodeType":"VariableDeclaration","scope":51716,"src":"14376:24:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"},"typeName":{"id":51669,"nodeType":"UserDefinedTypeName","pathNode":{"id":51668,"name":"TaskRequest","nameLocations":["14376:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":52872,"src":"14376:11:60"},"referencedDeclaration":52872,"src":"14376:11:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"}},"visibility":"internal"},{"constant":false,"id":51672,"mutability":"mutable","name":"nonce","nameLocation":"14410:5:60","nodeType":"VariableDeclaration","scope":51716,"src":"14402:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51671,"name":"uint256","nodeType":"ElementaryTypeName","src":"14402:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14359:57:60"},"returnParameters":{"id":51674,"nodeType":"ParameterList","parameters":[],"src":"14431:0:60"},"scope":52133,"stateMutability":"view","virtual":false,"visibility":"internal"},{"id":51970,"nodeType":"FunctionDefinition","src":"14890:2652:60","nodes":[],"body":{"id":51969,"nodeType":"Block","src":"14942:2600:60","nodes":[],"statements":[{"assignments":[51724],"declarations":[{"constant":false,"id":51724,"mutability":"mutable","name":"task","nameLocation":"14972:4:60","nodeType":"VariableDeclaration","scope":51969,"src":"14952:24:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"},"typeName":{"id":51723,"nodeType":"UserDefinedTypeName","pathNode":{"id":51722,"name":"TaskRequest","nameLocations":["14952:11:60"],"nodeType":"IdentifierPath","referencedDeclaration":52872,"src":"14952:11:60"},"referencedDeclaration":52872,"src":"14952:11:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest"}},"visibility":"internal"}],"id":51728,"initialValue":{"baseExpression":{"id":51725,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"14979:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":51727,"indexExpression":{"id":51726,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"14988:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"14979:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"nodeType":"VariableDeclarationStatement","src":"14952:43:60"},{"body":{"id":51874,"nodeType":"Block","src":"15118:1495:60","statements":[{"assignments":[51745],"declarations":[{"constant":false,"id":51745,"mutability":"mutable","name":"scores","nameLocation":"15243:6:60","nodeType":"VariableDeclaration","scope":51874,"src":"15226:23:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":51743,"name":"uint256","nodeType":"ElementaryTypeName","src":"15226:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51744,"nodeType":"ArrayTypeName","src":"15226:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":51753,"initialValue":{"arguments":[{"expression":{"expression":{"id":51749,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"15266:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51750,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15271:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"15266:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51751,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15282:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"15266:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint40","typeString":"uint40"}],"id":51748,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"15252:13:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":51746,"name":"uint256","nodeType":"ElementaryTypeName","src":"15256:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51747,"nodeType":"ArrayTypeName","src":"15256:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":51752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15252:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"15226:71:60"},{"body":{"id":51779,"nodeType":"Block","src":"15378:83:60","statements":[{"expression":{"id":51777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":51766,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51745,"src":"15396:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":51768,"indexExpression":{"id":51767,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51755,"src":"15403:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"15396:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"expression":{"baseExpression":{"baseExpression":{"id":51769,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"15410:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51771,"indexExpression":{"id":51770,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"15422:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15410:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51773,"indexExpression":{"id":51772,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51755,"src":"15430:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15410:24:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref"}},"id":51774,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15435:6:60","memberName":"scores","nodeType":"MemberAccess","referencedDeclaration":52900,"src":"15410:31:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage","typeString":"uint256[] storage ref"}},"id":51776,"indexExpression":{"id":51775,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51730,"src":"15442:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"15410:36:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"15396:50:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51778,"nodeType":"ExpressionStatement","src":"15396:50:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51762,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51758,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51755,"src":"15333:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51759,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"15339:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51760,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15344:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"15339:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51761,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15355:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"15339:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"15333:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51780,"initializationExpression":{"assignments":[51755],"declarations":[{"constant":false,"id":51755,"mutability":"mutable","name":"v_i","nameLocation":"15324:3:60","nodeType":"VariableDeclaration","scope":51780,"src":"15316:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51754,"name":"uint256","nodeType":"ElementaryTypeName","src":"15316:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51757,"initialValue":{"hexValue":"30","id":51756,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15330:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15316:15:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51764,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15371:5:60","subExpression":{"id":51763,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51755,"src":"15371:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51765,"nodeType":"ExpressionStatement","src":"15371:5:60"},"nodeType":"ForStatement","src":"15311:150:60"},{"assignments":[51782,51784],"declarations":[{"constant":false,"id":51782,"mutability":"mutable","name":"_stddev","nameLocation":"15539:7:60","nodeType":"VariableDeclaration","scope":51874,"src":"15531:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51781,"name":"uint256","nodeType":"ElementaryTypeName","src":"15531:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51784,"mutability":"mutable","name":"_mean","nameLocation":"15556:5:60","nodeType":"VariableDeclaration","scope":51874,"src":"15548:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51783,"name":"uint256","nodeType":"ElementaryTypeName","src":"15548:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51789,"initialValue":{"arguments":[{"id":51787,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51745,"src":"15583:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":51785,"name":"Statistics","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53117,"src":"15565:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Statistics_$53117_$","typeString":"type(library Statistics)"}},"id":51786,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"15576:6:60","memberName":"stddev","nodeType":"MemberAccess","referencedDeclaration":53116,"src":"15565:17:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256[] memory) pure returns (uint256,uint256)"}},"id":51788,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"15565:25:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"15530:60:60"},{"assignments":[51791],"declarations":[{"constant":false,"id":51791,"mutability":"mutable","name":"innerSum","nameLocation":"15758:8:60","nodeType":"VariableDeclaration","scope":51874,"src":"15750:16:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51790,"name":"uint256","nodeType":"ElementaryTypeName","src":"15750:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51793,"initialValue":{"hexValue":"30","id":51792,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15769:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15750:20:60"},{"assignments":[51795],"declarations":[{"constant":false,"id":51795,"mutability":"mutable","name":"innerCount","nameLocation":"15792:10:60","nodeType":"VariableDeclaration","scope":51874,"src":"15784:18:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51794,"name":"uint256","nodeType":"ElementaryTypeName","src":"15784:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51797,"initialValue":{"hexValue":"30","id":51796,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15805:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15784:22:60"},{"body":{"id":51852,"nodeType":"Block","src":"15887:504:60","statements":[{"assignments":[51811],"declarations":[{"constant":false,"id":51811,"mutability":"mutable","name":"score","nameLocation":"16002:5:60","nodeType":"VariableDeclaration","scope":51852,"src":"15994:13:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51810,"name":"uint256","nodeType":"ElementaryTypeName","src":"15994:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51818,"initialValue":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":51812,"name":"scores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51745,"src":"16010:6:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":51814,"indexExpression":{"id":51813,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51799,"src":"16017:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16010:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":51815,"name":"Statistics","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53117,"src":"16024:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Statistics_$53117_$","typeString":"type(library Statistics)"}},"id":51816,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"16035:14:60","memberName":"SCALING_FACTOR","nodeType":"MemberAccess","referencedDeclaration":52917,"src":"16024:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16010:39:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"15994:55:60"},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":51831,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51823,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51821,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51819,"name":"score","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51811,"src":"16072:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":51820,"name":"_stddev","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51782,"src":"16080:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16072:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":51822,"name":"_mean","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51784,"src":"16091:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16072:24:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":51824,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16071:26:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51829,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51825,"name":"score","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51811,"src":"16102:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<=","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51828,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51826,"name":"_mean","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51784,"src":"16111:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":51827,"name":"_stddev","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51782,"src":"16119:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16111:15:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16102:24:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}}],"id":51830,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"16101:26:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"16071:56:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51851,"nodeType":"IfStatement","src":"16067:310:60","trueBody":{"id":51850,"nodeType":"Block","src":"16129:248:60","statements":[{"expression":{"id":51834,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51832,"name":"innerSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51791,"src":"16151:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"id":51833,"name":"score","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51811,"src":"16163:5:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16151:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51835,"nodeType":"ExpressionStatement","src":"16151:17:60"},{"expression":{"id":51837,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16190:12:60","subExpression":{"id":51836,"name":"innerCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51795,"src":"16190:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51838,"nodeType":"ExpressionStatement","src":"16190:12:60"},{"expression":{"arguments":[{"expression":{"baseExpression":{"baseExpression":{"id":51840,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"16304:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":51842,"indexExpression":{"id":51841,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"16316:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16304:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"id":51844,"indexExpression":{"id":51843,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51799,"src":"16324:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16304:24:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref"}},"id":51845,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16329:9:60","memberName":"validator","nodeType":"MemberAccess","referencedDeclaration":52893,"src":"16304:34:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":51846,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"16340:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51847,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16345:12:60","memberName":"validatorFee","nodeType":"MemberAccess","referencedDeclaration":52862,"src":"16340:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51839,"name":"_increaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52044,"src":"16285:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":51848,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16285:73:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51849,"nodeType":"ExpressionStatement","src":"16285:73:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51806,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51802,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51799,"src":"15842:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51803,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"15848:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51804,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15853:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"15848:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51805,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15864:14:60","memberName":"numValidations","nodeType":"MemberAccess","referencedDeclaration":52833,"src":"15848:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"15842:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51853,"initializationExpression":{"assignments":[51799],"declarations":[{"constant":false,"id":51799,"mutability":"mutable","name":"v_i","nameLocation":"15833:3:60","nodeType":"VariableDeclaration","scope":51853,"src":"15825:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51798,"name":"uint256","nodeType":"ElementaryTypeName","src":"15825:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51801,"initialValue":{"hexValue":"30","id":51800,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15839:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15825:15:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51808,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":true,"src":"15880:5:60","subExpression":{"id":51807,"name":"v_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51799,"src":"15882:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51809,"nodeType":"ExpressionStatement","src":"15880:5:60"},"nodeType":"ForStatement","src":"15820:571:60"},{"assignments":[51855],"declarations":[{"constant":false,"id":51855,"mutability":"mutable","name":"inner_score","nameLocation":"16489:11:60","nodeType":"VariableDeclaration","scope":51874,"src":"16481:19:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51854,"name":"uint256","nodeType":"ElementaryTypeName","src":"16481:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51864,"initialValue":{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51858,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51856,"name":"innerCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51795,"src":"16503:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":51857,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16517:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"16503:15:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51862,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51860,"name":"innerSum","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51791,"src":"16525:8:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"/","rightExpression":{"id":51861,"name":"innerCount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51795,"src":"16536:10:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16525:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51863,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"16503:43:60","trueExpression":{"hexValue":"30","id":51859,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16521:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"16481:65:60"},{"expression":{"id":51872,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"expression":{"baseExpression":{"baseExpression":{"id":51865,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"16560:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51868,"indexExpression":{"id":51866,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"16570:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16560:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51869,"indexExpression":{"id":51867,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51730,"src":"16578:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16560:22:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":51870,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"memberLocation":"16583:5:60","memberName":"score","nodeType":"MemberAccess","referencedDeclaration":52882,"src":"16560:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":51871,"name":"inner_score","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51855,"src":"16591:11:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16560:42:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51873,"nodeType":"ExpressionStatement","src":"16560:42:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51737,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51733,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51730,"src":"15073:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51734,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"15079:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51735,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15084:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"15079:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51736,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"15095:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"15079:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"15073:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51875,"initializationExpression":{"assignments":[51730],"declarations":[{"constant":false,"id":51730,"mutability":"mutable","name":"g_i","nameLocation":"15064:3:60","nodeType":"VariableDeclaration","scope":51875,"src":"15056:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51729,"name":"uint256","nodeType":"ElementaryTypeName","src":"15056:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51732,"initialValue":{"hexValue":"30","id":51731,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"15070:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"15056:15:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51739,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"15111:5:60","subExpression":{"id":51738,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51730,"src":"15111:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51740,"nodeType":"ExpressionStatement","src":"15111:5:60"},"nodeType":"ForStatement","src":"15051:1562:60"},{"assignments":[51880],"declarations":[{"constant":false,"id":51880,"mutability":"mutable","name":"generationScores","nameLocation":"16767:16:60","nodeType":"VariableDeclaration","scope":51969,"src":"16750:33:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[]"},"typeName":{"baseType":{"id":51878,"name":"uint256","nodeType":"ElementaryTypeName","src":"16750:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51879,"nodeType":"ArrayTypeName","src":"16750:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}},"visibility":"internal"}],"id":51888,"initialValue":{"arguments":[{"expression":{"expression":{"id":51884,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"16800:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51885,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16805:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"16800:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51886,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16816:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"16800:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint40","typeString":"uint40"}],"id":51883,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"NewExpression","src":"16786:13:60","typeDescriptions":{"typeIdentifier":"t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$","typeString":"function (uint256) pure returns (uint256[] memory)"},"typeName":{"baseType":{"id":51881,"name":"uint256","nodeType":"ElementaryTypeName","src":"16790:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51882,"nodeType":"ArrayTypeName","src":"16790:9:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_storage_ptr","typeString":"uint256[]"}}},"id":51887,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"16786:45:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"nodeType":"VariableDeclarationStatement","src":"16750:81:60"},{"body":{"id":51912,"nodeType":"Block","src":"16908:77:60","statements":[{"expression":{"id":51910,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":51901,"name":"generationScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51880,"src":"16922:16:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":51903,"indexExpression":{"id":51902,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51890,"src":"16939:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"16922:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"baseExpression":{"id":51904,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"16946:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51906,"indexExpression":{"id":51905,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"16956:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16946:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51908,"indexExpression":{"id":51907,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51890,"src":"16964:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"16946:22:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":51909,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16969:5:60","memberName":"score","nodeType":"MemberAccess","referencedDeclaration":52882,"src":"16946:28:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"16922:52:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51911,"nodeType":"ExpressionStatement","src":"16922:52:60"}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51897,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51893,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51890,"src":"16863:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51894,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"16869:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51895,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16874:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"16869:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51896,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"16885:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"16869:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"16863:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51913,"initializationExpression":{"assignments":[51890],"declarations":[{"constant":false,"id":51890,"mutability":"mutable","name":"g_i","nameLocation":"16854:3:60","nodeType":"VariableDeclaration","scope":51913,"src":"16846:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51889,"name":"uint256","nodeType":"ElementaryTypeName","src":"16846:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51892,"initialValue":{"hexValue":"30","id":51891,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"16860:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"16846:15:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51899,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"16901:5:60","subExpression":{"id":51898,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51890,"src":"16901:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51900,"nodeType":"ExpressionStatement","src":"16901:5:60"},"nodeType":"ForStatement","src":"16841:144:60"},{"assignments":[51915,51917],"declarations":[{"constant":false,"id":51915,"mutability":"mutable","name":"stddev","nameLocation":"17055:6:60","nodeType":"VariableDeclaration","scope":51969,"src":"17047:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51914,"name":"uint256","nodeType":"ElementaryTypeName","src":"17047:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":51917,"mutability":"mutable","name":"mean","nameLocation":"17071:4:60","nodeType":"VariableDeclaration","scope":51969,"src":"17063:12:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51916,"name":"uint256","nodeType":"ElementaryTypeName","src":"17063:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51922,"initialValue":{"arguments":[{"id":51920,"name":"generationScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51880,"src":"17097:16:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}],"expression":{"id":51918,"name":"Statistics","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53117,"src":"17079:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Statistics_$53117_$","typeString":"type(library Statistics)"}},"id":51919,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17090:6:60","memberName":"stddev","nodeType":"MemberAccess","referencedDeclaration":53116,"src":"17079:17:60","typeDescriptions":{"typeIdentifier":"t_function_internal_pure$_t_array$_t_uint256_$dyn_memory_ptr_$returns$_t_uint256_$_t_uint256_$","typeString":"function (uint256[] memory) pure returns (uint256,uint256)"}},"id":51921,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17079:35:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$_t_uint256_$_t_uint256_$","typeString":"tuple(uint256,uint256)"}},"nodeType":"VariableDeclarationStatement","src":"17046:68:60"},{"body":{"id":51967,"nodeType":"Block","src":"17191:345:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51947,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51945,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"components":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51940,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"id":51935,"name":"generationScores","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51880,"src":"17247:16:60","typeDescriptions":{"typeIdentifier":"t_array$_t_uint256_$dyn_memory_ptr","typeString":"uint256[] memory"}},"id":51937,"indexExpression":{"id":51936,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51924,"src":"17264:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17247:21:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"expression":{"id":51938,"name":"Statistics","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53117,"src":"17271:10:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_Statistics_$53117_$","typeString":"type(library Statistics)"}},"id":51939,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"17282:14:60","memberName":"SCALING_FACTOR","nodeType":"MemberAccess","referencedDeclaration":52917,"src":"17271:25:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17247:49:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"id":51941,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"TupleExpression","src":"17246:51:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51944,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51942,"name":"generationDeviationFactor","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52163,"src":"17300:25:60","typeDescriptions":{"typeIdentifier":"t_uint64","typeString":"uint64"}},"nodeType":"BinaryOperation","operator":"*","rightExpression":{"id":51943,"name":"stddev","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51915,"src":"17328:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17300:34:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17246:88:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"id":51946,"name":"mean","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51917,"src":"17338:4:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17246:96:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseBody":{"id":51965,"nodeType":"Block","src":"17454:72:60","statements":[{"expression":{"id":51963,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51960,"name":"platformFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51020,"src":"17472:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"+=","rightHandSide":{"expression":{"id":51961,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"17494:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51962,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17499:12:60","memberName":"generatorFee","nodeType":"MemberAccess","referencedDeclaration":52859,"src":"17494:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"17472:39:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51964,"nodeType":"ExpressionStatement","src":"17472:39:60"}]},"id":51966,"nodeType":"IfStatement","src":"17242:284:60","trueBody":{"id":51959,"nodeType":"Block","src":"17344:104:60","statements":[{"expression":{"arguments":[{"expression":{"baseExpression":{"baseExpression":{"id":51949,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"17381:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":51951,"indexExpression":{"id":51950,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51719,"src":"17391:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17381:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"id":51953,"indexExpression":{"id":51952,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51924,"src":"17399:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"17381:22:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":51954,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17404:9:60","memberName":"responder","nodeType":"MemberAccess","referencedDeclaration":52876,"src":"17381:32:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":51955,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"17415:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51956,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17420:12:60","memberName":"generatorFee","nodeType":"MemberAccess","referencedDeclaration":52859,"src":"17415:17:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":51948,"name":"_increaseAllowance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52044,"src":"17362:18:60","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$","typeString":"function (address,uint256)"}},"id":51957,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17362:71:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":51958,"nodeType":"ExpressionStatement","src":"17362:71:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":51931,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":51927,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51924,"src":"17146:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"expression":{"id":51928,"name":"task","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51724,"src":"17152:4:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage_ptr","typeString":"struct LLMOracleTask.TaskRequest storage pointer"}},"id":51929,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17157:10:60","memberName":"parameters","nodeType":"MemberAccess","referencedDeclaration":52852,"src":"17152:15:60","typeDescriptions":{"typeIdentifier":"t_struct$_LLMOracleTaskParameters_$52834_storage","typeString":"struct LLMOracleTaskParameters storage ref"}},"id":51930,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"17168:14:60","memberName":"numGenerations","nodeType":"MemberAccess","referencedDeclaration":52830,"src":"17152:30:60","typeDescriptions":{"typeIdentifier":"t_uint40","typeString":"uint40"}},"src":"17146:36:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51968,"initializationExpression":{"assignments":[51924],"declarations":[{"constant":false,"id":51924,"mutability":"mutable","name":"g_i","nameLocation":"17137:3:60","nodeType":"VariableDeclaration","scope":51968,"src":"17129:11:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51923,"name":"uint256","nodeType":"ElementaryTypeName","src":"17129:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":51926,"initialValue":{"hexValue":"30","id":51925,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17143:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"nodeType":"VariableDeclarationStatement","src":"17129:15:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":51933,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"17184:5:60","subExpression":{"id":51932,"name":"g_i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51924,"src":"17184:3:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51934,"nodeType":"ExpressionStatement","src":"17184:5:60"},"nodeType":"ForStatement","src":"17124:412:60"}]},"documentation":{"id":51717,"nodeType":"StructuredDocumentation","src":"14709:176:60","text":"@notice Compute the validation scores for a given task.\n @dev Reverts if the task has no validations.\n @param taskId The ID of the task to compute scores for."},"implemented":true,"kind":"function","modifiers":[],"name":"finalizeValidation","nameLocation":"14899:18:60","parameters":{"id":51720,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51719,"mutability":"mutable","name":"taskId","nameLocation":"14926:6:60","nodeType":"VariableDeclaration","scope":51970,"src":"14918:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51718,"name":"uint256","nodeType":"ElementaryTypeName","src":"14918:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"14917:16:60"},"returnParameters":{"id":51721,"nodeType":"ParameterList","parameters":[],"src":"14942:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"private"},{"id":51989,"nodeType":"FunctionDefinition","src":"17640:144:60","nodes":[],"body":{"id":51988,"nodeType":"Block","src":"17689:95:60","nodes":[],"statements":[{"expression":{"arguments":[{"arguments":[],"expression":{"argumentTypes":[],"id":51979,"name":"owner","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36586,"src":"17717:5:60","typeDescriptions":{"typeIdentifier":"t_function_internal_view$__$returns$_t_address_$","typeString":"function () view returns (address)"}},"id":51980,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17717:7:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":51981,"name":"platformFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51020,"src":"17726:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":51976,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"17699:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":51978,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"17708:8:60","memberName":"transfer","nodeType":"MemberAccess","referencedDeclaration":38306,"src":"17699:17:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":51982,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"17699:46:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":51983,"nodeType":"ExpressionStatement","src":"17699:46:60"},{"expression":{"id":51986,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":51984,"name":"platformFeeBalance","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51020,"src":"17755:18:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"30","id":51985,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"17776:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"17755:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":51987,"nodeType":"ExpressionStatement","src":"17755:22:60"}]},"documentation":{"id":51971,"nodeType":"StructuredDocumentation","src":"17548:87:60","text":"@notice Withdraw the platform fees & along with remaining fees within the contract."},"functionSelector":"d0b7830b","implemented":true,"kind":"function","modifiers":[{"id":51974,"kind":"modifierInvocation","modifierName":{"id":51973,"name":"onlyOwner","nameLocations":["17679:9:60"],"nodeType":"IdentifierPath","referencedDeclaration":36570,"src":"17679:9:60"},"nodeType":"ModifierInvocation","src":"17679:9:60"}],"name":"withdrawPlatformFees","nameLocation":"17649:20:60","parameters":{"id":51972,"nodeType":"ParameterList","parameters":[],"src":"17669:2:60"},"returnParameters":{"id":51975,"nodeType":"ParameterList","parameters":[],"src":"17689:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52004,"nodeType":"FunctionDefinition","src":"17962:123:60","nodes":[],"body":{"id":52003,"nodeType":"Block","src":"18044:41:60","nodes":[],"statements":[{"expression":{"baseExpression":{"id":51999,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"18061:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":52001,"indexExpression":{"id":52000,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51992,"src":"18071:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18061:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"functionReturnParameters":51998,"id":52002,"nodeType":"Return","src":"18054:24:60"}]},"documentation":{"id":51990,"nodeType":"StructuredDocumentation","src":"17790:167:60","text":"@notice Returns the responses to a given taskId.\n @param taskId The ID of the task to get responses for.\n @return The responses for the given taskId."},"functionSelector":"71ee2ce1","implemented":true,"kind":"function","modifiers":[],"name":"getResponses","nameLocation":"17971:12:60","parameters":{"id":51993,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51992,"mutability":"mutable","name":"taskId","nameLocation":"17992:6:60","nodeType":"VariableDeclaration","scope":52004,"src":"17984:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":51991,"name":"uint256","nodeType":"ElementaryTypeName","src":"17984:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"17983:16:60"},"returnParameters":{"id":51998,"nodeType":"ParameterList","parameters":[{"constant":false,"id":51997,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52004,"src":"18021:21:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_memory_ptr_$dyn_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse[]"},"typeName":{"baseType":{"id":51995,"nodeType":"UserDefinedTypeName","pathNode":{"id":51994,"name":"TaskResponse","nameLocations":["18021:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"18021:12:60"},"referencedDeclaration":52889,"src":"18021:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"id":51996,"nodeType":"ArrayTypeName","src":"18021:14:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse[]"}},"visibility":"internal"}],"src":"18020:23:60"},"scope":52133,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":52019,"nodeType":"FunctionDefinition","src":"18269:129:60","nodes":[],"body":{"id":52018,"nodeType":"Block","src":"18355:43:60","nodes":[],"statements":[{"expression":{"baseExpression":{"id":52014,"name":"validations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51017,"src":"18372:11:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskValidation storage ref[] storage ref)"}},"id":52016,"indexExpression":{"id":52015,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52007,"src":"18384:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"18372:19:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskValidation storage ref[] storage ref"}},"functionReturnParameters":52013,"id":52017,"nodeType":"Return","src":"18365:26:60"}]},"documentation":{"id":52005,"nodeType":"StructuredDocumentation","src":"18091:173:60","text":"@notice Returns the validations to a given taskId.\n @param taskId The ID of the task to get validations for.\n @return The validations for the given taskId."},"functionSelector":"434dbaee","implemented":true,"kind":"function","modifiers":[],"name":"getValidations","nameLocation":"18278:14:60","parameters":{"id":52008,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52007,"mutability":"mutable","name":"taskId","nameLocation":"18301:6:60","nodeType":"VariableDeclaration","scope":52019,"src":"18293:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52006,"name":"uint256","nodeType":"ElementaryTypeName","src":"18293:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18292:16:60"},"returnParameters":{"id":52013,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52012,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52019,"src":"18330:23:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_memory_ptr_$dyn_memory_ptr","typeString":"struct LLMOracleTask.TaskValidation[]"},"typeName":{"baseType":{"id":52010,"nodeType":"UserDefinedTypeName","pathNode":{"id":52009,"name":"TaskValidation","nameLocations":["18330:14:60"],"nodeType":"IdentifierPath","referencedDeclaration":52904,"src":"18330:14:60"},"referencedDeclaration":52904,"src":"18330:14:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskValidation_$52904_storage_ptr","typeString":"struct LLMOracleTask.TaskValidation"}},"id":52011,"nodeType":"ArrayTypeName","src":"18330:16:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskValidation_$52904_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskValidation[]"}},"visibility":"internal"}],"src":"18329:25:60"},"scope":52133,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":52044,"nodeType":"FunctionDefinition","src":"18615:165:60","nodes":[],"body":{"id":52043,"nodeType":"Block","src":"18685:95:60","nodes":[],"statements":[{"expression":{"arguments":[{"id":52030,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52022,"src":"18712:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52040,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":52035,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"18748:4:60","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleCoordinator_$52133","typeString":"contract LLMOracleCoordinator"}],"id":52034,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"18740:7:60","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52033,"name":"address","nodeType":"ElementaryTypeName","src":"18740:7:60","typeDescriptions":{}}},"id":52036,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18740:13:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52037,"name":"spender","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52022,"src":"18755:7:60","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":52031,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"18721:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52032,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18730:9:60","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":38323,"src":"18721:18:60","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":52038,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18721:42:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":52039,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52024,"src":"18766:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"18721:51:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52027,"name":"feeToken","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50994,"src":"18695:8:60","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52029,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"18704:7:60","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":38347,"src":"18695:16:60","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":52041,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"18695:78:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52042,"nodeType":"ExpressionStatement","src":"18695:78:60"}]},"documentation":{"id":52020,"nodeType":"StructuredDocumentation","src":"18404:206:60","text":"Increases the allowance by setting the approval to the sum of the current allowance and the additional amount.\n @param spender spender address\n @param amount additional amount of allowance"},"implemented":true,"kind":"function","modifiers":[],"name":"_increaseAllowance","nameLocation":"18624:18:60","parameters":{"id":52025,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52022,"mutability":"mutable","name":"spender","nameLocation":"18651:7:60","nodeType":"VariableDeclaration","scope":52044,"src":"18643:15:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52021,"name":"address","nodeType":"ElementaryTypeName","src":"18643:7:60","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52024,"mutability":"mutable","name":"amount","nameLocation":"18668:6:60","nodeType":"VariableDeclaration","scope":52044,"src":"18660:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52023,"name":"uint256","nodeType":"ElementaryTypeName","src":"18660:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"18642:33:60"},"returnParameters":{"id":52026,"nodeType":"ParameterList","parameters":[],"src":"18685:0:60"},"scope":52133,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":52132,"nodeType":"FunctionDefinition","src":"19053:821:60","nodes":[],"body":{"id":52131,"nodeType":"Block","src":"19138:736:60","nodes":[],"statements":[{"assignments":[52057],"declarations":[{"constant":false,"id":52057,"mutability":"mutable","name":"taskResponses","nameLocation":"19171:13:60","nodeType":"VariableDeclaration","scope":52131,"src":"19148:36:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse[]"},"typeName":{"baseType":{"id":52055,"nodeType":"UserDefinedTypeName","pathNode":{"id":52054,"name":"TaskResponse","nameLocations":["19148:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"19148:12:60"},"referencedDeclaration":52889,"src":"19148:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"id":52056,"nodeType":"ArrayTypeName","src":"19148:14:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse[]"}},"visibility":"internal"}],"id":52061,"initialValue":{"baseExpression":{"id":52058,"name":"responses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51010,"src":"19187:9:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskResponse storage ref[] storage ref)"}},"id":52060,"indexExpression":{"id":52059,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52047,"src":"19197:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19187:17:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage ref"}},"nodeType":"VariableDeclarationStatement","src":"19148:56:60"},{"condition":{"commonType":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},"id":52069,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":52062,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"19260:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":52064,"indexExpression":{"id":52063,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52047,"src":"19269:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19260:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"id":52065,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19277:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"19260:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"nodeType":"BinaryOperation","operator":"!=","rightExpression":{"expression":{"expression":{"id":52066,"name":"LLMOracleTask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52905,"src":"19287:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LLMOracleTask_$52905_$","typeString":"type(contract LLMOracleTask)"}},"id":52067,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19301:10:60","memberName":"TaskStatus","nodeType":"MemberAccess","referencedDeclaration":52841,"src":"19287:24:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":52068,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19312:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"19287:34:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},"src":"19260:61:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52082,"nodeType":"IfStatement","src":"19256:185:60","trueBody":{"id":52081,"nodeType":"Block","src":"19323:118:60","statements":[{"errorCall":{"arguments":[{"id":52071,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52047,"src":"19362:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},{"expression":{"baseExpression":{"id":52072,"name":"requests","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":51003,"src":"19370:8:60","typeDescriptions":{"typeIdentifier":"t_mapping$_t_uint256_$_t_struct$_TaskRequest_$52872_storage_$","typeString":"mapping(uint256 => struct LLMOracleTask.TaskRequest storage ref)"}},"id":52074,"indexExpression":{"id":52073,"name":"taskId","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52047,"src":"19379:6:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19370:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskRequest_$52872_storage","typeString":"struct LLMOracleTask.TaskRequest storage ref"}},"id":52075,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19387:6:60","memberName":"status","nodeType":"MemberAccess","referencedDeclaration":52856,"src":"19370:23:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}},{"expression":{"expression":{"id":52076,"name":"LLMOracleTask","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52905,"src":"19395:13:60","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_LLMOracleTask_$52905_$","typeString":"type(contract LLMOracleTask)"}},"id":52077,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19409:10:60","memberName":"TaskStatus","nodeType":"MemberAccess","referencedDeclaration":52841,"src":"19395:24:60","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_TaskStatus_$52841_$","typeString":"type(enum LLMOracleTask.TaskStatus)"}},"id":52078,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"19420:9:60","memberName":"Completed","nodeType":"MemberAccess","referencedDeclaration":52840,"src":"19395:34:60","typeDescriptions":{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"},{"typeIdentifier":"t_enum$_TaskStatus_$52841","typeString":"enum LLMOracleTask.TaskStatus"}],"id":52070,"name":"InvalidTaskStatus","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":50957,"src":"19344:17:60","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$_t_enum$_TaskStatus_$52841_$_t_enum$_TaskStatus_$52841_$returns$_t_error_$","typeString":"function (uint256,enum LLMOracleTask.TaskStatus,enum LLMOracleTask.TaskStatus) pure returns (error)"}},"id":52079,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"19344:86:60","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52080,"nodeType":"RevertStatement","src":"19337:93:60"}]}},{"assignments":[52085],"declarations":[{"constant":false,"id":52085,"mutability":"mutable","name":"result","nameLocation":"19533:6:60","nodeType":"VariableDeclaration","scope":52131,"src":"19512:27:60","stateVariable":false,"storageLocation":"storage","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"},"typeName":{"id":52084,"nodeType":"UserDefinedTypeName","pathNode":{"id":52083,"name":"TaskResponse","nameLocations":["19512:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"19512:12:60"},"referencedDeclaration":52889,"src":"19512:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"visibility":"internal"}],"id":52089,"initialValue":{"baseExpression":{"id":52086,"name":"taskResponses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52057,"src":"19542:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage pointer"}},"id":52088,"indexExpression":{"hexValue":"30","id":52087,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19556:1:60","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19542:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"nodeType":"VariableDeclarationStatement","src":"19512:46:60"},{"assignments":[52091],"declarations":[{"constant":false,"id":52091,"mutability":"mutable","name":"highestScore","nameLocation":"19576:12:60","nodeType":"VariableDeclaration","scope":52131,"src":"19568:20:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52090,"name":"uint256","nodeType":"ElementaryTypeName","src":"19568:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":52094,"initialValue":{"expression":{"id":52092,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52085,"src":"19591:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage pointer"}},"id":52093,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19598:5:60","memberName":"score","nodeType":"MemberAccess","referencedDeclaration":52882,"src":"19591:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"19568:35:60"},{"body":{"id":52127,"nodeType":"Block","src":"19664:180:60","statements":[{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52111,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"baseExpression":{"id":52106,"name":"taskResponses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52057,"src":"19682:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage pointer"}},"id":52108,"indexExpression":{"id":52107,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52096,"src":"19696:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19682:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":52109,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19699:5:60","memberName":"score","nodeType":"MemberAccess","referencedDeclaration":52882,"src":"19682:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">","rightExpression":{"id":52110,"name":"highestScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52091,"src":"19707:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19682:37:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52126,"nodeType":"IfStatement","src":"19678:156:60","trueBody":{"id":52125,"nodeType":"Block","src":"19721:113:60","statements":[{"expression":{"id":52117,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52112,"name":"highestScore","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52091,"src":"19739:12:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"baseExpression":{"id":52113,"name":"taskResponses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52057,"src":"19754:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage pointer"}},"id":52115,"indexExpression":{"id":52114,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52096,"src":"19768:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19754:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"id":52116,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"memberLocation":"19771:5:60","memberName":"score","nodeType":"MemberAccess","referencedDeclaration":52882,"src":"19754:22:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19739:37:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52118,"nodeType":"ExpressionStatement","src":"19739:37:60"},{"expression":{"id":52123,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52119,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52085,"src":"19794:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage pointer"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"id":52120,"name":"taskResponses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52057,"src":"19803:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage pointer"}},"id":52122,"indexExpression":{"id":52121,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52096,"src":"19817:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"19803:16:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage","typeString":"struct LLMOracleTask.TaskResponse storage ref"}},"src":"19794:25:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage pointer"}},"id":52124,"nodeType":"ExpressionStatement","src":"19794:25:60"}]}}]},"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52102,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52099,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52096,"src":"19633:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"expression":{"id":52100,"name":"taskResponses","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52057,"src":"19637:13:60","typeDescriptions":{"typeIdentifier":"t_array$_t_struct$_TaskResponse_$52889_storage_$dyn_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage ref[] storage pointer"}},"id":52101,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"19651:6:60","memberName":"length","nodeType":"MemberAccess","src":"19637:20:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"19633:24:60","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52128,"initializationExpression":{"assignments":[52096],"declarations":[{"constant":false,"id":52096,"mutability":"mutable","name":"i","nameLocation":"19626:1:60","nodeType":"VariableDeclaration","scope":52128,"src":"19618:9:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52095,"name":"uint256","nodeType":"ElementaryTypeName","src":"19618:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":52098,"initialValue":{"hexValue":"31","id":52097,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"19630:1:60","typeDescriptions":{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"},"value":"1"},"nodeType":"VariableDeclarationStatement","src":"19618:13:60"},"isSimpleCounterLoop":true,"loopExpression":{"expression":{"id":52104,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"++","prefix":false,"src":"19659:3:60","subExpression":{"id":52103,"name":"i","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52096,"src":"19659:1:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52105,"nodeType":"ExpressionStatement","src":"19659:3:60"},"nodeType":"ForStatement","src":"19613:231:60"},{"expression":{"id":52129,"name":"result","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52085,"src":"19861:6:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse storage pointer"}},"functionReturnParameters":52052,"id":52130,"nodeType":"Return","src":"19854:13:60"}]},"documentation":{"id":52045,"nodeType":"StructuredDocumentation","src":"18786:262:60","text":"@notice Returns the best performing result of the given task.\n @dev For invalid task IDs, the status check will fail.\n @param taskId The ID of the task to get the result for.\n @return The best performing response w.r.t validation scores."},"functionSelector":"32f77659","implemented":true,"kind":"function","modifiers":[],"name":"getBestResponse","nameLocation":"19062:15:60","parameters":{"id":52048,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52047,"mutability":"mutable","name":"taskId","nameLocation":"19086:6:60","nodeType":"VariableDeclaration","scope":52132,"src":"19078:14:60","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52046,"name":"uint256","nodeType":"ElementaryTypeName","src":"19078:7:60","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"19077:16:60"},"returnParameters":{"id":52052,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52051,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52132,"src":"19117:19:60","stateVariable":false,"storageLocation":"memory","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_memory_ptr","typeString":"struct LLMOracleTask.TaskResponse"},"typeName":{"id":52050,"nodeType":"UserDefinedTypeName","pathNode":{"id":52049,"name":"TaskResponse","nameLocations":["19117:12:60"],"nodeType":"IdentifierPath","referencedDeclaration":52889,"src":"19117:12:60"},"referencedDeclaration":52889,"src":"19117:12:60","typeDescriptions":{"typeIdentifier":"t_struct$_TaskResponse_$52889_storage_ptr","typeString":"struct LLMOracleTask.TaskResponse"}},"visibility":"internal"}],"src":"19116:21:60"},"scope":52133,"stateMutability":"view","virtual":false,"visibility":"external"}],"abstract":false,"baseContracts":[{"baseName":{"id":50898,"name":"LLMOracleTask","nameLocations":["689:13:60"],"nodeType":"IdentifierPath","referencedDeclaration":52905,"src":"689:13:60"},"id":50899,"nodeType":"InheritanceSpecifier","src":"689:13:60"},{"baseName":{"id":50900,"name":"LLMOracleManager","nameLocations":["704:16:60"],"nodeType":"IdentifierPath","referencedDeclaration":52416,"src":"704:16:60"},"id":50901,"nodeType":"InheritanceSpecifier","src":"704:16:60"},{"baseName":{"id":50902,"name":"UUPSUpgradeable","nameLocations":["722:15:60"],"nodeType":"IdentifierPath","referencedDeclaration":37111,"src":"722:15:60"},"id":50903,"nodeType":"InheritanceSpecifier","src":"722:15:60"}],"canonicalName":"LLMOracleCoordinator","contractDependencies":[],"contractKind":"contract","documentation":{"id":50897,"nodeType":"StructuredDocumentation","src":"532:124:60","text":"@title LLM Oracle Coordinator\n @notice Responsible for coordinating the Oracle responses to LLM generation requests."},"fullyImplemented":true,"linearizedBaseContracts":[52133,37111,37336,52416,36675,37157,36929,52905],"name":"LLMOracleCoordinator","nameLocation":"665:20:60","scope":52134,"usedErrors":[36511,36516,36692,36695,36956,36961,37531,37544,38810,39102,50946,50957,50964,50971,50976,50983,50986,52151,52914,53138],"usedEvents":[36522,36700,37313,50912,50919,50926,50939]}],"license":"Apache-2.0"},"id":60} \ No newline at end of file +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "UPGRADE_INTERFACE_VERSION", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "feeToken", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ERC20" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "generationDeviationFactor", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint64", + "internalType": "uint64" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "generationFee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getBestResponse", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple", + "internalType": "struct LLMOracleTask.TaskResponse", + "components": [ + { + "name": "responder", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "score", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "output", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getFee", + "inputs": [ + { + "name": "parameters", + "type": "tuple", + "internalType": "struct LLMOracleTaskParameters", + "components": [ + { + "name": "difficulty", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "numGenerations", + "type": "uint40", + "internalType": "uint40" + }, + { + "name": "numValidations", + "type": "uint40", + "internalType": "uint40" + } + ] + } + ], + "outputs": [ + { + "name": "totalFee", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "generatorFee", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "validatorFee", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getResponses", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct LLMOracleTask.TaskResponse[]", + "components": [ + { + "name": "responder", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "score", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "output", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getValidations", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "", + "type": "tuple[]", + "internalType": "struct LLMOracleTask.TaskValidation[]", + "components": [ + { + "name": "validator", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "scores", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ] + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_oracleRegistry", + "type": "address", + "internalType": "address" + }, + { + "name": "_feeToken", + "type": "address", + "internalType": "address" + }, + { + "name": "_platformFee", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_generationFee", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_validationFee", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_minScore", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_maxScore", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "maxScore", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "maximumParameters", + "inputs": [], + "outputs": [ + { + "name": "difficulty", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "numGenerations", + "type": "uint40", + "internalType": "uint40" + }, + { + "name": "numValidations", + "type": "uint40", + "internalType": "uint40" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minScore", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minimumParameters", + "inputs": [], + "outputs": [ + { + "name": "difficulty", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "numGenerations", + "type": "uint40", + "internalType": "uint40" + }, + { + "name": "numValidations", + "type": "uint40", + "internalType": "uint40" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "nextTaskId", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "platformFee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "platformFeeBalance", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registry", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract LLMOracleRegistry" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "request", + "inputs": [ + { + "name": "protocol", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "input", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "models", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "parameters", + "type": "tuple", + "internalType": "struct LLMOracleTaskParameters", + "components": [ + { + "name": "difficulty", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "numGenerations", + "type": "uint40", + "internalType": "uint40" + }, + { + "name": "numValidations", + "type": "uint40", + "internalType": "uint40" + } + ] + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "requests", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "requester", + "type": "address", + "internalType": "address" + }, + { + "name": "protocol", + "type": "bytes32", + "internalType": "bytes32" + }, + { + "name": "parameters", + "type": "tuple", + "internalType": "struct LLMOracleTaskParameters", + "components": [ + { + "name": "difficulty", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "numGenerations", + "type": "uint40", + "internalType": "uint40" + }, + { + "name": "numValidations", + "type": "uint40", + "internalType": "uint40" + } + ] + }, + { + "name": "status", + "type": "uint8", + "internalType": "enum LLMOracleTask.TaskStatus" + }, + { + "name": "generatorFee", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "validatorFee", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "platformFee", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "input", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "models", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "respond", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "output", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "responses", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "responder", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "score", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "output", + "type": "bytes", + "internalType": "bytes" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "setFees", + "inputs": [ + { + "name": "_platformFee", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_generationFee", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_validationFee", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setGenerationDeviationFactor", + "inputs": [ + { + "name": "_generationDeviationFactor", + "type": "uint64", + "internalType": "uint64" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setParameters", + "inputs": [ + { + "name": "minimums", + "type": "tuple", + "internalType": "struct LLMOracleTaskParameters", + "components": [ + { + "name": "difficulty", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "numGenerations", + "type": "uint40", + "internalType": "uint40" + }, + { + "name": "numValidations", + "type": "uint40", + "internalType": "uint40" + } + ] + }, + { + "name": "maximums", + "type": "tuple", + "internalType": "struct LLMOracleTaskParameters", + "components": [ + { + "name": "difficulty", + "type": "uint8", + "internalType": "uint8" + }, + { + "name": "numGenerations", + "type": "uint40", + "internalType": "uint40" + }, + { + "name": "numValidations", + "type": "uint40", + "internalType": "uint40" + } + ] + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "validate", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "scores", + "type": "uint256[]", + "internalType": "uint256[]" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "validationFee", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "validations", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [ + { + "name": "validator", + "type": "address", + "internalType": "address" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "metadata", + "type": "bytes", + "internalType": "bytes" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "withdrawPlatformFees", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Request", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "requester", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "protocol", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Response", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "responder", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "StatusUpdate", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "protocol", + "type": "bytes32", + "indexed": true, + "internalType": "bytes32" + }, + { + "name": "statusBefore", + "type": "uint8", + "indexed": false, + "internalType": "enum LLMOracleTask.TaskStatus" + }, + { + "name": "statusAfter", + "type": "uint8", + "indexed": false, + "internalType": "enum LLMOracleTask.TaskStatus" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Validation", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "indexed": true, + "internalType": "uint256" + }, + { + "name": "validator", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AddressEmptyCode", + "inputs": [ + { + "name": "target", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "AlreadyResponded", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "oracle", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ComputeError", + "inputs": [] + }, + { + "type": "error", + "name": "ERC1967InvalidImplementation", + "inputs": [ + { + "name": "implementation", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC1967NonPayable", + "inputs": [] + }, + { + "type": "error", + "name": "FailedCall", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientFees", + "inputs": [ + { + "name": "have", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "want", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "InvalidInitialization", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidInput", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidNonce", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "nonce", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "InvalidParameterRange", + "inputs": [ + { + "name": "have", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "min", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "max", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "InvalidTaskStatus", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "have", + "type": "uint8", + "internalType": "enum LLMOracleTask.TaskStatus" + }, + { + "name": "want", + "type": "uint8", + "internalType": "enum LLMOracleTask.TaskStatus" + } + ] + }, + { + "type": "error", + "name": "InvalidValidation", + "inputs": [ + { + "name": "taskId", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "validator", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "NotInitializing", + "inputs": [] + }, + { + "type": "error", + "name": "NotRegistered", + "inputs": [ + { + "name": "oracle", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "NotWhitelisted", + "inputs": [ + { + "name": "validator", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableInvalidOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "UUPSUnauthorizedCallContext", + "inputs": [] + }, + { + "type": "error", + "name": "UUPSUnsupportedProxiableUUID", + "inputs": [ + { + "name": "slot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } +] diff --git a/deployments/abis/LLMOracleRegistry.abi.json b/deployments/abis/LLMOracleRegistry.abi.json deleted file mode 100644 index 1b39bde..0000000 --- a/deployments/abis/LLMOracleRegistry.abi.json +++ /dev/null @@ -1,588 +0,0 @@ -[ - { - "type": "constructor", - "inputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "UPGRADE_INTERFACE_VERSION", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "string", - "internalType": "string" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "addToWhitelist", - "inputs": [ - { - "name": "accounts", - "type": "address[]", - "internalType": "address[]" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "generatorStakeAmount", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "getStakeAmount", - "inputs": [ - { - "name": "kind", - "type": "uint8", - "internalType": "enum LLMOracleKind" - } - ], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "initialize", - "inputs": [ - { - "name": "_generatorStakeAmount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_validatorStakeAmount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_token", - "type": "address", - "internalType": "address" - }, - { - "name": "_minRegistrationTime", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "isRegistered", - "inputs": [ - { - "name": "user", - "type": "address", - "internalType": "address" - }, - { - "name": "kind", - "type": "uint8", - "internalType": "enum LLMOracleKind" - } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "isWhitelisted", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "outputs": [ - { - "name": "", - "type": "bool", - "internalType": "bool" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "minRegistrationTime", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "owner", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "proxiableUUID", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "bytes32", - "internalType": "bytes32" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "register", - "inputs": [ - { - "name": "kind", - "type": "uint8", - "internalType": "enum LLMOracleKind" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "registrationTimes", - "inputs": [ - { - "name": "oracle", - "type": "address", - "internalType": "address" - }, - { - "name": "", - "type": "uint8", - "internalType": "enum LLMOracleKind" - } - ], - "outputs": [ - { - "name": "registeredTime", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "registrations", - "inputs": [ - { - "name": "oracle", - "type": "address", - "internalType": "address" - }, - { - "name": "", - "type": "uint8", - "internalType": "enum LLMOracleKind" - } - ], - "outputs": [ - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "removeFromWhitelist", - "inputs": [ - { - "name": "account", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "renounceOwnership", - "inputs": [], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "setStakeAmounts", - "inputs": [ - { - "name": "_generatorStakeAmount", - "type": "uint256", - "internalType": "uint256" - }, - { - "name": "_validatorStakeAmount", - "type": "uint256", - "internalType": "uint256" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "token", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "address", - "internalType": "contract ERC20" - } - ], - "stateMutability": "view" - }, - { - "type": "function", - "name": "transferOwnership", - "inputs": [ - { - "name": "newOwner", - "type": "address", - "internalType": "address" - } - ], - "outputs": [], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "unregister", - "inputs": [ - { - "name": "kind", - "type": "uint8", - "internalType": "enum LLMOracleKind" - } - ], - "outputs": [ - { - "name": "amount", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "nonpayable" - }, - { - "type": "function", - "name": "upgradeToAndCall", - "inputs": [ - { - "name": "newImplementation", - "type": "address", - "internalType": "address" - }, - { - "name": "data", - "type": "bytes", - "internalType": "bytes" - } - ], - "outputs": [], - "stateMutability": "payable" - }, - { - "type": "function", - "name": "validatorStakeAmount", - "inputs": [], - "outputs": [ - { - "name": "", - "type": "uint256", - "internalType": "uint256" - } - ], - "stateMutability": "view" - }, - { - "type": "event", - "name": "AddedToWhitelist", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Initialized", - "inputs": [ - { - "name": "version", - "type": "uint64", - "indexed": false, - "internalType": "uint64" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "OwnershipTransferred", - "inputs": [ - { - "name": "previousOwner", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "newOwner", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Registered", - "inputs": [ - { - "name": "", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "kind", - "type": "uint8", - "indexed": false, - "internalType": "enum LLMOracleKind" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "RemovedFromWhitelist", - "inputs": [ - { - "name": "account", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Unregistered", - "inputs": [ - { - "name": "", - "type": "address", - "indexed": true, - "internalType": "address" - }, - { - "name": "kind", - "type": "uint8", - "indexed": false, - "internalType": "enum LLMOracleKind" - } - ], - "anonymous": false - }, - { - "type": "event", - "name": "Upgraded", - "inputs": [ - { - "name": "implementation", - "type": "address", - "indexed": true, - "internalType": "address" - } - ], - "anonymous": false - }, - { - "type": "error", - "name": "AddressEmptyCode", - "inputs": [ - { - "name": "target", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "AlreadyRegistered", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "ERC1967InvalidImplementation", - "inputs": [ - { - "name": "implementation", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "ERC1967NonPayable", - "inputs": [] - }, - { - "type": "error", - "name": "FailedCall", - "inputs": [] - }, - { - "type": "error", - "name": "InsufficientFunds", - "inputs": [] - }, - { - "type": "error", - "name": "InvalidInitialization", - "inputs": [] - }, - { - "type": "error", - "name": "NotInitializing", - "inputs": [] - }, - { - "type": "error", - "name": "NotRegistered", - "inputs": [ - { - "name": "", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "NotWhitelisted", - "inputs": [ - { - "name": "validator", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "OwnableInvalidOwner", - "inputs": [ - { - "name": "owner", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "OwnableUnauthorizedAccount", - "inputs": [ - { - "name": "account", - "type": "address", - "internalType": "address" - } - ] - }, - { - "type": "error", - "name": "TooEarlyToUnregister", - "inputs": [ - { - "name": "minTimeToWait", - "type": "uint256", - "internalType": "uint256" - } - ] - }, - { - "type": "error", - "name": "UUPSUnauthorizedCallContext", - "inputs": [] - }, - { - "type": "error", - "name": "UUPSUnsupportedProxiableUUID", - "inputs": [ - { - "name": "slot", - "type": "bytes32", - "internalType": "bytes32" - } - ] - } -] diff --git a/deployments/abis/LLMOracleRegistry.json b/deployments/abis/LLMOracleRegistry.json index d4813bc..1b39bde 100644 --- a/deployments/abis/LLMOracleRegistry.json +++ b/deployments/abis/LLMOracleRegistry.json @@ -1 +1,588 @@ -{"abi":[{"type":"constructor","inputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"UPGRADE_INTERFACE_VERSION","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"addToWhitelist","inputs":[{"name":"accounts","type":"address[]","internalType":"address[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"generatorStakeAmount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getStakeAmount","inputs":[{"name":"kind","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"initialize","inputs":[{"name":"_generatorStakeAmount","type":"uint256","internalType":"uint256"},{"name":"_validatorStakeAmount","type":"uint256","internalType":"uint256"},{"name":"_token","type":"address","internalType":"address"},{"name":"_minRegistrationTime","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"isRegistered","inputs":[{"name":"user","type":"address","internalType":"address"},{"name":"kind","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isWhitelisted","inputs":[{"name":"","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"minRegistrationTime","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"owner","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"register","inputs":[{"name":"kind","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"registrationTimes","inputs":[{"name":"oracle","type":"address","internalType":"address"},{"name":"","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[{"name":"registeredTime","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"registrations","inputs":[{"name":"oracle","type":"address","internalType":"address"},{"name":"","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"removeFromWhitelist","inputs":[{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceOwnership","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setStakeAmounts","inputs":[{"name":"_generatorStakeAmount","type":"uint256","internalType":"uint256"},{"name":"_validatorStakeAmount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract ERC20"}],"stateMutability":"view"},{"type":"function","name":"transferOwnership","inputs":[{"name":"newOwner","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"unregister","inputs":[{"name":"kind","type":"uint8","internalType":"enum LLMOracleKind"}],"outputs":[{"name":"amount","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"upgradeToAndCall","inputs":[{"name":"newImplementation","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"validatorStakeAmount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"event","name":"AddedToWhitelist","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Initialized","inputs":[{"name":"version","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"name":"previousOwner","type":"address","indexed":true,"internalType":"address"},{"name":"newOwner","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Registered","inputs":[{"name":"","type":"address","indexed":true,"internalType":"address"},{"name":"kind","type":"uint8","indexed":false,"internalType":"enum LLMOracleKind"}],"anonymous":false},{"type":"event","name":"RemovedFromWhitelist","inputs":[{"name":"account","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unregistered","inputs":[{"name":"","type":"address","indexed":true,"internalType":"address"},{"name":"kind","type":"uint8","indexed":false,"internalType":"enum LLMOracleKind"}],"anonymous":false},{"type":"event","name":"Upgraded","inputs":[{"name":"implementation","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"error","name":"AddressEmptyCode","inputs":[{"name":"target","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyRegistered","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967InvalidImplementation","inputs":[{"name":"implementation","type":"address","internalType":"address"}]},{"type":"error","name":"ERC1967NonPayable","inputs":[]},{"type":"error","name":"FailedCall","inputs":[]},{"type":"error","name":"InsufficientFunds","inputs":[]},{"type":"error","name":"InvalidInitialization","inputs":[]},{"type":"error","name":"NotInitializing","inputs":[]},{"type":"error","name":"NotRegistered","inputs":[{"name":"","type":"address","internalType":"address"}]},{"type":"error","name":"NotWhitelisted","inputs":[{"name":"validator","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableInvalidOwner","inputs":[{"name":"owner","type":"address","internalType":"address"}]},{"type":"error","name":"OwnableUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"}]},{"type":"error","name":"TooEarlyToUnregister","inputs":[{"name":"minTimeToWait","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UUPSUnauthorizedCallContext","inputs":[]},{"type":"error","name":"UUPSUnsupportedProxiableUUID","inputs":[{"name":"slot","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a060405230608052348015610013575f80fd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516116086100f95f395f8181610d8101528181610daa0152610eee01526116085ff3fe608060405260043610610126575f3560e01c80637f649783116100a8578063cf9640b41161006d578063cf9640b414610380578063ee12a7a01461039f578063eea5353d146103b4578063f149444b146103c9578063f2fde38b146103e8578063fc0c546a14610407575f80fd5b80637f6497831461027f57806381e1c6ca1461029e5780638ab1d681146102d45780638da5cb5b146102f3578063ad3cb1cc14610343575f80fd5b806352d1902d116100ee57806352d1902d146101fa5780635f5b248b1461020e57806361d689fa1461022d578063715018a61461024c578063771007a914610260575f80fd5b80631a00d4ea1461012a57806323d2f5f6146101525780632d118d5c146101715780633af32abf146101a75780634f1ef286146101e5575b5f80fd5b348015610135575f80fd5b5061013f60035481565b6040519081526020015b60405180910390f35b34801561015d575f80fd5b5061013f61016c36600461123d565b610426565b34801561017c575f80fd5b5061013f61018b36600461126c565b600560209081525f928352604080842090915290825290205481565b3480156101b2575f80fd5b506101d56101c136600461129d565b5f6020819052908152604090205460ff1681565b6040519015158152602001610149565b6101f86101f33660046112fb565b610755565b005b348015610205575f80fd5b5061013f610774565b348015610219575f80fd5b506101d561022836600461126c565b61078f565b348015610238575f80fd5b506101f861024736600461123d565b6107ed565b348015610257575f80fd5b506101f8610a45565b34801561026b575f80fd5b5061013f61027a36600461123d565b610a58565b34801561028a575f80fd5b506101f86102993660046113a0565b610a81565b3480156102a9575f80fd5b5061013f6102b836600461126c565b600460209081525f928352604080842090915290825290205481565b3480156102df575f80fd5b506101f86102ee36600461129d565b610b7d565b3480156102fe575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610149565b34801561034e575f80fd5b50610373604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610149919061144f565b34801561038b575f80fd5b506101f861039a366004611484565b610bee565b3480156103aa575f80fd5b5061013f60015481565b3480156103bf575f80fd5b5061013f60025481565b3480156103d4575f80fd5b506101f86103e33660046114be565b610d29565b3480156103f3575f80fd5b506101f861040236600461129d565b610d3c565b348015610412575f80fd5b5060065461032b906001600160a01b031681565b335f90815260046020526040812081836001811115610447576104476114de565b6001811115610458576104586114de565b81526020019081526020015f20549050805f0361048f5760405163bfc6c33760e01b81523360048201526024015b60405180910390fd5b60018260018111156104a3576104a36114de565b1480156104be5750335f9081526020819052604090205460ff165b156104da57335f908152602081905260409020805460ff191690555b600354335f908152600560205260408120908460018111156104fe576104fe6114de565b600181111561050f5761050f6114de565b81526020019081526020015f2054426105289190611506565b101561059557335f9081526005602052604081209083600181111561054f5761054f6114de565b6001811115610560576105606114de565b81526020019081526020015f2054426105799190611506565b60405163fbedc41360e01b815260040161048691815260200190565b335f908152600460205260408120908360018111156105b6576105b66114de565b60018111156105c7576105c76114de565b815260208082019290925260409081015f90812081905533815260059092528120908360018111156105fb576105fb6114de565b600181111561060c5761060c6114de565b81526020019081526020015f205f9055336001600160a01b03167feebfdaadda46c435881bbe8bac1fc3974f3323b1c809c7aabd37ae7b83ca4442836040516106559190611519565b60405180910390a2600654604051636eb1769f60e11b815230600482015233602482018190526001600160a01b039092169163095ea7b3918490849063dd62ed3e90604401602060405180830381865afa1580156106b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d9919061153f565b6106e39190611556565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561072b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f9190611569565b50919050565b61075d610d76565b61076682610e1a565b6107708282610e22565b5050565b5f61077d610ee3565b505f805160206115b383398151915290565b5f61079982610a58565b6001600160a01b0384165f908152600460205260408120908460018111156107c3576107c36114de565b60018111156107d4576107d46114de565b81526020019081526020015f2054101590505b92915050565b6001816001811115610801576108016114de565b0361083757335f9081526020819052604090205460ff1661083757604051636f8bf18b60e11b8152336004820152602401610486565b5f61084182610a58565b905061084d338361078f565b1561086d576040516345ed80e960e01b8152336004820152602401610486565b600654604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa1580156108b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dd919061153f565b10156108fc5760405163356680b760e01b815260040160405180910390fd5b6006546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015610950573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109749190611569565b50335f9081526004602052604081208291846001811115610997576109976114de565b60018111156109a8576109a86114de565b815260208082019290925260409081015f908120939093553383526005909152812042918460018111156109de576109de6114de565b60018111156109ef576109ef6114de565b81526020019081526020015f2081905550336001600160a01b03167f89b4e995568c900aa52376cbed225dc1a013c9a43cb58186d69676ff593d7c4e83604051610a399190611519565b60405180910390a25050565b610a4d610f2c565b610a565f610f87565b565b5f80826001811115610a6c57610a6c6114de565b14610a79576002546107e7565b505060015490565b610a89610f2c565b5f5b8151811015610770575f80838381518110610aa857610aa8611588565b6020908102919091018101516001600160a01b031682528101919091526040015f205460ff16610b755760015f80848481518110610ae857610ae8611588565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff021916908315150217905550818181518110610b3757610b37611588565b60200260200101516001600160a01b03167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a25b600101610a8b565b610b85610f2c565b6001600160a01b0381165f9081526020819052604090205460ff1615610beb576001600160a01b0381165f81815260208190526040808220805460ff19169055517fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df7579190a25b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610c335750825b90505f8267ffffffffffffffff166001148015610c4f5750303b155b905081158015610c5d575080155b15610c7b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ca557845460ff60401b1916600160401b1785555b610cae33610ff7565b600189905560028890556003869055600680546001600160a01b0319166001600160a01b0389161790558315610d1e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610d31610f2c565b600191909155600255565b610d44610f2c565b6001600160a01b038116610d6d57604051631e4fbdf760e01b81525f6004820152602401610486565b610beb81610f87565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610dfc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610df05f805160206115b3833981519152546001600160a01b031690565b6001600160a01b031614155b15610a565760405163703e46dd60e11b815260040160405180910390fd5b610beb610f2c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e7c575060408051601f3d908101601f19168201909252610e799181019061153f565b60015b610ea457604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610486565b5f805160206115b38339815191528114610ed457604051632a87526960e21b815260048101829052602401610486565b610ede8383611008565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a565760405163703e46dd60e11b815260040160405180910390fd5b33610f5e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610a565760405163118cdaa760e01b8152336004820152602401610486565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b610fff61105d565b610beb816110a6565b611011826110ae565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561105557610ede8282611111565b610770611183565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610a5657604051631afcd79f60e31b815260040160405180910390fd5b610d4461105d565b806001600160a01b03163b5f036110e357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610486565b5f805160206115b383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b03168460405161112d919061159c565b5f60405180830381855af49150503d805f8114611165576040519150601f19603f3d011682016040523d82523d5f602084013e61116a565b606091505b509150915061117a8583836111a2565b95945050505050565b3415610a565760405163b398979f60e01b815260040160405180910390fd5b6060826111b7576111b282611201565b6111fa565b81511580156111ce57506001600160a01b0384163b155b156111f757604051639996b31560e01b81526001600160a01b0385166004820152602401610486565b50805b9392505050565b8051156112115780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b803560028110611238575f80fd5b919050565b5f6020828403121561124d575f80fd5b6111fa8261122a565b80356001600160a01b0381168114611238575f80fd5b5f806040838503121561127d575f80fd5b61128683611256565b91506112946020840161122a565b90509250929050565b5f602082840312156112ad575f80fd5b6111fa82611256565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112f3576112f36112b6565b604052919050565b5f806040838503121561130c575f80fd5b61131583611256565b9150602083013567ffffffffffffffff811115611330575f80fd5b8301601f81018513611340575f80fd5b803567ffffffffffffffff81111561135a5761135a6112b6565b61136d601f8201601f19166020016112ca565b818152866020838501011115611381575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f602082840312156113b0575f80fd5b813567ffffffffffffffff8111156113c6575f80fd5b8201601f810184136113d6575f80fd5b803567ffffffffffffffff8111156113f0576113f06112b6565b8060051b611400602082016112ca565b9182526020818401810192908101908784111561141b575f80fd5b6020850194505b838510156114445761143385611256565b825260209485019490910190611422565b979650505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f8060808587031215611497575f80fd5b84359350602085013592506114ae60408601611256565b9396929550929360600135925050565b5f80604083850312156114cf575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156107e7576107e76114f2565b602081016002831061153957634e487b7160e01b5f52602160045260245ffd5b91905290565b5f6020828403121561154f575f80fd5b5051919050565b808201808211156107e7576107e76114f2565b5f60208284031215611579575f80fd5b815180151581146111fa575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a48298e56c99c531cd83e0ebfdb796e8a22fe8b486771f00cc6d4b80071c85a064736f6c634300081a0033","sourceMap":"560:6817:62:-:0;;;1171:4:21;1128:48;;3170:53:62;;;;;;;;;-1:-1:-1;3194:22:62;:20;:22::i;:::-;560:6817;;7711:422:20;8870:21;7900:15;;;;;;;7896:76;;;7938:23;;-1:-1:-1;;;7938:23:20;;;;;;;;;;;7896:76;7985:14;;-1:-1:-1;;;;;7985:14:20;;;:34;7981:146;;8035:33;;-1:-1:-1;;;;;;8035:33:20;-1:-1:-1;;;;;8035:33:20;;;;;8087:29;;158:50:66;;;8087:29:20;;146:2:66;131:18;8087:29:20;;;;;;;7981:146;7760:373;7711:422::o;14:200:66:-;560:6817:62;;;;;;;;;;;;;;;;;;;;;;","linkReferences":{}},"deployedBytecode":{"object":"0x608060405260043610610126575f3560e01c80637f649783116100a8578063cf9640b41161006d578063cf9640b414610380578063ee12a7a01461039f578063eea5353d146103b4578063f149444b146103c9578063f2fde38b146103e8578063fc0c546a14610407575f80fd5b80637f6497831461027f57806381e1c6ca1461029e5780638ab1d681146102d45780638da5cb5b146102f3578063ad3cb1cc14610343575f80fd5b806352d1902d116100ee57806352d1902d146101fa5780635f5b248b1461020e57806361d689fa1461022d578063715018a61461024c578063771007a914610260575f80fd5b80631a00d4ea1461012a57806323d2f5f6146101525780632d118d5c146101715780633af32abf146101a75780634f1ef286146101e5575b5f80fd5b348015610135575f80fd5b5061013f60035481565b6040519081526020015b60405180910390f35b34801561015d575f80fd5b5061013f61016c36600461123d565b610426565b34801561017c575f80fd5b5061013f61018b36600461126c565b600560209081525f928352604080842090915290825290205481565b3480156101b2575f80fd5b506101d56101c136600461129d565b5f6020819052908152604090205460ff1681565b6040519015158152602001610149565b6101f86101f33660046112fb565b610755565b005b348015610205575f80fd5b5061013f610774565b348015610219575f80fd5b506101d561022836600461126c565b61078f565b348015610238575f80fd5b506101f861024736600461123d565b6107ed565b348015610257575f80fd5b506101f8610a45565b34801561026b575f80fd5b5061013f61027a36600461123d565b610a58565b34801561028a575f80fd5b506101f86102993660046113a0565b610a81565b3480156102a9575f80fd5b5061013f6102b836600461126c565b600460209081525f928352604080842090915290825290205481565b3480156102df575f80fd5b506101f86102ee36600461129d565b610b7d565b3480156102fe575f80fd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03165b6040516001600160a01b039091168152602001610149565b34801561034e575f80fd5b50610373604051806040016040528060058152602001640352e302e360dc1b81525081565b604051610149919061144f565b34801561038b575f80fd5b506101f861039a366004611484565b610bee565b3480156103aa575f80fd5b5061013f60015481565b3480156103bf575f80fd5b5061013f60025481565b3480156103d4575f80fd5b506101f86103e33660046114be565b610d29565b3480156103f3575f80fd5b506101f861040236600461129d565b610d3c565b348015610412575f80fd5b5060065461032b906001600160a01b031681565b335f90815260046020526040812081836001811115610447576104476114de565b6001811115610458576104586114de565b81526020019081526020015f20549050805f0361048f5760405163bfc6c33760e01b81523360048201526024015b60405180910390fd5b60018260018111156104a3576104a36114de565b1480156104be5750335f9081526020819052604090205460ff165b156104da57335f908152602081905260409020805460ff191690555b600354335f908152600560205260408120908460018111156104fe576104fe6114de565b600181111561050f5761050f6114de565b81526020019081526020015f2054426105289190611506565b101561059557335f9081526005602052604081209083600181111561054f5761054f6114de565b6001811115610560576105606114de565b81526020019081526020015f2054426105799190611506565b60405163fbedc41360e01b815260040161048691815260200190565b335f908152600460205260408120908360018111156105b6576105b66114de565b60018111156105c7576105c76114de565b815260208082019290925260409081015f90812081905533815260059092528120908360018111156105fb576105fb6114de565b600181111561060c5761060c6114de565b81526020019081526020015f205f9055336001600160a01b03167feebfdaadda46c435881bbe8bac1fc3974f3323b1c809c7aabd37ae7b83ca4442836040516106559190611519565b60405180910390a2600654604051636eb1769f60e11b815230600482015233602482018190526001600160a01b039092169163095ea7b3918490849063dd62ed3e90604401602060405180830381865afa1580156106b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906106d9919061153f565b6106e39190611556565b6040516001600160e01b031960e085901b1681526001600160a01b03909216600483015260248201526044016020604051808303815f875af115801561072b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061074f9190611569565b50919050565b61075d610d76565b61076682610e1a565b6107708282610e22565b5050565b5f61077d610ee3565b505f805160206115b383398151915290565b5f61079982610a58565b6001600160a01b0384165f908152600460205260408120908460018111156107c3576107c36114de565b60018111156107d4576107d46114de565b81526020019081526020015f2054101590505b92915050565b6001816001811115610801576108016114de565b0361083757335f9081526020819052604090205460ff1661083757604051636f8bf18b60e11b8152336004820152602401610486565b5f61084182610a58565b905061084d338361078f565b1561086d576040516345ed80e960e01b8152336004820152602401610486565b600654604051636eb1769f60e11b815233600482015230602482015282916001600160a01b03169063dd62ed3e90604401602060405180830381865afa1580156108b9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108dd919061153f565b10156108fc5760405163356680b760e01b815260040160405180910390fd5b6006546040516323b872dd60e01b8152336004820152306024820152604481018390526001600160a01b03909116906323b872dd906064016020604051808303815f875af1158015610950573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906109749190611569565b50335f9081526004602052604081208291846001811115610997576109976114de565b60018111156109a8576109a86114de565b815260208082019290925260409081015f908120939093553383526005909152812042918460018111156109de576109de6114de565b60018111156109ef576109ef6114de565b81526020019081526020015f2081905550336001600160a01b03167f89b4e995568c900aa52376cbed225dc1a013c9a43cb58186d69676ff593d7c4e83604051610a399190611519565b60405180910390a25050565b610a4d610f2c565b610a565f610f87565b565b5f80826001811115610a6c57610a6c6114de565b14610a79576002546107e7565b505060015490565b610a89610f2c565b5f5b8151811015610770575f80838381518110610aa857610aa8611588565b6020908102919091018101516001600160a01b031682528101919091526040015f205460ff16610b755760015f80848481518110610ae857610ae8611588565b60200260200101516001600160a01b03166001600160a01b031681526020019081526020015f205f6101000a81548160ff021916908315150217905550818181518110610b3757610b37611588565b60200260200101516001600160a01b03167fa850ae9193f515cbae8d35e8925bd2be26627fc91bce650b8652ed254e9cab0360405160405180910390a25b600101610a8b565b610b85610f2c565b6001600160a01b0381165f9081526020819052604090205460ff1615610beb576001600160a01b0381165f81815260208190526040808220805460ff19169055517fcdd2e9b91a56913d370075169cefa1602ba36be5301664f752192bb1709df7579190a25b50565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff165f81158015610c335750825b90505f8267ffffffffffffffff166001148015610c4f5750303b155b905081158015610c5d575080155b15610c7b5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610ca557845460ff60401b1916600160401b1785555b610cae33610ff7565b600189905560028890556003869055600680546001600160a01b0319166001600160a01b0389161790558315610d1e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b610d31610f2c565b600191909155600255565b610d44610f2c565b6001600160a01b038116610d6d57604051631e4fbdf760e01b81525f6004820152602401610486565b610beb81610f87565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480610dfc57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316610df05f805160206115b3833981519152546001600160a01b031690565b6001600160a01b031614155b15610a565760405163703e46dd60e11b815260040160405180910390fd5b610beb610f2c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015610e7c575060408051601f3d908101601f19168201909252610e799181019061153f565b60015b610ea457604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610486565b5f805160206115b38339815191528114610ed457604051632a87526960e21b815260048101829052602401610486565b610ede8383611008565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610a565760405163703e46dd60e11b815260040160405180910390fd5b33610f5e7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610a565760405163118cdaa760e01b8152336004820152602401610486565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b610fff61105d565b610beb816110a6565b611011826110ae565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561105557610ede8282611111565b610770611183565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610a5657604051631afcd79f60e31b815260040160405180910390fd5b610d4461105d565b806001600160a01b03163b5f036110e357604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610486565b5f805160206115b383398151915280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f80846001600160a01b03168460405161112d919061159c565b5f60405180830381855af49150503d805f8114611165576040519150601f19603f3d011682016040523d82523d5f602084013e61116a565b606091505b509150915061117a8583836111a2565b95945050505050565b3415610a565760405163b398979f60e01b815260040160405180910390fd5b6060826111b7576111b282611201565b6111fa565b81511580156111ce57506001600160a01b0384163b155b156111f757604051639996b31560e01b81526001600160a01b0385166004820152602401610486565b50805b9392505050565b8051156112115780518082602001fd5b60405163d6bda27560e01b815260040160405180910390fd5b803560028110611238575f80fd5b919050565b5f6020828403121561124d575f80fd5b6111fa8261122a565b80356001600160a01b0381168114611238575f80fd5b5f806040838503121561127d575f80fd5b61128683611256565b91506112946020840161122a565b90509250929050565b5f602082840312156112ad575f80fd5b6111fa82611256565b634e487b7160e01b5f52604160045260245ffd5b604051601f8201601f1916810167ffffffffffffffff811182821017156112f3576112f36112b6565b604052919050565b5f806040838503121561130c575f80fd5b61131583611256565b9150602083013567ffffffffffffffff811115611330575f80fd5b8301601f81018513611340575f80fd5b803567ffffffffffffffff81111561135a5761135a6112b6565b61136d601f8201601f19166020016112ca565b818152866020838501011115611381575f80fd5b816020840160208301375f602083830101528093505050509250929050565b5f602082840312156113b0575f80fd5b813567ffffffffffffffff8111156113c6575f80fd5b8201601f810184136113d6575f80fd5b803567ffffffffffffffff8111156113f0576113f06112b6565b8060051b611400602082016112ca565b9182526020818401810192908101908784111561141b575f80fd5b6020850194505b838510156114445761143385611256565b825260209485019490910190611422565b979650505050505050565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f805f8060808587031215611497575f80fd5b84359350602085013592506114ae60408601611256565b9396929550929360600135925050565b5f80604083850312156114cf575f80fd5b50508035926020909101359150565b634e487b7160e01b5f52602160045260245ffd5b634e487b7160e01b5f52601160045260245ffd5b818103818111156107e7576107e76114f2565b602081016002831061153957634e487b7160e01b5f52602160045260245ffd5b91905290565b5f6020828403121561154f575f80fd5b5051919050565b808201808211156107e7576107e76114f2565b5f60208284031215611579575f80fd5b815180151581146111fa575f80fd5b634e487b7160e01b5f52603260045260245ffd5b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca2646970667358221220a48298e56c99c531cd83e0ebfdb796e8a22fe8b486771f00cc6d4b80071c85a064736f6c634300081a0033","sourceMap":"560:6817:62:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:34;;;;;;;;;;;;;;;;;;;160:25:66;;;148:2;133:18;2299:34:62;;;;;;;;5571:981;;;;;;;;;;-1:-1:-1;5571:981:62;;;;;:::i;:::-;;:::i;2568:100::-;;;;;;;;;;-1:-1:-1;2568:100:62;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1165:45:65;;;;;;;;;;-1:-1:-1;1165:45:65;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;1405:14:66;;1398:22;1380:41;;1368:2;1353:18;1165:45:65;1240:187:66;4152:214:21;;;;;;:::i;:::-;;:::i;:::-;;3699:134;;;;;;;;;;;;;:::i;7219:156:62:-;;;;;;;;;;-1:-1:-1;7219:156:62;;;;;:::i;:::-;;:::i;4502:853::-;;;;;;;;;;-1:-1:-1;4502:853:62;;;;;:::i;:::-;;:::i;3155:101:19:-;;;;;;;;;;;;;:::i;6988:175:62:-;;;;;;;;;;-1:-1:-1;6988:175:62;;;;;:::i;:::-;;:::i;1529:307:65:-;;;;;;;;;;-1:-1:-1;1529:307:65;;;;;:::i;:::-;;:::i;2428:88:62:-;;;;;;;;;;-1:-1:-1;2428:88:62;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;1959:210:65;;;;;;;;;;-1:-1:-1;1959:210:65;;;;;:::i;:::-;;:::i;2441:144:19:-;;;;;;;;;;-1:-1:-1;1313:22:19;2570:8;-1:-1:-1;;;;;2570:8:19;2441:144;;;-1:-1:-1;;;;;3981:32:66;;;3963:51;;3951:2;3936:18;2441:144:19;3817:203:66;1819:58:21;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;1819:58:21;;;;;;;;;;;;:::i;3726:419:62:-;;;;;;;;;;-1:-1:-1;3726:419:62;;;;;:::i;:::-;;:::i;1898:35::-;;;;;;;;;;;;;;;;2035;;;;;;;;;;;;;;;;6670:219;;;;;;;;;;-1:-1:-1;6670:219:62;;;;;:::i;:::-;;:::i;3405:215:19:-;;;;;;;;;;-1:-1:-1;3405:215:19;;;;;:::i;:::-;;:::i;2715:18:62:-;;;;;;;;;;-1:-1:-1;2715:18:62;;;;-1:-1:-1;;;;;2715:18:62;;;5571:981;5676:10;5627:14;5662:25;;;:13;:25;;;;;5627:14;5688:4;5662:31;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5653:40;;5749:6;5759:1;5749:11;5745:74;;5783:25;;-1:-1:-1;;;5783:25:62;;5797:10;5783:25;;;3963:51:66;3936:18;;5783:25:62;;;;;;;;5745:74;5884:23;5876:4;:31;;;;;;;;:::i;:::-;;:60;;;;-1:-1:-1;5925:10:62;5911:13;:25;;;;;;;;;;;;;5876:60;5872:124;;;5966:10;5980:5;5952:25;;;;;;;;;;:33;;-1:-1:-1;;5952:33:62;;;5872:124;6118:19;;6098:10;6080:29;;;;:17;:29;;;;;;6110:4;6080:35;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6062:15;:53;;;;:::i;:::-;:75;6058:188;;;6217:10;6199:29;;;;:17;:29;;;;;;6229:4;6199:35;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6181:15;:53;;;;:::i;:::-;6160:75;;-1:-1:-1;;;6160:75:62;;;;;;160:25:66;;148:2;133:18;;14:177;6058:188:62;6308:10;6294:25;;;;:13;:25;;;;;;6320:4;6294:31;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;6294:31:62;;;6287:38;;;6360:10;6342:29;;:17;:29;;;;;;6372:4;6342:35;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;6335:42;;;6405:10;-1:-1:-1;;;;;6392:30:62;;6417:4;6392:30;;;;;;:::i;:::-;;;;;;;;6467:5;;6493:42;;-1:-1:-1;;;6493:42:62;;6517:4;6493:42;;;6491:51:66;6481:10:62;6558:18:66;;;6551:60;;;-1:-1:-1;;;;;6467:5:62;;;;:13;;6538:6;;6467:5;;6493:15;;6464:18:66;;6493:42:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;;;;:::i;:::-;6467:78;;-1:-1:-1;;;;;;6467:78:62;;;;;;;-1:-1:-1;;;;;7133:32:66;;;6467:78:62;;;7115:51:66;7182:18;;;7175:34;7088:18;;6467:78:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5571:981;;;:::o;4152:214:21:-;2655:13;:11;:13::i;:::-;4267:36:::1;4285:17;4267;:36::i;:::-;4313:46;4335:17;4354:4;4313:21;:46::i;:::-;4152:214:::0;;:::o;3699:134::-;3768:7;2926:20;:18;:20::i;:::-;-1:-1:-1;;;;;;;;;;;;3699:134:21;:::o;7219:156:62:-;7296:4;7348:20;7363:4;7348:14;:20::i;:::-;-1:-1:-1;;;;;7319:19:62;;;;;;:13;:19;;;;;;7339:4;7319:25;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:49;;7312:56;;7219:156;;;;;:::o;4502:853::-;4569:23;4561:4;:31;;;;;;;;:::i;:::-;;4557:159;;4627:10;4613:13;:25;;;;;;;;;;;;;4608:98;;4665:26;;-1:-1:-1;;;4665:26:62;;4680:10;4665:26;;;3963:51:66;3936:18;;4665:26:62;3817:203:66;4608:98:62;4726:14;4743:20;4758:4;4743:14;:20::i;:::-;4726:37;;4831:30;4844:10;4856:4;4831:12;:30::i;:::-;4827:97;;;4884:29;;-1:-1:-1;;;4884:29:62;;4902:10;4884:29;;;3963:51:66;3936:18;;4884:29:62;3817:203:66;4827:97:62;4995:5;;:42;;-1:-1:-1;;;4995:42:62;;5011:10;4995:42;;;6491:51:66;5031:4:62;6558:18:66;;;6551:60;5040:6:62;;-1:-1:-1;;;;;4995:5:62;;:15;;6464:18:66;;4995:42:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:51;4991:108;;;5069:19;;-1:-1:-1;;;5069:19:62;;;;;;;;;;;4991:108;5108:5;;:53;;-1:-1:-1;;;5108:53:62;;5127:10;5108:53;;;7704:51:66;5147:4:62;7771:18:66;;;7764:60;7840:18;;;7833:34;;;-1:-1:-1;;;;;5108:5:62;;;;:18;;7677::66;;5108:53:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;5215:10:62;5201:25;;;;:13;:25;;;;;5235:6;;5227:4;5201:31;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;5201:31:62;;;:40;;;;5269:10;5251:29;;:17;:29;;;;;5289:15;;5281:4;5251:35;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;;;;:53;;;;5331:10;-1:-1:-1;;;;;5320:28:62;;5343:4;5320:28;;;;;;:::i;:::-;;;;;;;;4547:808;4502:853;:::o;3155:101:19:-;2334:13;:11;:13::i;:::-;3219:30:::1;3246:1;3219:18;:30::i;:::-;3155:101::o:0;6988:175:62:-;7053:7;;7079:4;:31;;;;;;;;:::i;:::-;;:77;;7136:20;;7079:77;;;-1:-1:-1;;7113:20:62;;;6988:175::o;1529:307:65:-;2334:13:19;:11;:13::i;:::-;1614:9:65::1;1609:221;1633:8;:15;1629:1;:19;1609:221;;;1674:13;:26:::0;1688:8:::1;1697:1;1688:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;1674:26:65::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;1674:26:65;;::::1;;1669:151;;1749:4;1720:13;:26:::0;1734:8:::1;1743:1;1734:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;1720:26:65::1;-1:-1:-1::0;;;;;1720:26:65::1;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;1793:8;1802:1;1793:11;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1::0;;;;;1776:29:65::1;;;;;;;;;;;1669:151;1650:3;;1609:221;;1959:210:::0;2334:13:19;:11;:13::i;:::-;-1:-1:-1;;;;;2036:22:65;::::1;:13;:22:::0;;;::::1;::::0;;;;;;;::::1;;2032:131;;;-1:-1:-1::0;;;;;2074:22:65;::::1;2099:5;2074:22:::0;;;::::1;::::0;;;;;;;:30;;-1:-1:-1;;2074:30:65::1;::::0;;2123:29;::::1;::::0;2099:5;2123:29:::1;2032:131;1959:210:::0;:::o;3726:419:62:-;8870:21:20;4302:15;;-1:-1:-1;;;4302:15:20;;;;4301:16;;4348:14;;4158:30;4726:16;;:34;;;;;4746:14;4726:34;4706:54;;4770:17;4790:11;:16;;4805:1;4790:16;:50;;;;-1:-1:-1;4818:4:20;4810:25;:30;4790:50;4770:70;;4856:12;4855:13;:30;;;;;4873:12;4872:13;4855:30;4851:91;;;4908:23;;-1:-1:-1;;;4908:23:20;;;;;;;;;;;4851:91;4951:18;;-1:-1:-1;;4951:18:20;4968:1;4951:18;;;4979:67;;;;5013:22;;-1:-1:-1;;;;5013:22:20;-1:-1:-1;;;5013:22:20;;;4979:67;3921:26:62::1;3936:10;3921:14;:26::i;:::-;3957:20;:44:::0;;;4011:20:::1;:44:::0;;;4065:19:::1;:42:::0;;;4117:5:::1;:21:::0;;-1:-1:-1;;;;;;4117:21:62::1;-1:-1:-1::0;;;;;4117:21:62;::::1;;::::0;;5066:101:20;;;;5100:23;;-1:-1:-1;;;;5100:23:20;;;5142:14;;-1:-1:-1;8163:50:66;;5142:14:20;;8151:2:66;8136:18;5142:14:20;;;;;;;5066:101;4092:1081;;;;;3726:419:62;;;;:::o;6670:219::-;2334:13:19;:11;:13::i;:::-;6784:20:62::1;:44:::0;;;;6838:20:::1;:44:::0;6670:219::o;3405:215:19:-;2334:13;:11;:13::i;:::-;-1:-1:-1;;;;;3489:22:19;::::1;3485:91;;3534:31;::::0;-1:-1:-1;;;3534:31:19;;3562:1:::1;3534:31;::::0;::::1;3963:51:66::0;3936:18;;3534:31:19::1;3817:203:66::0;3485:91:19::1;3585:28;3604:8;3585:18;:28::i;4594:316:21:-:0;4674:4;-1:-1:-1;;;;;4683:6:21;4666:23;;;:124;;;4784:6;-1:-1:-1;;;;;4748:42:21;:32;-1:-1:-1;;;;;;;;;;;1519:53:28;-1:-1:-1;;;;;1519:53:28;;1441:138;4748:32:21;-1:-1:-1;;;;;4748:42:21;;;4666:124;4649:255;;;4864:29;;-1:-1:-1;;;4864:29:21;;;;;;;;;;;3561:84:62;2334:13:19;:11;:13::i;6052:538:21:-;6169:17;-1:-1:-1;;;;;6151:50:21;;:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6151:52:21;;;;;;;;-1:-1:-1;;6151:52:21;;;;;;;;;;;;:::i;:::-;;;6147:437;;6513:60;;-1:-1:-1;;;6513:60:21;;-1:-1:-1;;;;;3981:32:66;;6513:60:21;;;3963:51:66;3936:18;;6513:60:21;3817:203:66;6147:437:21;-1:-1:-1;;;;;;;;;;;6245:40:21;;6241:120;;6312:34;;-1:-1:-1;;;6312:34:21;;;;;160:25:66;;;133:18;;6312:34:21;14:177:66;6241:120:21;6374:54;6404:17;6423:4;6374:29;:54::i;:::-;6204:235;6052:538;;:::o;5027:213::-;5101:4;-1:-1:-1;;;;;5110:6:21;5093:23;;5089:145;;5194:29;;-1:-1:-1;;;5194:29:21;;;;;;;;;;;2658:162:19;958:10:22;2717:7:19;1313:22;2570:8;-1:-1:-1;;;;;2570:8:19;;2441:144;2717:7;-1:-1:-1;;;;;2717:23:19;;2713:101;;2763:40;;-1:-1:-1;;;2763:40:19;;958:10:22;2763:40:19;;;3963:51:66;3936:18;;2763:40:19;3817:203:66;3774:248:19;1313:22;3923:8;;-1:-1:-1;;;;;;3941:19:19;;-1:-1:-1;;;;;3941:19:19;;;;;;;;3975:40;;3923:8;;;;;3975:40;;3847:24;;3975:40;3837:185;;3774:248;:::o;1847:127::-;6931:20:20;:18;:20::i;:::-;1929:38:19::1;1954:12;1929:24;:38::i;2264:344:28:-:0;2355:37;2374:17;2355:18;:37::i;:::-;2407:36;;-1:-1:-1;;;;;2407:36:28;;;;;;;;2458:11;;:15;2454:148;;2489:53;2518:17;2537:4;2489:28;:53::i;2454:148::-;2573:18;:16;:18::i;7084:141:20:-;8870:21;8560:40;-1:-1:-1;;;8560:40:20;;;;7146:73;;7191:17;;-1:-1:-1;;;7191:17:20;;;;;;;;;;;1980:235:19;6931:20:20;:18;:20::i;1671:281:28:-;1748:17;-1:-1:-1;;;;;1748:29:28;;1781:1;1748:34;1744:119;;1805:47;;-1:-1:-1;;;1805:47:28;;-1:-1:-1;;;;;3981:32:66;;1805:47:28;;;3963:51:66;3936:18;;1805:47:28;3817:203:66;1744:119:28;-1:-1:-1;;;;;;;;;;;1872:73:28;;-1:-1:-1;;;;;;1872:73:28;-1:-1:-1;;;;;1872:73:28;;;;;;;;;;1671:281::o;3899:253:38:-;3982:12;4007;4021:23;4048:6;-1:-1:-1;;;;;4048:19:38;4068:4;4048:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4006:67;;;;4090:55;4117:6;4125:7;4134:10;4090:26;:55::i;:::-;4083:62;3899:253;-1:-1:-1;;;;;3899:253:38:o;6113:122:28:-;6163:9;:13;6159:70;;6199:19;;-1:-1:-1;;;6199:19:28;;;;;;;;;;;4420:580:38;4558:12;4591:7;4586:408;;4614:19;4622:10;4614:7;:19::i;:::-;4586:408;;;4838:17;;:22;:49;;;;-1:-1:-1;;;;;;4864:18:38;;;:23;4838:49;4834:119;;;4914:24;;-1:-1:-1;;;4914:24:38;;-1:-1:-1;;;;;3981:32:66;;4914:24:38;;;3963:51:66;3936:18;;4914:24:38;3817:203:66;4834:119:38;-1:-1:-1;4973:10:38;4586:408;4420:580;;;;;:::o;5540:487::-;5671:17;;:21;5667:354;;5868:10;5862:17;5924:15;5911:10;5907:2;5903:19;5896:44;5667:354;5991:19;;-1:-1:-1;;;5991:19:38;;;;;;;;;;;196:154:66;275:20;;324:1;314:12;;304:40;;340:1;337;330:12;304:40;196:154;;;:::o;355:216::-;433:6;486:2;474:9;465:7;461:23;457:32;454:52;;;502:1;499;492:12;454:52;525:40;555:9;525:40;:::i;576:173::-;644:20;;-1:-1:-1;;;;;693:31:66;;683:42;;673:70;;739:1;736;729:12;754:290;841:6;849;902:2;890:9;881:7;877:23;873:32;870:52;;;918:1;915;908:12;870:52;941:29;960:9;941:29;:::i;:::-;931:39;;989:49;1034:2;1023:9;1019:18;989:49;:::i;:::-;979:59;;754:290;;;;;:::o;1049:186::-;1108:6;1161:2;1149:9;1140:7;1136:23;1132:32;1129:52;;;1177:1;1174;1167:12;1129:52;1200:29;1219:9;1200:29;:::i;1432:127::-;1493:10;1488:3;1484:20;1481:1;1474:31;1524:4;1521:1;1514:15;1548:4;1545:1;1538:15;1564:275;1635:2;1629:9;1700:2;1681:13;;-1:-1:-1;;1677:27:66;1665:40;;1735:18;1720:34;;1756:22;;;1717:62;1714:88;;;1782:18;;:::i;:::-;1818:2;1811:22;1564:275;;-1:-1:-1;1564:275:66:o;1844:839::-;1921:6;1929;1982:2;1970:9;1961:7;1957:23;1953:32;1950:52;;;1998:1;1995;1988:12;1950:52;2021:29;2040:9;2021:29;:::i;:::-;2011:39;;2101:2;2090:9;2086:18;2073:32;2128:18;2120:6;2117:30;2114:50;;;2160:1;2157;2150:12;2114:50;2183:22;;2236:4;2228:13;;2224:27;-1:-1:-1;2214:55:66;;2265:1;2262;2255:12;2214:55;2305:2;2292:16;2331:18;2323:6;2320:30;2317:56;;;2353:18;;:::i;:::-;2395:57;2442:2;2419:17;;-1:-1:-1;;2415:31:66;2448:2;2411:40;2395:57;:::i;:::-;2475:6;2468:5;2461:21;2523:7;2518:2;2509:6;2505:2;2501:15;2497:24;2494:37;2491:57;;;2544:1;2541;2534:12;2491:57;2599:6;2594:2;2590;2586:11;2581:2;2574:5;2570:14;2557:49;2651:1;2646:2;2637:6;2630:5;2626:18;2622:27;2615:38;2672:5;2662:15;;;;;1844:839;;;;;:::o;2870:942::-;2954:6;3007:2;2995:9;2986:7;2982:23;2978:32;2975:52;;;3023:1;3020;3013:12;2975:52;3063:9;3050:23;3096:18;3088:6;3085:30;3082:50;;;3128:1;3125;3118:12;3082:50;3151:22;;3204:4;3196:13;;3192:27;-1:-1:-1;3182:55:66;;3233:1;3230;3223:12;3182:55;3273:2;3260:16;3299:18;3291:6;3288:30;3285:56;;;3321:18;;:::i;:::-;3367:6;3364:1;3360:14;3394:28;3418:2;3414;3410:11;3394:28;:::i;:::-;3456:19;;;3500:2;3530:11;;;3526:20;;;3491:12;;;;3558:19;;;3555:39;;;3590:1;3587;3580:12;3555:39;3622:2;3618;3614:11;3603:22;;3634:148;3650:6;3645:3;3642:15;3634:148;;;3716:23;3735:3;3716:23;:::i;:::-;3704:36;;3769:2;3667:12;;;;3760;;;;3634:148;;;3801:5;2870:942;-1:-1:-1;;;;;;;2870:942:66:o;4025:418::-;4174:2;4163:9;4156:21;4137:4;4206:6;4200:13;4249:6;4244:2;4233:9;4229:18;4222:34;4308:6;4303:2;4295:6;4291:15;4286:2;4275:9;4271:18;4265:50;4364:1;4359:2;4350:6;4339:9;4335:22;4331:31;4324:42;4434:2;4427;4423:7;4418:2;4410:6;4406:15;4402:29;4391:9;4387:45;4383:54;4375:62;;;4025:418;;;;:::o;4448:541::-;4534:6;4542;4550;4558;4611:3;4599:9;4590:7;4586:23;4582:33;4579:53;;;4628:1;4625;4618:12;4579:53;4673:23;;;-1:-1:-1;4793:2:66;4778:18;;4765:32;;-1:-1:-1;4842:38:66;4876:2;4861:18;;4842:38;:::i;:::-;4448:541;;;;-1:-1:-1;4832:48:66;;4953:2;4938:18;4925:32;;-1:-1:-1;;4448:541:66:o;4994:346::-;5062:6;5070;5123:2;5111:9;5102:7;5098:23;5094:32;5091:52;;;5139:1;5136;5129:12;5091:52;-1:-1:-1;;5184:23:66;;;5304:2;5289:18;;;5276:32;;-1:-1:-1;4994:346:66:o;5568:127::-;5629:10;5624:3;5620:20;5617:1;5610:31;5660:4;5657:1;5650:15;5684:4;5681:1;5674:15;5700:127;5761:10;5756:3;5752:20;5749:1;5742:31;5792:4;5789:1;5782:15;5816:4;5813:1;5806:15;5832:128;5899:9;;;5920:11;;;5917:37;;;5934:18;;:::i;5965:347::-;6116:2;6101:18;;6149:1;6138:13;;6128:144;;6194:10;6189:3;6185:20;6182:1;6175:31;6229:4;6226:1;6219:15;6257:4;6254:1;6247:15;6128:144;6281:25;;;5965:347;:::o;6622:184::-;6692:6;6745:2;6733:9;6724:7;6720:23;6716:32;6713:52;;;6761:1;6758;6751:12;6713:52;-1:-1:-1;6784:16:66;;6622:184;-1:-1:-1;6622:184:66:o;6811:125::-;6876:9;;;6897:10;;;6894:36;;;6910:18;;:::i;7220:277::-;7287:6;7340:2;7328:9;7319:7;7315:23;7311:32;7308:52;;;7356:1;7353;7346:12;7308:52;7388:9;7382:16;7441:5;7434:13;7427:21;7420:5;7417:32;7407:60;;7463:1;7460;7453:12;7878:127;7939:10;7934:3;7930:20;7927:1;7920:31;7970:4;7967:1;7960:15;7994:4;7991:1;7984:15;8413:301;8542:3;8580:6;8574:13;8626:6;8619:4;8611:6;8607:17;8602:3;8596:37;8688:1;8652:16;;8677:13;;;-1:-1:-1;8652:16:66;8413:301;-1:-1:-1;8413:301:66:o","linkReferences":{},"immutableReferences":{"36949":[{"start":3457,"length":32},{"start":3498,"length":32},{"start":3822,"length":32}]}},"methodIdentifiers":{"UPGRADE_INTERFACE_VERSION()":"ad3cb1cc","addToWhitelist(address[])":"7f649783","generatorStakeAmount()":"ee12a7a0","getStakeAmount(uint8)":"771007a9","initialize(uint256,uint256,address,uint256)":"cf9640b4","isRegistered(address,uint8)":"5f5b248b","isWhitelisted(address)":"3af32abf","minRegistrationTime()":"1a00d4ea","owner()":"8da5cb5b","proxiableUUID()":"52d1902d","register(uint8)":"61d689fa","registrationTimes(address,uint8)":"2d118d5c","registrations(address,uint8)":"81e1c6ca","removeFromWhitelist(address)":"8ab1d681","renounceOwnership()":"715018a6","setStakeAmounts(uint256,uint256)":"f149444b","token()":"fc0c546a","transferOwnership(address)":"f2fde38b","unregister(uint8)":"23d2f5f6","upgradeToAndCall(address,bytes)":"4f1ef286","validatorStakeAmount()":"eea5353d"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"}],\"name\":\"AddressEmptyCode\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"AlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"ERC1967InvalidImplementation\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ERC1967NonPayable\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"FailedCall\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InsufficientFunds\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidInitialization\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NotInitializing\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"NotRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"validator\",\"type\":\"address\"}],\"name\":\"NotWhitelisted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"OwnableInvalidOwner\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"OwnableUnauthorizedAccount\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minTimeToWait\",\"type\":\"uint256\"}],\"name\":\"TooEarlyToUnregister\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UUPSUnauthorizedCallContext\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"slot\",\"type\":\"bytes32\"}],\"name\":\"UUPSUnsupportedProxiableUUID\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"version\",\"type\":\"uint64\"}],\"name\":\"Initialized\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"Registered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"Unregistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"implementation\",\"type\":\"address\"}],\"name\":\"Upgraded\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"UPGRADE_INTERFACE_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"accounts\",\"type\":\"address[]\"}],\"name\":\"addToWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"generatorStakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"getStakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_generatorStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validatorStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_minRegistrationTime\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"isRegistered\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"isWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minRegistrationTime\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"register\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"enum LLMOracleKind\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"registrationTimes\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"registeredTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"enum LLMOracleKind\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"registrations\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"removeFromWhitelist\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_generatorStakeAmount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_validatorStakeAmount\",\"type\":\"uint256\"}],\"name\":\"setStakeAmounts\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"token\",\"outputs\":[{\"internalType\":\"contract ERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum LLMOracleKind\",\"name\":\"kind\",\"type\":\"uint8\"}],\"name\":\"unregister\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newImplementation\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"upgradeToAndCall\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"validatorStakeAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"There may be several types of oracle kinds, and each require their own stake.\",\"errors\":{\"AddressEmptyCode(address)\":[{\"details\":\"There's no code at `target` (it is not a contract).\"}],\"ERC1967InvalidImplementation(address)\":[{\"details\":\"The `implementation` of the proxy is invalid.\"}],\"ERC1967NonPayable()\":[{\"details\":\"An upgrade function sees `msg.value > 0` that may be lost.\"}],\"FailedCall()\":[{\"details\":\"A call to an address target failed. The target may have reverted.\"}],\"InvalidInitialization()\":[{\"details\":\"The contract is already initialized.\"}],\"NotInitializing()\":[{\"details\":\"The contract is not initializing.\"}],\"OwnableInvalidOwner(address)\":[{\"details\":\"The owner is not a valid owner account. (eg. `address(0)`)\"}],\"OwnableUnauthorizedAccount(address)\":[{\"details\":\"The caller account is not authorized to perform an operation.\"}],\"UUPSUnauthorizedCallContext()\":[{\"details\":\"The call is from an unauthorized context.\"}],\"UUPSUnsupportedProxiableUUID(bytes32)\":[{\"details\":\"The storage `slot` is unsupported as a UUID.\"}]},\"events\":{\"Initialized(uint64)\":{\"details\":\"Triggered when the contract has been initialized or reinitialized.\"},\"Upgraded(address)\":{\"details\":\"Emitted when the implementation is upgraded.\"}},\"kind\":\"dev\",\"methods\":{\"addToWhitelist(address[])\":{\"params\":{\"accounts\":\"The list of addresses to be added to the whitelist.\"}},\"constructor\":{\"custom:oz-upgrades-unsafe-allow\":\"constructor\",\"details\":\"[See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--).\"},\"initialize(uint256,uint256,address,uint256)\":{\"details\":\"Sets the owner to be the deployer, sets initial stake amount.\"},\"owner()\":{\"details\":\"Returns the address of the current owner.\"},\"proxiableUUID()\":{\"details\":\"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier.\"},\"register(uint8)\":{\"details\":\"Reverts if the user is already registered or has insufficient funds.\",\"params\":{\"kind\":\"The kind of Oracle to unregister.\"}},\"removeFromWhitelist(address)\":{\"params\":{\"account\":\"The address to be removed from the whitelist.\"}},\"renounceOwnership()\":{\"details\":\"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner.\"},\"setStakeAmounts(uint256,uint256)\":{\"details\":\"Only allowed by the owner.\"},\"transferOwnership(address)\":{\"details\":\"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner.\"},\"unregister(uint8)\":{\"details\":\"Reverts if the user is not registered.\",\"params\":{\"kind\":\"The kind of Oracle to unregister.\"},\"returns\":{\"amount\":\"Amount of stake approved back.\"}},\"upgradeToAndCall(address,bytes)\":{\"custom:oz-upgrades-unsafe-allow-reachable\":\"delegatecall\",\"details\":\"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event.\"}},\"stateVariables\":{\"minRegistrationTime\":{\"details\":\"This is to prevent spamming the registry mechanism.If the oracle wants to unregister, they have to wait at least this time before doing so.\"}},\"title\":\"LLM Oracle Registry\",\"version\":1},\"userdoc\":{\"errors\":{\"AlreadyRegistered(address)\":[{\"notice\":\"The user is already registered.\"}],\"InsufficientFunds()\":[{\"notice\":\"Insufficient stake amount during registration.\"}],\"NotRegistered(address)\":[{\"notice\":\"The user is not registered.\"}],\"NotWhitelisted(address)\":[{\"notice\":\"Error to be thrown when a non-whitelisted address tries to access a function.\"}],\"TooEarlyToUnregister(uint256)\":[{\"notice\":\"Minimum waiting time has not passed for unregistering.\"}]},\"events\":{\"AddedToWhitelist(address)\":{\"notice\":\"Added address to whitelist\"},\"Registered(address,uint8)\":{\"notice\":\"The Oracle response to an LLM generation request.\"},\"RemovedFromWhitelist(address)\":{\"notice\":\"Removed address from whitelist\"},\"Unregistered(address,uint8)\":{\"notice\":\"The Oracle response to an LLM generation request.\"}},\"kind\":\"user\",\"methods\":{\"addToWhitelist(address[])\":{\"notice\":\"Adding multiple validators to whitelist.\"},\"constructor\":{\"notice\":\"Locks the contract, preventing any future re-initialization.\"},\"generatorStakeAmount()\":{\"notice\":\"Stake amount to be registered as an Oracle that can serve generation requests.\"},\"getStakeAmount(uint8)\":{\"notice\":\"Returns the stake amount required to register as an Oracle w.r.t given kind.\"},\"isRegistered(address,uint8)\":{\"notice\":\"Check if an Oracle is registered.\"},\"isWhitelisted(address)\":{\"notice\":\"Indicates whether an address is whitelisted.\"},\"minRegistrationTime()\":{\"notice\":\"Minimum registration time for oracles.\"},\"register(uint8)\":{\"notice\":\"Register an Oracle.\"},\"registrationTimes(address,uint8)\":{\"notice\":\"Registered times per oracle.\"},\"registrations(address,uint8)\":{\"notice\":\"Registrations per address & kind. If amount is 0, it is not registered.\"},\"removeFromWhitelist(address)\":{\"notice\":\"Remove validator from whitelist\"},\"setStakeAmounts(uint256,uint256)\":{\"notice\":\"Set the stake amount required to register as an Oracle.\"},\"token()\":{\"notice\":\"Token used for staking.\"},\"unregister(uint8)\":{\"notice\":\"Remove registration of an Oracle.\"},\"validatorStakeAmount()\":{\"notice\":\"Stake amount to be registered as an Oracle that can serve validation requests.\"}},\"notice\":\"Holds the addresses that are eligible to respond to LLM requests.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/LLMOracleRegistry.sol\":\"LLMOracleRegistry\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/\",\":@openzeppelin/foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/\",\":openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/\",\":solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/\"]},\"sources\":{\"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol\":{\"keccak256\":\"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6\",\"dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol\":{\"keccak256\":\"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609\",\"dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol\":{\"keccak256\":\"0xaab065cbe0f562d1d7185da1e0def4e4ee026ed76da24895db0e02f68666e56e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e2161611bd6810eea79168fd56ffc55ae54ef9f7732bd751565f6324b19fbb5\",\"dweb:/ipfs/QmWHmc4rx1w96oCftjJvcUFgqs4Yo93FNGgQhc7yZBVHMa\"]},\"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol\":{\"keccak256\":\"0xc0ca0cf9ebb745f31e90584b1309c871a54d1c20c1bb09163ff5cc9083c1c929\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d45a6bcfbb149dad07bba6352fc8f0d90a09858c1dfba3044c4b12ed7e14f67\",\"dweb:/ipfs/QmPiyFySkJjcNfy4af42qQGcfi8DSNZXjSD1odjWRaHkPn\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol\":{\"keccak256\":\"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d\",\"dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol\":{\"keccak256\":\"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b\",\"dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol\":{\"keccak256\":\"0x02caa0e5f7bade9a0d8ad6058467d641cb67697cd4678c7b1c170686bafe9128\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://33b42a434f5d5fdc5071be05238059b9d8938bdab510071a5c300a975abc405a\",\"dweb:/ipfs/QmaThmoD3JMdHGhn4GUJbEGnKcojUG8PWMFoC7DFcQoeCw\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol\":{\"keccak256\":\"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa\",\"dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0xd7c9f6f5f3386c29eee9321197fd83ac735c9c3c21431065f0e8e10fe3d0739c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://096db22b340a43c39b39383ca644dbe0a50c7984fe9cec6a0cf4c2ac8b985dd7\",\"dweb:/ipfs/QmNRjJL4pHyPd2eEbtdxhCTMK1xfSScGZ2RvEggnVdfrDN\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol\":{\"keccak256\":\"0x68ae173e8ada4b8effc37f888cb937037aba3d2e45ce4becbc0c0c861e62da81\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://e295d0647e564d93e3b17e151c3b2be3609fac380a3f046d8defc268ca7cf9fb\",\"dweb:/ipfs/QmZVaD9YVT3Ss7s1vYSAW23xVLxh1LKSSVLwA8N7imeBRW\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol\":{\"keccak256\":\"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf\",\"dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB\"]},\"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"src/LLMOracleRegistry.sol\":{\"keccak256\":\"0xa99ae44652d1bf56511081741b6a5a0217668fc1eddfecc102fed914fecb4942\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://081d30ffb7d37e40dd85149a5751cd1305deebff21e2592606f2d9ca3c064eda\",\"dweb:/ipfs/QmcwNXEVtyTezGfrVx8Xe6pbMvzXaqyd7Hd7kRcsA2SN5W\"]},\"src/Whitelist.sol\":{\"keccak256\":\"0x10e850f4bd39e7ebffa6ee33f24026082f37cf0b78f2e86ff678266d51f046df\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5e139ccd80e55e2b5fa9490cc591d5f13364f712a68523ea93983406ad6c017e\",\"dweb:/ipfs/QmbzK1uXzyHBwr3i4EKMfEtz2qTbiiNWYkiCxWLtUiayfd\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"target","type":"address"}],"type":"error","name":"AddressEmptyCode"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"AlreadyRegistered"},{"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"type":"error","name":"ERC1967InvalidImplementation"},{"inputs":[],"type":"error","name":"ERC1967NonPayable"},{"inputs":[],"type":"error","name":"FailedCall"},{"inputs":[],"type":"error","name":"InsufficientFunds"},{"inputs":[],"type":"error","name":"InvalidInitialization"},{"inputs":[],"type":"error","name":"NotInitializing"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"type":"error","name":"NotRegistered"},{"inputs":[{"internalType":"address","name":"validator","type":"address"}],"type":"error","name":"NotWhitelisted"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"type":"error","name":"OwnableInvalidOwner"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"type":"error","name":"OwnableUnauthorizedAccount"},{"inputs":[{"internalType":"uint256","name":"minTimeToWait","type":"uint256"}],"type":"error","name":"TooEarlyToUnregister"},{"inputs":[],"type":"error","name":"UUPSUnauthorizedCallContext"},{"inputs":[{"internalType":"bytes32","name":"slot","type":"bytes32"}],"type":"error","name":"UUPSUnsupportedProxiableUUID"},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true}],"type":"event","name":"AddedToWhitelist","anonymous":false},{"inputs":[{"internalType":"uint64","name":"version","type":"uint64","indexed":false}],"type":"event","name":"Initialized","anonymous":false},{"inputs":[{"internalType":"address","name":"previousOwner","type":"address","indexed":true},{"internalType":"address","name":"newOwner","type":"address","indexed":true}],"type":"event","name":"OwnershipTransferred","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":true},{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8","indexed":false}],"type":"event","name":"Registered","anonymous":false},{"inputs":[{"internalType":"address","name":"account","type":"address","indexed":true}],"type":"event","name":"RemovedFromWhitelist","anonymous":false},{"inputs":[{"internalType":"address","name":"","type":"address","indexed":true},{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8","indexed":false}],"type":"event","name":"Unregistered","anonymous":false},{"inputs":[{"internalType":"address","name":"implementation","type":"address","indexed":true}],"type":"event","name":"Upgraded","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"UPGRADE_INTERFACE_VERSION","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"}],"stateMutability":"nonpayable","type":"function","name":"addToWhitelist"},{"inputs":[],"stateMutability":"view","type":"function","name":"generatorStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8"}],"stateMutability":"view","type":"function","name":"getStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"_generatorStakeAmount","type":"uint256"},{"internalType":"uint256","name":"_validatorStakeAmount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_minRegistrationTime","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"initialize"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8"}],"stateMutability":"view","type":"function","name":"isRegistered","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function","name":"isWhitelisted","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minRegistrationTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"register"},{"inputs":[{"internalType":"address","name":"oracle","type":"address"},{"internalType":"enum LLMOracleKind","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"registrationTimes","outputs":[{"internalType":"uint256","name":"registeredTime","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"oracle","type":"address"},{"internalType":"enum LLMOracleKind","name":"","type":"uint8"}],"stateMutability":"view","type":"function","name":"registrations","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"removeFromWhitelist"},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"renounceOwnership"},{"inputs":[{"internalType":"uint256","name":"_generatorStakeAmount","type":"uint256"},{"internalType":"uint256","name":"_validatorStakeAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setStakeAmounts"},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract ERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferOwnership"},{"inputs":[{"internalType":"enum LLMOracleKind","name":"kind","type":"uint8"}],"stateMutability":"nonpayable","type":"function","name":"unregister","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newImplementation","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"payable","type":"function","name":"upgradeToAndCall"},{"inputs":[],"stateMutability":"view","type":"function","name":"validatorStakeAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]}],"devdoc":{"kind":"dev","methods":{"addToWhitelist(address[])":{"params":{"accounts":"The list of addresses to be added to the whitelist."}},"constructor":{"custom:oz-upgrades-unsafe-allow":"constructor","details":"[See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--)."},"initialize(uint256,uint256,address,uint256)":{"details":"Sets the owner to be the deployer, sets initial stake amount."},"owner()":{"details":"Returns the address of the current owner."},"proxiableUUID()":{"details":"Implementation of the ERC-1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier."},"register(uint8)":{"details":"Reverts if the user is already registered or has insufficient funds.","params":{"kind":"The kind of Oracle to unregister."}},"removeFromWhitelist(address)":{"params":{"account":"The address to be removed from the whitelist."}},"renounceOwnership()":{"details":"Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner."},"setStakeAmounts(uint256,uint256)":{"details":"Only allowed by the owner."},"transferOwnership(address)":{"details":"Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."},"unregister(uint8)":{"details":"Reverts if the user is not registered.","params":{"kind":"The kind of Oracle to unregister."},"returns":{"amount":"Amount of stake approved back."}},"upgradeToAndCall(address,bytes)":{"custom:oz-upgrades-unsafe-allow-reachable":"delegatecall","details":"Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {_authorizeUpgrade}. Emits an {Upgraded} event."}},"version":1},"userdoc":{"kind":"user","methods":{"addToWhitelist(address[])":{"notice":"Adding multiple validators to whitelist."},"constructor":{"notice":"Locks the contract, preventing any future re-initialization."},"generatorStakeAmount()":{"notice":"Stake amount to be registered as an Oracle that can serve generation requests."},"getStakeAmount(uint8)":{"notice":"Returns the stake amount required to register as an Oracle w.r.t given kind."},"isRegistered(address,uint8)":{"notice":"Check if an Oracle is registered."},"isWhitelisted(address)":{"notice":"Indicates whether an address is whitelisted."},"minRegistrationTime()":{"notice":"Minimum registration time for oracles."},"register(uint8)":{"notice":"Register an Oracle."},"registrationTimes(address,uint8)":{"notice":"Registered times per oracle."},"registrations(address,uint8)":{"notice":"Registrations per address & kind. If amount is 0, it is not registered."},"removeFromWhitelist(address)":{"notice":"Remove validator from whitelist"},"setStakeAmounts(uint256,uint256)":{"notice":"Set the stake amount required to register as an Oracle."},"token()":{"notice":"Token used for staking."},"unregister(uint8)":{"notice":"Remove registration of an Oracle."},"validatorStakeAmount()":{"notice":"Stake amount to be registered as an Oracle that can serve validation requests."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/","@openzeppelin/foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","ds-test/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/","openzeppelin-foundry-upgrades/=lib/openzeppelin-foundry-upgrades/src/","solidity-stringutils/=lib/openzeppelin-foundry-upgrades/lib/solidity-stringutils/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/LLMOracleRegistry.sol":"LLMOracleRegistry"},"evmVersion":"cancun","libraries":{}},"sources":{"lib/openzeppelin-contracts-upgradeable/contracts/access/OwnableUpgradeable.sol":{"keccak256":"0xc163fcf9bb10138631a9ba5564df1fa25db9adff73bd9ee868a8ae1858fe093a","urls":["bzz-raw://9706d43a0124053d9880f6e31a59f31bc0a6a3dc1acd66ce0a16e1111658c5f6","dweb:/ipfs/QmUFmfowzkRwGtDu36cXV9SPTBHJ3n7dG9xQiK5B28jTf2"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol":{"keccak256":"0x631188737069917d2f909d29ce62c4d48611d326686ba6683e26b72a23bfac0b","urls":["bzz-raw://7a61054ae84cd6c4d04c0c4450ba1d6de41e27e0a2c4f1bcdf58f796b401c609","dweb:/ipfs/QmUvtdp7X1mRVyC3CsHrtPbgoqWaXHp3S1ZR24tpAQYJWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol":{"keccak256":"0xaab065cbe0f562d1d7185da1e0def4e4ee026ed76da24895db0e02f68666e56e","urls":["bzz-raw://7e2161611bd6810eea79168fd56ffc55ae54ef9f7732bd751565f6324b19fbb5","dweb:/ipfs/QmWHmc4rx1w96oCftjJvcUFgqs4Yo93FNGgQhc7yZBVHMa"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/contracts/utils/ContextUpgradeable.sol":{"keccak256":"0xc0ca0cf9ebb745f31e90584b1309c871a54d1c20c1bb09163ff5cc9083c1c929","urls":["bzz-raw://7d45a6bcfbb149dad07bba6352fc8f0d90a09858c1dfba3044c4b12ed7e14f67","dweb:/ipfs/QmPiyFySkJjcNfy4af42qQGcfi8DSNZXjSD1odjWRaHkPn"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol":{"keccak256":"0xb25a4f11fa80c702bf5cd85adec90e6f6f507f32f4a8e6f5dbc31e8c10029486","urls":["bzz-raw://6917f8a323e7811f041aecd4d9fd6e92455a6fba38a797ac6f6e208c7912b79d","dweb:/ipfs/QmShuYv55wYHGi4EFkDB8QfF7ZCHoKk2efyz3AWY1ExSq7"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol":{"keccak256":"0x880da465c203cec76b10d72dbd87c80f387df4102274f23eea1f9c9b0918792b","urls":["bzz-raw://399594cd8bb0143bc9e55e0f1d071d0d8c850a394fb7a319d50edd55d9ed822b","dweb:/ipfs/QmbPZzgtT6LEm9CMqWfagQFwETbV1ztpECBB1DtQHrKiRz"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol":{"keccak256":"0x02caa0e5f7bade9a0d8ad6058467d641cb67697cd4678c7b1c170686bafe9128","urls":["bzz-raw://33b42a434f5d5fdc5071be05238059b9d8938bdab510071a5c300a975abc405a","dweb:/ipfs/QmaThmoD3JMdHGhn4GUJbEGnKcojUG8PWMFoC7DFcQoeCw"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol":{"keccak256":"0xc59a78b07b44b2cf2e8ab4175fca91e8eca1eee2df7357b8d2a8833e5ea1f64c","urls":["bzz-raw://5aa4f07e65444784c29cd7bfcc2341b34381e4e5b5da9f0c5bd00d7f430e66fa","dweb:/ipfs/QmWRMh4Q9DpaU9GvsiXmDdoNYMyyece9if7hnfLz7uqzWM"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol":{"keccak256":"0xd7c9f6f5f3386c29eee9321197fd83ac735c9c3c21431065f0e8e10fe3d0739c","urls":["bzz-raw://096db22b340a43c39b39383ca644dbe0a50c7984fe9cec6a0cf4c2ac8b985dd7","dweb:/ipfs/QmNRjJL4pHyPd2eEbtdxhCTMK1xfSScGZ2RvEggnVdfrDN"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol":{"keccak256":"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330","urls":["bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf","dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Address.sol":{"keccak256":"0x68ae173e8ada4b8effc37f888cb937037aba3d2e45ce4becbc0c0c861e62da81","urls":["bzz-raw://e295d0647e564d93e3b17e151c3b2be3609fac380a3f046d8defc268ca7cf9fb","dweb:/ipfs/QmZVaD9YVT3Ss7s1vYSAW23xVLxh1LKSSVLwA8N7imeBRW"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/Errors.sol":{"keccak256":"0x6afa713bfd42cf0f7656efa91201007ac465e42049d7de1d50753a373648c123","urls":["bzz-raw://ba1d02f4847670a1b83dec9f7d37f0b0418d6043447b69f3a29a5f9efc547fcf","dweb:/ipfs/QmQ7iH2keLNUKgq2xSWcRmuBE5eZ3F5whYAkAGzCNNoEWB"],"license":"MIT"},"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"src/LLMOracleRegistry.sol":{"keccak256":"0xa99ae44652d1bf56511081741b6a5a0217668fc1eddfecc102fed914fecb4942","urls":["bzz-raw://081d30ffb7d37e40dd85149a5751cd1305deebff21e2592606f2d9ca3c064eda","dweb:/ipfs/QmcwNXEVtyTezGfrVx8Xe6pbMvzXaqyd7Hd7kRcsA2SN5W"],"license":"Apache-2.0"},"src/Whitelist.sol":{"keccak256":"0x10e850f4bd39e7ebffa6ee33f24026082f37cf0b78f2e86ff678266d51f046df","urls":["bzz-raw://5e139ccd80e55e2b5fa9490cc591d5f13364f712a68523ea93983406ad6c017e","dweb:/ipfs/QmbzK1uXzyHBwr3i4EKMfEtz2qTbiiNWYkiCxWLtUiayfd"],"license":"Apache-2.0"}},"version":1},"storageLayout":{"storage":[{"astId":53143,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"isWhitelisted","offset":0,"slot":"0","type":"t_mapping(t_address,t_bool)"},{"astId":52470,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"generatorStakeAmount","offset":0,"slot":"1","type":"t_uint256"},{"astId":52473,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"validatorStakeAmount","offset":0,"slot":"2","type":"t_uint256"},{"astId":52476,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"minRegistrationTime","offset":0,"slot":"3","type":"t_uint256"},{"astId":52484,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"registrations","offset":0,"slot":"4","type":"t_mapping(t_address,t_mapping(t_enum(LLMOracleKind)52428,t_uint256))"},{"astId":52492,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"registrationTimes","offset":0,"slot":"5","type":"t_mapping(t_address,t_mapping(t_enum(LLMOracleKind)52428,t_uint256))"},{"astId":52496,"contract":"src/LLMOracleRegistry.sol:LLMOracleRegistry","label":"token","offset":0,"slot":"6","type":"t_contract(ERC20)38696"}],"types":{"t_address":{"encoding":"inplace","label":"address","numberOfBytes":"20"},"t_bool":{"encoding":"inplace","label":"bool","numberOfBytes":"1"},"t_contract(ERC20)38696":{"encoding":"inplace","label":"contract ERC20","numberOfBytes":"20"},"t_enum(LLMOracleKind)52428":{"encoding":"inplace","label":"enum LLMOracleKind","numberOfBytes":"1"},"t_mapping(t_address,t_bool)":{"encoding":"mapping","key":"t_address","label":"mapping(address => bool)","numberOfBytes":"32","value":"t_bool"},"t_mapping(t_address,t_mapping(t_enum(LLMOracleKind)52428,t_uint256))":{"encoding":"mapping","key":"t_address","label":"mapping(address => mapping(enum LLMOracleKind => uint256))","numberOfBytes":"32","value":"t_mapping(t_enum(LLMOracleKind)52428,t_uint256)"},"t_mapping(t_enum(LLMOracleKind)52428,t_uint256)":{"encoding":"mapping","key":"t_enum(LLMOracleKind)52428","label":"mapping(enum LLMOracleKind => uint256)","numberOfBytes":"32","value":"t_uint256"},"t_uint256":{"encoding":"inplace","label":"uint256","numberOfBytes":"32"}}},"ast":{"absolutePath":"src/LLMOracleRegistry.sol","id":52822,"exportedSymbols":{"ERC20":[38696],"LLMOracleKind":[52428],"LLMOracleRegistry":[52821],"UUPSUpgradeable":[37111],"Whitelist":[53213]},"nodeType":"SourceUnit","src":"39:7339:62","nodes":[{"id":52418,"nodeType":"PragmaDirective","src":"39:24:62","nodes":[],"literals":["solidity","^","0.8",".20"]},{"id":52420,"nodeType":"ImportDirective","src":"65:68:62","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol","file":"@openzeppelin/contracts/token/ERC20/ERC20.sol","nameLocation":"-1:-1:-1","scope":52822,"sourceUnit":38697,"symbolAliases":[{"foreign":{"id":52419,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38696,"src":"73:5:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52422,"nodeType":"ImportDirective","src":"134:100:62","nodes":[],"absolutePath":"lib/openzeppelin-contracts-upgradeable/contracts/proxy/utils/UUPSUpgradeable.sol","file":"@openzeppelin/contracts-upgradeable/proxy/utils/UUPSUpgradeable.sol","nameLocation":"-1:-1:-1","scope":52822,"sourceUnit":37112,"symbolAliases":[{"foreign":{"id":52421,"name":"UUPSUpgradeable","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":37111,"src":"142:15:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52424,"nodeType":"ImportDirective","src":"235:42:62","nodes":[],"absolutePath":"src/Whitelist.sol","file":"./Whitelist.sol","nameLocation":"-1:-1:-1","scope":52822,"sourceUnit":53214,"symbolAliases":[{"foreign":{"id":52423,"name":"Whitelist","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53213,"src":"243:9:62","typeDescriptions":{}},"nameLocation":"-1:-1:-1"}],"unitAlias":""},{"id":52428,"nodeType":"EnumDefinition","src":"311:51:62","nodes":[],"canonicalName":"LLMOracleKind","documentation":{"id":52425,"nodeType":"StructuredDocumentation","src":"279:32:62","text":"@notice The type of Oracle."},"members":[{"id":52426,"name":"Generator","nameLocation":"336:9:62","nodeType":"EnumValue","src":"336:9:62"},{"id":52427,"name":"Validator","nameLocation":"351:9:62","nodeType":"EnumValue","src":"351:9:62"}],"name":"LLMOracleKind","nameLocation":"316:13:62"},{"id":52821,"nodeType":"ContractDefinition","src":"560:6817:62","nodes":[{"id":52441,"nodeType":"EventDefinition","src":"868:54:62","nodes":[],"anonymous":false,"documentation":{"id":52434,"nodeType":"StructuredDocumentation","src":"802:61:62","text":"@notice The Oracle response to an LLM generation request."},"eventSelector":"89b4e995568c900aa52376cbed225dc1a013c9a43cb58186d69676ff593d7c4e","name":"Registered","nameLocation":"874:10:62","parameters":{"id":52440,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52436,"indexed":true,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52441,"src":"885:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52435,"name":"address","nodeType":"ElementaryTypeName","src":"885:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52439,"indexed":false,"mutability":"mutable","name":"kind","nameLocation":"916:4:62","nodeType":"VariableDeclaration","scope":52441,"src":"902:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52438,"nodeType":"UserDefinedTypeName","pathNode":{"id":52437,"name":"LLMOracleKind","nameLocations":["902:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"902:13:62"},"referencedDeclaration":52428,"src":"902:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"884:37:62"}},{"id":52449,"nodeType":"EventDefinition","src":"994:56:62","nodes":[],"anonymous":false,"documentation":{"id":52442,"nodeType":"StructuredDocumentation","src":"928:61:62","text":"@notice The Oracle response to an LLM generation request."},"eventSelector":"eebfdaadda46c435881bbe8bac1fc3974f3323b1c809c7aabd37ae7b83ca4442","name":"Unregistered","nameLocation":"1000:12:62","parameters":{"id":52448,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52444,"indexed":true,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52449,"src":"1013:15:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52443,"name":"address","nodeType":"ElementaryTypeName","src":"1013:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52447,"indexed":false,"mutability":"mutable","name":"kind","nameLocation":"1044:4:62","nodeType":"VariableDeclaration","scope":52449,"src":"1030:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52446,"nodeType":"UserDefinedTypeName","pathNode":{"id":52445,"name":"LLMOracleKind","nameLocations":["1030:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"1030:13:62"},"referencedDeclaration":52428,"src":"1030:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"1012:37:62"}},{"id":52454,"nodeType":"ErrorDefinition","src":"1279:29:62","nodes":[],"documentation":{"id":52450,"nodeType":"StructuredDocumentation","src":"1235:39:62","text":"@notice The user is not registered."},"errorSelector":"bfc6c337","name":"NotRegistered","nameLocation":"1285:13:62","parameters":{"id":52453,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52452,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52454,"src":"1299:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52451,"name":"address","nodeType":"ElementaryTypeName","src":"1299:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1298:9:62"}},{"id":52459,"nodeType":"ErrorDefinition","src":"1362:33:62","nodes":[],"documentation":{"id":52455,"nodeType":"StructuredDocumentation","src":"1314:43:62","text":"@notice The user is already registered."},"errorSelector":"45ed80e9","name":"AlreadyRegistered","nameLocation":"1368:17:62","parameters":{"id":52458,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52457,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52459,"src":"1386:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52456,"name":"address","nodeType":"ElementaryTypeName","src":"1386:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"1385:9:62"}},{"id":52462,"nodeType":"ErrorDefinition","src":"1464:26:62","nodes":[],"documentation":{"id":52460,"nodeType":"StructuredDocumentation","src":"1401:58:62","text":"@notice Insufficient stake amount during registration."},"errorSelector":"356680b7","name":"InsufficientFunds","nameLocation":"1470:17:62","parameters":{"id":52461,"nodeType":"ParameterList","parameters":[],"src":"1487:2:62"}},{"id":52467,"nodeType":"ErrorDefinition","src":"1567:50:62","nodes":[],"documentation":{"id":52463,"nodeType":"StructuredDocumentation","src":"1496:66:62","text":"@notice Minimum waiting time has not passed for unregistering."},"errorSelector":"fbedc413","name":"TooEarlyToUnregister","nameLocation":"1573:20:62","parameters":{"id":52466,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52465,"mutability":"mutable","name":"minTimeToWait","nameLocation":"1602:13:62","nodeType":"VariableDeclaration","scope":52467,"src":"1594:21:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52464,"name":"uint256","nodeType":"ElementaryTypeName","src":"1594:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"1593:23:62"}},{"id":52470,"nodeType":"VariableDeclaration","src":"1898:35:62","nodes":[],"constant":false,"documentation":{"id":52468,"nodeType":"StructuredDocumentation","src":"1803:90:62","text":"@notice Stake amount to be registered as an Oracle that can serve generation requests."},"functionSelector":"ee12a7a0","mutability":"mutable","name":"generatorStakeAmount","nameLocation":"1913:20:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52469,"name":"uint256","nodeType":"ElementaryTypeName","src":"1898:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":52473,"nodeType":"VariableDeclaration","src":"2035:35:62","nodes":[],"constant":false,"documentation":{"id":52471,"nodeType":"StructuredDocumentation","src":"1940:90:62","text":"@notice Stake amount to be registered as an Oracle that can serve validation requests."},"functionSelector":"eea5353d","mutability":"mutable","name":"validatorStakeAmount","nameLocation":"2050:20:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52472,"name":"uint256","nodeType":"ElementaryTypeName","src":"2035:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":52476,"nodeType":"VariableDeclaration","src":"2299:34:62","nodes":[],"constant":false,"documentation":{"id":52474,"nodeType":"StructuredDocumentation","src":"2077:217:62","text":"@notice Minimum registration time for oracles.\n @dev This is to prevent spamming the registry mechanism.\n @dev If the oracle wants to unregister, they have to wait at least this time before doing so."},"functionSelector":"1a00d4ea","mutability":"mutable","name":"minRegistrationTime","nameLocation":"2314:19:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52475,"name":"uint256","nodeType":"ElementaryTypeName","src":"2299:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"public"},{"id":52484,"nodeType":"VariableDeclaration","src":"2428:88:62","nodes":[],"constant":false,"documentation":{"id":52477,"nodeType":"StructuredDocumentation","src":"2340:83:62","text":"@notice Registrations per address & kind. If amount is 0, it is not registered."},"functionSelector":"81e1c6ca","mutability":"mutable","name":"registrations","nameLocation":"2503:13:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"},"typeName":{"id":52483,"keyName":"oracle","keyNameLocation":"2444:6:62","keyType":{"id":52478,"name":"address","nodeType":"ElementaryTypeName","src":"2436:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2428:67:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":52482,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":52480,"nodeType":"UserDefinedTypeName","pathNode":{"id":52479,"name":"LLMOracleKind","nameLocations":["2462:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"2462:13:62"},"referencedDeclaration":52428,"src":"2462:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"nodeType":"Mapping","src":"2454:40:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"},"valueName":"amount","valueNameLocation":"2487:6:62","valueType":{"id":52481,"name":"uint256","nodeType":"ElementaryTypeName","src":"2479:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":52492,"nodeType":"VariableDeclaration","src":"2568:100:62","nodes":[],"constant":false,"documentation":{"id":52485,"nodeType":"StructuredDocumentation","src":"2523:40:62","text":"@notice Registered times per oracle."},"functionSelector":"2d118d5c","mutability":"mutable","name":"registrationTimes","nameLocation":"2651:17:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"},"typeName":{"id":52491,"keyName":"oracle","keyNameLocation":"2584:6:62","keyType":{"id":52486,"name":"address","nodeType":"ElementaryTypeName","src":"2576:7:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"nodeType":"Mapping","src":"2568:75:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"},"valueName":"","valueNameLocation":"-1:-1:-1","valueType":{"id":52490,"keyName":"","keyNameLocation":"-1:-1:-1","keyType":{"id":52488,"nodeType":"UserDefinedTypeName","pathNode":{"id":52487,"name":"LLMOracleKind","nameLocations":["2602:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"2602:13:62"},"referencedDeclaration":52428,"src":"2602:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"nodeType":"Mapping","src":"2594:48:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"},"valueName":"registeredTime","valueNameLocation":"2627:14:62","valueType":{"id":52489,"name":"uint256","nodeType":"ElementaryTypeName","src":"2619:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}}},"visibility":"public"},{"id":52496,"nodeType":"VariableDeclaration","src":"2715:18:62","nodes":[],"constant":false,"documentation":{"id":52493,"nodeType":"StructuredDocumentation","src":"2675:35:62","text":"@notice Token used for staking."},"functionSelector":"fc0c546a","mutability":"mutable","name":"token","nameLocation":"2728:5:62","scope":52821,"stateVariable":true,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"},"typeName":{"id":52495,"nodeType":"UserDefinedTypeName","pathNode":{"id":52494,"name":"ERC20","nameLocations":["2715:5:62"],"nodeType":"IdentifierPath","referencedDeclaration":38696,"src":"2715:5:62"},"referencedDeclaration":38696,"src":"2715:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"visibility":"public"},{"id":52504,"nodeType":"FunctionDefinition","src":"3170:53:62","nodes":[],"body":{"id":52503,"nodeType":"Block","src":"3184:39:62","nodes":[],"statements":[{"expression":{"arguments":[],"expression":{"argumentTypes":[],"id":52500,"name":"_disableInitializers","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36897,"src":"3194:20:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$__$returns$__$","typeString":"function ()"}},"id":52501,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3194:22:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52502,"nodeType":"ExpressionStatement","src":"3194:22:62"}]},"documentation":{"id":52497,"nodeType":"StructuredDocumentation","src":"2923:242:62","text":"@notice Locks the contract, preventing any future re-initialization.\n @dev [See more](https://docs.openzeppelin.com/contracts/5.x/api/proxy#Initializable-_disableInitializers--).\n @custom:oz-upgrades-unsafe-allow constructor"},"implemented":true,"kind":"constructor","modifiers":[],"name":"","nameLocation":"-1:-1:-1","parameters":{"id":52498,"nodeType":"ParameterList","parameters":[],"src":"3181:2:62"},"returnParameters":{"id":52499,"nodeType":"ParameterList","parameters":[],"src":"3184:0:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52514,"nodeType":"FunctionDefinition","src":"3561:84:62","nodes":[],"body":{"id":52513,"nodeType":"Block","src":"3643:2:62","nodes":[],"statements":[]},"baseFunctions":[37065],"documentation":{"id":52505,"nodeType":"StructuredDocumentation","src":"3411:145:62","text":"@notice Function that should revert when `msg.sender` is not authorized to upgrade the contract.\n @dev Called by and upgradeToAndCall."},"implemented":true,"kind":"function","modifiers":[{"id":52511,"kind":"modifierInvocation","modifierName":{"id":52510,"name":"onlyOwner","nameLocations":["3633:9:62"],"nodeType":"IdentifierPath","referencedDeclaration":36570,"src":"3633:9:62"},"nodeType":"ModifierInvocation","src":"3633:9:62"}],"name":"_authorizeUpgrade","nameLocation":"3570:17:62","overrides":{"id":52509,"nodeType":"OverrideSpecifier","overrides":[],"src":"3624:8:62"},"parameters":{"id":52508,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52507,"mutability":"mutable","name":"newImplementation","nameLocation":"3596:17:62","nodeType":"VariableDeclaration","scope":52514,"src":"3588:25:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52506,"name":"address","nodeType":"ElementaryTypeName","src":"3588:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"}],"src":"3587:27:62"},"returnParameters":{"id":52512,"nodeType":"ParameterList","parameters":[],"src":"3643:0:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"internal"},{"id":52552,"nodeType":"FunctionDefinition","src":"3726:419:62","nodes":[],"body":{"id":52551,"nodeType":"Block","src":"3911:234:62","nodes":[],"statements":[{"expression":{"arguments":[{"expression":{"id":52529,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"3936:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52530,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"3940:6:62","memberName":"sender","nodeType":"MemberAccess","src":"3936:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52528,"name":"__Ownable_init","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":36535,"src":"3921:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_nonpayable$_t_address_$returns$__$","typeString":"function (address)"}},"id":52531,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"3921:26:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52532,"nodeType":"ExpressionStatement","src":"3921:26:62"},{"expression":{"id":52535,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52533,"name":"generatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52470,"src":"3957:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52534,"name":"_generatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52517,"src":"3980:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"3957:44:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52536,"nodeType":"ExpressionStatement","src":"3957:44:62"},{"expression":{"id":52539,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52537,"name":"validatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52473,"src":"4011:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52538,"name":"_validatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52519,"src":"4034:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4011:44:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52540,"nodeType":"ExpressionStatement","src":"4011:44:62"},{"expression":{"id":52543,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52541,"name":"minRegistrationTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52476,"src":"4065:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52542,"name":"_minRegistrationTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52523,"src":"4087:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4065:42:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52544,"nodeType":"ExpressionStatement","src":"4065:42:62"},{"expression":{"id":52549,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52545,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52496,"src":"4117:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"arguments":[{"id":52547,"name":"_token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52521,"src":"4131:6:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52546,"name":"ERC20","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":38696,"src":"4125:5:62","typeDescriptions":{"typeIdentifier":"t_type$_t_contract$_ERC20_$38696_$","typeString":"type(contract ERC20)"}},"id":52548,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4125:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"src":"4117:21:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52550,"nodeType":"ExpressionStatement","src":"4117:21:62"}]},"documentation":{"id":52515,"nodeType":"StructuredDocumentation","src":"3651:70:62","text":"@dev Sets the owner to be the deployer, sets initial stake amount."},"functionSelector":"cf9640b4","implemented":true,"kind":"function","modifiers":[{"id":52526,"kind":"modifierInvocation","modifierName":{"id":52525,"name":"initializer","nameLocations":["3899:11:62"],"nodeType":"IdentifierPath","referencedDeclaration":36783,"src":"3899:11:62"},"nodeType":"ModifierInvocation","src":"3899:11:62"}],"name":"initialize","nameLocation":"3735:10:62","parameters":{"id":52524,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52517,"mutability":"mutable","name":"_generatorStakeAmount","nameLocation":"3763:21:62","nodeType":"VariableDeclaration","scope":52552,"src":"3755:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52516,"name":"uint256","nodeType":"ElementaryTypeName","src":"3755:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":52519,"mutability":"mutable","name":"_validatorStakeAmount","nameLocation":"3802:21:62","nodeType":"VariableDeclaration","scope":52552,"src":"3794:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52518,"name":"uint256","nodeType":"ElementaryTypeName","src":"3794:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":52521,"mutability":"mutable","name":"_token","nameLocation":"3841:6:62","nodeType":"VariableDeclaration","scope":52552,"src":"3833:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52520,"name":"address","nodeType":"ElementaryTypeName","src":"3833:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52523,"mutability":"mutable","name":"_minRegistrationTime","nameLocation":"3865:20:62","nodeType":"VariableDeclaration","scope":52552,"src":"3857:28:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52522,"name":"uint256","nodeType":"ElementaryTypeName","src":"3857:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"3745:146:62"},"returnParameters":{"id":52527,"nodeType":"ParameterList","parameters":[],"src":"3911:0:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52649,"nodeType":"FunctionDefinition","src":"4502:853:62","nodes":[],"body":{"id":52648,"nodeType":"Block","src":"4547:808:62","nodes":[],"statements":[{"condition":{"commonType":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"id":52562,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52559,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"4561:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":52560,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"4569:13:62","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LLMOracleKind_$52428_$","typeString":"type(enum LLMOracleKind)"}},"id":52561,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"4583:9:62","memberName":"Validator","nodeType":"MemberAccess","referencedDeclaration":52427,"src":"4569:23:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"src":"4561:31:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52576,"nodeType":"IfStatement","src":"4557:159:62","trueBody":{"id":52575,"nodeType":"Block","src":"4594:122:62","statements":[{"condition":{"id":52567,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"!","prefix":true,"src":"4612:26:62","subExpression":{"baseExpression":{"id":52563,"name":"isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53143,"src":"4613:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":52566,"indexExpression":{"expression":{"id":52564,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4627:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52565,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4631:6:62","memberName":"sender","nodeType":"MemberAccess","src":"4627:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"4613:25:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52574,"nodeType":"IfStatement","src":"4608:98:62","trueBody":{"id":52573,"nodeType":"Block","src":"4640:66:62","statements":[{"errorCall":{"arguments":[{"expression":{"id":52569,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4680:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52570,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4684:6:62","memberName":"sender","nodeType":"MemberAccess","src":"4680:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52568,"name":"NotWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53138,"src":"4665:14:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":52571,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4665:26:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52572,"nodeType":"RevertStatement","src":"4658:33:62"}]}}]}},{"assignments":[52578],"declarations":[{"constant":false,"id":52578,"mutability":"mutable","name":"amount","nameLocation":"4734:6:62","nodeType":"VariableDeclaration","scope":52648,"src":"4726:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52577,"name":"uint256","nodeType":"ElementaryTypeName","src":"4726:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"id":52582,"initialValue":{"arguments":[{"id":52580,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"4758:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"id":52579,"name":"getStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52798,"src":"4743:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_enum$_LLMOracleKind_$52428_$returns$_t_uint256_$","typeString":"function (enum LLMOracleKind) view returns (uint256)"}},"id":52581,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4743:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"VariableDeclarationStatement","src":"4726:37:62"},{"condition":{"arguments":[{"expression":{"id":52584,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4844:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52585,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4848:6:62","memberName":"sender","nodeType":"MemberAccess","src":"4844:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52586,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"4856:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"id":52583,"name":"isRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52820,"src":"4831:12:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_address_$_t_enum$_LLMOracleKind_$52428_$returns$_t_bool_$","typeString":"function (address,enum LLMOracleKind) view returns (bool)"}},"id":52587,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4831:30:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52594,"nodeType":"IfStatement","src":"4827:97:62","trueBody":{"id":52593,"nodeType":"Block","src":"4863:61:62","statements":[{"errorCall":{"arguments":[{"expression":{"id":52589,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"4902:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52590,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"4906:6:62","memberName":"sender","nodeType":"MemberAccess","src":"4902:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52588,"name":"AlreadyRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52459,"src":"4884:17:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":52591,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4884:29:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52592,"nodeType":"RevertStatement","src":"4877:36:62"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52605,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"expression":{"id":52597,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5011:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52598,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5015:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5011:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":52601,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5031:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}],"id":52600,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5023:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52599,"name":"address","nodeType":"ElementaryTypeName","src":"5023:7:62","typeDescriptions":{}}},"id":52602,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5023:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":52595,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52496,"src":"4995:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52596,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5001:9:62","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":38323,"src":"4995:15:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":52603,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"4995:42:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":52604,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52578,"src":"5040:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"4995:51:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52610,"nodeType":"IfStatement","src":"4991:108:62","trueBody":{"id":52609,"nodeType":"Block","src":"5048:51:62","statements":[{"errorCall":{"arguments":[],"expression":{"argumentTypes":[],"id":52606,"name":"InsufficientFunds","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52462,"src":"5069:17:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$__$returns$_t_error_$","typeString":"function () pure returns (error)"}},"id":52607,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5069:19:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52608,"nodeType":"RevertStatement","src":"5062:26:62"}]}},{"expression":{"arguments":[{"expression":{"id":52614,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5127:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52615,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5131:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5127:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"arguments":[{"id":52618,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"5147:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}],"id":52617,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"5139:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52616,"name":"address","nodeType":"ElementaryTypeName","src":"5139:7:62","typeDescriptions":{}}},"id":52619,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5139:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52620,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52578,"src":"5154:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52611,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52496,"src":"5108:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52613,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5114:12:62","memberName":"transferFrom","nodeType":"MemberAccess","referencedDeclaration":38379,"src":"5108:18:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,address,uint256) external returns (bool)"}},"id":52621,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5108:53:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52622,"nodeType":"ExpressionStatement","src":"5108:53:62"},{"expression":{"id":52630,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":52623,"name":"registrations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52484,"src":"5201:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52627,"indexExpression":{"expression":{"id":52624,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5215:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52625,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5219:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5215:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5201:25:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52628,"indexExpression":{"id":52626,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"5227:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5201:31:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52629,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52578,"src":"5235:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5201:40:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52631,"nodeType":"ExpressionStatement","src":"5201:40:62"},{"expression":{"id":52640,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"baseExpression":{"id":52632,"name":"registrationTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52492,"src":"5251:17:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52636,"indexExpression":{"expression":{"id":52633,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5269:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52634,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5273:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5269:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5251:29:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52637,"indexExpression":{"id":52635,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"5281:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5251:35:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"expression":{"id":52638,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"5289:5:62","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":52639,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5295:9:62","memberName":"timestamp","nodeType":"MemberAccess","src":"5289:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5251:53:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52641,"nodeType":"ExpressionStatement","src":"5251:53:62"},{"eventCall":{"arguments":[{"expression":{"id":52643,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5331:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52644,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5335:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5331:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52645,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52556,"src":"5343:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"id":52642,"name":"Registered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52441,"src":"5320:10:62","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_enum$_LLMOracleKind_$52428_$returns$__$","typeString":"function (address,enum LLMOracleKind)"}},"id":52646,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5320:28:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52647,"nodeType":"EmitStatement","src":"5315:33:62"}]},"documentation":{"id":52553,"nodeType":"StructuredDocumentation","src":"4330:167:62","text":"@notice Register an Oracle.\n @dev Reverts if the user is already registered or has insufficient funds.\n @param kind The kind of Oracle to unregister."},"functionSelector":"61d689fa","implemented":true,"kind":"function","modifiers":[],"name":"register","nameLocation":"4511:8:62","parameters":{"id":52557,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52556,"mutability":"mutable","name":"kind","nameLocation":"4534:4:62","nodeType":"VariableDeclaration","scope":52649,"src":"4520:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52555,"nodeType":"UserDefinedTypeName","pathNode":{"id":52554,"name":"LLMOracleKind","nameLocations":["4520:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"4520:13:62"},"referencedDeclaration":52428,"src":"4520:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"4519:20:62"},"returnParameters":{"id":52558,"nodeType":"ParameterList","parameters":[],"src":"4547:0:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52761,"nodeType":"FunctionDefinition","src":"5571:981:62","nodes":[],"body":{"id":52760,"nodeType":"Block","src":"5643:909:62","nodes":[],"statements":[{"expression":{"id":52665,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52658,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52656,"src":"5653:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"baseExpression":{"baseExpression":{"id":52659,"name":"registrations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52484,"src":"5662:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52662,"indexExpression":{"expression":{"id":52660,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5676:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52661,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5680:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5676:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5662:25:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52664,"indexExpression":{"id":52663,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"5688:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5662:31:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"5653:40:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52666,"nodeType":"ExpressionStatement","src":"5653:40:62"},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52669,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52667,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52656,"src":"5749:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"hexValue":"30","id":52668,"isConstant":false,"isLValue":false,"isPure":true,"kind":"number","lValueRequested":false,"nodeType":"Literal","src":"5759:1:62","typeDescriptions":{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},"value":"0"},"src":"5749:11:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52676,"nodeType":"IfStatement","src":"5745:74:62","trueBody":{"id":52675,"nodeType":"Block","src":"5762:57:62","statements":[{"errorCall":{"arguments":[{"expression":{"id":52671,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5797:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52672,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5801:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5797:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"id":52670,"name":"NotRegistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52454,"src":"5783:13:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_address_$returns$_t_error_$","typeString":"function (address) pure returns (error)"}},"id":52673,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"5783:25:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52674,"nodeType":"RevertStatement","src":"5776:32:62"}]}},{"condition":{"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"id":52685,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"id":52680,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52677,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"5876:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":52678,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"5884:13:62","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LLMOracleKind_$52428_$","typeString":"type(enum LLMOracleKind)"}},"id":52679,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"5898:9:62","memberName":"Validator","nodeType":"MemberAccess","referencedDeclaration":52427,"src":"5884:23:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"src":"5876:31:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"BinaryOperation","operator":"&&","rightExpression":{"baseExpression":{"id":52681,"name":"isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53143,"src":"5911:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":52684,"indexExpression":{"expression":{"id":52682,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5925:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52683,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5929:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5925:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"5911:25:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"src":"5876:60:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52694,"nodeType":"IfStatement","src":"5872:124:62","trueBody":{"id":52693,"nodeType":"Block","src":"5938:58:62","statements":[{"expression":{"id":52691,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"baseExpression":{"id":52686,"name":"isWhitelisted","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":53143,"src":"5952:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_bool_$","typeString":"mapping(address => bool)"}},"id":52689,"indexExpression":{"expression":{"id":52687,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"5966:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52688,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"5970:6:62","memberName":"sender","nodeType":"MemberAccess","src":"5966:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"5952:25:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"hexValue":"66616c7365","id":52690,"isConstant":false,"isLValue":false,"isPure":true,"kind":"bool","lValueRequested":false,"nodeType":"Literal","src":"5980:5:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"value":"false"},"src":"5952:33:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52692,"nodeType":"ExpressionStatement","src":"5952:33:62"}]}},{"condition":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52705,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52703,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":52695,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6062:5:62","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":52696,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6068:9:62","memberName":"timestamp","nodeType":"MemberAccess","src":"6062:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"baseExpression":{"id":52697,"name":"registrationTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52492,"src":"6080:17:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52700,"indexExpression":{"expression":{"id":52698,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6098:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52699,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6102:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6098:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6080:29:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52702,"indexExpression":{"id":52701,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"6110:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6080:35:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6062:53:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"<","rightExpression":{"id":52704,"name":"minRegistrationTime","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52476,"src":"6118:19:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6062:75:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52719,"nodeType":"IfStatement","src":"6058:188:62","trueBody":{"id":52718,"nodeType":"Block","src":"6139:107:62","statements":[{"errorCall":{"arguments":[{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52715,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"expression":{"id":52707,"name":"block","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-4,"src":"6181:5:62","typeDescriptions":{"typeIdentifier":"t_magic_block","typeString":"block"}},"id":52708,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6187:9:62","memberName":"timestamp","nodeType":"MemberAccess","src":"6181:15:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"-","rightExpression":{"baseExpression":{"baseExpression":{"id":52709,"name":"registrationTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52492,"src":"6199:17:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52712,"indexExpression":{"expression":{"id":52710,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6217:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52711,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6221:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6217:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6199:29:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52714,"indexExpression":{"id":52713,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"6229:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6199:35:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6181:53:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"id":52706,"name":"TooEarlyToUnregister","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52467,"src":"6160:20:62","typeDescriptions":{"typeIdentifier":"t_function_error_pure$_t_uint256_$returns$_t_error_$","typeString":"function (uint256) pure returns (error)"}},"id":52716,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6160:75:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_error","typeString":"error"}},"id":52717,"nodeType":"RevertStatement","src":"6153:82:62"}]}},{"expression":{"id":52726,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6287:38:62","subExpression":{"baseExpression":{"baseExpression":{"id":52720,"name":"registrations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52484,"src":"6294:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52723,"indexExpression":{"expression":{"id":52721,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6308:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52722,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6312:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6308:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6294:25:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52725,"indexExpression":{"id":52724,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"6320:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6294:31:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52727,"nodeType":"ExpressionStatement","src":"6287:38:62"},{"expression":{"id":52734,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"UnaryOperation","operator":"delete","prefix":true,"src":"6335:42:62","subExpression":{"baseExpression":{"baseExpression":{"id":52728,"name":"registrationTimes","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52492,"src":"6342:17:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52731,"indexExpression":{"expression":{"id":52729,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6360:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52730,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6364:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6360:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"6342:29:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52733,"indexExpression":{"id":52732,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"6372:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"nodeType":"IndexAccess","src":"6342:35:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52735,"nodeType":"ExpressionStatement","src":"6335:42:62"},{"eventCall":{"arguments":[{"expression":{"id":52737,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6405:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52738,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6409:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6405:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"id":52739,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52653,"src":"6417:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"id":52736,"name":"Unregistered","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52449,"src":"6392:12:62","typeDescriptions":{"typeIdentifier":"t_function_event_nonpayable$_t_address_$_t_enum$_LLMOracleKind_$52428_$returns$__$","typeString":"function (address,enum LLMOracleKind)"}},"id":52740,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6392:30:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_tuple$__$","typeString":"tuple()"}},"id":52741,"nodeType":"EmitStatement","src":"6387:35:62"},{"expression":{"arguments":[{"expression":{"id":52745,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6481:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52746,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6485:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6481:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52757,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"arguments":[{"arguments":[{"id":52751,"name":"this","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-28,"src":"6517:4:62","typeDescriptions":{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_contract$_LLMOracleRegistry_$52821","typeString":"contract LLMOracleRegistry"}],"id":52750,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"nodeType":"ElementaryTypeNameExpression","src":"6509:7:62","typeDescriptions":{"typeIdentifier":"t_type$_t_address_$","typeString":"type(address)"},"typeName":{"id":52749,"name":"address","nodeType":"ElementaryTypeName","src":"6509:7:62","typeDescriptions":{}}},"id":52752,"isConstant":false,"isLValue":false,"isPure":false,"kind":"typeConversion","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6509:13:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},{"expression":{"id":52753,"name":"msg","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":-15,"src":"6524:3:62","typeDescriptions":{"typeIdentifier":"t_magic_message","typeString":"msg"}},"id":52754,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6528:6:62","memberName":"sender","nodeType":"MemberAccess","src":"6524:10:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"expression":{"id":52747,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52496,"src":"6493:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52748,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6499:9:62","memberName":"allowance","nodeType":"MemberAccess","referencedDeclaration":38323,"src":"6493:15:62","typeDescriptions":{"typeIdentifier":"t_function_external_view$_t_address_$_t_address_$returns$_t_uint256_$","typeString":"function (address,address) view external returns (uint256)"}},"id":52755,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6493:42:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":"+","rightExpression":{"id":52756,"name":"amount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52656,"src":"6538:6:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6493:51:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"expression":{"id":52742,"name":"token","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52496,"src":"6467:5:62","typeDescriptions":{"typeIdentifier":"t_contract$_ERC20_$38696","typeString":"contract ERC20"}},"id":52744,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"memberLocation":"6473:7:62","memberName":"approve","nodeType":"MemberAccess","referencedDeclaration":38347,"src":"6467:13:62","typeDescriptions":{"typeIdentifier":"t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$","typeString":"function (address,uint256) external returns (bool)"}},"id":52758,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"6467:78:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"id":52759,"nodeType":"ExpressionStatement","src":"6467:78:62"}]},"documentation":{"id":52650,"nodeType":"StructuredDocumentation","src":"5361:205:62","text":"@notice Remove registration of an Oracle.\n @dev Reverts if the user is not registered.\n @param kind The kind of Oracle to unregister.\n @return amount Amount of stake approved back."},"functionSelector":"23d2f5f6","implemented":true,"kind":"function","modifiers":[],"name":"unregister","nameLocation":"5580:10:62","parameters":{"id":52654,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52653,"mutability":"mutable","name":"kind","nameLocation":"5605:4:62","nodeType":"VariableDeclaration","scope":52761,"src":"5591:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52652,"nodeType":"UserDefinedTypeName","pathNode":{"id":52651,"name":"LLMOracleKind","nameLocations":["5591:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"5591:13:62"},"referencedDeclaration":52428,"src":"5591:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"5590:20:62"},"returnParameters":{"id":52657,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52656,"mutability":"mutable","name":"amount","nameLocation":"5635:6:62","nodeType":"VariableDeclaration","scope":52761,"src":"5627:14:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52655,"name":"uint256","nodeType":"ElementaryTypeName","src":"5627:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"5626:16:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52780,"nodeType":"FunctionDefinition","src":"6670:219:62","nodes":[],"body":{"id":52779,"nodeType":"Block","src":"6774:115:62","nodes":[],"statements":[{"expression":{"id":52773,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52771,"name":"generatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52470,"src":"6784:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52772,"name":"_generatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52764,"src":"6807:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6784:44:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52774,"nodeType":"ExpressionStatement","src":"6784:44:62"},{"expression":{"id":52777,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftHandSide":{"id":52775,"name":"validatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52473,"src":"6838:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"Assignment","operator":"=","rightHandSide":{"id":52776,"name":"_validatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52766,"src":"6861:21:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"6838:44:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52778,"nodeType":"ExpressionStatement","src":"6838:44:62"}]},"documentation":{"id":52762,"nodeType":"StructuredDocumentation","src":"6558:107:62","text":"@notice Set the stake amount required to register as an Oracle.\n @dev Only allowed by the owner."},"functionSelector":"f149444b","implemented":true,"kind":"function","modifiers":[{"id":52769,"kind":"modifierInvocation","modifierName":{"id":52768,"name":"onlyOwner","nameLocations":["6764:9:62"],"nodeType":"IdentifierPath","referencedDeclaration":36570,"src":"6764:9:62"},"nodeType":"ModifierInvocation","src":"6764:9:62"}],"name":"setStakeAmounts","nameLocation":"6679:15:62","parameters":{"id":52767,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52764,"mutability":"mutable","name":"_generatorStakeAmount","nameLocation":"6703:21:62","nodeType":"VariableDeclaration","scope":52780,"src":"6695:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52763,"name":"uint256","nodeType":"ElementaryTypeName","src":"6695:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"},{"constant":false,"id":52766,"mutability":"mutable","name":"_validatorStakeAmount","nameLocation":"6734:21:62","nodeType":"VariableDeclaration","scope":52780,"src":"6726:29:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52765,"name":"uint256","nodeType":"ElementaryTypeName","src":"6726:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"6694:62:62"},"returnParameters":{"id":52770,"nodeType":"ParameterList","parameters":[],"src":"6774:0:62"},"scope":52821,"stateMutability":"nonpayable","virtual":false,"visibility":"public"},{"id":52798,"nodeType":"FunctionDefinition","src":"6988:175:62","nodes":[],"body":{"id":52797,"nodeType":"Block","src":"7062:101:62","nodes":[],"statements":[{"expression":{"condition":{"commonType":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"id":52792,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"id":52789,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52784,"src":"7079:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"nodeType":"BinaryOperation","operator":"==","rightExpression":{"expression":{"id":52790,"name":"LLMOracleKind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52428,"src":"7087:13:62","typeDescriptions":{"typeIdentifier":"t_type$_t_enum$_LLMOracleKind_$52428_$","typeString":"type(enum LLMOracleKind)"}},"id":52791,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"memberLocation":"7101:9:62","memberName":"Generator","nodeType":"MemberAccess","referencedDeclaration":52426,"src":"7087:23:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"src":"7079:31:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"falseExpression":{"id":52794,"name":"validatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52473,"src":"7136:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"id":52795,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"nodeType":"Conditional","src":"7079:77:62","trueExpression":{"id":52793,"name":"generatorStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52470,"src":"7113:20:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"functionReturnParameters":52788,"id":52796,"nodeType":"Return","src":"7072:84:62"}]},"documentation":{"id":52781,"nodeType":"StructuredDocumentation","src":"6895:88:62","text":"@notice Returns the stake amount required to register as an Oracle w.r.t given kind."},"functionSelector":"771007a9","implemented":true,"kind":"function","modifiers":[],"name":"getStakeAmount","nameLocation":"6997:14:62","parameters":{"id":52785,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52784,"mutability":"mutable","name":"kind","nameLocation":"7026:4:62","nodeType":"VariableDeclaration","scope":52798,"src":"7012:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52783,"nodeType":"UserDefinedTypeName","pathNode":{"id":52782,"name":"LLMOracleKind","nameLocations":["7012:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"7012:13:62"},"referencedDeclaration":52428,"src":"7012:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"7011:20:62"},"returnParameters":{"id":52788,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52787,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52798,"src":"7053:7:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"},"typeName":{"id":52786,"name":"uint256","nodeType":"ElementaryTypeName","src":"7053:7:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"visibility":"internal"}],"src":"7052:9:62"},"scope":52821,"stateMutability":"view","virtual":false,"visibility":"public"},{"id":52820,"nodeType":"FunctionDefinition","src":"7219:156:62","nodes":[],"body":{"id":52819,"nodeType":"Block","src":"7302:73:62","nodes":[],"statements":[{"expression":{"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"id":52817,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"leftExpression":{"baseExpression":{"baseExpression":{"id":52809,"name":"registrations","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52484,"src":"7319:13:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_address_$_t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$_$","typeString":"mapping(address => mapping(enum LLMOracleKind => uint256))"}},"id":52811,"indexExpression":{"id":52810,"name":"user","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52801,"src":"7333:4:62","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7319:19:62","typeDescriptions":{"typeIdentifier":"t_mapping$_t_enum$_LLMOracleKind_$52428_$_t_uint256_$","typeString":"mapping(enum LLMOracleKind => uint256)"}},"id":52813,"indexExpression":{"id":52812,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52804,"src":"7339:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"nodeType":"IndexAccess","src":"7319:25:62","typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"nodeType":"BinaryOperation","operator":">=","rightExpression":{"arguments":[{"id":52815,"name":"kind","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52804,"src":"7363:4:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}}],"expression":{"argumentTypes":[{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}],"id":52814,"name":"getStakeAmount","nodeType":"Identifier","overloadedDeclarations":[],"referencedDeclaration":52798,"src":"7348:14:62","typeDescriptions":{"typeIdentifier":"t_function_internal_view$_t_enum$_LLMOracleKind_$52428_$returns$_t_uint256_$","typeString":"function (enum LLMOracleKind) view returns (uint256)"}},"id":52816,"isConstant":false,"isLValue":false,"isPure":false,"kind":"functionCall","lValueRequested":false,"nameLocations":[],"names":[],"nodeType":"FunctionCall","src":"7348:20:62","tryCall":false,"typeDescriptions":{"typeIdentifier":"t_uint256","typeString":"uint256"}},"src":"7319:49:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"functionReturnParameters":52808,"id":52818,"nodeType":"Return","src":"7312:56:62"}]},"documentation":{"id":52799,"nodeType":"StructuredDocumentation","src":"7169:45:62","text":"@notice Check if an Oracle is registered."},"functionSelector":"5f5b248b","implemented":true,"kind":"function","modifiers":[],"name":"isRegistered","nameLocation":"7228:12:62","parameters":{"id":52805,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52801,"mutability":"mutable","name":"user","nameLocation":"7249:4:62","nodeType":"VariableDeclaration","scope":52820,"src":"7241:12:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"},"typeName":{"id":52800,"name":"address","nodeType":"ElementaryTypeName","src":"7241:7:62","stateMutability":"nonpayable","typeDescriptions":{"typeIdentifier":"t_address","typeString":"address"}},"visibility":"internal"},{"constant":false,"id":52804,"mutability":"mutable","name":"kind","nameLocation":"7269:4:62","nodeType":"VariableDeclaration","scope":52820,"src":"7255:18:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"},"typeName":{"id":52803,"nodeType":"UserDefinedTypeName","pathNode":{"id":52802,"name":"LLMOracleKind","nameLocations":["7255:13:62"],"nodeType":"IdentifierPath","referencedDeclaration":52428,"src":"7255:13:62"},"referencedDeclaration":52428,"src":"7255:13:62","typeDescriptions":{"typeIdentifier":"t_enum$_LLMOracleKind_$52428","typeString":"enum LLMOracleKind"}},"visibility":"internal"}],"src":"7240:34:62"},"returnParameters":{"id":52808,"nodeType":"ParameterList","parameters":[{"constant":false,"id":52807,"mutability":"mutable","name":"","nameLocation":"-1:-1:-1","nodeType":"VariableDeclaration","scope":52820,"src":"7296:4:62","stateVariable":false,"storageLocation":"default","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"},"typeName":{"id":52806,"name":"bool","nodeType":"ElementaryTypeName","src":"7296:4:62","typeDescriptions":{"typeIdentifier":"t_bool","typeString":"bool"}},"visibility":"internal"}],"src":"7295:6:62"},"scope":52821,"stateMutability":"view","virtual":false,"visibility":"public"}],"abstract":false,"baseContracts":[{"baseName":{"id":52430,"name":"Whitelist","nameLocations":["590:9:62"],"nodeType":"IdentifierPath","referencedDeclaration":53213,"src":"590:9:62"},"id":52431,"nodeType":"InheritanceSpecifier","src":"590:9:62"},{"baseName":{"id":52432,"name":"UUPSUpgradeable","nameLocations":["601:15:62"],"nodeType":"IdentifierPath","referencedDeclaration":37111,"src":"601:15:62"},"id":52433,"nodeType":"InheritanceSpecifier","src":"601:15:62"}],"canonicalName":"LLMOracleRegistry","contractDependencies":[],"contractKind":"contract","documentation":{"id":52429,"nodeType":"StructuredDocumentation","src":"364:196:62","text":"@title LLM Oracle Registry\n @notice Holds the addresses that are eligible to respond to LLM requests.\n @dev There may be several types of oracle kinds, and each require their own stake."},"fullyImplemented":true,"linearizedBaseContracts":[52821,37111,37336,53213,36675,37157,36929],"name":"LLMOracleRegistry","nameLocation":"569:17:62","scope":52822,"usedErrors":[36511,36516,36692,36695,36956,36961,37531,37544,38810,39102,52454,52459,52462,52467,53138],"usedEvents":[36522,36700,37313,52441,52449,53128,53133]}],"license":"Apache-2.0"},"id":62} \ No newline at end of file +[ + { + "type": "constructor", + "inputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "UPGRADE_INTERFACE_VERSION", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "string", + "internalType": "string" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "addToWhitelist", + "inputs": [ + { + "name": "accounts", + "type": "address[]", + "internalType": "address[]" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "generatorStakeAmount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "getStakeAmount", + "inputs": [ + { + "name": "kind", + "type": "uint8", + "internalType": "enum LLMOracleKind" + } + ], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "initialize", + "inputs": [ + { + "name": "_generatorStakeAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_validatorStakeAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_token", + "type": "address", + "internalType": "address" + }, + { + "name": "_minRegistrationTime", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "isRegistered", + "inputs": [ + { + "name": "user", + "type": "address", + "internalType": "address" + }, + { + "name": "kind", + "type": "uint8", + "internalType": "enum LLMOracleKind" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "isWhitelisted", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "outputs": [ + { + "name": "", + "type": "bool", + "internalType": "bool" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "minRegistrationTime", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "owner", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "proxiableUUID", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "bytes32", + "internalType": "bytes32" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "register", + "inputs": [ + { + "name": "kind", + "type": "uint8", + "internalType": "enum LLMOracleKind" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "registrationTimes", + "inputs": [ + { + "name": "oracle", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint8", + "internalType": "enum LLMOracleKind" + } + ], + "outputs": [ + { + "name": "registeredTime", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "registrations", + "inputs": [ + { + "name": "oracle", + "type": "address", + "internalType": "address" + }, + { + "name": "", + "type": "uint8", + "internalType": "enum LLMOracleKind" + } + ], + "outputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "removeFromWhitelist", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "renounceOwnership", + "inputs": [], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "setStakeAmounts", + "inputs": [ + { + "name": "_generatorStakeAmount", + "type": "uint256", + "internalType": "uint256" + }, + { + "name": "_validatorStakeAmount", + "type": "uint256", + "internalType": "uint256" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "token", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "address", + "internalType": "contract ERC20" + } + ], + "stateMutability": "view" + }, + { + "type": "function", + "name": "transferOwnership", + "inputs": [ + { + "name": "newOwner", + "type": "address", + "internalType": "address" + } + ], + "outputs": [], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "unregister", + "inputs": [ + { + "name": "kind", + "type": "uint8", + "internalType": "enum LLMOracleKind" + } + ], + "outputs": [ + { + "name": "amount", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "nonpayable" + }, + { + "type": "function", + "name": "upgradeToAndCall", + "inputs": [ + { + "name": "newImplementation", + "type": "address", + "internalType": "address" + }, + { + "name": "data", + "type": "bytes", + "internalType": "bytes" + } + ], + "outputs": [], + "stateMutability": "payable" + }, + { + "type": "function", + "name": "validatorStakeAmount", + "inputs": [], + "outputs": [ + { + "name": "", + "type": "uint256", + "internalType": "uint256" + } + ], + "stateMutability": "view" + }, + { + "type": "event", + "name": "AddedToWhitelist", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Initialized", + "inputs": [ + { + "name": "version", + "type": "uint64", + "indexed": false, + "internalType": "uint64" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "OwnershipTransferred", + "inputs": [ + { + "name": "previousOwner", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "newOwner", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Registered", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "kind", + "type": "uint8", + "indexed": false, + "internalType": "enum LLMOracleKind" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "RemovedFromWhitelist", + "inputs": [ + { + "name": "account", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Unregistered", + "inputs": [ + { + "name": "", + "type": "address", + "indexed": true, + "internalType": "address" + }, + { + "name": "kind", + "type": "uint8", + "indexed": false, + "internalType": "enum LLMOracleKind" + } + ], + "anonymous": false + }, + { + "type": "event", + "name": "Upgraded", + "inputs": [ + { + "name": "implementation", + "type": "address", + "indexed": true, + "internalType": "address" + } + ], + "anonymous": false + }, + { + "type": "error", + "name": "AddressEmptyCode", + "inputs": [ + { + "name": "target", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "AlreadyRegistered", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC1967InvalidImplementation", + "inputs": [ + { + "name": "implementation", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "ERC1967NonPayable", + "inputs": [] + }, + { + "type": "error", + "name": "FailedCall", + "inputs": [] + }, + { + "type": "error", + "name": "InsufficientFunds", + "inputs": [] + }, + { + "type": "error", + "name": "InvalidInitialization", + "inputs": [] + }, + { + "type": "error", + "name": "NotInitializing", + "inputs": [] + }, + { + "type": "error", + "name": "NotRegistered", + "inputs": [ + { + "name": "", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "NotWhitelisted", + "inputs": [ + { + "name": "validator", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableInvalidOwner", + "inputs": [ + { + "name": "owner", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "OwnableUnauthorizedAccount", + "inputs": [ + { + "name": "account", + "type": "address", + "internalType": "address" + } + ] + }, + { + "type": "error", + "name": "TooEarlyToUnregister", + "inputs": [ + { + "name": "minTimeToWait", + "type": "uint256", + "internalType": "uint256" + } + ] + }, + { + "type": "error", + "name": "UUPSUnauthorizedCallContext", + "inputs": [] + }, + { + "type": "error", + "name": "UUPSUnsupportedProxiableUUID", + "inputs": [ + { + "name": "slot", + "type": "bytes32", + "internalType": "bytes32" + } + ] + } +] diff --git a/post-deploy.sh b/post-deploy.sh deleted file mode 100755 index a976f2f..0000000 --- a/post-deploy.sh +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -echo "Exporting deployment files & ABIs" - -cp ./out/LLMOracleCoordinator.sol/LLMOracleCoordinator.json ./deployments/abis/LLMOracleCoordinator.json -node ./deployments/abis/parseAbi.cjs ./deployments/abis/LLMOracleCoordinator.json - -cp ./out/LLMOracleRegistry.sol/LLMOracleRegistry.json ./deployments/abis/LLMOracleRegistry.json -node ./deployments/abis/parseAbi.cjs ./deployments/abis/LLMOracleRegistry.json - diff --git a/script/Deploy.s.sol b/script/Deploy.s.sol index 231e495..0e38815 100644 --- a/script/Deploy.s.sol +++ b/script/Deploy.s.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.20; -import {Upgrades, UnsafeUpgrades} from "@openzeppelin/foundry-upgrades/Upgrades.sol"; +import {Upgrades, UnsafeUpgrades, Options} from "@openzeppelin/foundry-upgrades/Upgrades.sol"; import {Strings} from "@openzeppelin/contracts/utils/Strings.sol"; import {Script} from "forge-std/Script.sol"; import {Vm} from "forge-std/Vm.sol"; @@ -30,9 +30,9 @@ contract DeployLLMOracleRegistry is Script { token = address(0x4200000000000000000000000000000000000006); // WETH } - function run() public { + function run() external returns (address proxy, address impl) { vm.startBroadcast(); - (address proxy, address impl) = this.deploy(); + (proxy, impl) = deploy(); vm.stopBroadcast(); helper.writeProxyAddresses("LLMOracleRegistry", proxy, impl); @@ -49,14 +49,14 @@ contract DeployLLMOracleRegistry is Script { impl = Upgrades.getImplementationAddress(proxy); } - // function deployUnsafe(address impl) external returns (address proxy) { - // proxy = UnsafeUpgrades.deployUUPSProxy( - // impl, - // abi.encodeCall( - // LLMOracleRegistry.initialize, (stakes.generator, stakes.validator, token, minRegistrationTimeSec) - // ) - // ); - // } + function deployUnsafe(address impl) external returns (address proxy) { + proxy = UnsafeUpgrades.deployUUPSProxy( + impl, + abi.encodeCall( + LLMOracleRegistry.initialize, (stakes.generator, stakes.validator, token, minRegistrationTimeSec) + ) + ); + } } contract DeployLLMOracleCoordinator is Script { @@ -92,7 +92,7 @@ contract DeployLLMOracleCoordinator is Script { require(registryImlp != address(0), "LLMOracleRegistry implementation address is invalid"); vm.startBroadcast(); - (address proxy, address impl) = this.deploy(registryProxy); + (address proxy, address impl) = deploy(registryProxy); vm.stopBroadcast(); helper.writeProxyAddresses("LLMOracleCoordinator", proxy, impl); @@ -111,37 +111,50 @@ contract DeployLLMOracleCoordinator is Script { } } -contract UpgradeLLMOracleRegistry is Script { +contract UpgradeLLMOracleCoordinator is Script { Helper public helper; - Stakes public stakes; - uint256 public minRegistrationTimeSec; - address public token; constructor() { helper = new Helper(); + } - // parameters - minRegistrationTimeSec = 1 days; - stakes = Stakes({generator: 0.0001 ether, validator: 0.000001 ether}); - token = address(0x4200000000000000000000000000000000000006); // WETH + function run() public returns (address impl) { + // todo: get proxy address + address proxy = 0xe3Ab5D57Feb189d7CD1685336FD638856391b9EB; + + vm.startBroadcast(); + impl = upgrade(proxy); + vm.stopBroadcast(); + + helper.writeProxyAddresses("LLMOracleCoordinator", proxy, impl); } - function run() external returns (address proxy, address impl) { + function upgrade(address proxy) public returns (address impl) { + Upgrades.upgradeProxy(proxy, "LLMOracleCoordinatorV2.sol", ""); + impl = Upgrades.getImplementationAddress(proxy); + } +} + +contract UpgradeLLMOracleRegistry is Script { + Helper public helper; + + constructor() { + helper = new Helper(); + } + + function run() public returns (address impl) { + // todo: get proxy address + address proxy = 0x568Cfb5363E70Cde784f8603E2748e614c3420a7; + vm.startBroadcast(); - (proxy, impl) = this.deploy(); + impl = upgrade(proxy); vm.stopBroadcast(); helper.writeProxyAddresses("LLMOracleRegistry", proxy, impl); } - function deploy() external returns (address proxy, address impl) { - proxy = Upgrades.deployUUPSProxy( - "LLMOracleRegistry.sol", - abi.encodeCall( - LLMOracleRegistry.initialize, (stakes.generator, stakes.validator, token, minRegistrationTimeSec) - ) - ); - + function upgrade(address proxy) public returns (address impl) { + Upgrades.upgradeProxy(proxy, "LLMOracleRegistryV2.sol", ""); impl = Upgrades.getImplementationAddress(proxy); } } diff --git a/script/Helper.s.sol b/script/Helper.s.sol index eb0ae32..09085d0 100644 --- a/script/Helper.s.sol +++ b/script/Helper.s.sol @@ -13,9 +13,8 @@ contract Helper is Script { /// @dev You are expect to use JSON-related commands with the returned string, /// see https://book.getfoundry.sh/cheatcodes/external for more. function getDeploymentsJson() external view returns (string memory) { - string memory dir = "deployments/"; - string memory fileName = Strings.toString(block.chainid); - string memory path = string.concat(dir, fileName, ".json"); + string memory chainId = Strings.toString(block.chainid); + string memory path = string.concat("deployments/", chainId, "addresses.json"); return vm.readFile(path); } @@ -23,8 +22,8 @@ contract Helper is Script { function writeProxyAddresses(string memory name, address _proxy, address _impl) external { // create a deployment file if not exist string memory dir = "deployments/"; - string memory fileName = Strings.toString(block.chainid); - string memory path = string.concat(dir, fileName, ".json"); + string memory chainId = Strings.toString(block.chainid); + string memory path = string.concat(dir, chainId, ".json"); string memory proxy = Strings.toHexString(uint256(uint160(_proxy)), 20); string memory impl = Strings.toHexString(uint256(uint160(_impl)), 20); diff --git a/test/LLMOracleCoordinator.t.sol b/test/LLMOracleCoordinator.t.sol index a8d3f09..0143e03 100644 --- a/test/LLMOracleCoordinator.t.sol +++ b/test/LLMOracleCoordinator.t.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.20; -import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import {Upgrades} from "@openzeppelin/foundry-upgrades/Upgrades.sol"; import {LLMOracleTask, LLMOracleTaskParameters} from "../src/LLMOracleTask.sol"; import {LLMOracleRegistry, LLMOracleKind} from "../src/LLMOracleRegistry.sol"; diff --git a/test/LLMOracleRegistry.t.sol b/test/LLMOracleRegistry.t.sol index 9a5417d..62bba23 100644 --- a/test/LLMOracleRegistry.t.sol +++ b/test/LLMOracleRegistry.t.sol @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 pragma solidity ^0.8.20; -import {Upgrades} from "openzeppelin-foundry-upgrades/Upgrades.sol"; +import {Upgrades} from "@openzeppelin/foundry-upgrades/Upgrades.sol"; import {LLMOracleRegistry, LLMOracleKind} from "../src/LLMOracleRegistry.sol"; diff --git a/test/Statistics.t.sol b/test/Statistics.t.sol index 6fcd90d..a663788 100644 --- a/test/Statistics.t.sol +++ b/test/Statistics.t.sol @@ -3,9 +3,10 @@ pragma solidity ^0.8.20; import {Vm} from "forge-std/Vm.sol"; import {Test, console} from "forge-std/Test.sol"; -import {Statistics} from "../src/Statistics.sol"; import {Math} from "@openzeppelin/contracts/utils/math/Math.sol"; +import {Statistics} from "../src/Statistics.sol"; + contract StatisticsTest is Test { uint8 constant MAX_SCORE = 255; // max value of uint8 uint8 constant MIN_SCORE = 1; diff --git a/test/script/Deploy.t.sol b/test/script/Deploy.t.sol index 6642d88..53908bd 100644 --- a/test/script/Deploy.t.sol +++ b/test/script/Deploy.t.sol @@ -4,6 +4,7 @@ pragma solidity ^0.8.20; import {UnsafeUpgrades} from "@openzeppelin/foundry-upgrades/Upgrades.sol"; import {Test} from "forge-std/Test.sol"; import {Vm} from "forge-std/Vm.sol"; + import {Helper} from "../../script/Helper.s.sol"; import {DeployLLMOracleCoordinator, DeployLLMOracleRegistry} from "../../script/Deploy.s.sol";