Files
zeekay 19f506b4b1 governance: node-side Proof-of-AI governance MCP (the operator-LLM sensory surface)
The missing "LLM of node operator" half of on-chain AI governance: a read-only
MCP server a node exposes so an operator-LLM can query its own chain mid-thought
before signing an AIGovernor verdict — chain_state, param_history, receipt_lookup,
quorum_status, etc. Read-only by construction (AST gate, no state-mutating verb),
bounded calls + per-call timeout, every read at a pinned block.

EthCaller is the read-only EVM seam; quorum tally mirrors AIGovernor.settle so the
LLM sees the same canonical view the chain will. cmd/aivm-gov-mcp serves it over
stdio (drop-in for hanzo-dev / Claude Desktop mcp-servers, like gym.distributed.mcp).

Verified: go test ./governance/ = ok (SDKROOT set; CGO secp256k1/gopsutil need the
macOS SDK path). Pairs with luxfi/standard ai/governance (AIGovernor/AIApproval/
AIExecute). Future: decomplect transport+evmread to module root as a Surface once a
2nd surface (mining/treasury) lands — held per YAGNI.
2026-06-24 19:08:04 -07:00

1 line
182 KiB
JSON

{"abi":[{"type":"constructor","inputs":[{"name":"minBond_","type":"uint256","internalType":"uint256"},{"name":"deregisterCooldown_","type":"uint64","internalType":"uint64"},{"name":"rewardPerThought_","type":"uint256","internalType":"uint256"},{"name":"openFee_","type":"uint256","internalType":"uint256"},{"name":"treasury_","type":"address","internalType":"address"},{"name":"keyValuePairs_","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"COMMIT_DOMAIN","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"CONFIDENCE_GRID_BPS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MAX_COMMITTEE","inputs":[],"outputs":[{"name":"","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"MAX_CONFIDENCE_BPS","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"MAX_VOTING_WINDOW","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"MIN_VOTING_WINDOW","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"VERDICT_DOMAIN","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"bondOf","inputs":[{"name":"who","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"claimReward","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"commitDigest","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"},{"name":"vote","type":"uint8","internalType":"uint8"},{"name":"confidenceBucket","type":"uint16","internalType":"uint16"},{"name":"evidenceHash","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"commitVerdict","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"commit","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"consensusHash","inputs":[{"name":"modelSpecHash","type":"bytes32","internalType":"bytes32"},{"name":"vote","type":"uint8","internalType":"uint8"},{"name":"confidenceBucket","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"pure"},{"type":"function","name":"consensusPreimage","inputs":[{"name":"modelSpecHash","type":"bytes32","internalType":"bytes32"},{"name":"vote","type":"uint8","internalType":"uint8"},{"name":"confidenceBucket","type":"uint16","internalType":"uint16"}],"outputs":[{"name":"","type":"bytes","internalType":"bytes"}],"stateMutability":"pure"},{"type":"function","name":"deploymentBlock","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deregister","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deregisterCooldown","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"getCanonicalVerdict","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"settled","type":"bool","internalType":"bool"},{"name":"vote","type":"uint8","internalType":"enum IAIGovernor.Vote"},{"name":"confidenceBucket","type":"uint16","internalType":"uint16"},{"name":"agreeCount","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"getKnob","inputs":[{"name":"modelSpecHash","type":"bytes32","internalType":"bytes32"},{"name":"key","type":"string","internalType":"string"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getThought","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IAIGovernor.Thought","components":[{"name":"modelSpecHash","type":"bytes32","internalType":"bytes32"},{"name":"promptHash","type":"bytes32","internalType":"bytes32"},{"name":"evidenceHash","type":"bytes32","internalType":"bytes32"},{"name":"n","type":"uint8","internalType":"uint8"},{"name":"threshold","type":"uint8","internalType":"uint8"},{"name":"openedAt","type":"uint64","internalType":"uint64"},{"name":"deadline","type":"uint64","internalType":"uint64"},{"name":"opener","type":"address","internalType":"address"},{"name":"status","type":"uint8","internalType":"enum IAIGovernor.Status"},{"name":"submissionCount","type":"uint8","internalType":"uint8"},{"name":"knobKey","type":"string","internalType":"string"},{"name":"canonicalVote","type":"uint8","internalType":"enum IAIGovernor.Vote"},{"name":"canonicalBucket","type":"uint16","internalType":"uint16"},{"name":"agreeCount","type":"uint8","internalType":"uint8"},{"name":"evidenceRoot","type":"bytes32","internalType":"bytes32"},{"name":"commitReveal","type":"bool","internalType":"bool"},{"name":"commitDeadline","type":"uint64","internalType":"uint64"},{"name":"revealDeadline","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getVerdict","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple","internalType":"struct IAIGovernor.Verdict","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"vote","type":"uint8","internalType":"enum IAIGovernor.Vote"},{"name":"confidenceBucket","type":"uint16","internalType":"uint16"},{"name":"evidenceHash","type":"bytes32","internalType":"bytes32"},{"name":"submittedAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"getVerdicts","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IAIGovernor.Verdict[]","components":[{"name":"operator","type":"address","internalType":"address"},{"name":"vote","type":"uint8","internalType":"enum IAIGovernor.Vote"},{"name":"confidenceBucket","type":"uint16","internalType":"uint16"},{"name":"evidenceHash","type":"bytes32","internalType":"bytes32"},{"name":"submittedAt","type":"uint64","internalType":"uint64"}]}],"stateMutability":"view"},{"type":"function","name":"isOperator","inputs":[{"name":"who","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"keyValuePairs","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IKeyValuePairsV1"}],"stateMutability":"view"},{"type":"function","name":"minBond","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openFee","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"openThought","inputs":[{"name":"modelSpecHash","type":"bytes32","internalType":"bytes32"},{"name":"promptHash","type":"bytes32","internalType":"bytes32"},{"name":"evidenceHash","type":"bytes32","internalType":"bytes32"},{"name":"n","type":"uint8","internalType":"uint8"},{"name":"threshold","type":"uint8","internalType":"uint8"},{"name":"votingWindow","type":"uint64","internalType":"uint64"},{"name":"knobKey","type":"string","internalType":"string"}],"outputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"openThoughtCommitReveal","inputs":[{"name":"modelSpecHash","type":"bytes32","internalType":"bytes32"},{"name":"promptHash","type":"bytes32","internalType":"bytes32"},{"name":"evidenceHash","type":"bytes32","internalType":"bytes32"},{"name":"n","type":"uint8","internalType":"uint8"},{"name":"threshold","type":"uint8","internalType":"uint8"},{"name":"commitWindow","type":"uint64","internalType":"uint64"},{"name":"revealWindow","type":"uint64","internalType":"uint64"},{"name":"knobKey","type":"string","internalType":"string"}],"outputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"operatorCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"operatorSince","inputs":[{"name":"who","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"registerOperator","inputs":[],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"revealVerdict","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"vote","type":"uint8","internalType":"uint8"},{"name":"confidenceBucket","type":"uint16","internalType":"uint16"},{"name":"evidenceHash","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"bytes32","internalType":"bytes32"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"rewardOf","inputs":[{"name":"who","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"rewardPerThought","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"settle","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"submitVerdict","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"vote","type":"uint8","internalType":"uint8"},{"name":"confidenceBucket","type":"uint16","internalType":"uint16"},{"name":"evidenceHash","type":"bytes32","internalType":"bytes32"},{"name":"sig","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId_","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"taskCount","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"treasury","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"verdictDigest","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"},{"name":"modelSpecHash","type":"bytes32","internalType":"bytes32"},{"name":"vote","type":"uint8","internalType":"uint8"},{"name":"confidenceBucket","type":"uint16","internalType":"uint16"},{"name":"evidenceHash","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"version","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"pure"},{"type":"function","name":"withdrawBond","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"BondWithdrawn","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"KnobSet","inputs":[{"name":"modelSpecHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"value","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"OperatorDeregisterRequested","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"withdrawableAt","type":"uint64","indexed":false,"internalType":"uint64"}],"anonymous":false},{"type":"event","name":"OperatorRegistered","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"bond","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RewardAccrued","inputs":[{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ThoughtOpened","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"modelSpecHash","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"promptHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"evidenceHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"n","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"threshold","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"knobKey","type":"string","indexed":false,"internalType":"string"},{"name":"opener","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"ThoughtSettled","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"vote","type":"uint8","indexed":true,"internalType":"uint8"},{"name":"confidenceBucket","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"agreeCount","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"submissionCount","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"evidenceRoot","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"agreeingOperators","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"VerdictCommitted","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"commit","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"VerdictDistribution","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"consensusKeys","type":"bytes32[]","indexed":false,"internalType":"bytes32[]"},{"name":"counts","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"VerdictSubmitted","inputs":[{"name":"taskId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"vote","type":"uint8","indexed":false,"internalType":"uint8"},{"name":"confidenceBucket","type":"uint16","indexed":false,"internalType":"uint16"},{"name":"evidenceHash","type":"bytes32","indexed":false,"internalType":"bytes32"},{"name":"consensusHash","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"error","name":"AlreadyCommitted","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadyRegistered","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"AlreadySettled","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"AlreadyVoted","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"BadCommitRevealWindow","inputs":[{"name":"commitWindow","type":"uint64","internalType":"uint64"},{"name":"revealWindow","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"BadCommitteeSize","inputs":[{"name":"n","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"BadConfidenceBucket","inputs":[{"name":"bucket","type":"uint16","internalType":"uint16"}]},{"type":"error","name":"BadThreshold","inputs":[{"name":"n","type":"uint8","internalType":"uint8"},{"name":"threshold","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"BadVotingWindow","inputs":[{"name":"votingWindow","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"BondTooLow","inputs":[{"name":"sent","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CommitClosed","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"CommitMismatch","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"DeploymentBlockAlreadySet","inputs":[]},{"type":"error","name":"DeregisterCooldownActive","inputs":[{"name":"withdrawableAt","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"ECDSAInvalidSignature","inputs":[]},{"type":"error","name":"ECDSAInvalidSignatureLength","inputs":[{"name":"length","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ECDSAInvalidSignatureS","inputs":[{"name":"s","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"EmptyCommit","inputs":[]},{"type":"error","name":"EmptyKnobKey","inputs":[]},{"type":"error","name":"InvalidVote","inputs":[{"name":"vote","type":"uint8","internalType":"uint8"}]},{"type":"error","name":"NoBondToWithdraw","inputs":[]},{"type":"error","name":"NotBonded","inputs":[{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"NotCommitReveal","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"NotCommitted","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"operator","type":"address","internalType":"address"}]},{"type":"error","name":"NothingToWithdraw","inputs":[]},{"type":"error","name":"OpenerCannotVote","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"opener","type":"address","internalType":"address"}]},{"type":"error","name":"OpenerIsTreasury","inputs":[{"name":"opener","type":"address","internalType":"address"}]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"RevealClosed","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"RevealNotOpen","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"SettleTooEarly","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint64","internalType":"uint64"}]},{"type":"error","name":"SignerMismatch","inputs":[{"name":"recovered","type":"address","internalType":"address"},{"name":"sender","type":"address","internalType":"address"}]},{"type":"error","name":"TaskFull","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"TaskNotOpen","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UnknownTask","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"UseCommitReveal","inputs":[{"name":"taskId","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"WrongOpenPayment","inputs":[{"name":"sent","type":"uint256","internalType":"uint256"},{"name":"required","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"ZeroModelSpec","inputs":[]}],"bytecode":{"object":"0x6101603461026b57601f61376c38819003918201601f19168301916001600160401b0383118484101761026f5780849260c09460405283398101031261026b57805160208201519091906001600160401b038116810361026b57604082015160608301519161007c60a061007560808701610283565b9501610283565b4360805260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055946001600160a01b0385168015801590610263575b1561021e5730146101d95780156101945760a05260c05260e05261010052610120526001600160a01b0316610140526040516134d490816102988239608051816111ec015260a0518181816111b2015281816114b70152613205015260c051818181610e710152818161130201526118dc015260e051818181610306015281816106180152818161099d0152818161217b01526126a10152610100518181816105f60152818161097b0152610c0f0152610120518181816105c50152818161094a01526113be01526101405181818161146901526123c00152f35b60405162461bcd60e51b815260206004820152601360248201527f6d696e426f6e64206d757374206265203e2030000000000000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601760248201527f74726561737572792063616e6e6f742062652073656c660000000000000000006044820152606490fd5b60405162461bcd60e51b815260206004820152601660248201527f6f70656e466565206e65656473207472656173757279000000000000000000006044820152606490fd5b5084156100b9565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b51906001600160a01b038216820361026b5756fe60a0806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611a8d575080630299afbd14611a715780630e8f9ad01461190057806312eb5c16146118bd5780631cf5f212146115f85780631d62ebd9146115c05780631da6c894146115795780632acde09814611498578063447a7a851461145457806354fd4d50146114395780635718c8cb146113ed57806361d027b3146113a957806366eb9cec146112b157806368445fd3146112905780636d70f7ae1461126357806372d2b6c01461122b5780637c6f31581461120f57806382100e3f146111d5578063831518b71461119b57806386560f3c146110135780638991d35414610ff75780638c1f771314610f7b5780638dd5c0d614610f605780638df8280014610f44578063ae865ce014610edc578063aff5edb114610e28578063aff9443814610e0b578063b0b7619514610dc4578063b242a90114610c4f578063b6cb58a514610c32578063b784507314610bf8578063b88a802f14610b45578063bc3a2cee1461089b578063c86bf2031461087f578063dafc34fc14610845578063dbd3f86b146104f0578063e5039ae8146104b6578063e942b8bb14610329578063ea5f58a5146102ef578063fae09c4c146102945763fbbbc0ba146101df575f80fd5b34610290576040366003190112610290576004356101fb611bb6565b90610204612939565b5061020e81612d27565b505f52600360205260405f209060018060a01b03165f5260205260a060405f206001600160401b0360026040519261024584611cbb565b61ffff8154600180881b038116865261026660ff82891c1660208801611dea565b60a81c16604085015260018101546060850152015416608082015261028e6040518092611bfb565bf35b5f80fd5b34610290576040366003190112610290576024356001600160401b038111610290576102d16102ca6102d9923690600401611c5e565b3691612975565b600435613245565b5f526008602052602060405f2054604051908152f35b34610290575f3660031901126102905760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102905760a036600319011261029057600435610345611b10565b61034d611b40565b606435916084356001600160401b03811161029057610370903690600401611c5e565b61037b869296612d27565b9560ff6008880154166104a3576004870154600160ff8260a01c1661039f81611b51565b036104905760ff60038901541660ff8260a81c16101561047d575f84815260046020908152604080832033845290915290205460ff16610466576001600160a01b0316331461044f576104199161040a610410926104028989898d54338b613075565b923691612975565b9061335b565b90929192613395565b6001600160a01b0316943386036104385761043695503391612e0f565b005b856377f0734360e11b5f526004523360245260445ffd5b82637b7d685560e01b5f526004523360245260445ffd5b836304f9da6360e01b5f526004523360245260445ffd5b83630238291160e21b5f5260045260245ffd5b83639d6bda0b60e01b5f5260045260245ffd5b826338f7b4db60e11b5f5260045260245ffd5b34610290575f3660031901126102905760206040517f3bc508a0791f58efa082135c049a13a84aa17126250fd289e9e974871a90e3708152f35b6101003660031901126102905760243560043560443561050e611b20565b610516611b30565b9061051f611c48565b9460c435936001600160401b038516948581036102905760e4356001600160401b03811161029057610555903690600401611c5e565b9188156108365760ff8616908115801561082c575b6108195760ff61057f607f8960011c16612963565b169860ff8916998a108015610810575b6107f9576001600160401b038c16610e10811080156107ed575b80156107e2575b80156107d6575b6107c157505083156107b2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633811461079f577f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000006106418382611df6565b340361077f575081610760575b5050426001600160401b03169a610665908c611e03565b906106709082611e03565b6002549b8c9a6040519461068386611c8b565b8d86528960208701528860408701526060860152608085015260a08401526001600160401b0316908160c08401523360e084015261010083016001905261012083015f9052366106d4908686612975565b6101408401525f610160840181905261018084018190526101a084018190526101c084015260016101e08401526001600160401b031661020083015261022082015261071f906129ab565b60405195869533946107319688612cd3565b037f102d9bb5f7befebe66b494cbc3f780e43b38bfbb6a331e759c7d9fc5611e3f9e91a3604051908152602090f35b5f52600760205261077660405f20918254611df6565b90558b8061064e565b8261078991611df6565b6325e672b760e21b5f523460045260245260445ffd5b633ac90f1960e11b5f523360045260245ffd5b63680ad33360e01b5f5260045ffd5b63440c889360e01b5f5260045260245260445ffd5b5062278d0082116105b7565b50610e1082106105b0565b5062278d0081116105a9565b898363825d848960e01b5f5260045260245260445ffd5b50828a1161058f565b5063e21fe07560e01b5f5260045260245ffd5b506040821161056a565b63ca239d2560e01b5f5260045ffd5b34610290575f3660031901126102905760206040517f0c578d46b25c72738e526644e19909fc3e5561532154c246fb4876115bf47a8d8152f35b34610290575f3660031901126102905760206040516127108152f35b60e0366003190112610290576044356024356004356108b8611b20565b6108c0611b30565b906108c9611c48565b9360c4356001600160401b038111610290576108e9903690600401611c5e565b9085156108365760ff84169485158015610b3b575b610b285760ff610913607f8760011c16612963565b169560ff82169687108015610b1f575b610b08576001600160401b038916610e1081108015610afc575b610aea575083156107b2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633811461079f577f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000006109c68382611df6565b340361077f575092610ab18a6001600160401b0360209e9895857f102d9bb5f7befebe66b494cbc3f780e43b38bfbb6a331e759c7d9fc5611e3f9e9c9b98610abf9a97610aca575b50506002549e8f9d610a238442169283611e03565b9260405195610a3187611c8b565b865260208b908701528c60408701526060860152608085015260a08401521660c08201523360e082015260016101008201525f610120820152610a75368686612975565b6101408201525f6101608201525f6101808201525f6101a08201525f6101c08201525f6101e08201525f6102008201525f6102208201526129ab565b604051968796339588612cd3565b0390a3604051908152f35b5f52602060079052610ae160405f20918254611df6565b90555f80610a0e565b63184c33a960e31b5f5260045260245ffd5b5062278d00811161093d565b869063825d848960e01b5f5260045260245260445ffd5b50808711610923565b8563e21fe07560e01b5f5260045260245ffd5b50604086116108fe565b34610290575f36600319011261029057610b5d613105565b335f52600760205260405f20548015610be957335f5260076020525f6040812055610b975f80808085335af1610b91611e3e565b50611e6d565b6040519081527f0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b45560203392a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b630686827b60e51b5f5260045ffd5b34610290575f3660031901126102905760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610290575f366003190112610290576020600254604051908152f35b3461029057602036600319011261029057600435610c6c81612d27565b50805f52600560205260405f20805490610c8582611eab565b92610c936040519485611cf1565b828452601f19610ca284611eab565b015f5b818110610dad5750505f5b838110610d0757846040518091602082016020835281518091526020604084019201905f5b818110610ce3575050500390f35b91935091602060a082610cf96001948851611bfb565b019401910191849392610cd5565b600190825f52600360205260405f20610d208286611ef4565b848060a01b0391549060031b1c16838060a01b03165f5260205260405f206001600160401b03600260405192610d5584611cbb565b61ffff8154878060a01b0381168652610d7760ff8260a01c1660208801611dea565b60a81c1660408501528581015460608501520154166080820152610d9b8288611f2a565b52610da68187611f2a565b5001610cb0565b602090610db8612939565b82828901015201610ca5565b34610290576020366003190112610290576001600160a01b03610de5611ba0565b165f52600160205260206001600160401b03600160405f20015460401c16604051908152f35b34610290575f36600319011261029057602060405162278d008152f35b34610290575f36600319011261029057335f52600160205260405f20805415610ecd57600101805467ffffffffffffffff1916426001600160401b0316908117909155610e96907f000000000000000000000000000000000000000000000000000000000000000090611e03565b6001600160401b03604051911681527ff3464e05531db2a7b1db48a415eb07858e653d1c9ccca97fc6d169a9af8886ed60203392a2005b634555262b60e01b5f5260045ffd5b34610290576020366003190112610290576080610efa600435612d27565b60ff600681600484015460a01c1692610f1284611b51565b0154600260405193148352610f2c60208401838316611b93565b61ffff8160081c16604084015260181c166060820152f35b3461029057602036600319011261029057610436600435611f92565b34610290575f36600319011261029057602060405160408152f35b3461029057610ff3610fd1610fdf610f9236611bcc565b60408051602081019490945260f89290921b6001600160f81b0319169183019190915260f01b6001600160f01b03191660418201529182906043820190565b03601f198101835282611cf1565b604051918291602083526020830190611b6f565b0390f35b34610290575f3660031901126102905760206040516103e88152f35b346102905760403660031901126102905760243560043561103381612d27565b60088101549060ff82161561118857600481015491600160ff8460a01c1661105a81611b51565b036104905784156111795760081c6001600160401b0316421161116657600360ff9101541660ff8260a81c161015611153576001600160a01b0316331461113d576110a4336131a4565b1561112a575f81815260066020908152604080832033845290915290205461111457805f52600660205260405f2060018060a01b0333165f526020528160405f20556040519182527f4b6fe217d568d49be7f9998e095f21b520ad4e90d39baeb21acb1bdee520775160203393a3005b63d42c398560e01b5f526004523360245260445ffd5b630b97d11160e01b5f523360045260245ffd5b637b7d685560e01b5f526004523360245260445ffd5b50630238291160e21b5f5260045260245ffd5b82636f51b84160e01b5f5260045260245ffd5b6337b5b73d60e01b5f5260045ffd5b82634cd941bd60e01b5f5260045260245ffd5b34610290575f3660031901126102905760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610290575f3660031901126102905760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610290575f3660031901126102905760205f54604051908152f35b34610290576020366003190112610290576001600160a01b0361124c611ba0565b165f526001602052602060405f2054604051908152f35b34610290576020366003190112610290576020611286611281611ba0565b6131a4565b6040519015158152f35b346102905760206112a96112a336611bcc565b91613163565b604051908152f35b34610290575f366003190112610290576112c9613105565b335f52600160205260405f208054908115610ecd5760018101906001600160401b038254168015611396576113276001600160401b03917f000000000000000000000000000000000000000000000000000000000000000090611e03565b1680421061138457505f90556001600160401b031981541690555f548061135d575b50610b975f80808085335af1610b91611e3e565b5f198101908111611370575f5581611349565b634e487b7160e01b5f52601160045260245ffd5b6317adffc760e01b5f5260045260245ffd5b6317adffc760e01b5f525f60045260245ffd5b34610290575f366003190112610290576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102905760c036600319011261029057611406611bb6565b60443560ff81168103610290576064359061ffff82168203610290576020926112a99260a4359260843592600435612d79565b34610290575f36600319011261029057602060405160018152f35b34610290575f366003190112610290576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f36600319011261029057335f52600160205260405f208054611566577f00000000000000000000000000000000000000000000000000000000000000009081341061155057348155600190810180546fffffffffffffffffffffffffffffffff19164360401b6fffffffffffffffff0000000000000000161790555f54908101908110611370575f556040513481527fbc11617e575d658c74e921c8df22f8e48566072fa78145a6cfe18420bf8d0c4e60203392a2005b50620155b560e01b5f523460045260245260445ffd5b6345ed80e960e01b5f523360045260245ffd5b346102905760c036600319011261029057611592611bb6565b61159a611b20565b6084359161ffff83168303610290576020926112a99260a4359260443590600435613075565b34610290576020366003190112610290576001600160a01b036115e1611ba0565b165f526007602052602060405f2054604051908152f35b34610290576020366003190112610290575f61022060405161161981611c8b565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015260606101408201528261016082015282610180820152826101a0820152826101c0820152826101e0820152826102008201520152611693600435612d27565b6001600160401b036008604051926116aa84611c8b565b80548452600181015460208501526002810154604085015282600382015460ff8116606087015260ff81851c166080870152818160101c1660a087015260501c1660c085015260ff600482015460018060a01b03811660e0870152818160a01c1661171481611b51565b61010087015260a81c1661012085015261173060058201611d4a565b61014085015260ff600682015461174d8282166101608801611dea565b61ffff81851c1661018087015260181c166101a085015260078101546101c0850152015460ff811615156101e0840152818160081c1661020084015260481c1661022082015260405180916020825280516020830152602081015160408301526040810151606083015260ff606082015116608083015260ff60808201511660a08301526001600160401b0360a08201511660c08301526001600160401b0360c08201511660e083015260018060a01b0360e08201511661010083015261010081015161181981611b51565b61012083015260ff610120820151166101408301526001600160401b03610220611856610140840151610240610160870152610260860190611b6f565b9261186b610160820151610180870190611b93565b61ffff610180820151166101a086015260ff6101a0820151166101c08601526101c08101516101e08601526101e081015115156102008601528261020082015116828601520151166102408301520390f35b34610290575f3660031901126102905760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102905760a03660031901126102905760043561191c611b10565b611924611b40565b6064359161193184612d27565b600881015460ff811615611a5e57600160ff600484015460a01c1661195581611b51565b03611a4b576001600160401b038160081c16421115611a385760481c6001600160401b03164211611a25575f8581526006602090815260408083203384529091529020548015611a0e575f86815260046020908152604080832033845290915290205460ff166119f7576119cf608435868686338b612d79565b036119e05793610436943391612e0f565b84630a67d0e360e11b5f526004523360245260445ffd5b856304f9da6360e01b5f526004523360245260445ffd5b8563809c4a1160e01b5f526004523360245260445ffd5b846368d6219f60e11b5f5260045260245ffd5b8563636208bd60e11b5f5260045260245ffd5b85639d6bda0b60e01b5f5260045260245ffd5b85634cd941bd60e01b5f5260045260245ffd5b34610290575f366003190112610290576020604051610e108152f35b34610290576020366003190112610290576004359063ffffffff60e01b8216809203610290576020916329673f0560e11b8114908115611aff575b8115611aee575b8115611add575b5015158152f35b6301ffc9a760e01b14905083611ad6565b6382100e3f60e01b81149150611acf565b63054fd4d560e41b81149150611ac8565b6024359060ff8216820361029057565b6064359060ff8216820361029057565b6084359060ff8216820361029057565b6044359061ffff8216820361029057565b60041115611b5b57565b634e487b7160e01b5f52602160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906006821015611b5b5752565b600435906001600160a01b038216820361029057565b602435906001600160a01b038216820361029057565b6060906003190112610290576004359060243560ff81168103610290579060443561ffff811681036102905790565b80516001600160a01b031682526020808201516080926001600160401b03928492611c2891870190611b93565b61ffff604082015116604086015260608101516060860152015116910152565b60a435906001600160401b038216820361029057565b9181601f84011215610290578235916001600160401b038311610290576020838186019501011161029057565b61024081019081106001600160401b03821117611ca757604052565b634e487b7160e01b5f52604160045260245ffd5b60a081019081106001600160401b03821117611ca757604052565b604081019081106001600160401b03821117611ca757604052565b90601f801991011681019081106001600160401b03821117611ca757604052565b90600182811c92168015611d40575b6020831014611d2c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611d21565b9060405191825f825492611d5d84611d12565b8084529360018116908115611dc85750600114611d84575b50611d8292500383611cf1565b565b90505f9291925260205f20905f915b818310611dac575050906020611d82928201015f611d75565b6020919350806001915483858901015201910190918492611d93565b905060209250611d8294915060ff191682840152151560051b8201015f611d75565b6006821015611b5b5752565b9190820180921161137057565b906001600160401b03809116911601906001600160401b03821161137057565b6001600160401b038111611ca757601f01601f191660200190565b3d15611e68573d90611e4f82611e23565b91611e5d6040519384611cf1565b82523d5f602084013e565b606090565b15611e7457565b60405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606490fd5b6001600160401b038111611ca75760051b60200190565b90611ecc82611eab565b611ed96040519182611cf1565b8281528092611eea601f1991611eab565b0190602036910137565b8054821015611f09575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b805115611f095760200190565b8051821015611f095760209160051b010190565b90602080835192838152019201905f5b818110611f5b5750505090565b82516001600160a01b0316845260209384019390920191600101611f4e565b906006811015611b5b5760ff80198354169116179055565b611f9b81612d27565b9060048201918254905f90600160ff8460a01c16611fb881611b51565b0361292657835f52600560205260405f20948554926003830154926001600160401b038460501c168042106129105750611ff185611ec2565b608052611ffd85611ec2565b955f965f95895f995f5b8d8b82106127b157505061201a81611ec2565b9061202481611ec2565b945f5b82811061276a5750505060405190604082016040835281518091526020606084019201905f5b818110612751575050508181036020830152602080865192838152019501905f5b81811061273557505050807f299a29415fb712a2fb9f9da43b8130ce578c51d1aabef0e08f7bd5a3bf2737809160ff950390a260081c1660ff88161061265157506120bb84608051611f2a565b5194600660ff8760101c161015611b5b576120d860ff8816611ec2565b985f955f905f5b848110612586575050855460ff60a01b1916600160a11b178655506121619160ff9150612142896006860161211a60108c901c861682611f7a565b805463ffffff00191662ffff0060088d901b161760189290921b63ff00000016919091179055565b855460ff60a81b1916911660a881901b60ff60a81b1691909117909455565b8360078201555f90600160ff8760101c1614612337575b507f00000000000000000000000000000000000000000000000000000000000000008061221d575b50612209575060ff80937fb23602630c4f4e464e4a430843d49e335e7a47737fc8e6d10d18d332c219007c95936122049360405196879661ffff851688521660208701526040860152606085015260a0608085015260101c169560a0830190611f3e565b0390a3565b634e487b7160e01b81526021600452602490fd5b60ff8716156123235760ff8716810460ff8816810281810460ff8a16148215171561230f5782039182116122fb57835b60ff8916811061225e5750506121a0565b600190806122f1578a612272855b85611df6565b8d81612282575b5050500161224d565b60207f5cfc0db0dadcda3ffeb594bd4216deeac8002fd7c1362f0c524fd097eaa1f46591868060a01b036122b68783611f2a565b51168b526007825260408b206122cd858254611df6565b90556122df86888060a01b0392611f2a565b511692604051908152a38a5f8d612279565b8a6122728761226c565b634e487b7160e01b84526011600452602484fd5b634e487b7160e01b85526011600452602485fd5b634e487b7160e01b83526012600452602483fd5b90505f9060ff8660101c1662ffff008760081b1663ff0000008960181b161717612365600583549301611d4a565b916123708382613245565b5f5260086020528160405f205589817fbab2e35ee3e9bb089e8206ce8fd52f61bd427ba28175c9b88b2f25a31b56e66460405160408152806123b56040820189611b6f565b8760208301520390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691826123f7575b505050612178565b6040938451926124078685611cf1565b60018452601f1986015f5b8181106125625750509161246f600161247493602080612432819861327b565b928b5198848a9551918291018487015e840190601d60f91b83830152805192839101602183015e01015f838201520301601f198101855284611cf1565b61327b565b84519161248083611cd6565b8252602082015261249082611f1d565b5261249a81611f1d565b50813b1561029057918051928391630c255e6960e31b8352602483016020600485015282518091526044840191602060448360051b8701019401925f915b83831061251357505050505091815f818195039262030d40f16124fe575b8080806123ef565b61250b9192505f90611cf1565b5f905f6124f6565b9193955091936020806125506001936043198c820301875289519083612540835189845289840190611b6f565b9201519084818403910152611b6f565b970193019301909287959492936124d8565b602090885161257081611cd6565b6060815260608382015282828901015201612412565b8c6125918286611ef4565b905460039190911b1c6001600160a01b03166125ac816131dd565b6125bb575b50506001016120df565b8d5f52600360205260405f2060018060a01b0382165f5260205260405f20916125f3835460ff61ffff8260a81c169160a01c16613229565b6125ff86608051611f2a565b511461260d575b91506125b1565b600193959b919284936126218e8694611f2a565b5201546040519060208201928352604082015260408152612643606082611cf1565b519020990192905f8e612606565b61ffff60a01b191660a886901b60ff60a81b1617600360a01b178355505f96507fb23602630c4f4e464e4a430843d49e335e7a47737fc8e6d10d18d332c219007c94505060ff92909216919050547f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031681612716575b5050604051906126e1602083611cf1565b84825284368137612204604051928392878452876020850152604084015286606084015260a0608084015260a0830190611f3e565b8552600760205261272c60408620918254611df6565b90555f806126d0565b825160ff1687526020968701968f95509092019160010161206e565b825184528f95506020938401939092019160010161204d565b60019192939596945061277f81608051611f2a565b5161278a8288611f2a565b5260ff6127978285611f2a565b51166127a38287611f2a565b520191908d93959492612027565b816127da92959694506127c391611ef4565b905460039190911b1c6001600160a01b03166131dd565b15612907578b5f5260036020528c6127f68460405f2092611ef4565b905460039190911b1c6001600160a01b03165f90815260209190915260409020546128309060a881901c61ffff169060a01c60ff16613229565b5f5b8281106128e7575b808303612887575061284e82608051611f2a565b52600161285b8284611f2a565b5260ff8b1660011161287b575b6001809101925b015b918b919392612007565b60019a50975087612868565b905060ff60018161289b8487989698611f2a565b511601166128a98285611f2a565b5260ff6128b68285611f2a565b511660ff8d16106128cb575b5060019061286f565b9a509750600160ff6128dd8c84611f2a565b51169a98906128c2565b816128f482608051611f2a565b511461290257600101612832565b61283a565b91600101612871565b876317e7aa9960e21b5f5260045260245260445ffd5b836347f629af60e11b5f5260045260245ffd5b6040519061294682611cbb565b5f6080838281528260208201528260408201528260608201520152565b60ff60019116019060ff821161137057565b92919261298182611e23565b9161298f6040519384611cf1565b829481845281830111610290578281602093845f960137010152565b600254600160401b811015611ca75760018101600255600254811015611f095760025f526009027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace018151815560208201516001820155604082015160028201556003810160ff606084015116815461ff00608086015160081b1669ffffffffffffffff000060a087015160101b16916001600160401b0360501b60c088015160501b16936001600160401b0360501b199169ffffffffffffffffffff191617161717179055612ae96004820160018060a01b0360018060a01b0360e086015116166001600160601b0360a01b825416178155610100840151612aad81611b51565b612ab681611b51565b815461012086015161ffff60a01b1990911660a09290921b60ff60a01b169190911760a89190911b60ff60a81b16179055565b600581016101408301518051906001600160401b038211611ca7578190612b108454611d12565b601f8111612c83575b50602090601f8311600114612c20575f92612c15575b50508160011b915f199060031b1c19161790555b60068101906101608301516006811015611b5b5782612b67612ba392600895611f7a565b610180850151815462ffff00191660089190911b62ffff00161781556101a0850151815463ff000000191660189190911b63ff00000016179055565b6101c0830151600782015501906101e0810151151560ff8019845416911515161782556102008101519068ffffffffffffffff0070ffffffffffffffff000000000000000000610220855493015160481b169260081b169070ffffffffffffffffffffffffffffffff00191617179055565b015190505f80612b2f565b5f8581528281209350601f198516905b818110612c6b5750908460019594939210612c53575b505050811b019055612b43565b01515f1960f88460031b161c191690555f8080612c46565b92936020600181928786015181550195019301612c30565b909150835f5260205f20601f840160051c81019160208510612cc9575b90601f859493920160051c01905b818110612cbb5750612b19565b5f8155849350600101612cae565b9091508190612ca0565b959260e09460ff8092869560a099959c9b9c8b5260208b015216604089015216606087015260c060808701528160c0870152838601375f828286010152601f801991011683010193600180831b0316910152565b600254811015612d6757600254811015611f095760025f526009027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0190565b634899e04360e01b5f5260045260245ffd5b94929093916040519460208601967f3bc508a0791f58efa082135c049a13a84aa17126250fd289e9e974871a90e37088524660408801523060601b606088015260748701526001600160601b03199060601b16609486015260ff60f81b9060f81b1660a885015261ffff60f01b9060f01b1660a984015260ab83015260cb82015260cb8152612e0960eb82611cf1565b51902090565b939194909260ff81169160018310158061306a575b156130575761ffff84169161271083111580613047575b1561303457612e49886131a4565b15613016575f8781526004602090815260408083206001600160a01b038c1684529091529020805460ff191660011790556006841015611b5b5760405197612e9089611cbb565b6001600160a01b03168089529760208101612eab8682611dea565b6040820190858252606083019185835260808401916001600160401b03421683528b5f52600360205260405f208d5f5260205260405f209460018060a01b039060018060a01b03905116166001600160601b0360a01b86541617855551916006831015611b5b576001600160401b0393600293859387549061ffff60a81b905160a81b169160ff60a01b9060a01b169062ffffff60a01b1916171786555160018601555116920191166001600160401b0319825416179055865f52600560205260405f2094855491600160401b831015611ca7577f6153ebbd8f8736ec35adfad2b88f302ae82266eee08bcd3f8858abd32b10a71697612fb6846080996001612ffd97018155611ef4565b81546001600160a01b0360039290921b91821b1916908d901b17905560048101805460ff60a81b19811660a891821c60ff1660010190911b60ff60a81b1617905554613163565b91604051938452602084015260408301526060820152a3565b630b97d11160e01b5f9081526001600160a01b038916600452602490fd5b82634627570960e11b5f5260045260245ffd5b5061ffff6103e884061615612e3b565b8263505edff960e11b5f5260045260245ffd5b506005831115612e24565b94919390926040519460208601967f0c578d46b25c72738e526644e19909fc3e5561532154c246fb4876115bf47a8d88524660408801523060601b60608801526074870152609486015260ff60f81b9060f81b1660b485015261ffff60f01b9060f01b1660b584015260b78301526001600160601b03199060601b1660d782015260cb8152612e0960eb82611cf1565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146131545760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b604080516020810192835260f89390931b6001600160f81b0319169083015260f09290921b6001600160f01b0319166041820152612e098160438101610fd1565b6131ad816131dd565b90816131b7575090565b905060018060a01b03165f5260016020526001600160401b03600160405f200154161590565b6001600160a01b03165f908152600160205260409020548015159081613201575090565b90507f0000000000000000000000000000000000000000000000000000000000000000111590565b906006821015611b5b5761ffff62ff000091169160101b161790565b90612e09610fd191604051928391602083019586526040808401526060830190611b6f565b908151811015611f09570160200190565b6040519061328a608083611cf1565b60428252602082016060368237825115611f095760309053815160011015611f0957607860218301535f5b602081106132c257505090565b81811a9060ff8260041c166010811015611f09578160011b928284046002148315171561137057836002018060021161137057600f926f181899199a1a9b1b9c1cb0b131b232b360811b901a90613319908861326a565b5316916010831015611f095760030180600311611370576001926f181899199a1a9b1b9c1cb0b131b232b360811b901a90613354908661326a565b53016132b5565b815191906041830361338b576133849250602082015190606060408401519301515f1a90613411565b9192909190565b50505f9160029190565b61339e81611b51565b806133a7575050565b6133b081611b51565b600181036133c75763f645eedf60e01b5f5260045ffd5b6133d081611b51565b600281036133eb575063fce698f760e01b5f5260045260245ffd5b6003906133f781611b51565b146133ff5750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613493579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15613488575f516001600160a01b0381161561347e57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fea2646970667358221220751bf5b17ab5a76d34897ab92157e67cfb046bc8e4701b178dfcaf13ba445ba364736f6c634300081f0033","sourceMap":"2947:42683:10:-:0;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;1942:12:27;2947:42683:10;1923:31:27;2947:42683:10;1505:66:57;2365:1;1942:12:27;-1:-1:-1;;;;;2947:42683:10;;9137:23;;;;;:40;;-1:-1:-1;2947:42683:10;;;9243:4;9222:26;2947:42683;;9294:12;;2947:42683;;;9340:19;2947:42683;9369:40;9419:36;;9465:19;;9494:21;;-1:-1:-1;;;;;2947:42683:10;9525:48;;2947:42683;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9419:36;2947:42683;;;;;;;;;;;;;;;;;;;;;;;;;9465:19;2947:42683;;;;;;;;;;;;;;;9494:21;2947:42683;;;;;;;;;;;;;;;9525:48;2947:42683;;;;;;;;;;;;;;-1:-1:-1;;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;2947:42683:10;;;;;;;;;;;;;;;;;;;;9137:40;9164:13;;;9137:40;;2947:42683;-1:-1:-1;2947:42683:10;;;;;;-1:-1:-1;2947:42683:10;;;;;-1:-1:-1;2947:42683:10;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x60a0806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a714611a8d575080630299afbd14611a715780630e8f9ad01461190057806312eb5c16146118bd5780631cf5f212146115f85780631d62ebd9146115c05780631da6c894146115795780632acde09814611498578063447a7a851461145457806354fd4d50146114395780635718c8cb146113ed57806361d027b3146113a957806366eb9cec146112b157806368445fd3146112905780636d70f7ae1461126357806372d2b6c01461122b5780637c6f31581461120f57806382100e3f146111d5578063831518b71461119b57806386560f3c146110135780638991d35414610ff75780638c1f771314610f7b5780638dd5c0d614610f605780638df8280014610f44578063ae865ce014610edc578063aff5edb114610e28578063aff9443814610e0b578063b0b7619514610dc4578063b242a90114610c4f578063b6cb58a514610c32578063b784507314610bf8578063b88a802f14610b45578063bc3a2cee1461089b578063c86bf2031461087f578063dafc34fc14610845578063dbd3f86b146104f0578063e5039ae8146104b6578063e942b8bb14610329578063ea5f58a5146102ef578063fae09c4c146102945763fbbbc0ba146101df575f80fd5b34610290576040366003190112610290576004356101fb611bb6565b90610204612939565b5061020e81612d27565b505f52600360205260405f209060018060a01b03165f5260205260a060405f206001600160401b0360026040519261024584611cbb565b61ffff8154600180881b038116865261026660ff82891c1660208801611dea565b60a81c16604085015260018101546060850152015416608082015261028e6040518092611bfb565bf35b5f80fd5b34610290576040366003190112610290576024356001600160401b038111610290576102d16102ca6102d9923690600401611c5e565b3691612975565b600435613245565b5f526008602052602060405f2054604051908152f35b34610290575f3660031901126102905760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b346102905760a036600319011261029057600435610345611b10565b61034d611b40565b606435916084356001600160401b03811161029057610370903690600401611c5e565b61037b869296612d27565b9560ff6008880154166104a3576004870154600160ff8260a01c1661039f81611b51565b036104905760ff60038901541660ff8260a81c16101561047d575f84815260046020908152604080832033845290915290205460ff16610466576001600160a01b0316331461044f576104199161040a610410926104028989898d54338b613075565b923691612975565b9061335b565b90929192613395565b6001600160a01b0316943386036104385761043695503391612e0f565b005b856377f0734360e11b5f526004523360245260445ffd5b82637b7d685560e01b5f526004523360245260445ffd5b836304f9da6360e01b5f526004523360245260445ffd5b83630238291160e21b5f5260045260245ffd5b83639d6bda0b60e01b5f5260045260245ffd5b826338f7b4db60e11b5f5260045260245ffd5b34610290575f3660031901126102905760206040517f3bc508a0791f58efa082135c049a13a84aa17126250fd289e9e974871a90e3708152f35b6101003660031901126102905760243560043560443561050e611b20565b610516611b30565b9061051f611c48565b9460c435936001600160401b038516948581036102905760e4356001600160401b03811161029057610555903690600401611c5e565b9188156108365760ff8616908115801561082c575b6108195760ff61057f607f8960011c16612963565b169860ff8916998a108015610810575b6107f9576001600160401b038c16610e10811080156107ed575b80156107e2575b80156107d6575b6107c157505083156107b2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633811461079f577f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000006106418382611df6565b340361077f575081610760575b5050426001600160401b03169a610665908c611e03565b906106709082611e03565b6002549b8c9a6040519461068386611c8b565b8d86528960208701528860408701526060860152608085015260a08401526001600160401b0316908160c08401523360e084015261010083016001905261012083015f9052366106d4908686612975565b6101408401525f610160840181905261018084018190526101a084018190526101c084015260016101e08401526001600160401b031661020083015261022082015261071f906129ab565b60405195869533946107319688612cd3565b037f102d9bb5f7befebe66b494cbc3f780e43b38bfbb6a331e759c7d9fc5611e3f9e91a3604051908152602090f35b5f52600760205261077660405f20918254611df6565b90558b8061064e565b8261078991611df6565b6325e672b760e21b5f523460045260245260445ffd5b633ac90f1960e11b5f523360045260245ffd5b63680ad33360e01b5f5260045ffd5b63440c889360e01b5f5260045260245260445ffd5b5062278d0082116105b7565b50610e1082106105b0565b5062278d0081116105a9565b898363825d848960e01b5f5260045260245260445ffd5b50828a1161058f565b5063e21fe07560e01b5f5260045260245ffd5b506040821161056a565b63ca239d2560e01b5f5260045ffd5b34610290575f3660031901126102905760206040517f0c578d46b25c72738e526644e19909fc3e5561532154c246fb4876115bf47a8d8152f35b34610290575f3660031901126102905760206040516127108152f35b60e0366003190112610290576044356024356004356108b8611b20565b6108c0611b30565b906108c9611c48565b9360c4356001600160401b038111610290576108e9903690600401611c5e565b9085156108365760ff84169485158015610b3b575b610b285760ff610913607f8760011c16612963565b169560ff82169687108015610b1f575b610b08576001600160401b038916610e1081108015610afc575b610aea575083156107b2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633811461079f577f0000000000000000000000000000000000000000000000000000000000000000907f00000000000000000000000000000000000000000000000000000000000000006109c68382611df6565b340361077f575092610ab18a6001600160401b0360209e9895857f102d9bb5f7befebe66b494cbc3f780e43b38bfbb6a331e759c7d9fc5611e3f9e9c9b98610abf9a97610aca575b50506002549e8f9d610a238442169283611e03565b9260405195610a3187611c8b565b865260208b908701528c60408701526060860152608085015260a08401521660c08201523360e082015260016101008201525f610120820152610a75368686612975565b6101408201525f6101608201525f6101808201525f6101a08201525f6101c08201525f6101e08201525f6102008201525f6102208201526129ab565b604051968796339588612cd3565b0390a3604051908152f35b5f52602060079052610ae160405f20918254611df6565b90555f80610a0e565b63184c33a960e31b5f5260045260245ffd5b5062278d00811161093d565b869063825d848960e01b5f5260045260245260445ffd5b50808711610923565b8563e21fe07560e01b5f5260045260245ffd5b50604086116108fe565b34610290575f36600319011261029057610b5d613105565b335f52600760205260405f20548015610be957335f5260076020525f6040812055610b975f80808085335af1610b91611e3e565b50611e6d565b6040519081527f0d41118e36df44efb77a471fc49fb9c0be0406d802ef95520e9fbf606e65b45560203392a260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055005b630686827b60e51b5f5260045ffd5b34610290575f3660031901126102905760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610290575f366003190112610290576020600254604051908152f35b3461029057602036600319011261029057600435610c6c81612d27565b50805f52600560205260405f20805490610c8582611eab565b92610c936040519485611cf1565b828452601f19610ca284611eab565b015f5b818110610dad5750505f5b838110610d0757846040518091602082016020835281518091526020604084019201905f5b818110610ce3575050500390f35b91935091602060a082610cf96001948851611bfb565b019401910191849392610cd5565b600190825f52600360205260405f20610d208286611ef4565b848060a01b0391549060031b1c16838060a01b03165f5260205260405f206001600160401b03600260405192610d5584611cbb565b61ffff8154878060a01b0381168652610d7760ff8260a01c1660208801611dea565b60a81c1660408501528581015460608501520154166080820152610d9b8288611f2a565b52610da68187611f2a565b5001610cb0565b602090610db8612939565b82828901015201610ca5565b34610290576020366003190112610290576001600160a01b03610de5611ba0565b165f52600160205260206001600160401b03600160405f20015460401c16604051908152f35b34610290575f36600319011261029057602060405162278d008152f35b34610290575f36600319011261029057335f52600160205260405f20805415610ecd57600101805467ffffffffffffffff1916426001600160401b0316908117909155610e96907f000000000000000000000000000000000000000000000000000000000000000090611e03565b6001600160401b03604051911681527ff3464e05531db2a7b1db48a415eb07858e653d1c9ccca97fc6d169a9af8886ed60203392a2005b634555262b60e01b5f5260045ffd5b34610290576020366003190112610290576080610efa600435612d27565b60ff600681600484015460a01c1692610f1284611b51565b0154600260405193148352610f2c60208401838316611b93565b61ffff8160081c16604084015260181c166060820152f35b3461029057602036600319011261029057610436600435611f92565b34610290575f36600319011261029057602060405160408152f35b3461029057610ff3610fd1610fdf610f9236611bcc565b60408051602081019490945260f89290921b6001600160f81b0319169183019190915260f01b6001600160f01b03191660418201529182906043820190565b03601f198101835282611cf1565b604051918291602083526020830190611b6f565b0390f35b34610290575f3660031901126102905760206040516103e88152f35b346102905760403660031901126102905760243560043561103381612d27565b60088101549060ff82161561118857600481015491600160ff8460a01c1661105a81611b51565b036104905784156111795760081c6001600160401b0316421161116657600360ff9101541660ff8260a81c161015611153576001600160a01b0316331461113d576110a4336131a4565b1561112a575f81815260066020908152604080832033845290915290205461111457805f52600660205260405f2060018060a01b0333165f526020528160405f20556040519182527f4b6fe217d568d49be7f9998e095f21b520ad4e90d39baeb21acb1bdee520775160203393a3005b63d42c398560e01b5f526004523360245260445ffd5b630b97d11160e01b5f523360045260245ffd5b637b7d685560e01b5f526004523360245260445ffd5b50630238291160e21b5f5260045260245ffd5b82636f51b84160e01b5f5260045260245ffd5b6337b5b73d60e01b5f5260045ffd5b82634cd941bd60e01b5f5260045260245ffd5b34610290575f3660031901126102905760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610290575f3660031901126102905760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610290575f3660031901126102905760205f54604051908152f35b34610290576020366003190112610290576001600160a01b0361124c611ba0565b165f526001602052602060405f2054604051908152f35b34610290576020366003190112610290576020611286611281611ba0565b6131a4565b6040519015158152f35b346102905760206112a96112a336611bcc565b91613163565b604051908152f35b34610290575f366003190112610290576112c9613105565b335f52600160205260405f208054908115610ecd5760018101906001600160401b038254168015611396576113276001600160401b03917f000000000000000000000000000000000000000000000000000000000000000090611e03565b1680421061138457505f90556001600160401b031981541690555f548061135d575b50610b975f80808085335af1610b91611e3e565b5f198101908111611370575f5581611349565b634e487b7160e01b5f52601160045260245ffd5b6317adffc760e01b5f5260045260245ffd5b6317adffc760e01b5f525f60045260245ffd5b34610290575f366003190112610290576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346102905760c036600319011261029057611406611bb6565b60443560ff81168103610290576064359061ffff82168203610290576020926112a99260a4359260843592600435612d79565b34610290575f36600319011261029057602060405160018152f35b34610290575f366003190112610290576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b5f36600319011261029057335f52600160205260405f208054611566577f00000000000000000000000000000000000000000000000000000000000000009081341061155057348155600190810180546fffffffffffffffffffffffffffffffff19164360401b6fffffffffffffffff0000000000000000161790555f54908101908110611370575f556040513481527fbc11617e575d658c74e921c8df22f8e48566072fa78145a6cfe18420bf8d0c4e60203392a2005b50620155b560e01b5f523460045260245260445ffd5b6345ed80e960e01b5f523360045260245ffd5b346102905760c036600319011261029057611592611bb6565b61159a611b20565b6084359161ffff83168303610290576020926112a99260a4359260443590600435613075565b34610290576020366003190112610290576001600160a01b036115e1611ba0565b165f526007602052602060405f2054604051908152f35b34610290576020366003190112610290575f61022060405161161981611c8b565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015260606101408201528261016082015282610180820152826101a0820152826101c0820152826101e0820152826102008201520152611693600435612d27565b6001600160401b036008604051926116aa84611c8b565b80548452600181015460208501526002810154604085015282600382015460ff8116606087015260ff81851c166080870152818160101c1660a087015260501c1660c085015260ff600482015460018060a01b03811660e0870152818160a01c1661171481611b51565b61010087015260a81c1661012085015261173060058201611d4a565b61014085015260ff600682015461174d8282166101608801611dea565b61ffff81851c1661018087015260181c166101a085015260078101546101c0850152015460ff811615156101e0840152818160081c1661020084015260481c1661022082015260405180916020825280516020830152602081015160408301526040810151606083015260ff606082015116608083015260ff60808201511660a08301526001600160401b0360a08201511660c08301526001600160401b0360c08201511660e083015260018060a01b0360e08201511661010083015261010081015161181981611b51565b61012083015260ff610120820151166101408301526001600160401b03610220611856610140840151610240610160870152610260860190611b6f565b9261186b610160820151610180870190611b93565b61ffff610180820151166101a086015260ff6101a0820151166101c08601526101c08101516101e08601526101e081015115156102008601528261020082015116828601520151166102408301520390f35b34610290575f3660031901126102905760206040516001600160401b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b346102905760a03660031901126102905760043561191c611b10565b611924611b40565b6064359161193184612d27565b600881015460ff811615611a5e57600160ff600484015460a01c1661195581611b51565b03611a4b576001600160401b038160081c16421115611a385760481c6001600160401b03164211611a25575f8581526006602090815260408083203384529091529020548015611a0e575f86815260046020908152604080832033845290915290205460ff166119f7576119cf608435868686338b612d79565b036119e05793610436943391612e0f565b84630a67d0e360e11b5f526004523360245260445ffd5b856304f9da6360e01b5f526004523360245260445ffd5b8563809c4a1160e01b5f526004523360245260445ffd5b846368d6219f60e11b5f5260045260245ffd5b8563636208bd60e11b5f5260045260245ffd5b85639d6bda0b60e01b5f5260045260245ffd5b85634cd941bd60e01b5f5260045260245ffd5b34610290575f366003190112610290576020604051610e108152f35b34610290576020366003190112610290576004359063ffffffff60e01b8216809203610290576020916329673f0560e11b8114908115611aff575b8115611aee575b8115611add575b5015158152f35b6301ffc9a760e01b14905083611ad6565b6382100e3f60e01b81149150611acf565b63054fd4d560e41b81149150611ac8565b6024359060ff8216820361029057565b6064359060ff8216820361029057565b6084359060ff8216820361029057565b6044359061ffff8216820361029057565b60041115611b5b57565b634e487b7160e01b5f52602160045260245ffd5b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b906006821015611b5b5752565b600435906001600160a01b038216820361029057565b602435906001600160a01b038216820361029057565b6060906003190112610290576004359060243560ff81168103610290579060443561ffff811681036102905790565b80516001600160a01b031682526020808201516080926001600160401b03928492611c2891870190611b93565b61ffff604082015116604086015260608101516060860152015116910152565b60a435906001600160401b038216820361029057565b9181601f84011215610290578235916001600160401b038311610290576020838186019501011161029057565b61024081019081106001600160401b03821117611ca757604052565b634e487b7160e01b5f52604160045260245ffd5b60a081019081106001600160401b03821117611ca757604052565b604081019081106001600160401b03821117611ca757604052565b90601f801991011681019081106001600160401b03821117611ca757604052565b90600182811c92168015611d40575b6020831014611d2c57565b634e487b7160e01b5f52602260045260245ffd5b91607f1691611d21565b9060405191825f825492611d5d84611d12565b8084529360018116908115611dc85750600114611d84575b50611d8292500383611cf1565b565b90505f9291925260205f20905f915b818310611dac575050906020611d82928201015f611d75565b6020919350806001915483858901015201910190918492611d93565b905060209250611d8294915060ff191682840152151560051b8201015f611d75565b6006821015611b5b5752565b9190820180921161137057565b906001600160401b03809116911601906001600160401b03821161137057565b6001600160401b038111611ca757601f01601f191660200190565b3d15611e68573d90611e4f82611e23565b91611e5d6040519384611cf1565b82523d5f602084013e565b606090565b15611e7457565b60405162461bcd60e51b815260206004820152600f60248201526e1d1c985b9cd9995c8819985a5b1959608a1b6044820152606490fd5b6001600160401b038111611ca75760051b60200190565b90611ecc82611eab565b611ed96040519182611cf1565b8281528092611eea601f1991611eab565b0190602036910137565b8054821015611f09575f5260205f2001905f90565b634e487b7160e01b5f52603260045260245ffd5b805115611f095760200190565b8051821015611f095760209160051b010190565b90602080835192838152019201905f5b818110611f5b5750505090565b82516001600160a01b0316845260209384019390920191600101611f4e565b906006811015611b5b5760ff80198354169116179055565b611f9b81612d27565b9060048201918254905f90600160ff8460a01c16611fb881611b51565b0361292657835f52600560205260405f20948554926003830154926001600160401b038460501c168042106129105750611ff185611ec2565b608052611ffd85611ec2565b955f965f95895f995f5b8d8b82106127b157505061201a81611ec2565b9061202481611ec2565b945f5b82811061276a5750505060405190604082016040835281518091526020606084019201905f5b818110612751575050508181036020830152602080865192838152019501905f5b81811061273557505050807f299a29415fb712a2fb9f9da43b8130ce578c51d1aabef0e08f7bd5a3bf2737809160ff950390a260081c1660ff88161061265157506120bb84608051611f2a565b5194600660ff8760101c161015611b5b576120d860ff8816611ec2565b985f955f905f5b848110612586575050855460ff60a01b1916600160a11b178655506121619160ff9150612142896006860161211a60108c901c861682611f7a565b805463ffffff00191662ffff0060088d901b161760189290921b63ff00000016919091179055565b855460ff60a81b1916911660a881901b60ff60a81b1691909117909455565b8360078201555f90600160ff8760101c1614612337575b507f00000000000000000000000000000000000000000000000000000000000000008061221d575b50612209575060ff80937fb23602630c4f4e464e4a430843d49e335e7a47737fc8e6d10d18d332c219007c95936122049360405196879661ffff851688521660208701526040860152606085015260a0608085015260101c169560a0830190611f3e565b0390a3565b634e487b7160e01b81526021600452602490fd5b60ff8716156123235760ff8716810460ff8816810281810460ff8a16148215171561230f5782039182116122fb57835b60ff8916811061225e5750506121a0565b600190806122f1578a612272855b85611df6565b8d81612282575b5050500161224d565b60207f5cfc0db0dadcda3ffeb594bd4216deeac8002fd7c1362f0c524fd097eaa1f46591868060a01b036122b68783611f2a565b51168b526007825260408b206122cd858254611df6565b90556122df86888060a01b0392611f2a565b511692604051908152a38a5f8d612279565b8a6122728761226c565b634e487b7160e01b84526011600452602484fd5b634e487b7160e01b85526011600452602485fd5b634e487b7160e01b83526012600452602483fd5b90505f9060ff8660101c1662ffff008760081b1663ff0000008960181b161717612365600583549301611d4a565b916123708382613245565b5f5260086020528160405f205589817fbab2e35ee3e9bb089e8206ce8fd52f61bd427ba28175c9b88b2f25a31b56e66460405160408152806123b56040820189611b6f565b8760208301520390a37f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031691826123f7575b505050612178565b6040938451926124078685611cf1565b60018452601f1986015f5b8181106125625750509161246f600161247493602080612432819861327b565b928b5198848a9551918291018487015e840190601d60f91b83830152805192839101602183015e01015f838201520301601f198101855284611cf1565b61327b565b84519161248083611cd6565b8252602082015261249082611f1d565b5261249a81611f1d565b50813b1561029057918051928391630c255e6960e31b8352602483016020600485015282518091526044840191602060448360051b8701019401925f915b83831061251357505050505091815f818195039262030d40f16124fe575b8080806123ef565b61250b9192505f90611cf1565b5f905f6124f6565b9193955091936020806125506001936043198c820301875289519083612540835189845289840190611b6f565b9201519084818403910152611b6f565b970193019301909287959492936124d8565b602090885161257081611cd6565b6060815260608382015282828901015201612412565b8c6125918286611ef4565b905460039190911b1c6001600160a01b03166125ac816131dd565b6125bb575b50506001016120df565b8d5f52600360205260405f2060018060a01b0382165f5260205260405f20916125f3835460ff61ffff8260a81c169160a01c16613229565b6125ff86608051611f2a565b511461260d575b91506125b1565b600193959b919284936126218e8694611f2a565b5201546040519060208201928352604082015260408152612643606082611cf1565b519020990192905f8e612606565b61ffff60a01b191660a886901b60ff60a81b1617600360a01b178355505f96507fb23602630c4f4e464e4a430843d49e335e7a47737fc8e6d10d18d332c219007c94505060ff92909216919050547f0000000000000000000000000000000000000000000000000000000000000000906001600160a01b031681612716575b5050604051906126e1602083611cf1565b84825284368137612204604051928392878452876020850152604084015286606084015260a0608084015260a0830190611f3e565b8552600760205261272c60408620918254611df6565b90555f806126d0565b825160ff1687526020968701968f95509092019160010161206e565b825184528f95506020938401939092019160010161204d565b60019192939596945061277f81608051611f2a565b5161278a8288611f2a565b5260ff6127978285611f2a565b51166127a38287611f2a565b520191908d93959492612027565b816127da92959694506127c391611ef4565b905460039190911b1c6001600160a01b03166131dd565b15612907578b5f5260036020528c6127f68460405f2092611ef4565b905460039190911b1c6001600160a01b03165f90815260209190915260409020546128309060a881901c61ffff169060a01c60ff16613229565b5f5b8281106128e7575b808303612887575061284e82608051611f2a565b52600161285b8284611f2a565b5260ff8b1660011161287b575b6001809101925b015b918b919392612007565b60019a50975087612868565b905060ff60018161289b8487989698611f2a565b511601166128a98285611f2a565b5260ff6128b68285611f2a565b511660ff8d16106128cb575b5060019061286f565b9a509750600160ff6128dd8c84611f2a565b51169a98906128c2565b816128f482608051611f2a565b511461290257600101612832565b61283a565b91600101612871565b876317e7aa9960e21b5f5260045260245260445ffd5b836347f629af60e11b5f5260045260245ffd5b6040519061294682611cbb565b5f6080838281528260208201528260408201528260608201520152565b60ff60019116019060ff821161137057565b92919261298182611e23565b9161298f6040519384611cf1565b829481845281830111610290578281602093845f960137010152565b600254600160401b811015611ca75760018101600255600254811015611f095760025f526009027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace018151815560208201516001820155604082015160028201556003810160ff606084015116815461ff00608086015160081b1669ffffffffffffffff000060a087015160101b16916001600160401b0360501b60c088015160501b16936001600160401b0360501b199169ffffffffffffffffffff191617161717179055612ae96004820160018060a01b0360018060a01b0360e086015116166001600160601b0360a01b825416178155610100840151612aad81611b51565b612ab681611b51565b815461012086015161ffff60a01b1990911660a09290921b60ff60a01b169190911760a89190911b60ff60a81b16179055565b600581016101408301518051906001600160401b038211611ca7578190612b108454611d12565b601f8111612c83575b50602090601f8311600114612c20575f92612c15575b50508160011b915f199060031b1c19161790555b60068101906101608301516006811015611b5b5782612b67612ba392600895611f7a565b610180850151815462ffff00191660089190911b62ffff00161781556101a0850151815463ff000000191660189190911b63ff00000016179055565b6101c0830151600782015501906101e0810151151560ff8019845416911515161782556102008101519068ffffffffffffffff0070ffffffffffffffff000000000000000000610220855493015160481b169260081b169070ffffffffffffffffffffffffffffffff00191617179055565b015190505f80612b2f565b5f8581528281209350601f198516905b818110612c6b5750908460019594939210612c53575b505050811b019055612b43565b01515f1960f88460031b161c191690555f8080612c46565b92936020600181928786015181550195019301612c30565b909150835f5260205f20601f840160051c81019160208510612cc9575b90601f859493920160051c01905b818110612cbb5750612b19565b5f8155849350600101612cae565b9091508190612ca0565b959260e09460ff8092869560a099959c9b9c8b5260208b015216604089015216606087015260c060808701528160c0870152838601375f828286010152601f801991011683010193600180831b0316910152565b600254811015612d6757600254811015611f095760025f526009027f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0190565b634899e04360e01b5f5260045260245ffd5b94929093916040519460208601967f3bc508a0791f58efa082135c049a13a84aa17126250fd289e9e974871a90e37088524660408801523060601b606088015260748701526001600160601b03199060601b16609486015260ff60f81b9060f81b1660a885015261ffff60f01b9060f01b1660a984015260ab83015260cb82015260cb8152612e0960eb82611cf1565b51902090565b939194909260ff81169160018310158061306a575b156130575761ffff84169161271083111580613047575b1561303457612e49886131a4565b15613016575f8781526004602090815260408083206001600160a01b038c1684529091529020805460ff191660011790556006841015611b5b5760405197612e9089611cbb565b6001600160a01b03168089529760208101612eab8682611dea565b6040820190858252606083019185835260808401916001600160401b03421683528b5f52600360205260405f208d5f5260205260405f209460018060a01b039060018060a01b03905116166001600160601b0360a01b86541617855551916006831015611b5b576001600160401b0393600293859387549061ffff60a81b905160a81b169160ff60a01b9060a01b169062ffffff60a01b1916171786555160018601555116920191166001600160401b0319825416179055865f52600560205260405f2094855491600160401b831015611ca7577f6153ebbd8f8736ec35adfad2b88f302ae82266eee08bcd3f8858abd32b10a71697612fb6846080996001612ffd97018155611ef4565b81546001600160a01b0360039290921b91821b1916908d901b17905560048101805460ff60a81b19811660a891821c60ff1660010190911b60ff60a81b1617905554613163565b91604051938452602084015260408301526060820152a3565b630b97d11160e01b5f9081526001600160a01b038916600452602490fd5b82634627570960e11b5f5260045260245ffd5b5061ffff6103e884061615612e3b565b8263505edff960e11b5f5260045260245ffd5b506005831115612e24565b94919390926040519460208601967f0c578d46b25c72738e526644e19909fc3e5561532154c246fb4876115bf47a8d88524660408801523060601b60608801526074870152609486015260ff60f81b9060f81b1660b485015261ffff60f01b9060f01b1660b584015260b78301526001600160601b03199060601b1660d782015260cb8152612e0960eb82611cf1565b60027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0054146131545760027f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f0055565b633ee5aeb560e01b5f5260045ffd5b604080516020810192835260f89390931b6001600160f81b0319169083015260f09290921b6001600160f01b0319166041820152612e098160438101610fd1565b6131ad816131dd565b90816131b7575090565b905060018060a01b03165f5260016020526001600160401b03600160405f200154161590565b6001600160a01b03165f908152600160205260409020548015159081613201575090565b90507f0000000000000000000000000000000000000000000000000000000000000000111590565b906006821015611b5b5761ffff62ff000091169160101b161790565b90612e09610fd191604051928391602083019586526040808401526060830190611b6f565b908151811015611f09570160200190565b6040519061328a608083611cf1565b60428252602082016060368237825115611f095760309053815160011015611f0957607860218301535f5b602081106132c257505090565b81811a9060ff8260041c166010811015611f09578160011b928284046002148315171561137057836002018060021161137057600f926f181899199a1a9b1b9c1cb0b131b232b360811b901a90613319908861326a565b5316916010831015611f095760030180600311611370576001926f181899199a1a9b1b9c1cb0b131b232b360811b901a90613354908661326a565b53016132b5565b815191906041830361338b576133849250602082015190606060408401519301515f1a90613411565b9192909190565b50505f9160029190565b61339e81611b51565b806133a7575050565b6133b081611b51565b600181036133c75763f645eedf60e01b5f5260045ffd5b6133d081611b51565b600281036133eb575063fce698f760e01b5f5260045260245ffd5b6003906133f781611b51565b146133ff5750565b6335e2f38360e21b5f5260045260245ffd5b91907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08411613493579160209360809260ff5f9560405194855216868401526040830152606082015282805260015afa15613488575f516001600160a01b0381161561347e57905f905f90565b505f906001905f90565b6040513d5f823e3d90fd5b5050505f916003919056fea2646970667358221220751bf5b17ab5a76d34897ab92157e67cfb046bc8e4701b178dfcaf13ba445ba364736f6c634300081f0033","sourceMap":"2947:42683:10:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;:::i;:::-;;;;:::i;:::-;;32926:18;;;:::i;:::-;;2947:42683;;32980:9;2947:42683;;;;;32980:27;2947:42683;;;;;;-1:-1:-1;2947:42683:10;;;;;-1:-1:-1;2947:42683:10;-1:-1:-1;;;;;2947:42683:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;34045:29;2947:42683;;;;;;:::i;:::-;;;;:::i;:::-;;;34045:29;:::i;:::-;2947:42683;;34038:6;2947:42683;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;5542:41;2947:42683;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;:::i;:::-;;;:::i;:::-;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;:::i;:::-;15054:18;;;;;:::i;:::-;15273:14;2947:42683;15273:14;;;2947:42683;;15269:50;;2947:42683;15333:8;;2947:42683;;;;;;;;;;:::i;:::-;15333:23;15329:55;;2947:42683;15419:3;;;2947:42683;;;;;;;15398:24;;15394:53;;2947:42683;;;;;;;;;;;;;15476:10;2947:42683;;;;;;;;;;15457:71;;-1:-1:-1;;;;;2947:42683:10;15476:10;15705:22;15701:71;;5489:8:59;2947:42683:10;;5433:27:59;2947:42683:10;16222:89;2947:42683;;;;;15476:10;16222:89;;:::i;:::-;2947:42683;;;;:::i;:::-;5433:27:59;;:::i;:::-;5489:8;;;;;:::i;:::-;-1:-1:-1;;;;;2947:42683:10;;15476:10;16512:20;;16508:67;;16648:12;15476:10;;;16648:12;;:::i;:::-;2947:42683;16508:67;16541:34;;;;2947:42683;16541:34;2947:42683;;15476:10;2947:42683;;;;16541:34;15701:71;21971:36;;;;2947:42683;15736:36;2947:42683;;15476:10;2947:42683;;;;15736:36;15457:71;23460:32;;;;2947:42683;15496:32;2947:42683;;15476:10;2947:42683;;;;15496:32;15394:53;21910:16;;;;2947:42683;15431:16;2947:42683;;;;15431:16;15329:55;22823:19;;;;2947:42683;15365:19;2947:42683;;;;15365:19;15269:50;15296:23;;;;2947:42683;15296:23;2947:42683;;;;15296:23;2947:42683;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;4922:46;2947:42683;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;:::i;:::-;19038:27;;;19034:55;;2947:42683;;;19103:6;;;:27;;;;2947:42683;19099:59;;2947:42683;19185:9;2947:42683;;;;;19185:9;:::i;:::-;2947:42683;;;;;19208:20;;;:37;;;;2947:42683;19204:76;;-1:-1:-1;;;;;2947:42683:10;;4199:7;19496:32;;:80;;;;2947:42683;19496:128;;;;2947:42683;19496:176;;;;2947:42683;19479:285;;19777:26;;;;19773:53;;19854:9;-1:-1:-1;;;;;2947:42683:10;19840:10;:23;;19836:64;;19946:8;;19927:16;:27;19946:8;19927:16;:27;:::i;:::-;19914:9;:40;19910:134;;20057:13;;20053:75;;2947:42683;20169:15;;;-1:-1:-1;;;;;2947:42683:10;20162:38;;;;;:::i;:::-;20234:29;;;;;:::i;:::-;19189:1;2947:42683;;;;;;;;;;:::i;:::-;;;;20337:911;2947:42683;20337:911;;2947:42683;20337:911;2947:42683;20337:911;;2947:42683;;20337:911;;2947:42683;;20337:911;;2947:42683;;20337:911;;2947:42683;-1:-1:-1;;;;;2947:42683:10;20337:911;;2947:42683;20337:911;;2947:42683;19840:10;2947:42683;20337:911;;2947:42683;;20337:911;;2947:42683;;;20337:911;;;2947:42683;;;;;;;;;:::i;:::-;20337:911;;;2947:42683;;20337:911;;;2947:42683;;;20337:911;;;2947:42683;;;20337:911;;;2947:42683;;;20337:911;;;2947:42683;;20337:911;;;2947:42683;-1:-1:-1;;;;;2947:42683:10;20337:911;;;2947:42683;20337:911;;;2947:42683;20309:949;;;:::i;:::-;2947:42683;;19840:10;;;;21274:97;;;;;:::i;:::-;;;;;2947:42683;;;;;;;;20053:75;2947:42683;;20086:8;2947:42683;;20086:31;2947:42683;;;;;;20086:31;:::i;:::-;2947:42683;;20053:75;;;;19910:134;20005:27;;;;:::i;:::-;13546:56;;;2947:42683;19977:56;19914:9;2947:42683;;;;;;19977:56;19836:64;13355:28;;;2947:42683;19872:28;19840:10;2947:42683;;;;19872:28;19773:53;13128:14;;;2947:42683;19812:14;2947:42683;;19812:14;19479:285;19704:49;;;2947:42683;19704:49;2947:42683;;;;;;19704:49;19496:176;19640:32;4255:7;19640:32;;19496:176;;:128;19592:32;4199:7;19592:32;;19496:128;;:80;19544:32;4255:7;19544:32;;19496:80;;19204:76;12909:26;;;;;2947:42683;19254:26;2947:42683;;;;;;19254:26;19208:37;19232:13;;;;19208:37;;19099:59;12711:19;;;;2947:42683;19139:19;2947:42683;;;;19139:19;19103:27;19113:17;2947:42683;19113:17;;19103:27;;19034:55;12646:15;;;2947:42683;19074:15;2947:42683;;19074:15;2947:42683;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;4632:47;2947:42683;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;3682:5;2947:42683;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;;;;;:::i;:::-;;;:::i;:::-;;;;:::i;:::-;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;:::i;:::-;12610:27;;;12606:55;;2947:42683;;;12675:6;;;:27;;;;2947:42683;12671:59;;2947:42683;12840:9;2947:42683;;;;;12840:9;:::i;:::-;2947:42683;;;;;12863:20;;;:37;;;;2947:42683;12859:76;;-1:-1:-1;;;;;2947:42683:10;;4199:7;12949:32;;:68;;;;2947:42683;12945:135;;13093:26;;;13089:53;;13337:9;-1:-1:-1;;;;;2947:42683:10;13323:10;:23;;13319:64;;13515:8;;13496:16;:27;13515:8;13496:16;:27;:::i;:::-;13483:9;:40;13479:134;;13796:13;;13912:772;13796:13;-1:-1:-1;;;;;2947:42683:10;13796:13;;;;14700:97;13796:13;;;14700:97;13796:13;;13792:75;;2947:42683;;;12844:1;2947:42683;14173:15;;;14217:38;14173:15;;2947:42683;14217:38;;;:::i;:::-;2947:42683;;;;;;;:::i;:::-;;;;13940:734;;;;2947:42683;13940:734;2947:42683;13940:734;;2947:42683;;13940:734;;2947:42683;;13940:734;;2947:42683;;13940:734;;2947:42683;;;13940:734;;2947:42683;13323:10;2947:42683;13940:734;;2947:42683;;13940:734;;;2947:42683;;13940:734;;;2947:42683;;;;;;:::i;:::-;13940:734;;;2947:42683;;13940:734;;;2947:42683;;13940:734;;;2947:42683;;13940:734;;;2947:42683;;13940:734;;;2947:42683;;13940:734;;;2947:42683;;13940:734;;;2947:42683;;13940:734;;;2947:42683;13912:772;:::i;:::-;2947:42683;;13323:10;;;;14700:97;;;:::i;:::-;;;;2947:42683;;;;;;13792:75;2947:42683;;;13825:8;2947:42683;;13825:31;2947:42683;;;;;;13825:31;:::i;:::-;2947:42683;;13792:75;;;;12945:135;13040:29;;;2947:42683;13040:29;2947:42683;;;;13040:29;12949:68;12985:32;4255:7;12985:32;;12949:68;;12859:76;12909:26;;;;;2947:42683;12909:26;2947:42683;;;;;;12909:26;12863:37;12887:13;;;;12863:37;;12671:59;12711:19;;;;2947:42683;12711:19;2947:42683;;;;12711:19;12675:27;12685:17;2947:42683;12685:17;;12675:27;;2947:42683;;;;;;-1:-1:-1;;2947:42683:10;;;;2989:103:57;;:::i;:::-;11818:10:10;2947:42683;;11809:8;2947:42683;;;;;;11843:11;;11839:43;;11818:10;2947:42683;;11809:8;2947:42683;;;;;;;12023:30;2947:42683;11818:10;;;;;11970:43;;;;:::i;:::-;;12023:30;:::i;:::-;2947:42683;;;;;12068:33;2947:42683;11818:10;12068:33;;2365:1:57;1505:66;2947:42683:10;;11839:43;11863:19;;;2947:42683;11863:19;2947:42683;;11863:19;2947:42683;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;34197:8;2947:42683;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;35215:9;2947:42683;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;33149:18;;;:::i;:::-;;2947:42683;;;33202:11;2947:42683;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;;2947:42683:10;;;:::i;:::-;;;;;;;;;33295:9;;2947:42683;33306:15;;;;;;2947:42683;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;33295:9;2947:42683;;;;;33348:9;2947:42683;;;;;33366:7;;;;:::i;:::-;2947:42683;;;;;;;;33348:9;2947:42683;;;;;;;;;-1:-1:-1;2947:42683:10;;;;-1:-1:-1;2947:42683:10;-1:-1:-1;;;;;2947:42683:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;33339:35;;;;:::i;:::-;;;;;;:::i;:::-;;2947:42683;33295:9;;2947:42683;;;;;:::i;:::-;;;;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;-1:-1:-1;;;;;2947:42683:10;;:::i;:::-;;;;34916:10;2947:42683;;;-1:-1:-1;;;;;34916:10:10;2947:42683;;;34916:28;2947:42683;;;;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;4255:7;2947:42683;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;10583:10;2947:42683;;10572:10;2947:42683;;;;;;;10608:12;10604:43;;10572:10;10657:15;2947:42683;;-1:-1:-1;;2947:42683:10;10682:15;-1:-1:-1;;;;;2947:42683:10;;;;;;;10753:44;;10779:18;;10753:44;:::i;:::-;-1:-1:-1;;;;;2947:42683:10;;;;;;10713:85;2947:42683;10583:10;10713:85;;2947:42683;10604:43;11154:18;;;2947:42683;10629:18;2947:42683;;10629:18;2947:42683;;;;;;-1:-1:-1;;2947:42683:10;;;;;33697:18;2947:42683;;33697:18;:::i;:::-;2947:42683;33778:15;33735:8;2947:42683;33735:8;;2947:42683;;;;;;;;:::i;:::-;33778:15;2947:42683;33747:14;2947:42683;;33735:26;;2947:42683;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;:::i;:::-;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;;;;;;;;;31730:55;;2947:42683;;;:::i;:::-;;;;31730:55;;;2947:42683;;;;;;;;;-1:-1:-1;;;;;;2947:42683:10;;;;;;;;;;-1:-1:-1;;;;;;2947:42683:10;;;;;;;;;;;;;31730:55;;;;;;;;;;:::i;:::-;2947:42683;;;;;31730:55;2947:42683;;31730:55;2947:42683;;;;:::i;:::-;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;3547:4;2947:42683;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;21519:18;2947:42683;21519:18;:::i;:::-;21552:14;;;2947:42683;;;;;21551:15;21547:51;;2947:42683;21612:8;;2947:42683;;;;;;;;;;;:::i;:::-;21612:23;21608:55;;21677:20;;21673:46;;21552:14;2947:42683;-1:-1:-1;;;;;2947:42683:10;21800:15;:34;21796:67;;21898:3;2947:42683;21898:3;;2947:42683;;;;;;;21877:24;;21873:53;;-1:-1:-1;;;;;2947:42683:10;21940:10;:22;21936:71;;22189:21;21940:10;22189:21;:::i;:::-;22188:22;22184:56;;2947:42683;;;;22254:7;2947:42683;;;;;;;;21940:10;2947:42683;;;;;;;;22250:90;;2947:42683;;;22254:7;2947:42683;;;;;;;;;;21940:10;2947:42683;-1:-1:-1;2947:42683:10;;;;;-1:-1:-1;2947:42683:10;;;;;;;22402:44;2947:42683;21940:10;22402:44;;2947:42683;22250:90;22304:36;;;2947:42683;22304:36;2947:42683;;21940:10;2947:42683;;;;22304:36;22184:56;22219:21;;;2947:42683;22219:21;21940:10;2947:42683;;;;22219:21;21936:71;21971:36;;;2947:42683;21971:36;2947:42683;;21940:10;2947:42683;;;;21971:36;21873:53;21910:16;;;;2947:42683;21910:16;2947:42683;;;;21910:16;21796:67;21843:20;;;;2947:42683;21843:20;2947:42683;;;;21843:20;21673:46;21706:13;;;2947:42683;21706:13;2947:42683;;21706:13;21547:51;22754:23;;;;2947:42683;21575:23;2947:42683;;;;21575:23;2947:42683;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;35353:8;2947:42683;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;2322:16:27;2947:42683:10;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;-1:-1:-1;;;;;2947:42683:10;;:::i;:::-;;;;34616:10;2947:42683;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;34470:14;2947:42683;;:::i;:::-;34470:14;:::i;:::-;2947:42683;;;;;;;;;;;;;32001:53;2947:42683;;;:::i;:::-;32001:53;;:::i;:::-;2947:42683;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;2989:103:57;;:::i;:::-;11075:10:10;2947:42683;;11064:10;2947:42683;;;;;;;11134:11;;;11130:42;;11064:10;11186:15;;2947:42683;-1:-1:-1;;;;;2947:42683:10;;;11186:20;;11182:60;;11267:36;-1:-1:-1;;;;;11285:18:10;;11267:36;;:::i;:::-;2947:42683;11317:15;;:23;11313:67;;2947:42683;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;11464:19;11460:44;;2947:42683;11075:10;11605:30;2947:42683;11075:10;;;;;11552:43;;;;:::i;11460:44::-;-1:-1:-1;;2947:42683:10;;;;;;;;;11460:44;;;2947:42683;;;;;;;;;;;;11313:67;11215:27;;;2947:42683;11349:31;2947:42683;;;;11349:31;11182:60;11215:27;;;2947:42683;11215:27;2947:42683;;;;;11215:27;2947:42683;;;;;;-1:-1:-1;;2947:42683:10;;;;;;34328:9;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;24237:76;2947:42683;;;;;;;;;24237:76;:::i;2947:42683::-;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;35632:1;2947:42683;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;6469:47;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;9897:10;2947:42683;;9886:10;2947:42683;;;;;;;9918:54;;9998:8;9986:9;;;:20;9982:64;;9986:9;2947:42683;;9886:10;10085:15;;;2947:42683;;-1:-1:-1;;2947:42683:10;10139:12;2947:42683;;;;;;;-1:-1:-1;2947:42683:10;;;;;;-1:-1:-1;2947:42683:10;;;;;;9986:9;2947:42683;;10196:41;2947:42683;9897:10;10196:41;;2947:42683;9982:64;10015:31;;;;2947:42683;10015:31;9986:9;2947:42683;;;;;;10015:31;9918:54;9943:29;;;2947:42683;9943:29;9897:10;2947:42683;;;;9943:29;2947:42683;;;;;;-1:-1:-1;;2947:42683:10;;;;;;:::i;:::-;;;:::i;:::-;;;;;;;;;;;;;32350:85;2947:42683;;;;;;;;;32350:85;:::i;2947:42683::-;;;;;;-1:-1:-1;;2947:42683:10;;;;-1:-1:-1;;;;;2947:42683:10;;:::i;:::-;;;;35078:8;2947:42683;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32751:18;2947:42683;;32751:18;:::i;:::-;-1:-1:-1;;;;;2947:42683:10;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;-1:-1:-1;;;;;5340:42:10;2947:42683;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;:::i;:::-;;;:::i;:::-;;;22698:18;;;;:::i;:::-;22731:14;;;2947:42683;;;;22730:15;22726:51;;2947:42683;;;22791:8;;2947:42683;;;;;;;:::i;:::-;22791:23;22787:55;;-1:-1:-1;;;;;2947:42683:10;22731:14;2947:42683;;23044:15;:35;;23040:69;;2947:42683;;-1:-1:-1;;;;;2947:42683:10;23044:15;23123:34;23119:67;;2947:42683;;;;23214:7;2947:42683;;;;;;;;23230:10;2947:42683;;;;;;;;23255:20;;23251:65;;2947:42683;;;;;;;;;;;;;23230:10;2947:42683;;;;;;;;;;23421:71;;23709:78;2947:42683;;23230:10;;;;23709:78;;:::i;:::-;23801:20;23797:67;;23230:10;23937:12;23230:10;;23937:12;;:::i;23797:67::-;23830:34;;;;2947:42683;23830:34;2947:42683;;23230:10;2947:42683;;;;23830:34;23421:71;23460:32;;;;2947:42683;23460:32;2947:42683;;23230:10;2947:42683;;;;23460:32;23251:65;23284:32;;;;2947:42683;23284:32;2947:42683;;23230:10;2947:42683;;;;23284:32;23119:67;23166:20;;;;2947:42683;23166:20;2947:42683;;;;23166:20;23040:69;23088:21;;;;2947:42683;23088:21;2947:42683;;;;23088:21;22787:55;22823:19;;;;2947:42683;22823:19;2947:42683;;;;22823:19;22726:51;22754:23;;;;2947:42683;22754:23;2947:42683;;;;22754:23;2947:42683;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;4199:7;2947:42683;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;35767:45:10;;;:103;;;;2947:42683;35767:169;;;;2947:42683;35767:222;;;;2947:42683;;;;;;;35767:222;-1:-1:-1;;;829:40:60;;-1:-1:-1;35767:222:10;;;:169;-1:-1:-1;;;35886:50:10;;;-1:-1:-1;35767:169:10;;:103;-1:-1:-1;;;35828:42:10;;;-1:-1:-1;35767:103:10;;2947:42683;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;-1:-1:-1;2947:42683:10;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2947:42683:10;;;;;;;;-1:-1:-1;;2947:42683:10;;;;:::o;:::-;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;:::o;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;:::o;:::-;;;;-1:-1:-1;2947:42683:10;;;;;-1:-1:-1;2947:42683:10;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;:::o;:::-;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;:::o;:::-;;;31730:55;;2947:42683;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2947:42683:10;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:::o;:::-;;;-1:-1:-1;2947:42683:10;;;;;-1:-1:-1;2947:42683:10;;-1:-1:-1;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;:::o;:::-;;-1:-1:-1;;;;;2947:42683:10;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;:::o;:::-;-1:-1:-1;;;;;2947:42683:10;;;;;;-1:-1:-1;;2947:42683:10;;;;:::o;:::-;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;-1:-1:-1;2947:42683:10;;;;:::o;:::-;;;:::o;:::-;;;;:::o;:::-;;;-1:-1:-1;;;2947:42683:10;;;;;;;;;;;;-1:-1:-1;;;2947:42683:10;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;:::o;:::-;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;31730:55;2947:42683;31730:55;;2947:42683;;:::i;:::-;;;;;;;;:::o;:::-;;;;;;;;-1:-1:-1;2947:42683:10;;-1:-1:-1;2947:42683:10;;;-1:-1:-1;2947:42683:10;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;-1:-1:-1;2947:42683:10;;;;;;;;;;:::o;:::-;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;24686:6344::-;24766:18;;;:::i;:::-;24798:8;;;;2947:42683;;;;-1:-1:-1;2947:42683:10;24810:11;2947:42683;;;;;;;;:::i;:::-;24798:23;24794:58;;2947:42683;-1:-1:-1;2947:42683:10;24888:11;2947:42683;;;-1:-1:-1;2947:42683:10;;;;25314:10;;;;2947:42683;;-1:-1:-1;;;;;2947:42683:10;;;;25296:15;;:28;25292:75;;25740:20;;;;:::i;:::-;;;25795:18;;;:::i;:::-;25823:16;-1:-1:-1;25850:15:10;-1:-1:-1;25875:15:10;;-1:-1:-1;25906:9:10;-1:-1:-1;25917:9:10;;;;;;;27166:23;;;;;:::i;:::-;27227:21;;;;:::i;:::-;27263:9;-1:-1:-1;27274:12:10;;;;;;2947:42683;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2947:42683:10;;;;;;27449:49;;;;;;2947:42683;27449:49;;;;2947:42683;;;;;;27513:23;27509:493;;28119:13;;;;;;:::i;:::-;2947:42683;;;;;43764:2;2947:42683;;;;;;28392:24;2947:42683;;;28392:24;:::i;:::-;28426:20;-1:-1:-1;28456:9:10;-1:-1:-1;28480:9:10;-1:-1:-1;28491:9:10;;;;;;-1:-1:-1;;2947:42683:10;;-1:-1:-1;;;;2947:42683:10;-1:-1:-1;;;2947:42683:10;;;-1:-1:-1;29256:32:10;;2947:42683;;-1:-1:-1;29222:24:10;29148:15;2947:42683;29148:15;;:25;43764:2;2947:42683;;;;;29148:15;:25;:::i;:::-;2947:42683;;-1:-1:-1;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;29222:24;2947:42683;;-1:-1:-1;;;;2947:42683:10;;;;;;;-1:-1:-1;;;2947:42683:10;;;;;;;;;29256:32;29298:14;;;;2947:42683;-1:-1:-1;2947:42683:10;24810:11;2947:42683;;43764:2;2947:42683;;29698:19;29694:186;;28475:568;30292:16;;:21;30288:528;;28475:568;2947:42683;;;;;;;30831:192;2947:42683;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;43764:2;2947:42683;;;;;;;;:::i;:::-;30831:192;;;24686:6344::o;2947:42683::-;-1:-1:-1;;;2947:42683:10;;;24798:8;2947:42683;;;;30288:528;2947:42683;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30462:9;30473:13;2947:42683;;;30473:13;;;;30288:528;;;;30462:9;24810:11;;30531:6;;;:22;30522:32;30531:22;;30522:32;;:::i;:::-;30576:8;;30572:149;;30531:22;2947:42683;;;;30462:9;;30572:149;2947:42683;30663:39;2947:42683;;;;;;30617:11;;;;:::i;:::-;2947:42683;;;;29298:14;2947:42683;;;;;30608:28;2947:42683;;;30608:28;:::i;:::-;2947:42683;;30677:11;2947:42683;;;;;;30677:11;;:::i;:::-;2947:42683;;;;;;;;30663:39;30572:149;;;;;30531:22;;30522:32;30531:22;;;2947:42683;-1:-1:-1;;;2947:42683:10;;;24798:8;2947:42683;;;;;-1:-1:-1;;;2947:42683:10;;;24798:8;2947:42683;;;;;-1:-1:-1;;;2947:42683:10;;;24798:8;2947:42683;;;;29694:186;2947:42683;;-1:-1:-1;2947:42683:10;;;43764:2;2947:42683;;;;;;;;;44111:2;2947:42683;;44092:47;:70;2947:42683;24888:11;2947:42683;;29840:9;;2947:42683;:::i;:::-;37040:29;;;;;:::i;:::-;-1:-1:-1;2947:42683:10;;;;;;-1:-1:-1;2947:42683:10;;;;37093:42;2947:42683;;;;;;;;;;;;:::i;:::-;;;;;;37093:42;;;37944:13;-1:-1:-1;;;;;2947:42683:10;;;37932:554;;29694:186;;;;;;37932:554;2947:42683;;;;;;;;;:::i;:::-;24810:11;2947:42683;;-1:-1:-1;;2947:42683:10;;-1:-1:-1;2947:42683:10;;;;;;38137:27;;;38120:55;24810:11;38255:19;38137:27;2947:42683;38137:27;;;;;:::i;:::-;2947:42683;;;;;;;;;;;;38120:55;;;2947:42683;;;;-1:-1:-1;;;2947:42683:10;;;;;;;;;;;;;;;;-1:-1:-1;2947:42683:10;;;;38120:55;;31730;;38120;;;;;;:::i;:::-;38255:19;:::i;:::-;2947:42683;;;;;;:::i;:::-;;;;38198:78;;2947:42683;38190:86;;;:::i;:::-;;;;;:::i;:::-;;38294:44;;;;;2947:42683;;;;;;;;;38294:44;;2947:42683;;;;24798:8;38294:44;;2947:42683;;;;;;;;;;;;;24888:11;2947:42683;;;;;;;-1:-1:-1;2947:42683:10;;;;;;;38294:44;;;;;;;-1:-1:-1;38294:44:10;;;;;38326:7;38294:44;;;2947:42683;37932:554;;;;;38294:44;;;;;-1:-1:-1;38294:44:10;;:::i;:::-;-1:-1:-1;38294:44:10;;;;2947:42683;;;;;;;;;;24810:11;2947:42683;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;28480:9;28535:7;;;;;:::i;:::-;2947:42683;;25314:10;2947:42683;;;;;-1:-1:-1;;;;;2947:42683:10;28560:15;2947:42683;28560:15;:::i;:::-;28556:418;;28480:9;2947:42683;;24810:11;2947:42683;28480:9;;28556:418;2947:42683;-1:-1:-1;2947:42683:10;25314:10;2947:42683;;;-1:-1:-1;2947:42683:10;;;;;;;;-1:-1:-1;2947:42683:10;;;;-1:-1:-1;2947:42683:10;;28662:41;2947:42683;;;;;;;;;;;;28662:41;:::i;:::-;28707:13;;;;;:::i;:::-;2947:42683;28662:58;28658:302;;28556:418;;;;;28658:302;24810:11;28744:20;;;;;;;;;;;;:::i;:::-;2947:42683;28842:14;2947:42683;;;28811:46;2947:42683;28811:46;;2947:42683;;;;;;;;28811:46;;;2947:42683;28811:46;;:::i;:::-;2947:42683;28801:57;;2947:42683;;28658:302;;;;;;27509:493;-1:-1:-1;;;;2947:42683:10;;;;;-1:-1:-1;;;2947:42683:10;;-1:-1:-1;;;2947:42683:10;;;-1:-1:-1;;;;27752:219:10;;-1:-1:-1;;2947:42683:10;;;;;;;-1:-1:-1;2947:42683:10;44938:16;;-1:-1:-1;;;;;2947:42683:10;44938:16;44934:88;;27509:493;2947:42683;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;44934:88::-;2947:42683;;44975:8;2947:42683;;44975:36;2947:42683;;;;;;44975:36;:::i;:::-;2947:42683;;44934:88;;;;2947:42683;;;;;;;;;;;;;;-1:-1:-1;2947:42683:10;;;;24810:11;2947:42683;;;;;;;;;;-1:-1:-1;2947:42683:10;;;;;;;;;24810:11;2947:42683;;;27263:9;24810:11;27318:7;;;;;;;;;;;;:::i;:::-;2947:42683;27304:21;;;;:::i;:::-;2947:42683;;27355:10;;;;:::i;:::-;2947:42683;;27339:26;;;;:::i;:::-;2947:42683;;27263:9;;;;;;;;;25906;25957:7;25949:16;25957:7;;;;;;;;:::i;:::-;2947:42683;;25314:10;2947:42683;;;;;-1:-1:-1;;;;;2947:42683:10;25949:16;:::i;:::-;25948:17;25944:135;;2947:42683;-1:-1:-1;2947:42683:10;25314:10;2947:42683;;;26130:7;2947:42683;;-1:-1:-1;2947:42683:10;26130:7;;:::i;:::-;2947:42683;;25314:10;2947:42683;;;;;-1:-1:-1;;;;;2947:42683:10;-1:-1:-1;2947:42683:10;;;;;;;;;;;;26166:41;;2947:42683;;;;;;;;;;;26166:41;:::i;:::-;-1:-1:-1;26252:12:10;;;;;;26245:152;26414:13;;;;;26447:20;;;;;;:::i;:::-;2947:42683;24810:11;26485:21;;;;:::i;:::-;2947:42683;;;;24810:11;26528:13;26524:113;;26410:564;24810:11;2947:42683;;;26410:564;;2947:42683;25906:9;;;;;;;;26524:113;24810:11;;-1:-1:-1;26565:13:10;-1:-1:-1;26565:13:10;26524:113;;26410:564;26785:15;;2947:42683;24810:11;26785:15;;;;;;;;:::i;:::-;2947:42683;;;;26785:15;;;;:::i;:::-;2947:42683;;26840:10;;;;:::i;:::-;2947:42683;;;;;-1:-1:-1;26836:124:10;;26410:564;;24810:11;26410:564;;;26836:124;26898:10;;;;24810:11;2947:42683;26898:10;;;;:::i;:::-;2947:42683;;26930:11;26836:124;;;;26245:152;26290:7;;;;;;:::i;:::-;2947:42683;26290:14;26286:25;;24810:11;2947:42683;26245:152;;26286:25;26306:5;;25944:135;2947:42683;24810:11;2947:42683;26056:8;;25292:75;25333:34;;;;-1:-1:-1;25333:34:10;24798:8;2947:42683;;;;-1:-1:-1;25333:34:10;24794:58;24830:22;;;;-1:-1:-1;24830:22:10;24798:8;2947:42683;;-1:-1:-1;24830:22:10;2947:42683;;;;;;;:::i;:::-;-1:-1:-1;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;:::o;:::-;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;2947:42683:10;;;;;;:::o;:::-;12844:1;2947:42683;-1:-1:-1;;;2947:42683:10;;;;;;;;12844:1;2947:42683;12844:1;2947:42683;;;;;;12844:1;-1:-1:-1;2947:42683:10;;;;;;;;;;;;;;;;;;;;;12844:1;2947:42683;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;;;;:::i;:::-;;;;:::i;:::-;;;;;;;-1:-1:-1;;;;2947:42683:10;;;;;;;;-1:-1:-1;;;2947:42683:10;;;;;;;;;;-1:-1:-1;;;2947:42683:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;-1:-1:-1;2947:42683:10;;;;;-1:-1:-1;2947:42683:10;;;;;;;-1:-1:-1;;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2947:42683:10;;-1:-1:-1;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2947:42683:10;;;;-1:-1:-1;2947:42683:10;;;;;;;-1:-1:-1;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31730:55;;2947:42683;;;;;;;;;;;;;;;;:::o;38683:184::-;38782:9;2947:42683;38772:26;;;38768:58;;38782:9;2947:42683;;;;;;38782:9;-1:-1:-1;2947:42683:10;;;;;;38683:184::o;38768:58::-;38807:19;;;-1:-1:-1;38807:19:10;;2947:42683;;-1:-1:-1;38807:19:10;42585:615;;;;;;2947:42683;;42857:322;;;;2947:42683;4922:46;2947:42683;;42930:13;2947:42683;;;;42973:4;2947:42683;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;42857:322;;;;;;:::i;:::-;2947:42683;42830:363;;42585:615;:::o;17149:1291::-;;;;;;2947:42683;;;44330:23;44344:8;44330:23;;;:53;;;17149:1291;17441:19;17437:49;;2947:42683;;;44797:28;3682:5;44797:28;;;:67;;;17149:1291;17500:33;17496:83;;17669:19;;;:::i;:::-;17668:20;17664:52;;-1:-1:-1;2947:42683:10;;;17746:6;2947:42683;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;-1:-1:-1;;2947:42683:10;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;2947:42683:10;;;;;;17817:219;;;;;;:::i;:::-;2947:42683;17817:219;;2947:42683;;;;17817:219;;;2947:42683;;;;17817:219;;;18009:15;-1:-1:-1;;;;;18009:15:10;2947:42683;;;;-1:-1:-1;2947:42683:10;17787:9;2947:42683;;;-1:-1:-1;2947:42683:10;;-1:-1:-1;2947:42683:10;;;;-1:-1:-1;2947:42683:10;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;44344:8;2947:42683;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;-1:-1:-1;2947:42683:10;18046:11;2947:42683;;;-1:-1:-1;2947:42683:10;;;;;-1:-1:-1;;;2947:42683:10;;;;;18354:79;2947:42683;;;17817:219;2947:42683;44344:8;18284:55;2947:42683;;;;;:::i;:::-;;;-1:-1:-1;;;;;17787:9:10;2947:42683;;;;;;;;;;;;;;;;17746:6;18114:17;;2947:42683;;-1:-1:-1;;;;2947:42683:10;;;;;;;;;;;;;-1:-1:-1;;;2947:42683:10;;;;;18284:55;:::i;:::-;2947:42683;;;;;;;;;;;;;;17817:219;2947:42683;;;18354:79;17149:1291::o;17664:52::-;-1:-1:-1;;;;17697:19:10;;;-1:-1:-1;;;;;2947:42683:10;;17697:19;2947:42683;;;17697:19;17496:83;17542:37;;;;-1:-1:-1;17542:37:10;;2947:42683;;-1:-1:-1;17542:37:10;44797:67;2947:42683;;3547:4;2947:42683;;;44830:33;44797:67;;17437:49;17469:17;;;;-1:-1:-1;17469:17:10;;2947:42683;;-1:-1:-1;17469:17:10;44330:53;44357:26;44371:11;44357:26;;;44330:53;;40675:1103;;;;;;2947:42683;;41426:331;;;;2947:42683;4632:47;2947:42683;;41500:13;2947:42683;;;;41543:4;2947:42683;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2947:42683:10;;;;;;;;;41426:331;;;;;;;:::i;3749:292:57:-;2407:1;1505:66;2947:42683:10;4560:63:57;3644:93;;2407:1;1505:66;2947:42683:10;3749:292:57:o;3644:93::-;3696:30;;;-1:-1:-1;3696:30:57;;-1:-1:-1;3696:30:57;39849:235:10;2947:42683;;;40021:55;;;2947:42683;;;;;;;;-1:-1:-1;;;;;;2947:42683:10;;;;;;;;;;-1:-1:-1;;;;;;2947:42683:10;;;;;40021:55;2947:42683;;;;40021:55;2947:42683;39710:133;39787:12;;;:::i;:::-;:49;;;;39780:56;39710:133;:::o;39787:49::-;2947:42683;;;;;;;;-1:-1:-1;2947:42683:10;39803:10;2947:42683;;-1:-1:-1;;;;;39803:10:10;2947:42683;-1:-1:-1;2947:42683:10;39803:28;2947:42683;;39803:33;39710:133;:::o;39372:164::-;-1:-1:-1;;;;;2947:42683:10;-1:-1:-1;2947:42683:10;;;;;;;;;;39494:12;;;;;:35;;39487:42;39372:164;:::o;39494:35::-;39521:8;;;-1:-1:-1;39510:19:10;39372:164;:::o;43451:159::-;;2947:42683;;;;;;;;;;;43581:2;2947:42683;;43556:46;43451:159;:::o;36761:157::-;;36880:30;2947:42683;36761:157;2947:42683;;36880:30;;;;;;2947:42683;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;:::o;45140:488::-;2947:42683;;;;;;;:::i;:::-;45302:2;2947:42683;;;;;;;;;;;;;;45315:12;;;2947:42683;;45341:1;2947:42683;;;;45337:12;2947:42683;;;45337:12;-1:-1:-1;45375:6:10;2947:42683;45375:6;;;;45603:18;;45140:488;:::o;45364:9::-;45415:8;;;2947:42683;;;45471:1;2947:42683;;45455:18;;;;;;2947:42683;45341:1;2947:42683;;;;;45442:1;2947:42683;;;;;;;;45442:1;2947:42683;;45442:1;2947:42683;;;45519:4;;-1:-1:-1;;;45455:18:10;;;45438:35;;;;:::i;:::-;;45515:8;45504:20;45455:18;45504:20;;;;;45491:1;2947:42683;;45491:1;2947:42683;;;45341:1;;-1:-1:-1;;;45504:20:10;;;45487:37;;;;:::i;:::-;;2947:42683;45364:9;;2419:778:59;2947:42683:10;;;2419:778:59;2609:2;2589:22;;2609:2;;3041:25;2825:196;;;;;;;;;;;;;;;-1:-1:-1;2825:196:59;3041:25;;:::i;:::-;3034:32;;;;;:::o;2585:606::-;3097:83;;3113:1;3097:83;3117:35;3097:83;;:::o;11617:532::-;2947:42683:10;;;:::i;:::-;11703:29:59;;;11748:7;;:::o;11699:444::-;2947:42683:10;;;:::i;:::-;;11799:38:59;;2947:42683:10;;11860:23:59;;;11712:20;11860:23;2947:42683:10;11712:20:59;11860:23;11795:348;2947:42683:10;;;:::i;:::-;11913:35:59;11904:44;;11913:35;;11971:46;;;;11712:20;11971:46;2947:42683:10;;;11712:20:59;11971:46;11900:243;12047:30;2947:42683:10;;;;:::i;:::-;12038:39:59;12034:109;;11900:243;11617:532::o;12034:109::-;12100:32;;;11712:20;12100:32;2947:42683:10;;;11712:20:59;12100:32;7129:1551;;;8209:66;8196:79;;8192:164;;2947:42683:10;;;;;;-1:-1:-1;2947:42683:10;;;;;;;;;;;;;;;;;;;8467:24:59;;;;;;;;;-1:-1:-1;8467:24:59;-1:-1:-1;;;;;2947:42683:10;;8505:20:59;8501:113;;8624:49;-1:-1:-1;8624:49:59;-1:-1:-1;7129:1551:59;:::o;8501:113::-;8541:62;-1:-1:-1;8541:62:59;8467:24;8541:62;-1:-1:-1;8541:62:59;:::o;8467:24::-;2947:42683:10;;;-1:-1:-1;2947:42683:10;;;;;8192:164:59;8291:54;;;8307:1;8291:54;8311:30;8291:54;;:::o","linkReferences":{},"immutableReferences":{"12735":[{"start":4588,"length":32}],"3315":[{"start":4530,"length":32},{"start":5303,"length":32},{"start":12805,"length":32}],"3318":[{"start":3697,"length":32},{"start":4866,"length":32},{"start":6364,"length":32}],"3321":[{"start":774,"length":32},{"start":1560,"length":32},{"start":2461,"length":32},{"start":8571,"length":32},{"start":9889,"length":32}],"3324":[{"start":1526,"length":32},{"start":2427,"length":32},{"start":3087,"length":32}],"3327":[{"start":1477,"length":32},{"start":2378,"length":32},{"start":5054,"length":32}],"3331":[{"start":5225,"length":32},{"start":9152,"length":32}]}},"methodIdentifiers":{"COMMIT_DOMAIN()":"e5039ae8","CONFIDENCE_GRID_BPS()":"8991d354","MAX_COMMITTEE()":"8dd5c0d6","MAX_CONFIDENCE_BPS()":"c86bf203","MAX_VOTING_WINDOW()":"aff94438","MIN_VOTING_WINDOW()":"0299afbd","VERDICT_DOMAIN()":"dafc34fc","bondOf(address)":"72d2b6c0","claimReward()":"b88a802f","commitDigest(uint256,address,uint8,uint16,bytes32,bytes32)":"5718c8cb","commitVerdict(uint256,bytes32)":"86560f3c","consensusHash(bytes32,uint8,uint16)":"68445fd3","consensusPreimage(bytes32,uint8,uint16)":"8c1f7713","deploymentBlock()":"82100e3f","deregister()":"aff5edb1","deregisterCooldown()":"12eb5c16","getCanonicalVerdict(uint256)":"ae865ce0","getKnob(bytes32,string)":"fae09c4c","getThought(uint256)":"1cf5f212","getVerdict(uint256,address)":"fbbbc0ba","getVerdicts(uint256)":"b242a901","isOperator(address)":"6d70f7ae","keyValuePairs()":"447a7a85","minBond()":"831518b7","openFee()":"b7845073","openThought(bytes32,bytes32,bytes32,uint8,uint8,uint64,string)":"bc3a2cee","openThoughtCommitReveal(bytes32,bytes32,bytes32,uint8,uint8,uint64,uint64,string)":"dbd3f86b","operatorCount()":"7c6f3158","operatorSince(address)":"b0b76195","registerOperator()":"2acde098","revealVerdict(uint256,uint8,uint16,bytes32,bytes32)":"0e8f9ad0","rewardOf(address)":"1d62ebd9","rewardPerThought()":"ea5f58a5","settle(uint256)":"8df82800","submitVerdict(uint256,uint8,uint16,bytes32,bytes)":"e942b8bb","supportsInterface(bytes4)":"01ffc9a7","taskCount()":"b6cb58a5","treasury()":"61d027b3","verdictDigest(uint256,address,bytes32,uint8,uint16,bytes32)":"1da6c894","version()":"54fd4d50","withdrawBond()":"66eb9cec"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.31+commit.fd3a2265\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"minBond_\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"deregisterCooldown_\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"rewardPerThought_\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"openFee_\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"treasury_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"keyValuePairs_\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"AlreadyCommitted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"AlreadyRegistered\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"AlreadySettled\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"AlreadyVoted\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"commitWindow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"revealWindow\",\"type\":\"uint64\"}],\"name\":\"BadCommitRevealWindow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"}],\"name\":\"BadCommitteeSize\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint16\",\"name\":\"bucket\",\"type\":\"uint16\"}],\"name\":\"BadConfidenceBucket\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"threshold\",\"type\":\"uint8\"}],\"name\":\"BadThreshold\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"votingWindow\",\"type\":\"uint64\"}],\"name\":\"BadVotingWindow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"BondTooLow\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"CommitClosed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"CommitMismatch\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DeploymentBlockAlreadySet\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"withdrawableAt\",\"type\":\"uint64\"}],\"name\":\"DeregisterCooldownActive\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ECDSAInvalidSignature\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"length\",\"type\":\"uint256\"}],\"name\":\"ECDSAInvalidSignatureLength\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"ECDSAInvalidSignatureS\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyCommit\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"EmptyKnobKey\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"vote\",\"type\":\"uint8\"}],\"name\":\"InvalidVote\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NoBondToWithdraw\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"NotBonded\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"NotCommitReveal\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"NotCommitted\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"NothingToWithdraw\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"opener\",\"type\":\"address\"}],\"name\":\"OpenerCannotVote\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"opener\",\"type\":\"address\"}],\"name\":\"OpenerIsTreasury\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ReentrancyGuardReentrantCall\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"RevealClosed\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"RevealNotOpen\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"}],\"name\":\"SettleTooEarly\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"recovered\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"SignerMismatch\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"TaskFull\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"TaskNotOpen\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"UnknownTask\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"UseCommitReveal\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"sent\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"required\",\"type\":\"uint256\"}],\"name\":\"WrongOpenPayment\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroModelSpec\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"BondWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"modelSpecHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"value\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"KnobSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"withdrawableAt\",\"type\":\"uint64\"}],\"name\":\"OperatorDeregisterRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bond\",\"type\":\"uint256\"}],\"name\":\"OperatorRegistered\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"RewardAccrued\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"modelSpecHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"promptHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidenceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"threshold\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"knobKey\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"opener\",\"type\":\"address\"}],\"name\":\"ThoughtOpened\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"uint8\",\"name\":\"vote\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"confidenceBucket\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"agreeCount\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"submissionCount\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidenceRoot\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"agreeingOperators\",\"type\":\"address[]\"}],\"name\":\"ThoughtSettled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"commit\",\"type\":\"bytes32\"}],\"name\":\"VerdictCommitted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes32[]\",\"name\":\"consensusKeys\",\"type\":\"bytes32[]\"},{\"indexed\":false,\"internalType\":\"uint8[]\",\"name\":\"counts\",\"type\":\"uint8[]\"}],\"name\":\"VerdictDistribution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"vote\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint16\",\"name\":\"confidenceBucket\",\"type\":\"uint16\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"evidenceHash\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"consensusHash\",\"type\":\"bytes32\"}],\"name\":\"VerdictSubmitted\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"COMMIT_DOMAIN\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"CONFIDENCE_GRID_BPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_COMMITTEE\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_CONFIDENCE_BPS\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_VOTING_WINDOW\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_VOTING_WINDOW\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"VERDICT_DOMAIN\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"bondOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"claimReward\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"vote\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"confidenceBucket\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidenceHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"name\":\"commitDigest\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"commit\",\"type\":\"bytes32\"}],\"name\":\"commitVerdict\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"modelSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"vote\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"confidenceBucket\",\"type\":\"uint16\"}],\"name\":\"consensusHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"modelSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"vote\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"confidenceBucket\",\"type\":\"uint16\"}],\"name\":\"consensusPreimage\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deploymentBlock\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deregister\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deregisterCooldown\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"getCanonicalVerdict\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"settled\",\"type\":\"bool\"},{\"internalType\":\"enum IAIGovernor.Vote\",\"name\":\"vote\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"confidenceBucket\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"agreeCount\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"modelSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"key\",\"type\":\"string\"}],\"name\":\"getKnob\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"getThought\",\"outputs\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"modelSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"promptHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"evidenceHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"threshold\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"openedAt\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"deadline\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"opener\",\"type\":\"address\"},{\"internalType\":\"enum IAIGovernor.Status\",\"name\":\"status\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"submissionCount\",\"type\":\"uint8\"},{\"internalType\":\"string\",\"name\":\"knobKey\",\"type\":\"string\"},{\"internalType\":\"enum IAIGovernor.Vote\",\"name\":\"canonicalVote\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"canonicalBucket\",\"type\":\"uint16\"},{\"internalType\":\"uint8\",\"name\":\"agreeCount\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"evidenceRoot\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"commitReveal\",\"type\":\"bool\"},{\"internalType\":\"uint64\",\"name\":\"commitDeadline\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"revealDeadline\",\"type\":\"uint64\"}],\"internalType\":\"struct IAIGovernor.Thought\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"getVerdict\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"enum IAIGovernor.Vote\",\"name\":\"vote\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"confidenceBucket\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidenceHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"submittedAt\",\"type\":\"uint64\"}],\"internalType\":\"struct IAIGovernor.Verdict\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"getVerdicts\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"enum IAIGovernor.Vote\",\"name\":\"vote\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"confidenceBucket\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidenceHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"submittedAt\",\"type\":\"uint64\"}],\"internalType\":\"struct IAIGovernor.Verdict[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"isOperator\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"keyValuePairs\",\"outputs\":[{\"internalType\":\"contract IKeyValuePairsV1\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"minBond\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"openFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"modelSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"promptHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"evidenceHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"threshold\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"votingWindow\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"knobKey\",\"type\":\"string\"}],\"name\":\"openThought\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"modelSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"promptHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"evidenceHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"n\",\"type\":\"uint8\"},{\"internalType\":\"uint8\",\"name\":\"threshold\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"commitWindow\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"revealWindow\",\"type\":\"uint64\"},{\"internalType\":\"string\",\"name\":\"knobKey\",\"type\":\"string\"}],\"name\":\"openThoughtCommitReveal\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"operatorCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"operatorSince\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"registerOperator\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"vote\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"confidenceBucket\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidenceHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"nonce\",\"type\":\"bytes32\"}],\"name\":\"revealVerdict\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"who\",\"type\":\"address\"}],\"name\":\"rewardOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rewardPerThought\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"}],\"name\":\"settle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"vote\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"confidenceBucket\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidenceHash\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"sig\",\"type\":\"bytes\"}],\"name\":\"submitVerdict\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId_\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"taskCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"treasury\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"taskId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"modelSpecHash\",\"type\":\"bytes32\"},{\"internalType\":\"uint8\",\"name\":\"vote\",\"type\":\"uint8\"},{\"internalType\":\"uint16\",\"name\":\"confidenceBucket\",\"type\":\"uint16\"},{\"internalType\":\"bytes32\",\"name\":\"evidenceHash\",\"type\":\"bytes32\"}],\"name\":\"verdictDigest\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"\",\"type\":\"uint16\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"withdrawBond\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"Hanzo AI Inc / Lux Network\",\"custom:security-contact\":\"[email protected]\",\"errors\":{\"ECDSAInvalidSignature()\":[{\"details\":\"The signature is invalid.\"}],\"ECDSAInvalidSignatureLength(uint256)\":[{\"details\":\"The signature has an invalid length.\"}],\"ECDSAInvalidSignatureS(bytes32)\":[{\"details\":\"The signature has an S value that is in the upper half order.\"}],\"ReentrancyGuardReentrantCall()\":[{\"details\":\"Unauthorized reentrant call.\"}]},\"kind\":\"dev\",\"methods\":{\"constructor\":{\"params\":{\"deregisterCooldown_\":\"seconds an operator must wait after deregister() before withdrawBond(). (Eligibility is ALSO re-checked at settle, so a zero cooldown still cannot let an exited operator tip a quorum.)\",\"keyValuePairs_\":\"DAO KeyValuePairsV1 singleton (address(0) to skip the external mirror; the contract still stores + emits the knob itself).\",\"minBond_\":\"minimum operator bond (wei).\",\"openFee_\":\"NON-refundable wei the opener pays per task (anti-sybil). Must be 0 if treasury_ is address(0).\",\"rewardPerThought_\":\"wei the opener escrows per task, split among the agreeing group on a quorum, refunded to the opener on no-quorum. 0 = off.\",\"treasury_\":\"recipient of open fees (pull-payment). address(0) only if openFee_ is 0.\"}},\"deploymentBlock()\":{\"details\":\"Set during contract initialization and immutable thereafter. Useful for off-chain services to know where to start indexing events.\",\"returns\":{\"_0\":\"The block number of contract deployment\"}},\"deregister()\":{\"details\":\"Starts the withdrawal cooldown. The operator becomes INELIGIBLE for new verdicts immediately (eligibility requires deregisterAt == 0), but the bond is only withdrawable after the cooldown.\"},\"getCanonicalVerdict(uint256)\":{\"returns\":{\"agreeCount\":\"size of the agreeing group.\",\"confidenceBucket\":\"the winning confidence bucket (bps).\",\"settled\":\"true iff the task reached quorum (Status.Settled).\",\"vote\":\"the winning vote.\"}},\"settle(uint256)\":{\"details\":\"Idempotent: once a task leaves Open it can never be settled again. Tallies verdicts by the consensus key {vote, confidenceBucket}. The largest group decides; if it reaches threshold the task SETTLES with that canonical decision, otherwise it FAILS. On a YES-quorum the governed knob is set.\"},\"version()\":{\"details\":\"Pure function that returns a hardcoded version. Typically returns 1 for V1 contracts, 2 for V2, etc.\",\"returns\":{\"_0\":\"The contract version as a uint16\"}},\"withdrawBond()\":{\"details\":\"Checks-effects-interactions + nonReentrant. Bond is zeroed before the transfer so a reentrant call sees no bond.\"}},\"stateVariables\":{\"_knobs\":{\"details\":\"The governed knobs, keyed by _knobSlot(modelSpecHash, key) = keccak256(abi.encode(spec, key)). Written exclusively by _setKnob, which is called only from settle(). No setter is exposed \\u2014 the only path to mutate a knob is a YES-quorum thinking-validator decision under that exact spec.\"}},\"title\":\"AIGovernor\",\"version\":1},\"userdoc\":{\"errors\":{\"DeploymentBlockAlreadySet()\":[{\"notice\":\"Thrown when attempting to set deployment block after it's already set\"}]},\"events\":{\"KnobSet(bytes32,string,bytes32,uint256)\":{\"notice\":\"A governed knob was set by a YES-quorum decision. The knob is scoped to (modelSpecHash, key): a decision under one spec can NEVER overwrite a knob governed by another spec. Mirrors the {KeyValuePairsV1.ValueUpdated} shape so the SAME subgraph/indexer that reads DAO metadata also surfaces decisions.\"},\"RewardAccrued(address,uint256,uint256)\":{\"notice\":\"Reward credited to an agreeing operator (pull-payment).\"},\"ThoughtSettled(uint256,uint8,uint16,uint8,uint8,bytes32,address[])\":{\"notice\":\"The canonical on-chain governance decision. This is the load-bearing \\\"the blockchain thought and decided\\\" record the DAO/frontend reads.\"},\"VerdictCommitted(uint256,address,bytes32)\":{\"notice\":\"An operator sealed a commit on a commit-reveal task. The commit is the only datum public during the commit window \\u2014 and it is operator-bound, so a peer copying these bytes cannot reveal them (the reveal recomputes against the revealer's own address).\"},\"VerdictDistribution(uint256,bytes32[],uint8[])\":{\"notice\":\"Emitted alongside settlement so the dissent/confidence distribution is visible on-chain even when the winning group is not unanimous.\"}},\"kind\":\"user\",\"methods\":{\"COMMIT_DOMAIN()\":{\"notice\":\"Domain tag for the commit-reveal commit digest. Distinct from {VERDICT_DOMAIN} so a sealed commit can never be confused with (or replayed as) a cleartext-submit signature.\"},\"CONFIDENCE_GRID_BPS()\":{\"notice\":\"Confidence grid width in bps. confidence must be a multiple of this (canonical.ConfidenceGridBps). 1000 bps = 11 buckets {0,1000,...,10000}.\"},\"MAX_COMMITTEE()\":{\"notice\":\"Hard cap on committee size to bound settle()'s O(n) tally loop and keep the per-task array storage cheap.\"},\"MAX_CONFIDENCE_BPS()\":{\"notice\":\"Inclusive max confidence (100.00%). canonical.MaxConfidenceBps.\"},\"MIN_VOTING_WINDOW()\":{\"notice\":\"Voting-window bounds. A task cannot settle before its deadline unless all n verdicts are in; the window must be sane (neither instant nor absurd) so a griefer cannot force an empty/early settlement and an opener cannot lock a task open forever.\"},\"VERDICT_DOMAIN()\":{\"notice\":\"Domain tag for the verdict signature. Mirrors the Go operator's reveal domain (\\\"hanzo/aiquorum/reveal/v1\\\") for the thinking-governance verdict. Domain separation prevents a signature minted for this purpose from being replayed as any other secp256k1-signed message (or vice-versa).\"},\"commitDigest(uint256,address,uint8,uint16,bytes32,bytes32)\":{\"notice\":\"The operator-bound commit an operator seals (and the contract recomputes at reveal). Domain-separated and bound to this deployment + task + operator, so a commit is non-transferable across operators, tasks, instances, or chains.\"},\"commitVerdict(uint256,bytes32)\":{\"notice\":\"Seal a commit for a commit-reveal task during the commit window. `commit` MUST be {commitDigest}(taskId, msg.sender, vote, bucket, evidenceHash, nonce). One per operator.\"},\"consensusHash(bytes32,uint8,uint16)\":{\"notice\":\"keccak256(consensusPreimage(...)) \\u2014 the consensus hash that gates the quorum tally. Identical to canonical.OutputHashGovernance on the Go side. This is the value compared across operators to form agreement; it is NOT what an operator signs at submission (see {verdictDigest}).\"},\"consensusPreimage(bytes32,uint8,uint16)\":{\"notice\":\"The canonical consensus preimage bytes (35) \\u2014 exactly what the Go operator hashes. Exposed so off-chain tooling can assert byte-parity.\"},\"deploymentBlock()\":{\"notice\":\"Returns the block number when this contract was deployed\"},\"deregisterCooldown()\":{\"notice\":\"Cooldown (seconds) between deregister() and withdrawBond().\"},\"getCanonicalVerdict(uint256)\":{\"notice\":\"The on-chain canonical decision for a settled task.\"},\"getKnob(bytes32,string)\":{\"notice\":\"Read a governed knob set by a thinking-validator decision. Knobs are scoped to (modelSpecHash, key): the consumer MUST supply the spec that governs its parameter, so an attacker opening a task under a different spec can never overwrite the value the consumer reads.\"},\"keyValuePairs()\":{\"notice\":\"The DAO KeyValuePairs singleton. When set (non-zero), a YES-quorum mirrors its knob to ValueUpdated so the existing DAO subgraph indexes it. Zero is valid: the contract still emits its own {KnobSet} event + stores the knob, so on-chain visibility never depends on this being configured.\"},\"openFee()\":{\"notice\":\"Non-refundable fee required to open a thought (anti-sybil/anti-spam).\"},\"openThoughtCommitReveal(bytes32,bytes32,bytes32,uint8,uint8,uint64,uint64,string)\":{\"notice\":\"Open a COMMIT-REVEAL thought: operators must seal a commit during the commit window, then reveal strictly after it closes. Prevents the value-copy attack the cleartext {submitVerdict} path is open to (an operator reading a peer's cleartext verdict and copying it). Mirrors the A-Chain two-phase commit (chains/aivm/commit_reveal.go): reveal opens only after commit closes, and the commit binds the operator so a copied commit cannot be revealed by anyone else. `deadline` is set to the reveal close, so {settle} waits for the full commit+reveal duration.\"},\"operatorCount()\":{\"notice\":\"Count of currently-bonded operators \\u2014 the sortition population.\"},\"operatorSince(address)\":{\"notice\":\"Block number an operator first bonded (0 if never) \\u2014 sortition eligibility uses it to require registration BEFORE a round opened.\"},\"revealVerdict(uint256,uint8,uint16,bytes32,bytes32)\":{\"notice\":\"Reveal a previously-committed verdict, strictly after the commit window closes. The contract recomputes the operator-bound commit and rejects a mismatch; no signature is needed because the operator-bound commit IS the authentication. Records the verdict for the tally exactly as {submitVerdict} would.\"},\"rewardPerThought()\":{\"notice\":\"Per-task reward pool funded by the opener, split among agreeing operators. Refunded to the opener on a no-quorum. Zero is valid.\"},\"treasury()\":{\"notice\":\"Treasury that accrues open fees (pull-payment).\"},\"verdictDigest(uint256,address,bytes32,uint8,uint16,bytes32)\":{\"notice\":\"The digest an operator SIGNS to submit a verdict. Domain-separated and bound to the EXACT task, operator, consensus fields, and evidence \\u2014 the on-chain mirror of the Go operator's reveal digest (\\\"hanzo/thinking-governor/verdict/v1\\\"). Binding taskId makes a verdict non-transferable across tasks (even tasks sharing a modelSpecHash); binding operator + evidenceHash authenticates who submitted and which evidence they attest, closing the unsigned-evidence gap while leaving the consensus hash (and thus Go quorum parity) untouched.\"},\"version()\":{\"notice\":\"Returns the contract's version number\"}},\"notice\":\"Governance whose verdict is produced by a quorum of bonded node-operator LLMs and recorded on-chain. The on-chain realization of the AI governance layer: the chain \\\"thinks\\\" by aggregating signed, structured operator-LLM verdicts into a canonical decision and a governed knob. THREAT MODEL Assets: the canonical decision, the governed knob, operator bonds. Adversaries: verdict forgers, double-voters, signature relayers, malleators, reentrancy on payout, settle-replayers, cross-spec confusers. Surface: registerOperator, deregister, withdrawBond, openThought, submitVerdict, settle, claimReward. DEFENSE IN DEPTH 1. ecrecover over the EXACT Go canonical preimage (binds the decision to the task's modelSpecHash \\u2014 a \\\"yes under spec A\\\" cannot count toward spec B). 2. recovered signer MUST equal msg.sender (operator-bound; a detached/relayed signature for another operator is rejected). 3. low-S + v\\u2208{27,28} enforced by OpenZeppelin ECDSA (kills malleability double-submit; mirrors Go ValidateSignatureValues(homestead=true)). 4. one verdict per operator per task (kills ballot stuffing). 5. eligibility = bonded >= minBond, checked at submit AND counted at settle. 6. strict-majority threshold (>= n/2 + 1) enforced at openThought. 7. pull-payment rewards + checks-effects-interactions on bond return (no external value-call inside state mutation; nonReentrant on payouts). 8. idempotent settle via the Status state machine (Open -> Settled|Failed once). SIGNATURE V NOTE Go crypto.Sign yields recovery id v \\u2208 {0,1}; ecrecover / OZ ECDSA expect v \\u2208 {27,28}. A relay submitting a Go operator's signature adds 27 to the final byte. Foundry's vm.sign already returns v \\u2208 {27,28}, so genuine test signatures verify directly. The signed DIGEST is the raw consensusHash (no EIP-191 prefix), identical to the off-chain operator which signs the raw keccak digest.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/ai/governance/AIGovernor.sol\":\"AIGovernor\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":\\\"ds-test/=lib/alchemix-v2/\\\"../lib/ds-test/src/\",\":\\\"forge-std/=lib/alchemix-v2/\\\"lib/forge-std/src/\",\":@account-abstraction/=lib/account-abstraction/contracts/\",\":@balancer-labs/=lib/balancer/../../node_modules/@balancer-labs/\",\":@balancer/=lib/balancer/pkg/\",\":@chainlink/contracts/=lib/chainlink/contracts/\",\":@comet-contracts/=lib/compound-v3/contracts/\",\":@compound-v3/=lib/compound-v3/contracts/\",\":@curve/=lib/curve/contracts/\",\":@forge-std/=lib/compound-v3/forge/lib/forge-std/\",\":@gnosis.pm/safe-contracts/=lib/safe-smart-account/contracts/\",\":@lido/=lib/lido/contracts/\",\":@lux/=contracts/\",\":@luxfi/contracts/=contracts/\",\":@luxfi/erc-3643/contracts/=contracts/securities/erc3643/\",\":@luxfi/lamport/=../lamport/contracts/\",\":@luxfi/markets/=contracts/markets/\",\":@luxfi/onchain-id/contracts/=contracts/securities/onchainid/\",\":@luxfi/oz-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@luxfi/oz/=lib/openzeppelin-contracts/contracts/\",\":@luxfi/standard/=contracts/\",\":@manifoldxyz/=lib/manifoldxyz/\",\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@pendle/=lib/pendle/contracts/\",\":@prb/math/=lib/prb-math/src/\",\":@pyth-network/=lib/pyth/\",\":@rari-capital/solmate/=lib/solmate/\",\":@reservoir/=lib/core/packages/contracts/contracts/\",\":@safe-global/safe-modules/=lib/safe-modules/modules/\",\":@safe-global/safe-smart-account/=lib/safe-smart-account/contracts/\",\":@seaport/=lib/seaport/contracts/\",\":@solmate/=lib/solmate/src/\",\":@uniswap/lib/=lib/uni-lib/\",\":@uniswap/v2-core/=lib/uni-v2/\",\":@uniswap/v3-core/=lib/uni-v3/\",\":@uniswap/v3-periphery/=lib/uni-v3-periphery/\",\":aave-v3/=lib/aave-v3/\",\":account-abstraction/=lib/account-abstraction/contracts/\",\":alchemix-v2/=lib/alchemix-v2/src/\",\":alchemix-v3/=lib/alchemix-v3/\",\":balancer/=lib/balancer/\",\":base64-sol/=lib/base64/\",\":base64/=lib/base64/\",\":chainlink/=lib/chainlink/\",\":clones-with-immutable-args/=lib/clones-with-immutable-args/src/\",\":compound-v2/=lib/compound-v2/\",\":compound-v3/=lib/compound-v3/\",\":core/=lib/core/\",\":create2-helpers/=lib/manifoldxyz/lib/create2-helpers/\",\":create2-scripts/=lib/manifoldxyz/lib/create2-helpers/script/\",\":curve/=lib/curve/\",\":ds-test/=lib/clones-with-immutable-args/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/\",\":eth-gas-reporter/=lib/compound-v3/node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":gmx-v1/=lib/gmx-v1/contracts/\",\":gmx-v2/=lib/gmx-v2/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/\",\":hardhat/=lib/forge-std/src/\",\":layerzero-v2/=lib/layerzero-v2/\",\":libraries-solidity/=lib/manifoldxyz/lib/libraries-solidity/contracts/\",\":lido/=lib/lido/contracts/\",\":manifoldxyz/=lib/manifoldxyz/\",\":morpho-blue/=lib/morpho-blue/\",\":murky/=lib/seaport/lib/murky/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":pendle/=lib/pendle/contracts/\",\":prb-math/=lib/prb-math/src/\",\":pyth/=lib/pyth/\",\":safe-modules/=lib/safe-modules/\",\":safe-smart-account/=lib/safe-smart-account/contracts/\",\":seaport-core/=lib/seaport/lib/seaport-core/\",\":seaport-sol/=lib/seaport/lib/seaport-sol/\",\":seaport-types/=lib/seaport/lib/seaport-types/\",\":seaport/=lib/seaport/\",\":solady/=lib/seaport/lib/solady/\",\":solarray/=lib/seaport/lib/solarray/src/\",\":solmate/=lib/solmate/src/\",\":uni-lib/=lib/uni-lib/contracts/\",\":uni-v2/=lib/uni-v2/contracts/\",\":uni-v3-periphery/=lib/uni-v3-periphery/contracts/\",\":uni-v3/=lib/uni-v3/\"],\"viaIR\":true},\"sources\":{\"contracts/ai/governance/AIGovernor.sol\":{\"keccak256\":\"0x5592c485ec663b9d7a2b67fc2e58710f6f6f4fa9862d1fba501bf29bcd5797a9\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://1827f040bf37b3bcca59c25a60d017cc62f089c549697ddb94a8eb6dae6a3217\",\"dweb:/ipfs/QmcqxB5KmbezfCkjJJfVmTQwvjVUG5gMZktFHPbUy8jLQC\"]},\"contracts/ai/interfaces/IAIGovernor.sol\":{\"keccak256\":\"0x34b9b71a62aa6d49ad6ee546e8592b2f18d72afcfa12cd0ba295e636979dd3c0\",\"license\":\"BSD-3-Clause\",\"urls\":[\"bzz-raw://2a1efc9c383027e88ee1412df8a4943b2375c07a5b57bf32443820888bac0ab0\",\"dweb:/ipfs/QmcQQwkfJovG5YRjGWQtZ1kM4YPJRXuYLeoiHuBRrXAaGr\"]},\"contracts/dao/DeploymentBlockNonInitializable.sol\":{\"keccak256\":\"0x3d78beb6406c69f9846f6dd4ee7380c5a17f3ce8e7eb7895dbbcd44a048635b1\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://9c01b1fd195e50def98a3c5a423daa98a8c1535e0df40c8ac329fa644dcfe58f\",\"dweb:/ipfs/QmNmfm9UFUifeWW99NiSKkbwS3CaPsK3quW85s1DWAn1mn\"]},\"contracts/dao/interfaces/IDeploymentBlock.sol\":{\"keccak256\":\"0x2a199bbbf246d4f82adc1232e2956f14fb4c481d73b88ad96dedd47b34c0262b\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://d7143c11216bc7d14323b184b66e08218451579e9322f8de637d785b4262f134\",\"dweb:/ipfs/QmeDa5R33Pim7BNwEWnrKypuLQcnd6p9zYcgvcJRE4FQ5y\"]},\"contracts/dao/interfaces/deployables/IVersion.sol\":{\"keccak256\":\"0x7ab1bbab11ddd367058f13e405de2163c8ef6286e3fe32014cf618a0364393c5\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://32660381c059a6786b4c58ed0ff865920cebe89ba569a9d4616f07d0bc950eb2\",\"dweb:/ipfs/QmNdbheAgS8NA54pS5MF81zWu45pSCdotiRsZdtekvfPMV\"]},\"contracts/dao/interfaces/singletons/IKeyValuePairsV1.sol\":{\"keccak256\":\"0xd37d68687f6a5bae1ea22f86228d8572528b07b8a8abdc97a27ebd4e4f11d0de\",\"license\":\"AGPL-3.0\",\"urls\":[\"bzz-raw://3c4443029715c1d9055c8c2167613de87407f5c504fc0a66755b9b954e154298\",\"dweb:/ipfs/QmNkmh75ujviXKCSvf6PKsTUggqCMB8jHcfigc9uSiJkt6\"]},\"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol\":{\"keccak256\":\"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99\",\"dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N\"]},\"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol\":{\"keccak256\":\"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a\",\"dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377\",\"dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E\"]},\"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617\",\"dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.31+commit.fd3a2265"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"minBond_","type":"uint256"},{"internalType":"uint64","name":"deregisterCooldown_","type":"uint64"},{"internalType":"uint256","name":"rewardPerThought_","type":"uint256"},{"internalType":"uint256","name":"openFee_","type":"uint256"},{"internalType":"address","name":"treasury_","type":"address"},{"internalType":"address","name":"keyValuePairs_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"AlreadyCommitted"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"AlreadyRegistered"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"type":"error","name":"AlreadySettled"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"AlreadyVoted"},{"inputs":[{"internalType":"uint64","name":"commitWindow","type":"uint64"},{"internalType":"uint64","name":"revealWindow","type":"uint64"}],"type":"error","name":"BadCommitRevealWindow"},{"inputs":[{"internalType":"uint8","name":"n","type":"uint8"}],"type":"error","name":"BadCommitteeSize"},{"inputs":[{"internalType":"uint16","name":"bucket","type":"uint16"}],"type":"error","name":"BadConfidenceBucket"},{"inputs":[{"internalType":"uint8","name":"n","type":"uint8"},{"internalType":"uint8","name":"threshold","type":"uint8"}],"type":"error","name":"BadThreshold"},{"inputs":[{"internalType":"uint64","name":"votingWindow","type":"uint64"}],"type":"error","name":"BadVotingWindow"},{"inputs":[{"internalType":"uint256","name":"sent","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"type":"error","name":"BondTooLow"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"type":"error","name":"CommitClosed"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"CommitMismatch"},{"inputs":[],"type":"error","name":"DeploymentBlockAlreadySet"},{"inputs":[{"internalType":"uint64","name":"withdrawableAt","type":"uint64"}],"type":"error","name":"DeregisterCooldownActive"},{"inputs":[],"type":"error","name":"ECDSAInvalidSignature"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"type":"error","name":"ECDSAInvalidSignatureLength"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"type":"error","name":"ECDSAInvalidSignatureS"},{"inputs":[],"type":"error","name":"EmptyCommit"},{"inputs":[],"type":"error","name":"EmptyKnobKey"},{"inputs":[{"internalType":"uint8","name":"vote","type":"uint8"}],"type":"error","name":"InvalidVote"},{"inputs":[],"type":"error","name":"NoBondToWithdraw"},{"inputs":[{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"NotBonded"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"type":"error","name":"NotCommitReveal"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"operator","type":"address"}],"type":"error","name":"NotCommitted"},{"inputs":[],"type":"error","name":"NothingToWithdraw"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"opener","type":"address"}],"type":"error","name":"OpenerCannotVote"},{"inputs":[{"internalType":"address","name":"opener","type":"address"}],"type":"error","name":"OpenerIsTreasury"},{"inputs":[],"type":"error","name":"ReentrancyGuardReentrantCall"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"type":"error","name":"RevealClosed"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"type":"error","name":"RevealNotOpen"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint64","name":"deadline","type":"uint64"}],"type":"error","name":"SettleTooEarly"},{"inputs":[{"internalType":"address","name":"recovered","type":"address"},{"internalType":"address","name":"sender","type":"address"}],"type":"error","name":"SignerMismatch"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"type":"error","name":"TaskFull"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"type":"error","name":"TaskNotOpen"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"type":"error","name":"UnknownTask"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"type":"error","name":"UseCommitReveal"},{"inputs":[{"internalType":"uint256","name":"sent","type":"uint256"},{"internalType":"uint256","name":"required","type":"uint256"}],"type":"error","name":"WrongOpenPayment"},{"inputs":[],"type":"error","name":"ZeroModelSpec"},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false}],"type":"event","name":"BondWithdrawn","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"modelSpecHash","type":"bytes32","indexed":true},{"internalType":"string","name":"key","type":"string","indexed":false},{"internalType":"bytes32","name":"value","type":"bytes32","indexed":false},{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true}],"type":"event","name":"KnobSet","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint64","name":"withdrawableAt","type":"uint64","indexed":false}],"type":"event","name":"OperatorDeregisterRequested","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"bond","type":"uint256","indexed":false}],"type":"event","name":"OperatorRegistered","anonymous":false},{"inputs":[{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint256","name":"amount","type":"uint256","indexed":false},{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true}],"type":"event","name":"RewardAccrued","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"bytes32","name":"modelSpecHash","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"promptHash","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"evidenceHash","type":"bytes32","indexed":false},{"internalType":"uint8","name":"n","type":"uint8","indexed":false},{"internalType":"uint8","name":"threshold","type":"uint8","indexed":false},{"internalType":"string","name":"knobKey","type":"string","indexed":false},{"internalType":"address","name":"opener","type":"address","indexed":false}],"type":"event","name":"ThoughtOpened","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"uint8","name":"vote","type":"uint8","indexed":true},{"internalType":"uint16","name":"confidenceBucket","type":"uint16","indexed":false},{"internalType":"uint8","name":"agreeCount","type":"uint8","indexed":false},{"internalType":"uint8","name":"submissionCount","type":"uint8","indexed":false},{"internalType":"bytes32","name":"evidenceRoot","type":"bytes32","indexed":false},{"internalType":"address[]","name":"agreeingOperators","type":"address[]","indexed":false}],"type":"event","name":"ThoughtSettled","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bytes32","name":"commit","type":"bytes32","indexed":false}],"type":"event","name":"VerdictCommitted","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"bytes32[]","name":"consensusKeys","type":"bytes32[]","indexed":false},{"internalType":"uint8[]","name":"counts","type":"uint8[]","indexed":false}],"type":"event","name":"VerdictDistribution","anonymous":false},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"uint8","name":"vote","type":"uint8","indexed":false},{"internalType":"uint16","name":"confidenceBucket","type":"uint16","indexed":false},{"internalType":"bytes32","name":"evidenceHash","type":"bytes32","indexed":false},{"internalType":"bytes32","name":"consensusHash","type":"bytes32","indexed":false}],"type":"event","name":"VerdictSubmitted","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"COMMIT_DOMAIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"CONFIDENCE_GRID_BPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_COMMITTEE","outputs":[{"internalType":"uint8","name":"","type":"uint8"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_CONFIDENCE_BPS","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_VOTING_WINDOW","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_VOTING_WINDOW","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VERDICT_DOMAIN","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"stateMutability":"view","type":"function","name":"bondOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"claimReward"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"uint8","name":"vote","type":"uint8"},{"internalType":"uint16","name":"confidenceBucket","type":"uint16"},{"internalType":"bytes32","name":"evidenceHash","type":"bytes32"},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"stateMutability":"view","type":"function","name":"commitDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"bytes32","name":"commit","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"commitVerdict"},{"inputs":[{"internalType":"bytes32","name":"modelSpecHash","type":"bytes32"},{"internalType":"uint8","name":"vote","type":"uint8"},{"internalType":"uint16","name":"confidenceBucket","type":"uint16"}],"stateMutability":"pure","type":"function","name":"consensusHash","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"modelSpecHash","type":"bytes32"},{"internalType":"uint8","name":"vote","type":"uint8"},{"internalType":"uint16","name":"confidenceBucket","type":"uint16"}],"stateMutability":"pure","type":"function","name":"consensusPreimage","outputs":[{"internalType":"bytes","name":"","type":"bytes"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"deploymentBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"deregister"},{"inputs":[],"stateMutability":"view","type":"function","name":"deregisterCooldown","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getCanonicalVerdict","outputs":[{"internalType":"bool","name":"settled","type":"bool"},{"internalType":"enum IAIGovernor.Vote","name":"vote","type":"uint8"},{"internalType":"uint16","name":"confidenceBucket","type":"uint16"},{"internalType":"uint8","name":"agreeCount","type":"uint8"}]},{"inputs":[{"internalType":"bytes32","name":"modelSpecHash","type":"bytes32"},{"internalType":"string","name":"key","type":"string"}],"stateMutability":"view","type":"function","name":"getKnob","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getThought","outputs":[{"internalType":"struct IAIGovernor.Thought","name":"","type":"tuple","components":[{"internalType":"bytes32","name":"modelSpecHash","type":"bytes32"},{"internalType":"bytes32","name":"promptHash","type":"bytes32"},{"internalType":"bytes32","name":"evidenceHash","type":"bytes32"},{"internalType":"uint8","name":"n","type":"uint8"},{"internalType":"uint8","name":"threshold","type":"uint8"},{"internalType":"uint64","name":"openedAt","type":"uint64"},{"internalType":"uint64","name":"deadline","type":"uint64"},{"internalType":"address","name":"opener","type":"address"},{"internalType":"enum IAIGovernor.Status","name":"status","type":"uint8"},{"internalType":"uint8","name":"submissionCount","type":"uint8"},{"internalType":"string","name":"knobKey","type":"string"},{"internalType":"enum IAIGovernor.Vote","name":"canonicalVote","type":"uint8"},{"internalType":"uint16","name":"canonicalBucket","type":"uint16"},{"internalType":"uint8","name":"agreeCount","type":"uint8"},{"internalType":"bytes32","name":"evidenceRoot","type":"bytes32"},{"internalType":"bool","name":"commitReveal","type":"bool"},{"internalType":"uint64","name":"commitDeadline","type":"uint64"},{"internalType":"uint64","name":"revealDeadline","type":"uint64"}]}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"getVerdict","outputs":[{"internalType":"struct IAIGovernor.Verdict","name":"","type":"tuple","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"enum IAIGovernor.Vote","name":"vote","type":"uint8"},{"internalType":"uint16","name":"confidenceBucket","type":"uint16"},{"internalType":"bytes32","name":"evidenceHash","type":"bytes32"},{"internalType":"uint64","name":"submittedAt","type":"uint64"}]}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getVerdicts","outputs":[{"internalType":"struct IAIGovernor.Verdict[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"enum IAIGovernor.Vote","name":"vote","type":"uint8"},{"internalType":"uint16","name":"confidenceBucket","type":"uint16"},{"internalType":"bytes32","name":"evidenceHash","type":"bytes32"},{"internalType":"uint64","name":"submittedAt","type":"uint64"}]}]},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"stateMutability":"view","type":"function","name":"isOperator","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"keyValuePairs","outputs":[{"internalType":"contract IKeyValuePairsV1","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"minBond","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"openFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"modelSpecHash","type":"bytes32"},{"internalType":"bytes32","name":"promptHash","type":"bytes32"},{"internalType":"bytes32","name":"evidenceHash","type":"bytes32"},{"internalType":"uint8","name":"n","type":"uint8"},{"internalType":"uint8","name":"threshold","type":"uint8"},{"internalType":"uint64","name":"votingWindow","type":"uint64"},{"internalType":"string","name":"knobKey","type":"string"}],"stateMutability":"payable","type":"function","name":"openThought","outputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"modelSpecHash","type":"bytes32"},{"internalType":"bytes32","name":"promptHash","type":"bytes32"},{"internalType":"bytes32","name":"evidenceHash","type":"bytes32"},{"internalType":"uint8","name":"n","type":"uint8"},{"internalType":"uint8","name":"threshold","type":"uint8"},{"internalType":"uint64","name":"commitWindow","type":"uint64"},{"internalType":"uint64","name":"revealWindow","type":"uint64"},{"internalType":"string","name":"knobKey","type":"string"}],"stateMutability":"payable","type":"function","name":"openThoughtCommitReveal","outputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"operatorCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"stateMutability":"view","type":"function","name":"operatorSince","outputs":[{"internalType":"uint64","name":"","type":"uint64"}]},{"inputs":[],"stateMutability":"payable","type":"function","name":"registerOperator"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint8","name":"vote","type":"uint8"},{"internalType":"uint16","name":"confidenceBucket","type":"uint16"},{"internalType":"bytes32","name":"evidenceHash","type":"bytes32"},{"internalType":"bytes32","name":"nonce","type":"bytes32"}],"stateMutability":"nonpayable","type":"function","name":"revealVerdict"},{"inputs":[{"internalType":"address","name":"who","type":"address"}],"stateMutability":"view","type":"function","name":"rewardOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"rewardPerThought","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"settle"},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"uint8","name":"vote","type":"uint8"},{"internalType":"uint16","name":"confidenceBucket","type":"uint16"},{"internalType":"bytes32","name":"evidenceHash","type":"bytes32"},{"internalType":"bytes","name":"sig","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"submitVerdict"},{"inputs":[{"internalType":"bytes4","name":"interfaceId_","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"taskCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"treasury","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"taskId","type":"uint256"},{"internalType":"address","name":"operator","type":"address"},{"internalType":"bytes32","name":"modelSpecHash","type":"bytes32"},{"internalType":"uint8","name":"vote","type":"uint8"},{"internalType":"uint16","name":"confidenceBucket","type":"uint16"},{"internalType":"bytes32","name":"evidenceHash","type":"bytes32"}],"stateMutability":"view","type":"function","name":"verdictDigest","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"pure","type":"function","name":"version","outputs":[{"internalType":"uint16","name":"","type":"uint16"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"withdrawBond"}],"devdoc":{"kind":"dev","methods":{"constructor":{"params":{"deregisterCooldown_":"seconds an operator must wait after deregister() before withdrawBond(). (Eligibility is ALSO re-checked at settle, so a zero cooldown still cannot let an exited operator tip a quorum.)","keyValuePairs_":"DAO KeyValuePairsV1 singleton (address(0) to skip the external mirror; the contract still stores + emits the knob itself).","minBond_":"minimum operator bond (wei).","openFee_":"NON-refundable wei the opener pays per task (anti-sybil). Must be 0 if treasury_ is address(0).","rewardPerThought_":"wei the opener escrows per task, split among the agreeing group on a quorum, refunded to the opener on no-quorum. 0 = off.","treasury_":"recipient of open fees (pull-payment). address(0) only if openFee_ is 0."}},"deploymentBlock()":{"details":"Set during contract initialization and immutable thereafter. Useful for off-chain services to know where to start indexing events.","returns":{"_0":"The block number of contract deployment"}},"deregister()":{"details":"Starts the withdrawal cooldown. The operator becomes INELIGIBLE for new verdicts immediately (eligibility requires deregisterAt == 0), but the bond is only withdrawable after the cooldown."},"getCanonicalVerdict(uint256)":{"returns":{"agreeCount":"size of the agreeing group.","confidenceBucket":"the winning confidence bucket (bps).","settled":"true iff the task reached quorum (Status.Settled).","vote":"the winning vote."}},"settle(uint256)":{"details":"Idempotent: once a task leaves Open it can never be settled again. Tallies verdicts by the consensus key {vote, confidenceBucket}. The largest group decides; if it reaches threshold the task SETTLES with that canonical decision, otherwise it FAILS. On a YES-quorum the governed knob is set."},"version()":{"details":"Pure function that returns a hardcoded version. Typically returns 1 for V1 contracts, 2 for V2, etc.","returns":{"_0":"The contract version as a uint16"}},"withdrawBond()":{"details":"Checks-effects-interactions + nonReentrant. Bond is zeroed before the transfer so a reentrant call sees no bond."}},"version":1},"userdoc":{"kind":"user","methods":{"COMMIT_DOMAIN()":{"notice":"Domain tag for the commit-reveal commit digest. Distinct from {VERDICT_DOMAIN} so a sealed commit can never be confused with (or replayed as) a cleartext-submit signature."},"CONFIDENCE_GRID_BPS()":{"notice":"Confidence grid width in bps. confidence must be a multiple of this (canonical.ConfidenceGridBps). 1000 bps = 11 buckets {0,1000,...,10000}."},"MAX_COMMITTEE()":{"notice":"Hard cap on committee size to bound settle()'s O(n) tally loop and keep the per-task array storage cheap."},"MAX_CONFIDENCE_BPS()":{"notice":"Inclusive max confidence (100.00%). canonical.MaxConfidenceBps."},"MIN_VOTING_WINDOW()":{"notice":"Voting-window bounds. A task cannot settle before its deadline unless all n verdicts are in; the window must be sane (neither instant nor absurd) so a griefer cannot force an empty/early settlement and an opener cannot lock a task open forever."},"VERDICT_DOMAIN()":{"notice":"Domain tag for the verdict signature. Mirrors the Go operator's reveal domain (\"hanzo/aiquorum/reveal/v1\") for the thinking-governance verdict. Domain separation prevents a signature minted for this purpose from being replayed as any other secp256k1-signed message (or vice-versa)."},"commitDigest(uint256,address,uint8,uint16,bytes32,bytes32)":{"notice":"The operator-bound commit an operator seals (and the contract recomputes at reveal). Domain-separated and bound to this deployment + task + operator, so a commit is non-transferable across operators, tasks, instances, or chains."},"commitVerdict(uint256,bytes32)":{"notice":"Seal a commit for a commit-reveal task during the commit window. `commit` MUST be {commitDigest}(taskId, msg.sender, vote, bucket, evidenceHash, nonce). One per operator."},"consensusHash(bytes32,uint8,uint16)":{"notice":"keccak256(consensusPreimage(...)) — the consensus hash that gates the quorum tally. Identical to canonical.OutputHashGovernance on the Go side. This is the value compared across operators to form agreement; it is NOT what an operator signs at submission (see {verdictDigest})."},"consensusPreimage(bytes32,uint8,uint16)":{"notice":"The canonical consensus preimage bytes (35) — exactly what the Go operator hashes. Exposed so off-chain tooling can assert byte-parity."},"deploymentBlock()":{"notice":"Returns the block number when this contract was deployed"},"deregisterCooldown()":{"notice":"Cooldown (seconds) between deregister() and withdrawBond()."},"getCanonicalVerdict(uint256)":{"notice":"The on-chain canonical decision for a settled task."},"getKnob(bytes32,string)":{"notice":"Read a governed knob set by a thinking-validator decision. Knobs are scoped to (modelSpecHash, key): the consumer MUST supply the spec that governs its parameter, so an attacker opening a task under a different spec can never overwrite the value the consumer reads."},"keyValuePairs()":{"notice":"The DAO KeyValuePairs singleton. When set (non-zero), a YES-quorum mirrors its knob to ValueUpdated so the existing DAO subgraph indexes it. Zero is valid: the contract still emits its own {KnobSet} event + stores the knob, so on-chain visibility never depends on this being configured."},"openFee()":{"notice":"Non-refundable fee required to open a thought (anti-sybil/anti-spam)."},"openThoughtCommitReveal(bytes32,bytes32,bytes32,uint8,uint8,uint64,uint64,string)":{"notice":"Open a COMMIT-REVEAL thought: operators must seal a commit during the commit window, then reveal strictly after it closes. Prevents the value-copy attack the cleartext {submitVerdict} path is open to (an operator reading a peer's cleartext verdict and copying it). Mirrors the A-Chain two-phase commit (chains/aivm/commit_reveal.go): reveal opens only after commit closes, and the commit binds the operator so a copied commit cannot be revealed by anyone else. `deadline` is set to the reveal close, so {settle} waits for the full commit+reveal duration."},"operatorCount()":{"notice":"Count of currently-bonded operators — the sortition population."},"operatorSince(address)":{"notice":"Block number an operator first bonded (0 if never) — sortition eligibility uses it to require registration BEFORE a round opened."},"revealVerdict(uint256,uint8,uint16,bytes32,bytes32)":{"notice":"Reveal a previously-committed verdict, strictly after the commit window closes. The contract recomputes the operator-bound commit and rejects a mismatch; no signature is needed because the operator-bound commit IS the authentication. Records the verdict for the tally exactly as {submitVerdict} would."},"rewardPerThought()":{"notice":"Per-task reward pool funded by the opener, split among agreeing operators. Refunded to the opener on a no-quorum. Zero is valid."},"treasury()":{"notice":"Treasury that accrues open fees (pull-payment)."},"verdictDigest(uint256,address,bytes32,uint8,uint16,bytes32)":{"notice":"The digest an operator SIGNS to submit a verdict. Domain-separated and bound to the EXACT task, operator, consensus fields, and evidence — the on-chain mirror of the Go operator's reveal digest (\"hanzo/thinking-governor/verdict/v1\"). Binding taskId makes a verdict non-transferable across tasks (even tasks sharing a modelSpecHash); binding operator + evidenceHash authenticates who submitted and which evidence they attest, closing the unsigned-evidence gap while leaving the consensus hash (and thus Go quorum parity) untouched."},"version()":{"notice":"Returns the contract's version number"}},"version":1}},"settings":{"remappings":["\"ds-test/=lib/alchemix-v2/\"../lib/ds-test/src/","\"forge-std/=lib/alchemix-v2/\"lib/forge-std/src/","@account-abstraction/=lib/account-abstraction/contracts/","@balancer-labs/=lib/balancer/../../node_modules/@balancer-labs/","@balancer/=lib/balancer/pkg/","@chainlink/contracts/=lib/chainlink/contracts/","@comet-contracts/=lib/compound-v3/contracts/","@compound-v3/=lib/compound-v3/contracts/","@curve/=lib/curve/contracts/","@forge-std/=lib/compound-v3/forge/lib/forge-std/","@gnosis.pm/safe-contracts/=lib/safe-smart-account/contracts/","@lido/=lib/lido/contracts/","@lux/=contracts/","@luxfi/contracts/=contracts/","@luxfi/erc-3643/contracts/=contracts/securities/erc3643/","@luxfi/lamport/=../lamport/contracts/","@luxfi/markets/=contracts/markets/","@luxfi/onchain-id/contracts/=contracts/securities/onchainid/","@luxfi/oz-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@luxfi/oz/=lib/openzeppelin-contracts/contracts/","@luxfi/standard/=contracts/","@manifoldxyz/=lib/manifoldxyz/","@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@pendle/=lib/pendle/contracts/","@prb/math/=lib/prb-math/src/","@pyth-network/=lib/pyth/","@rari-capital/solmate/=lib/solmate/","@reservoir/=lib/core/packages/contracts/contracts/","@safe-global/safe-modules/=lib/safe-modules/modules/","@safe-global/safe-smart-account/=lib/safe-smart-account/contracts/","@seaport/=lib/seaport/contracts/","@solmate/=lib/solmate/src/","@uniswap/lib/=lib/uni-lib/","@uniswap/v2-core/=lib/uni-v2/","@uniswap/v3-core/=lib/uni-v3/","@uniswap/v3-periphery/=lib/uni-v3-periphery/","aave-v3/=lib/aave-v3/","account-abstraction/=lib/account-abstraction/contracts/","alchemix-v2/=lib/alchemix-v2/src/","alchemix-v3/=lib/alchemix-v3/","balancer/=lib/balancer/","base64-sol/=lib/base64/","base64/=lib/base64/","chainlink/=lib/chainlink/","clones-with-immutable-args/=lib/clones-with-immutable-args/src/","compound-v2/=lib/compound-v2/","compound-v3/=lib/compound-v3/","core/=lib/core/","create2-helpers/=lib/manifoldxyz/lib/create2-helpers/","create2-scripts/=lib/manifoldxyz/lib/create2-helpers/script/","curve/=lib/curve/","ds-test/=lib/clones-with-immutable-args/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts-upgradeable/lib/erc4626-tests/","eth-gas-reporter/=lib/compound-v3/node_modules/eth-gas-reporter/","forge-std/=lib/forge-std/src/","gmx-v1/=lib/gmx-v1/contracts/","gmx-v2/=lib/gmx-v2/","halmos-cheatcodes/=lib/openzeppelin-contracts-upgradeable/lib/halmos-cheatcodes/src/","hardhat/=lib/forge-std/src/","layerzero-v2/=lib/layerzero-v2/","libraries-solidity/=lib/manifoldxyz/lib/libraries-solidity/contracts/","lido/=lib/lido/contracts/","manifoldxyz/=lib/manifoldxyz/","morpho-blue/=lib/morpho-blue/","murky/=lib/seaport/lib/murky/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/","pendle/=lib/pendle/contracts/","prb-math/=lib/prb-math/src/","pyth/=lib/pyth/","safe-modules/=lib/safe-modules/","safe-smart-account/=lib/safe-smart-account/contracts/","seaport-core/=lib/seaport/lib/seaport-core/","seaport-sol/=lib/seaport/lib/seaport-sol/","seaport-types/=lib/seaport/lib/seaport-types/","seaport/=lib/seaport/","solady/=lib/seaport/lib/solady/","solarray/=lib/seaport/lib/solarray/src/","solmate/=lib/solmate/src/","uni-lib/=lib/uni-lib/contracts/","uni-v2/=lib/uni-v2/contracts/","uni-v3-periphery/=lib/uni-v3-periphery/contracts/","uni-v3/=lib/uni-v3/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/ai/governance/AIGovernor.sol":"AIGovernor"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"contracts/ai/governance/AIGovernor.sol":{"keccak256":"0x5592c485ec663b9d7a2b67fc2e58710f6f6f4fa9862d1fba501bf29bcd5797a9","urls":["bzz-raw://1827f040bf37b3bcca59c25a60d017cc62f089c549697ddb94a8eb6dae6a3217","dweb:/ipfs/QmcqxB5KmbezfCkjJJfVmTQwvjVUG5gMZktFHPbUy8jLQC"],"license":"BSD-3-Clause"},"contracts/ai/interfaces/IAIGovernor.sol":{"keccak256":"0x34b9b71a62aa6d49ad6ee546e8592b2f18d72afcfa12cd0ba295e636979dd3c0","urls":["bzz-raw://2a1efc9c383027e88ee1412df8a4943b2375c07a5b57bf32443820888bac0ab0","dweb:/ipfs/QmcQQwkfJovG5YRjGWQtZ1kM4YPJRXuYLeoiHuBRrXAaGr"],"license":"BSD-3-Clause"},"contracts/dao/DeploymentBlockNonInitializable.sol":{"keccak256":"0x3d78beb6406c69f9846f6dd4ee7380c5a17f3ce8e7eb7895dbbcd44a048635b1","urls":["bzz-raw://9c01b1fd195e50def98a3c5a423daa98a8c1535e0df40c8ac329fa644dcfe58f","dweb:/ipfs/QmNmfm9UFUifeWW99NiSKkbwS3CaPsK3quW85s1DWAn1mn"],"license":"AGPL-3.0"},"contracts/dao/interfaces/IDeploymentBlock.sol":{"keccak256":"0x2a199bbbf246d4f82adc1232e2956f14fb4c481d73b88ad96dedd47b34c0262b","urls":["bzz-raw://d7143c11216bc7d14323b184b66e08218451579e9322f8de637d785b4262f134","dweb:/ipfs/QmeDa5R33Pim7BNwEWnrKypuLQcnd6p9zYcgvcJRE4FQ5y"],"license":"AGPL-3.0"},"contracts/dao/interfaces/deployables/IVersion.sol":{"keccak256":"0x7ab1bbab11ddd367058f13e405de2163c8ef6286e3fe32014cf618a0364393c5","urls":["bzz-raw://32660381c059a6786b4c58ed0ff865920cebe89ba569a9d4616f07d0bc950eb2","dweb:/ipfs/QmNdbheAgS8NA54pS5MF81zWu45pSCdotiRsZdtekvfPMV"],"license":"AGPL-3.0"},"contracts/dao/interfaces/singletons/IKeyValuePairsV1.sol":{"keccak256":"0xd37d68687f6a5bae1ea22f86228d8572528b07b8a8abdc97a27ebd4e4f11d0de","urls":["bzz-raw://3c4443029715c1d9055c8c2167613de87407f5c504fc0a66755b9b954e154298","dweb:/ipfs/QmNkmh75ujviXKCSvf6PKsTUggqCMB8jHcfigc9uSiJkt6"],"license":"AGPL-3.0"},"lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol":{"keccak256":"0xa516cbf1c7d15d3517c2d668601ce016c54395bf5171918a14e2686977465f53","urls":["bzz-raw://1e1d079e8edfb58efd23a311e315a4807b01b5d1cf153f8fa2d0608b9dec3e99","dweb:/ipfs/QmTBExeX2SDTkn5xbk5ssbYSx7VqRp9H4Ux1CY4uQM4b9N"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol":{"keccak256":"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97","urls":["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b","dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol":{"keccak256":"0xbeb5cad8aaabe0d35d2ec1a8414d91e81e5a8ca679add4cf57e2f33476861f40","urls":["bzz-raw://ebb272a5ee2da4e8bd5551334e0ce8dce4e9c56a04570d6bf046d260fab3116a","dweb:/ipfs/QmNw6RyM769qcqFocDq6HJMG2WiEnQbvizpRaUXsACHho2"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol":{"keccak256":"0x2d9dc2fe26180f74c11c13663647d38e259e45f95eb88f57b61d2160b0109d3e","urls":["bzz-raw://81233d1f98060113d9922180bb0f14f8335856fe9f339134b09335e9f678c377","dweb:/ipfs/QmWh6R35SarhAn4z2wH8SU456jJSYL2FgucfTFgbHJJN4E"],"license":"MIT"},"lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x8891738ffe910f0cf2da09566928589bf5d63f4524dd734fd9cedbac3274dd5c","urls":["bzz-raw://971f954442df5c2ef5b5ebf1eb245d7105d9fbacc7386ee5c796df1d45b21617","dweb:/ipfs/QmadRjHbkicwqwwh61raUEapaVEtaLMcYbQZWs9gUkgj3u"],"license":"MIT"}},"version":1},"id":10}