diff --git a/backend/README.md b/backend/README.md index 6a942994..c9cb90ce 100644 --- a/backend/README.md +++ b/backend/README.md @@ -12,7 +12,7 @@ The `Round` component represents a specific period or cycle in the Summa Proof o Key Features: - Initialization of a new round with specific parameters. - Building a snapshot of the current state. -- Dispatching solvency proofs to the contract. +- Submitting commitment to the contract. - Retrieving proofs of inclusion for specific users. ### AddressOwnership @@ -46,21 +46,21 @@ cargo test --release -- --nocapture ## Important Notices -### Generating and updating verifier contracts for Backend +### Generating and updating verifier contract for Backend -The verifier contracts in the backend were generated using a predefined set of parameters: `N_ASSETS = 2` and `N_BYTES=14`, as indicated [here](https://github.com/summa-dev/summa-solvency/blob/master/zk_prover/examples/gen_solvency_verifier.rs#L21-L22). -If you intend to work with different parameters, you'll need to adjust these hard-coded values and then generate new verifier contracts. +The verifier contract in the backend were generated using a predefined set of parameters: `N_ASSETS = 2` and `N_BYTES=14`, as indicated [here](https://github.com/summa-dev/summa-solvency/blob/master/zk_prover/examples/gen_inclusion_verifier.rs#L21-L22). +If you intend to work with different parameters, you'll need to adjust these hard-coded values and then generate new verifier contract. -The process described below assists in both generating the verifiers and updating the Summa contract, which integrates the new verifiers as constructors. +The process described below assists in both generating the verifier and updating the Summa contract, which integrates the new verifier as constructors. #### Using the Bash Script -We have provided a bash script to automate the process of updating the verifier contracts and the Summa contract. To use the script: +We have provided a bash script to automate the process of updating the verifier contract and the Summa contract. To use the script: Ensure you have the necessary permissions to execute the script. ``` -backend $ chmod +x scripts/update_verifier_contracts.sh +backend $ chmod +x scripts/update_verifier_contract.sh ``` ## Summa solvency flow example @@ -92,18 +92,13 @@ If executed successfully, you'll see: ``` -### 2. Submit Proof of Solvency +### 2. Submit Commitment -This step is also crucial for two primary reasons: - - first, to validate the root hash of the Merkle Sum Tree (`mst_root`); and second, to ensure that the assets held by the CEX exceed their liabilities, as confirmed through the proof verification on the Summa contract. -The CEX must submit this proof of solvency to the Summa contract. - - Currently, it's a mandatory requirement to provide this proof before generating the inclusion proof for each user in the current round. +The CEX must submit a commitment to the Summa contract for each round. This commitment consists of a `timestamp`, the root hash of the Merkle Sum Tree (`mst_root`), and `balances`. -Without this verification, It seems the user may not trust to the inclusion proof for the round. becuase the `mst_root` is not published on contract. More specifically, it means that the `mst_root` is not correctly verified on the Summa contract. +Without publishing the commitment, users cannot verify their inclusion proof on the Summa contract. This is because the inclusion verifier function internally requires the `mst_root`, but users only know the `timestamp` associated with the round and the verifier functions does not requre `mst_root` directly. -In here, we'll introduce you through the process of submitting a solvency proof using the `Round` to the Summa contract. +In here, we'll introduce you through the process of submitting a commitment using the `Round` to the Summa contract. The Round serves as the core of the backend in Summa, and we have briefly described it in the Components section. To initialize the `Round` instance, you'll need paths to specific CSV files (`assets.csv` and `entry_16.csv`) and the `ptau/hermez-raw-11` file. Here's what each file does: diff --git a/backend/scripts/update_verifier_contracts.sh b/backend/scripts/update_verifier_contract.sh similarity index 100% rename from backend/scripts/update_verifier_contracts.sh rename to backend/scripts/update_verifier_contract.sh diff --git a/backend/src/apis/round.rs b/backend/src/apis/round.rs index 674d36f4..926e647b 100644 --- a/backend/src/apis/round.rs +++ b/backend/src/apis/round.rs @@ -23,22 +23,6 @@ pub(crate) type SetupArtifacts = ( VerifyingKey, ); -#[derive(Debug, Clone)] -pub struct SolvencyProof { - public_inputs: Vec, - proof_calldata: Bytes, -} - -impl SolvencyProof { - pub fn get_public_inputs(&self) -> &Vec { - &self.public_inputs - } - - pub fn get_proof_calldata(&self) -> &Bytes { - &self.proof_calldata - } -} - #[derive(Debug, Clone, Serialize, Deserialize)] pub struct MstInclusionProof { public_inputs: Vec, diff --git a/backend/src/contracts/abi/InclusionVerifier.json b/backend/src/contracts/abi/InclusionVerifier.json index 9fbf0f55..a83673c2 100644 --- a/backend/src/contracts/abi/InclusionVerifier.json +++ b/backend/src/contracts/abi/InclusionVerifier.json @@ -1 +1 @@ -{"_format":"hh-sol-artifact-1","contractName":"Verifier","sourceName":"src/InclusionVerifier.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"pubInputs","type":"uint256[]"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b50615467806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e366004615329565b610057565b604051901515815260200160405180910390f35b60006001610063615252565b6000805160206154128339815191526100d9565b6000805160206153f283398151915280831081831016908380096000805160206153f28339815191528384096000805160206153f283398151915284820990506000805160206153f28339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301527f2df16218a82d39831071e46956c233ee9aa79bb065b265871080d8643f2f52ab600083015260208501518060608401526040860151806080850152846101388284610077565b169450505060608501518060a084015260808601518060c08501528461015e8284610077565b169450505060a08501518060e084015260c086015180610100850152846101858284610077565b16945050506101206000830120610120830152610120820151818106610140840152806101608401525060e085015180610180840152610100860151806101a0850152846101d38284610077565b1694505050610120850151806101c0840152610140860151806101e0850152846101fd8284610077565b60a061016087012061020087018190528581066102208801526102408701521694506001915050610260830153602161024083012061026083018190528181066102808401526102a08301526101608501516102c083018190526101808601516102e08401819052846102708284610077565b16945050506101a0850151806103008401526101c0860151806103208501528461029a8284610077565b16945050506101e08501518061034084015261020086015180610360850152846102c48284610077565b169450505061022085015180610380840152610240860151806103a0850152846102ee8284610077565b16945050506101206102a08301206103c08301526103c08201518181066103e0840152806104008401525061026085015180610420840152610280860151806104408501528461033e8284610077565b16945050506102a0850151806104608401526102c086015180610480850152846103688284610077565b16945050506102e0850151806104a0840152610300860151806104c0850152846103928284610077565b1694505050610320850151806104e084015261034086015180610500850152846103bc8284610077565b16945050506103608501518061052084015261038086015180610540850152846103e68284610077565b1694505050610160610400830120610560830152610560820151818106610580840152806105a084015250806103a0860151066105c0830152806103c0860151066105e0830152806103e086015106610600830152806104008601510661062083015280610420860151066106408301528061044086015106610660830152806104608601510661068083015280610480860151066106a0830152806104a0860151066106c0830152806104c0860151066106e0830152806104e086015106610700830152806105008601510661072083015280610520860151066107408301528061054086015106610760830152806105608601510661078083015280610580860151066107a0830152806105a0860151066107c0830152806105c0860151066107e0830152806105e086015106610800830152806106008601510661082083015280610620860151066108408301528061064086015106610860830152806106608601510661088083015280610680860151066108a0830152806106a0860151066108c0830152806106c0860151066108e0830152806106e086015106610900830152806107008601510661092083015280610720860151066109408301528061074086015106610960830152806107608601510661098083015280610780860151066109a0830152806107a0860151066109c0830152806107c0860151066109e0830152806107e086015106610a008301526104806105a0830120610a20830152610a20820151818106610a4084015280610a60840152506001610a808301536021610a60830120610a808301819052818106610aa0840152610ac0830152610800850151610ae08301819052610820860151610b0084018190528461066f8284610077565b16945050506060610ac0830120610b20830152610b20820151818106610b4084015280610b608401525061084085015180610b8084015261086086015180610ba0850152846106be8284610077565b16945050508061058083015161058084015109610bc0830181905281908009610be0830181905281908009610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d0084015108610d20830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d2084015109610d40830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d4084015109610d60830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff61058084015108610d80830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d4084015109610da0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb061058084015108610dc0830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d4084015109610de0830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc61058084015108610e00830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d4084015109610e20830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc61058084015108610e40830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d4084015109610e60830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e61058084015108610e80830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d4084015109610ea0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e761058084015108610ec0830152806001610d4084015109610ee0830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000061058084015108610f00830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d4084015109610f20830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa261058084015108610f40830152610d808201518181610dc085015109905080610f608401528181610e0085015109905080610f808401528181610e4085015109905080610fa08401528181610e8085015109905080610fc08401528181610ec085015109905080610fe08401528181610f00850151099050806110008401528181610f40850151099050806110208401528181610d208501510990508061104084015250602061108083015260206110a083015260206110c08301526110408201516110e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6111008301526000805160206154128339815191526111208301528260016020611060850160c0611080870160055afa141692506110608201516000610d208401519050828261102086015109610d20850152828282099150610f408401519050828261100086015109610f40850152828282099150610f0084015190508282610fe086015109610f00850152828282099150610ec084015190508282610fc086015109610ec0850152828282099150610e8084015190508282610fa086015109610e80850152828282099150610e4084015190508282610f8086015109610e40850152828282099150610e0084015190508282610f6086015109610e00850152828282099150610dc084015190508282610d8086015109610dc085015282828209610d808501819052610d608501518493509091500961114083015280610dc0830151610da08401510961116083015280610e00830151610de08401510961118083015280610e40830151610e20840151096111a083015280610e80830151610e60840151096111c083015280610ec0830151610ea0840151096111e083015280610f00830151610ee08401510961120083015280610f40830151610f20840151096112208301528060208301516112008401510981818360408601516112208701510908611240840152506106e08201516105c0830151829190086112608301819052819080096112808301819052819080096112a0830152806112a0830151611260840151096112c0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad56112c0840151096112e0830152806107008301516105e0840151086113008301819052819080096113208301819052819080096113408301528061134083015161130084015109611360830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e861136084015109611380830152806113808301516112e0840151086113a08301528061060083015182036113a0840151086113c083018190526107808301518291096113e0830152806113e08301516103e084015109611400830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff96112c084015109611420830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86113608401510961144083015280611440830151611420840151086114608301528061062083015182036114608401510861148083018190526107808301518291096114a0830152806114a0830151611400840151086114c0830152806114c08301516103e0840151096114e08301528061064083015182036112c08401510861150083018190526107a0830151829109611520830152806115208301516114e084015108611540830152806115408301516103e084015109611560830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561064084015109611580830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611300840151096115a0830152806115a0830151611580840151086115c083018190526106a08301518291086115e0830181905281908009611600830181905281908009611620830152806116208301516115e084015109611640830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e6661060084015109611660830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6106208401510961168083015280611680830151611660840151086116a0830152806116a08301518203611640840151086116c083018190526107a08301518291096116e0830152806116e083015161156084015108611700830152806117008301516103e084015109611720830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961064084015109611740830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c861130084015109611760830152806117608301516117408401510861178083018190526106c08301518291086117a0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610600840151096117c0830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be610620840151096117e0830152806117e08301516117c0840151086118008301528061180083015182036117a08401510861182083018190526107a08301518291096118408301528061184083015161172084015108611860830152806118608301516103e0840151096118808301528061076083015182036001086118a083018190526107608301518291096118c08301528061076083015182036002086118e083018190526118c08301518291096119008301528061076083015182036004086119208301819052611900830151829109611940830152806105c0830151610680840151086119608301528061060083015182036119608401510861198083018190526119408301518291096119a0830152806119a0830151611880840151086119c0830152806119c08301516103e0840151096119e083015280610620830151820361066084015108611a008301819052611940830151829109611a2083015280611a208301516119e084015108611a4083015280611a408301516103e084015109611a60830152806107c08301516113c084015109611a8083015280611a80830151611a6084015108611aa083015280611aa08301516103e084015109611ac0830152806107c083015161148084015109611ae083015280611ae0830151611ac084015108611b0083015280611b008301516103e084015109611b20830152806107e083015161150084015109611b4083015280611b40830151611b2084015108611b6083015280611b608301516103e084015109611b80830152806107e08301516116c084015109611ba083015280611ba0830151611b8084015108611bc083015280611bc08301516103e084015109611be0830152806107e083015161182084015109611c0083015280611c00830151611be084015108611c2083015280611c208301516103e084015109611c40830152806107608301518203600308611c608301819052611900830151829109611c8083015280611c8083015161198084015109611ca083015280611ca0830151611c4084015108611cc083015280611cc08301516103e084015109611ce083015280611c80830151611a0084015109611d0083015280611d00830151611ce084015108611d2083015280611d208301516103e084015109611d40830152806107608301516118e084015109611d6083015280611d60830151611c6084015109611d8083015280611d8083015161192084015109611da083015280611da083015161064084015109611dc0830152806106408301518203600108611de08301819052611dc0830151829109611e0083015280611e00830151611d4084015108611e2083015280611e208301516103e084015109611e4083015280610640830151600209611e60830152806105c083015182036105e084015108611e808301819052611e60830151829109611ea0830152806105c0830151820361060084015108611ec083015280611ec08301518203611ea084015108611ee08301528061062083015182036105e084015108611f0083015280611f008301518203611ee084015108611f208301819052611da0830151829109611f4083015280611f40830151611e4084015108611f6083015280611f608301516103e084015109611f80830152806118c0830151611c6084015109611fa083015280611fa083015161192084015109611fc0830152806105e08301516105c084015108611fe0830152806106408301518203611fe0840151086120008301819052611fc083015182910961202083015280612020830151611f8084015108612040830152806120408301516103e0840151096120608301819052612020830151829108612080830152806120808301516103e0840151096120a0830152806108e083015182036001086120c083018190526112008301518291096120e0830152806120e08301516120a084015108612100830152806121008301516103e0840151096121208301526109408201518190800961214083015280610940830151820361214084015108612160830181905261114083015182910961218083015280612180830151612120840151086121a0830152806121a08301516103e0840151096121c0830152806109208301518203610940840151086121e08301819052611200830151829109612200830152806122008301516121c084015108612220830152806122208301516103e084015109612240830152806111408301518203600108612260830152806111808301516111608401510861228083018190526111a08301518291086122a083018190526111c08301518291086122c083018190526111e08301518291086122e0830152806122e08301518203612260840151086123008301528061022083015161082084015109612320830152806123208301516106a08401510861234083018190526102808301518291086123608301528061022083015161084084015109612380830152806123808301516105c0840151086123a083018190526102808301518291086123c083018190526123608301518291096123e08301528061022083015161086084015109612400830152806124008301516105e084015108612420830181905261028083015182910861244083018190526123e08301518291096124608301528061022083015161088084015109612480830152806124808301516106c0840151086124a083018190526102808301518291086124c083018190526124608301518291096124e08301819052610900830151829109612500830152806102208301516001096125208301528061252083015161058084015109612540830152806125408301516106a0840151086125608301819052610280830151829108612580830152806102208301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096125a0830152806125a0830151610580840151096125c0830152806125c08301516105c0840151086125e083018190526102808301518291086126008301819052612580830151829109612620830152806102208301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b096126408301528061264083015161058084015109612660830152806126608301516105e08401510861268083018190526102808301518291086126a083018190526126208301518291096126c0830152806102208301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096126e0830152806126e083015161058084015109612700830152806127008301516106c084015108612720830181905261028083015182910861274083018190526126c083015182910961276083018190526108e0830151829109612780830152806127808301518203612500840151086127a083018190526123008301518291096127c0830152806127c0830151612240840151086127e0830152806127e08301516103e084015109612800830152806102208301516108a08401510961282083015280612820830151610640840151086128408301819052610280830151829108612860830152806102208301516108c08401510961288083015280612880830151611240840151086128a083018190526102808301518291086128c083018190526128608301518291096128e08301819052610960830151829109612900830152806102208301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612920830152806129208301516105808401510961294083015280612940830151610640840151086129608301819052610280830151829108612980830152806102208301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d096129a0830152806129a0830151610580840151096129c0830152806129c0830151611240840151086129e08301819052610280830151829108612a008301819052612980830151829109612a208301819052610940830151829109612a4083015280612a40830151820361290084015108612a608301819052612300830151829109612a8083015280612a8083015161280084015108612aa083015280612aa08301516103e084015109612ac0830152806109808301518203600108612ae08301819052611200830151829109612b0083015280612b00830151612ac084015108612b2083015280612b208301516103e084015109612b4083015261098082015181908009612b60830152806109808301518203612b6084015108612b808301819052611140830151829109612ba083015280612ba0830151612b4084015108612bc083015280612bc08301516103e084015109612be0830152806102208301516109c084015108612c0083018190526109a0830151829109612c2083015280610280830151610a0084015108612c408301819052612c20830151829109612c608301528061060083015161010009612c8083015280612c8083015182036105c084015108612ca08301819052610740830151829109612cc08301819052610220830151829108612ce08301819052610980830151829109612d008301528061028083015161072084015108612d208301819052612d00830151829109612d4083015280612d408301518203612c6084015108612d608301819052612300830151829109612d8083015280612d80830151612be084015108612da083015280612da08301516103e084015109612dc083015280610a0083015182036109c084015108612de08301819052611200830151829109612e0083015280612e00830151612dc084015108612e2083015280612e208301516103e084015109612e4083015280612300830151612de084015109612e60830152806109e083015182036109c084015108612e808301819052612e60830151829109612ea083015280612ea0830151612e4084015108612ec0830152610d0082015181908009612ee08301819052610d00830151829109612f008301819052610d00830151829109612f208301819052610d00830151829109612f4083015280610d00830151600109612f6083015280612ee0830151600109612f8083015280612f00830151600109612fa083015280612f20830151600109612fc083015280610d20830151612ec084015109612fe083015280610580830151610bc08401510961300083015280600161058084015109613020830152806130208301518203610b4084015108613040830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f61058084015109613060830152806130608301518203610b4084015108613080830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610580840151096130a0830152806130a08301518203610b40840151086130c0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610580840151096130e0830152806130e08301518203610b408401510861310083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610bc085015109610b4084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610bc08801510961058087015109089050806131208401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610bc085015109610b4084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610bc08801510961058087015109089050806131408401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610bc085015109610b4084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610bc088015109610580870151090861316084015250613040820151819060010961318083018190526130808301518291096131a083018190526131008301518291096131c0830152806001610b40840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000061058087015109089050806131e08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610bc085015109610b4084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610bc08801510961058087015109089050806132008401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610bc085015109610b4084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610bc08801510961058087015109089050806132208401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610bc085015109610b4084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610bc0880151096105808701510908613240840152506130c08201516131a08301518291900961326083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa361058085015109610b4084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105808801510961058087015109089050806132808401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e61058085015109610b4084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105808801510961058087015109089050806132a08401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e861058085015109610b4084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105808801510961058087015109089050806132c08401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161961058085015109610b4084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105808801510961058087015109086132e0840152506131008201516131808301518291900961330083015261312082015181816131408501510990508061332084015281816131608501510990508061334084015281816131e0850151099050806133608401528181613180850151099050806133808401528181613200850151099050806133a08401528181613220850151099050806133c08401528181613240850151099050806133e084015281816132608501510990508061340084015281816132808501510990508061342084015281816132a08501510990508061344084015281816131a08501510990508061346084015281816132c08501510990508061348084015281816132e0850151099050806134a08401528181613300850151099050806134c0840152506020613500830152602061352083015260206135408301526134c08201516135608301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6135808301526000805160206154128339815191526135a083015282600160206134e0850160c0613500870160055afa141692506134e08201516000613300840151905082826134a0860151096133008501528282820991506132e084015190508282613480860151096132e08501528282820991506132c084015190508282613460860151096132c08501528282820991506131a084015190508282613440860151096131a08501528282820991506132a084015190508282613420860151096132a08501528282820991506132808401519050828261340086015109613280850152828282099150613260840151905082826133e086015109613260850152828282099150613240840151905082826133c086015109613240850152828282099150613220840151905082826133a086015109613220850152828282099150613200840151905082826133808601510961320085015282828209915061318084015190508282613360860151096131808501528282820991506131e084015190508282613340860151096131e08501528282820991506131608401519050828261332086015109613160850152828282099150613140840151905082826131208601510961314085015282828209613120850181905261314085015190925083915082900890508181613160850151086135c0840152506131808201516131c0830151829190096135e08301526131e08201518061360084015250806132608301516131c0840151096136208301526132008201518181613220850151089050818161324085015108613640840152506131a08201516131c08301518291900961366083015261328082015181816132a085015108613680840152506133008201516131c0830151829190096136a08301526132c082015181816132e0850151086136c0840152506135c082015161360083015182908290099050806136e084015281816136408501510990508061370084015281816136808501510990508061372084015281816136c08501510990508061374084015250602061378083015260206137a083015260206137c08301526137408201516137e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6138008301526000805160206154128339815191526138208301528260016020613760850160c0613780870160055afa1416925061376082015160006136c084015190508282613720860151096136c08501528282820991506136808401519050828261370086015109613680850152828282099150613640840151905082826136e086015109613640850152828282099150613600840151905082826135c086015109613600850152828282096135c085015250506136008201516135e08301518291900961384083015280613640830151613620840151096138608301528061368083015161366084015109613880830152806136c08301516136a0840151096138a0830152610a40820151819080096138c08301819052610a408301518291096138e08301819052610a408301518291096139008301819052610a408301518291096139208301819052610a408301518291096139408301819052610a408301518291096139608301819052610a408301518291096139808301819052610a408301518291096139a08301819052610a408301518291096139c08301819052610a408301518291096139e08301819052610a40830151829109613a008301819052610a40830151829109613a208301819052610a40830151829109613a408301819052610a40830151829109613a608301819052610a40830151829109613a808301819052610a40830151829109613aa08301819052610a40830151829109613ac08301819052610a40830151829109613ae08301819052610a40830151829109613b008301819052610a40830151829109613b20830152610aa082015181908009613b408301819052610aa0830151829109613b608301819052610aa0830151829109613b808301819052610aa0830151829109613ba0830152806131208301516105c084015109818183613140860151610600870151090890508181836131608601516106808701510908613bc084018190526135c08401518392509009613be0830152806001613be0840151830309613c00830152806131208301516105e084015109818183613140860151610620870151090890508181836131608601516106608701510908613c2084018190526135c08401518392509009613c408301819052610a408301518291820309613c6083015280610a40830151600109613c8083015280613c60830151613c0084015108613ca0830152806001613ca084015109613cc0830152806001613c8084015109613ce0830152806135e0830151600109613d00830152806131e083015161064084015109613d208301819052613840830151829109613d40830152806001613d40840151830309613d60830152806001613d0084015109613d80830152806131e0830151610a0084015109613da08301819052613840830151829109613dc08301819052610a408301518291820309613de083015280610a40830151613d0084015109613e0083015280613de0830151613d6084015108613e20830152806131e08301516106a084015109613e408301819052613840830151829109613e6083018190526138c08301518291820309613e80830152806138c0830151613d0084015109613ea083015280613e80830151613e2084015108613ec0830152806131e08301516106c084015109613ee08301819052613840830151829109613f0083018190526138e08301518291820309613f20830152806138e0830151613d0084015109613f4083015280613f20830151613ec084015108613f60830152806131e08301516106e084015109613f808301819052613840830151829109613fa083018190526139008301518291820309613fc083015280613900830151613d0084015109613fe083015280613fc0830151613f6084015108614000830152806131e08301516107008401510961402083018190526138408301518291096140408301819052613920830151829182030961406083015280613920830151613d008401510961408083015280614060830151614000840151086140a0830152806131e0830151610720840151096140c083018190526138408301518291096140e08301819052613940830151829182030961410083015280613940830151613d0084015109614120830152806141008301516140a084015108614140830152806131e0830151610740840151096141608301819052613840830151829109614180830181905261396083015182918203096141a083015280613960830151613d00840151096141c0830152806141a0830151614140840151086141e0830152806131e08301516107608401510961420083018190526138408301518291096142208301819052613980830151829182030961424083015280613980830151613d0084015109614260830152806142408301516141e084015108614280830152806131e0830151610780840151096142a083018190526138408301518291096142c083018190526139a083015182918203096142e0830152806139a0830151613d0084015109614300830152806142e083015161428084015108614320830152806131e08301516107a084015109614340830181905261384083015182910961436083018190526139c08301518291820309614380830152806139c0830151613d00840151096143a083015280614380830151614320840151086143c0830152806131e08301516107c0840151096143e0830181905261384083015182910961440083018190526139e08301518291820309614420830152806139e0830151613d0084015109614440830152806144208301516143c084015108614460830152806131e08301516107e08401510961448083018190526138408301518291096144a08301819052613a0083015182918203096144c083015280613a00830151613d00840151096144e0830152806144c083015161446084015108614500830152806131e08301516108208401510961452083018190526138408301518291096145408301819052613a20830151829182030961456083015280613a20830151613d008401510961458083015280614560830151614500840151086145a0830152806131e0830151610840840151096145c083018190526138408301518291096145e08301819052613a40830151829182030961460083015280613a40830151613d0084015109614620830152806146008301516145a084015108614640830152806131e08301516108608401510961466083018190526138408301518291096146808301819052613a6083015182918203096146a083015280613a60830151613d00840151096146c0830152806146a0830151614640840151086146e0830152806131e08301516108808401510961470083018190526138408301518291096147208301819052613a80830151829182030961474083015280613a80830151613d0084015109614760830152806147408301516146e084015108614780830152806131e08301516108a0840151096147a083018190526138408301518291096147c08301819052613aa083015182918203096147e083015280613aa0830151613d0084015109614800830152806147e083015161478084015108614820830152806131e08301516108c08401510961484083018190526138408301518291096148608301819052613ac0830151829182030961488083015280613ac0830151613d00840151096148a083015280614880830151614820840151086148c0830152806135e0830151612f60840151096148e0830152806135e0830151612f8084015109614900830152806135e0830151612fa084015109614920830152806135e0830151612fc084015109614940830152806131e0830151612fe08401510961496083018190526138408301518291096149808301819052613ae083015182918203096149a083015280613ae0830151613d00840151096149c083015280613ae08301516148e0840151096149e083015280613ae083015161490084015109614a0083015280613ae083015161492084015109614a2083015280613ae083015161494084015109614a40830152806149a08301516148c084015108614a60830152806131e083015161080084015109614a808301819052613840830151829109614aa08301819052613b008301518291820309614ac083015280613b00830151613d0084015109614ae083015280614ac0830151614a6084015108614b008301819052610aa0830151829109614b2083015280610aa0830151613d8084015109614b4083015280610aa0830151613e0084015109614b6083015280610aa0830151613ea084015109614b8083015280610aa0830151613f4084015109614ba083015280610aa0830151613fe084015109614bc083015280610aa083015161408084015109614be083015280610aa083015161412084015109614c0083015280610aa08301516141c084015109614c2083015280610aa083015161426084015109614c4083015280610aa083015161430084015109614c6083015280610aa08301516143a084015109614c8083015280610aa083015161444084015109614ca083015280610aa08301516144e084015109614cc083015280610aa083015161458084015109614ce083015280610aa083015161462084015109614d0083015280610aa08301516146c084015109614d2083015280610aa083015161476084015109614d4083015280610aa083015161480084015109614d6083015280610aa08301516148a084015109614d8083015280610aa08301516149c084015109614da083015280610aa08301516149e084015109614dc083015280610aa0830151614a0084015109614de083015280610aa0830151614a2084015109614e0083015280610aa0830151614a4084015109614e2083015280610aa0830151614ae084015109614e4083015280614b20830151613cc084015108614e6083015280613620830151600109614e80830152806132008301516108e084015109818183613220860151610900870151090890508181836132408601516109208701510908614ea084018190526138608401518392509009614ec0830152806001614ec0840151830309614ee0830152806001614e8084015109614f0083015280613b40830151614ee084015109614f2083015280613b40830151614f0084015109614f4083015280614f20830151614e6084015108614f6083015280613660830151600109614f8083015280613280830151610940840151098181836132a08601516109608701510908614fa084018190526138808401518392509009614fc0830152806001614fc0840151830309614fe0830152806001614f808401510961500083015280613280830151610980840151098181836132a08601516109a08701510908615020840181905261388084015183925090096150408301819052610a40830151829182030961506083015280610a40830151614f808401510961508083015280615060830151614fe0840151086150a08301819052613b608301518291096150c083015280613b60830151615000840151096150e083015280613b6083015161508084015109615100830152806150c0830151614f6084015108615120830152806136a0830151600109615140830152806132c08301516109c0840151098181836132e08601516109e0870151090861516084018190526138a084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c083015280613b808301516151a0840151096151e083015280613b808301516151c084015109615200830152806151e083015161512084015108615220830152806131c083015160010961524083015280610b408301516001096152608301526001615280830181815260026152a08501526152208401516152c085015284919060409060608160075afa141692506152808201516152e08301526152a08201516153008301526060820151615320830152608082015161534083015282600160406152e0850160806152e0870160065afa1416925060a082015161536083015260c0820151615380830152613ce08201516153a0830152826001604061536085016060615360870160075afa141692506152e08201516153c08301526153008201516153e083015261536082015161540083015261538082015161542083015282600160406153c0850160806153c0870160065afa1416925060e0820151615440830152610100820151615460830152614b40820151615480830152826001604061544085016060615440870160075afa141692506153c08201516154a08301526153e08201516154c08301526154408201516154e083015261546082015161550083015282600160406154a0850160806154a0870160065afa141692506101c08201516155208301526101e0820151615540830152614b60820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa141692507f291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db4252906156008301527f154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc615620830152614b80820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692507f176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d6156e08301527f1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51615700830152614ba082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e202507596157c08301527f0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea836157e0830152614bc082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af6158a08301527f24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c436158c0830152614be08201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa46159808301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c06159a0830152614c008201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed615a608301527f286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf615a80830152614c20820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5615b408301527f0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2615b60830152614c40820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36615c208301527f2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890615c40830152614c60820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f615d008301527f1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d615d20830152614c80820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c615de08301527f1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68615e00830152614ca0820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd701615ec08301527f07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a615ee0830152614cc0820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d615fa08301527f154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6615fc0830152614ce0820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f2402db4b1c7746dcd9fe7eab82ab3fa7ebb1bd352a9af94ef6811b2af9ab6f8e6160808301527f2a0047ec08a254753c466648f0dc6e077e88e5495829c3a845873b9058bf44076160a0830152614d008201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a6161608301527f27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e28616180830152614d208201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746162408301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616260830152614d40820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a6163208301527eb004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56616340830152614d60820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f2903a763c1c6b78667f906b6fe2b4ad197b55587c90e14e8502446da8c45ef7d6164008301527f13ea57986f9295e92def3303aef53f2b4f625ba985531201ab53dc7307f46b69616420830152614d80820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692506104208201516164e0830152610440820151616500830152614da082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692506104608201516165c08301526104808201516165e0830152614dc082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104a08201516166a08301526104c08201516166c0830152614de08201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104e08201516167808301526105008201516167a0830152614e008201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa14169250610520820151616860830152610540820151616880830152614e208201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa141692506103808201516169408301526103a0820151616960830152614e40820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa141692506102c0820151616a208301526102e0820151616a40830152614f40820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa14169250610300820151616b00830152610320820151616b208301526150e0820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610340820151616be0830152610360820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610180820151616cc08301526101a0820151616ce0830152615200820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610ae0820151616da0830152610b00820151616dc08301526152408201518103616de0830152508160016040616da084016060616da0860160075afa14169150616d20810151616e00820152616d40810151616e20820152616da0810151616e40820152616dc0810151616e608201528160016040616e0084016080616e00860160065afa14169150610b80810151616e80820152610ba0810151616ea0820152615260810151616ec08201528160016040616e8084016060616e80860160075afa14169150616e00810151616ee0820152616e20810151616f00820152616e80810151616f20820152616ea0810151616f408201528160016040616ee084016080616ee0860160065afa14169150616ee0810151616f60820152616f00810151616f808201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2616fa08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed616fc08201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b616fe08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa617000820152610b80810151617020820152610ba08101516170408201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6170608201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6170808201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456170a08201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff6170c08201528160016020616f608401610180616f60860160085afa616f6093909301516001149214161691505092915050565b604051806170c00160405280610386906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156152b1576152b1615272565b604052919050565b600082601f8301126152ca57600080fd5b813567ffffffffffffffff8111156152e4576152e4615272565b6152f7601f8201601f1916602001615288565b81815284602083860101111561530c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561533c57600080fd5b823567ffffffffffffffff8082111561535457600080fd5b818501915085601f83011261536857600080fd5b813560208282111561537c5761537c615272565b8160051b61538b828201615288565b928352848101820192828101908a8511156153a557600080fd5b958301955b848710156153c3578635825295830195908301906153aa565b97505050860135925050808211156153da57600080fd5b506153e7858286016152b9565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a26469706673582212208f0f08c113d71e9affd04a930a0ccffff41cc79e358932cfa7ac1395c242440564736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e366004615329565b610057565b604051901515815260200160405180910390f35b60006001610063615252565b6000805160206154128339815191526100d9565b6000805160206153f283398151915280831081831016908380096000805160206153f28339815191528384096000805160206153f283398151915284820990506000805160206153f28339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301527f2df16218a82d39831071e46956c233ee9aa79bb065b265871080d8643f2f52ab600083015260208501518060608401526040860151806080850152846101388284610077565b169450505060608501518060a084015260808601518060c08501528461015e8284610077565b169450505060a08501518060e084015260c086015180610100850152846101858284610077565b16945050506101206000830120610120830152610120820151818106610140840152806101608401525060e085015180610180840152610100860151806101a0850152846101d38284610077565b1694505050610120850151806101c0840152610140860151806101e0850152846101fd8284610077565b60a061016087012061020087018190528581066102208801526102408701521694506001915050610260830153602161024083012061026083018190528181066102808401526102a08301526101608501516102c083018190526101808601516102e08401819052846102708284610077565b16945050506101a0850151806103008401526101c0860151806103208501528461029a8284610077565b16945050506101e08501518061034084015261020086015180610360850152846102c48284610077565b169450505061022085015180610380840152610240860151806103a0850152846102ee8284610077565b16945050506101206102a08301206103c08301526103c08201518181066103e0840152806104008401525061026085015180610420840152610280860151806104408501528461033e8284610077565b16945050506102a0850151806104608401526102c086015180610480850152846103688284610077565b16945050506102e0850151806104a0840152610300860151806104c0850152846103928284610077565b1694505050610320850151806104e084015261034086015180610500850152846103bc8284610077565b16945050506103608501518061052084015261038086015180610540850152846103e68284610077565b1694505050610160610400830120610560830152610560820151818106610580840152806105a084015250806103a0860151066105c0830152806103c0860151066105e0830152806103e086015106610600830152806104008601510661062083015280610420860151066106408301528061044086015106610660830152806104608601510661068083015280610480860151066106a0830152806104a0860151066106c0830152806104c0860151066106e0830152806104e086015106610700830152806105008601510661072083015280610520860151066107408301528061054086015106610760830152806105608601510661078083015280610580860151066107a0830152806105a0860151066107c0830152806105c0860151066107e0830152806105e086015106610800830152806106008601510661082083015280610620860151066108408301528061064086015106610860830152806106608601510661088083015280610680860151066108a0830152806106a0860151066108c0830152806106c0860151066108e0830152806106e086015106610900830152806107008601510661092083015280610720860151066109408301528061074086015106610960830152806107608601510661098083015280610780860151066109a0830152806107a0860151066109c0830152806107c0860151066109e0830152806107e086015106610a008301526104806105a0830120610a20830152610a20820151818106610a4084015280610a60840152506001610a808301536021610a60830120610a808301819052818106610aa0840152610ac0830152610800850151610ae08301819052610820860151610b0084018190528461066f8284610077565b16945050506060610ac0830120610b20830152610b20820151818106610b4084015280610b608401525061084085015180610b8084015261086086015180610ba0850152846106be8284610077565b16945050508061058083015161058084015109610bc0830181905281908009610be0830181905281908009610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d0084015108610d20830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d2084015109610d40830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d4084015109610d60830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff61058084015108610d80830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d4084015109610da0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb061058084015108610dc0830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d4084015109610de0830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc61058084015108610e00830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d4084015109610e20830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc61058084015108610e40830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d4084015109610e60830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e61058084015108610e80830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d4084015109610ea0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e761058084015108610ec0830152806001610d4084015109610ee0830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000061058084015108610f00830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d4084015109610f20830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa261058084015108610f40830152610d808201518181610dc085015109905080610f608401528181610e0085015109905080610f808401528181610e4085015109905080610fa08401528181610e8085015109905080610fc08401528181610ec085015109905080610fe08401528181610f00850151099050806110008401528181610f40850151099050806110208401528181610d208501510990508061104084015250602061108083015260206110a083015260206110c08301526110408201516110e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6111008301526000805160206154128339815191526111208301528260016020611060850160c0611080870160055afa141692506110608201516000610d208401519050828261102086015109610d20850152828282099150610f408401519050828261100086015109610f40850152828282099150610f0084015190508282610fe086015109610f00850152828282099150610ec084015190508282610fc086015109610ec0850152828282099150610e8084015190508282610fa086015109610e80850152828282099150610e4084015190508282610f8086015109610e40850152828282099150610e0084015190508282610f6086015109610e00850152828282099150610dc084015190508282610d8086015109610dc085015282828209610d808501819052610d608501518493509091500961114083015280610dc0830151610da08401510961116083015280610e00830151610de08401510961118083015280610e40830151610e20840151096111a083015280610e80830151610e60840151096111c083015280610ec0830151610ea0840151096111e083015280610f00830151610ee08401510961120083015280610f40830151610f20840151096112208301528060208301516112008401510981818360408601516112208701510908611240840152506106e08201516105c0830151829190086112608301819052819080096112808301819052819080096112a0830152806112a0830151611260840151096112c0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad56112c0840151096112e0830152806107008301516105e0840151086113008301819052819080096113208301819052819080096113408301528061134083015161130084015109611360830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e861136084015109611380830152806113808301516112e0840151086113a08301528061060083015182036113a0840151086113c083018190526107808301518291096113e0830152806113e08301516103e084015109611400830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff96112c084015109611420830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86113608401510961144083015280611440830151611420840151086114608301528061062083015182036114608401510861148083018190526107808301518291096114a0830152806114a0830151611400840151086114c0830152806114c08301516103e0840151096114e08301528061064083015182036112c08401510861150083018190526107a0830151829109611520830152806115208301516114e084015108611540830152806115408301516103e084015109611560830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561064084015109611580830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611300840151096115a0830152806115a0830151611580840151086115c083018190526106a08301518291086115e0830181905281908009611600830181905281908009611620830152806116208301516115e084015109611640830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e6661060084015109611660830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe6106208401510961168083015280611680830151611660840151086116a0830152806116a08301518203611640840151086116c083018190526107a08301518291096116e0830152806116e083015161156084015108611700830152806117008301516103e084015109611720830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961064084015109611740830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c861130084015109611760830152806117608301516117408401510861178083018190526106c08301518291086117a0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb02610600840151096117c0830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be610620840151096117e0830152806117e08301516117c0840151086118008301528061180083015182036117a08401510861182083018190526107a08301518291096118408301528061184083015161172084015108611860830152806118608301516103e0840151096118808301528061076083015182036001086118a083018190526107608301518291096118c08301528061076083015182036002086118e083018190526118c08301518291096119008301528061076083015182036004086119208301819052611900830151829109611940830152806105c0830151610680840151086119608301528061060083015182036119608401510861198083018190526119408301518291096119a0830152806119a0830151611880840151086119c0830152806119c08301516103e0840151096119e083015280610620830151820361066084015108611a008301819052611940830151829109611a2083015280611a208301516119e084015108611a4083015280611a408301516103e084015109611a60830152806107c08301516113c084015109611a8083015280611a80830151611a6084015108611aa083015280611aa08301516103e084015109611ac0830152806107c083015161148084015109611ae083015280611ae0830151611ac084015108611b0083015280611b008301516103e084015109611b20830152806107e083015161150084015109611b4083015280611b40830151611b2084015108611b6083015280611b608301516103e084015109611b80830152806107e08301516116c084015109611ba083015280611ba0830151611b8084015108611bc083015280611bc08301516103e084015109611be0830152806107e083015161182084015109611c0083015280611c00830151611be084015108611c2083015280611c208301516103e084015109611c40830152806107608301518203600308611c608301819052611900830151829109611c8083015280611c8083015161198084015109611ca083015280611ca0830151611c4084015108611cc083015280611cc08301516103e084015109611ce083015280611c80830151611a0084015109611d0083015280611d00830151611ce084015108611d2083015280611d208301516103e084015109611d40830152806107608301516118e084015109611d6083015280611d60830151611c6084015109611d8083015280611d8083015161192084015109611da083015280611da083015161064084015109611dc0830152806106408301518203600108611de08301819052611dc0830151829109611e0083015280611e00830151611d4084015108611e2083015280611e208301516103e084015109611e4083015280610640830151600209611e60830152806105c083015182036105e084015108611e808301819052611e60830151829109611ea0830152806105c0830151820361060084015108611ec083015280611ec08301518203611ea084015108611ee08301528061062083015182036105e084015108611f0083015280611f008301518203611ee084015108611f208301819052611da0830151829109611f4083015280611f40830151611e4084015108611f6083015280611f608301516103e084015109611f80830152806118c0830151611c6084015109611fa083015280611fa083015161192084015109611fc0830152806105e08301516105c084015108611fe0830152806106408301518203611fe0840151086120008301819052611fc083015182910961202083015280612020830151611f8084015108612040830152806120408301516103e0840151096120608301819052612020830151829108612080830152806120808301516103e0840151096120a0830152806108e083015182036001086120c083018190526112008301518291096120e0830152806120e08301516120a084015108612100830152806121008301516103e0840151096121208301526109408201518190800961214083015280610940830151820361214084015108612160830181905261114083015182910961218083015280612180830151612120840151086121a0830152806121a08301516103e0840151096121c0830152806109208301518203610940840151086121e08301819052611200830151829109612200830152806122008301516121c084015108612220830152806122208301516103e084015109612240830152806111408301518203600108612260830152806111808301516111608401510861228083018190526111a08301518291086122a083018190526111c08301518291086122c083018190526111e08301518291086122e0830152806122e08301518203612260840151086123008301528061022083015161082084015109612320830152806123208301516106a08401510861234083018190526102808301518291086123608301528061022083015161084084015109612380830152806123808301516105c0840151086123a083018190526102808301518291086123c083018190526123608301518291096123e08301528061022083015161086084015109612400830152806124008301516105e084015108612420830181905261028083015182910861244083018190526123e08301518291096124608301528061022083015161088084015109612480830152806124808301516106c0840151086124a083018190526102808301518291086124c083018190526124608301518291096124e08301819052610900830151829109612500830152806102208301516001096125208301528061252083015161058084015109612540830152806125408301516106a0840151086125608301819052610280830151829108612580830152806102208301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096125a0830152806125a0830151610580840151096125c0830152806125c08301516105c0840151086125e083018190526102808301518291086126008301819052612580830151829109612620830152806102208301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b096126408301528061264083015161058084015109612660830152806126608301516105e08401510861268083018190526102808301518291086126a083018190526126208301518291096126c0830152806102208301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096126e0830152806126e083015161058084015109612700830152806127008301516106c084015108612720830181905261028083015182910861274083018190526126c083015182910961276083018190526108e0830151829109612780830152806127808301518203612500840151086127a083018190526123008301518291096127c0830152806127c0830151612240840151086127e0830152806127e08301516103e084015109612800830152806102208301516108a08401510961282083015280612820830151610640840151086128408301819052610280830151829108612860830152806102208301516108c08401510961288083015280612880830151611240840151086128a083018190526102808301518291086128c083018190526128608301518291096128e08301819052610960830151829109612900830152806102208301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612920830152806129208301516105808401510961294083015280612940830151610640840151086129608301819052610280830151829108612980830152806102208301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d096129a0830152806129a0830151610580840151096129c0830152806129c0830151611240840151086129e08301819052610280830151829108612a008301819052612980830151829109612a208301819052610940830151829109612a4083015280612a40830151820361290084015108612a608301819052612300830151829109612a8083015280612a8083015161280084015108612aa083015280612aa08301516103e084015109612ac0830152806109808301518203600108612ae08301819052611200830151829109612b0083015280612b00830151612ac084015108612b2083015280612b208301516103e084015109612b4083015261098082015181908009612b60830152806109808301518203612b6084015108612b808301819052611140830151829109612ba083015280612ba0830151612b4084015108612bc083015280612bc08301516103e084015109612be0830152806102208301516109c084015108612c0083018190526109a0830151829109612c2083015280610280830151610a0084015108612c408301819052612c20830151829109612c608301528061060083015161010009612c8083015280612c8083015182036105c084015108612ca08301819052610740830151829109612cc08301819052610220830151829108612ce08301819052610980830151829109612d008301528061028083015161072084015108612d208301819052612d00830151829109612d4083015280612d408301518203612c6084015108612d608301819052612300830151829109612d8083015280612d80830151612be084015108612da083015280612da08301516103e084015109612dc083015280610a0083015182036109c084015108612de08301819052611200830151829109612e0083015280612e00830151612dc084015108612e2083015280612e208301516103e084015109612e4083015280612300830151612de084015109612e60830152806109e083015182036109c084015108612e808301819052612e60830151829109612ea083015280612ea0830151612e4084015108612ec0830152610d0082015181908009612ee08301819052610d00830151829109612f008301819052610d00830151829109612f208301819052610d00830151829109612f4083015280610d00830151600109612f6083015280612ee0830151600109612f8083015280612f00830151600109612fa083015280612f20830151600109612fc083015280610d20830151612ec084015109612fe083015280610580830151610bc08401510961300083015280600161058084015109613020830152806130208301518203610b4084015108613040830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f61058084015109613060830152806130608301518203610b4084015108613080830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610580840151096130a0830152806130a08301518203610b40840151086130c0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610580840151096130e0830152806130e08301518203610b408401510861310083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610bc085015109610b4084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610bc08801510961058087015109089050806131208401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610bc085015109610b4084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610bc08801510961058087015109089050806131408401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610bc085015109610b4084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610bc088015109610580870151090861316084015250613040820151819060010961318083018190526130808301518291096131a083018190526131008301518291096131c0830152806001610b40840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000061058087015109089050806131e08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610bc085015109610b4084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610bc08801510961058087015109089050806132008401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610bc085015109610b4084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610bc08801510961058087015109089050806132208401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610bc085015109610b4084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610bc0880151096105808701510908613240840152506130c08201516131a08301518291900961326083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa361058085015109610b4084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105808801510961058087015109089050806132808401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e61058085015109610b4084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105808801510961058087015109089050806132a08401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e861058085015109610b4084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105808801510961058087015109089050806132c08401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161961058085015109610b4084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105808801510961058087015109086132e0840152506131008201516131808301518291900961330083015261312082015181816131408501510990508061332084015281816131608501510990508061334084015281816131e0850151099050806133608401528181613180850151099050806133808401528181613200850151099050806133a08401528181613220850151099050806133c08401528181613240850151099050806133e084015281816132608501510990508061340084015281816132808501510990508061342084015281816132a08501510990508061344084015281816131a08501510990508061346084015281816132c08501510990508061348084015281816132e0850151099050806134a08401528181613300850151099050806134c0840152506020613500830152602061352083015260206135408301526134c08201516135608301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6135808301526000805160206154128339815191526135a083015282600160206134e0850160c0613500870160055afa141692506134e08201516000613300840151905082826134a0860151096133008501528282820991506132e084015190508282613480860151096132e08501528282820991506132c084015190508282613460860151096132c08501528282820991506131a084015190508282613440860151096131a08501528282820991506132a084015190508282613420860151096132a08501528282820991506132808401519050828261340086015109613280850152828282099150613260840151905082826133e086015109613260850152828282099150613240840151905082826133c086015109613240850152828282099150613220840151905082826133a086015109613220850152828282099150613200840151905082826133808601510961320085015282828209915061318084015190508282613360860151096131808501528282820991506131e084015190508282613340860151096131e08501528282820991506131608401519050828261332086015109613160850152828282099150613140840151905082826131208601510961314085015282828209613120850181905261314085015190925083915082900890508181613160850151086135c0840152506131808201516131c0830151829190096135e08301526131e08201518061360084015250806132608301516131c0840151096136208301526132008201518181613220850151089050818161324085015108613640840152506131a08201516131c08301518291900961366083015261328082015181816132a085015108613680840152506133008201516131c0830151829190096136a08301526132c082015181816132e0850151086136c0840152506135c082015161360083015182908290099050806136e084015281816136408501510990508061370084015281816136808501510990508061372084015281816136c08501510990508061374084015250602061378083015260206137a083015260206137c08301526137408201516137e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6138008301526000805160206154128339815191526138208301528260016020613760850160c0613780870160055afa1416925061376082015160006136c084015190508282613720860151096136c08501528282820991506136808401519050828261370086015109613680850152828282099150613640840151905082826136e086015109613640850152828282099150613600840151905082826135c086015109613600850152828282096135c085015250506136008201516135e08301518291900961384083015280613640830151613620840151096138608301528061368083015161366084015109613880830152806136c08301516136a0840151096138a0830152610a40820151819080096138c08301819052610a408301518291096138e08301819052610a408301518291096139008301819052610a408301518291096139208301819052610a408301518291096139408301819052610a408301518291096139608301819052610a408301518291096139808301819052610a408301518291096139a08301819052610a408301518291096139c08301819052610a408301518291096139e08301819052610a40830151829109613a008301819052610a40830151829109613a208301819052610a40830151829109613a408301819052610a40830151829109613a608301819052610a40830151829109613a808301819052610a40830151829109613aa08301819052610a40830151829109613ac08301819052610a40830151829109613ae08301819052610a40830151829109613b008301819052610a40830151829109613b20830152610aa082015181908009613b408301819052610aa0830151829109613b608301819052610aa0830151829109613b808301819052610aa0830151829109613ba0830152806131208301516105c084015109818183613140860151610600870151090890508181836131608601516106808701510908613bc084018190526135c08401518392509009613be0830152806001613be0840151830309613c00830152806131208301516105e084015109818183613140860151610620870151090890508181836131608601516106608701510908613c2084018190526135c08401518392509009613c408301819052610a408301518291820309613c6083015280610a40830151600109613c8083015280613c60830151613c0084015108613ca0830152806001613ca084015109613cc0830152806001613c8084015109613ce0830152806135e0830151600109613d00830152806131e083015161064084015109613d208301819052613840830151829109613d40830152806001613d40840151830309613d60830152806001613d0084015109613d80830152806131e0830151610a0084015109613da08301819052613840830151829109613dc08301819052610a408301518291820309613de083015280610a40830151613d0084015109613e0083015280613de0830151613d6084015108613e20830152806131e08301516106a084015109613e408301819052613840830151829109613e6083018190526138c08301518291820309613e80830152806138c0830151613d0084015109613ea083015280613e80830151613e2084015108613ec0830152806131e08301516106c084015109613ee08301819052613840830151829109613f0083018190526138e08301518291820309613f20830152806138e0830151613d0084015109613f4083015280613f20830151613ec084015108613f60830152806131e08301516106e084015109613f808301819052613840830151829109613fa083018190526139008301518291820309613fc083015280613900830151613d0084015109613fe083015280613fc0830151613f6084015108614000830152806131e08301516107008401510961402083018190526138408301518291096140408301819052613920830151829182030961406083015280613920830151613d008401510961408083015280614060830151614000840151086140a0830152806131e0830151610720840151096140c083018190526138408301518291096140e08301819052613940830151829182030961410083015280613940830151613d0084015109614120830152806141008301516140a084015108614140830152806131e0830151610740840151096141608301819052613840830151829109614180830181905261396083015182918203096141a083015280613960830151613d00840151096141c0830152806141a0830151614140840151086141e0830152806131e08301516107608401510961420083018190526138408301518291096142208301819052613980830151829182030961424083015280613980830151613d0084015109614260830152806142408301516141e084015108614280830152806131e0830151610780840151096142a083018190526138408301518291096142c083018190526139a083015182918203096142e0830152806139a0830151613d0084015109614300830152806142e083015161428084015108614320830152806131e08301516107a084015109614340830181905261384083015182910961436083018190526139c08301518291820309614380830152806139c0830151613d00840151096143a083015280614380830151614320840151086143c0830152806131e08301516107c0840151096143e0830181905261384083015182910961440083018190526139e08301518291820309614420830152806139e0830151613d0084015109614440830152806144208301516143c084015108614460830152806131e08301516107e08401510961448083018190526138408301518291096144a08301819052613a0083015182918203096144c083015280613a00830151613d00840151096144e0830152806144c083015161446084015108614500830152806131e08301516108208401510961452083018190526138408301518291096145408301819052613a20830151829182030961456083015280613a20830151613d008401510961458083015280614560830151614500840151086145a0830152806131e0830151610840840151096145c083018190526138408301518291096145e08301819052613a40830151829182030961460083015280613a40830151613d0084015109614620830152806146008301516145a084015108614640830152806131e08301516108608401510961466083018190526138408301518291096146808301819052613a6083015182918203096146a083015280613a60830151613d00840151096146c0830152806146a0830151614640840151086146e0830152806131e08301516108808401510961470083018190526138408301518291096147208301819052613a80830151829182030961474083015280613a80830151613d0084015109614760830152806147408301516146e084015108614780830152806131e08301516108a0840151096147a083018190526138408301518291096147c08301819052613aa083015182918203096147e083015280613aa0830151613d0084015109614800830152806147e083015161478084015108614820830152806131e08301516108c08401510961484083018190526138408301518291096148608301819052613ac0830151829182030961488083015280613ac0830151613d00840151096148a083015280614880830151614820840151086148c0830152806135e0830151612f60840151096148e0830152806135e0830151612f8084015109614900830152806135e0830151612fa084015109614920830152806135e0830151612fc084015109614940830152806131e0830151612fe08401510961496083018190526138408301518291096149808301819052613ae083015182918203096149a083015280613ae0830151613d00840151096149c083015280613ae08301516148e0840151096149e083015280613ae083015161490084015109614a0083015280613ae083015161492084015109614a2083015280613ae083015161494084015109614a40830152806149a08301516148c084015108614a60830152806131e083015161080084015109614a808301819052613840830151829109614aa08301819052613b008301518291820309614ac083015280613b00830151613d0084015109614ae083015280614ac0830151614a6084015108614b008301819052610aa0830151829109614b2083015280610aa0830151613d8084015109614b4083015280610aa0830151613e0084015109614b6083015280610aa0830151613ea084015109614b8083015280610aa0830151613f4084015109614ba083015280610aa0830151613fe084015109614bc083015280610aa083015161408084015109614be083015280610aa083015161412084015109614c0083015280610aa08301516141c084015109614c2083015280610aa083015161426084015109614c4083015280610aa083015161430084015109614c6083015280610aa08301516143a084015109614c8083015280610aa083015161444084015109614ca083015280610aa08301516144e084015109614cc083015280610aa083015161458084015109614ce083015280610aa083015161462084015109614d0083015280610aa08301516146c084015109614d2083015280610aa083015161476084015109614d4083015280610aa083015161480084015109614d6083015280610aa08301516148a084015109614d8083015280610aa08301516149c084015109614da083015280610aa08301516149e084015109614dc083015280610aa0830151614a0084015109614de083015280610aa0830151614a2084015109614e0083015280610aa0830151614a4084015109614e2083015280610aa0830151614ae084015109614e4083015280614b20830151613cc084015108614e6083015280613620830151600109614e80830152806132008301516108e084015109818183613220860151610900870151090890508181836132408601516109208701510908614ea084018190526138608401518392509009614ec0830152806001614ec0840151830309614ee0830152806001614e8084015109614f0083015280613b40830151614ee084015109614f2083015280613b40830151614f0084015109614f4083015280614f20830151614e6084015108614f6083015280613660830151600109614f8083015280613280830151610940840151098181836132a08601516109608701510908614fa084018190526138808401518392509009614fc0830152806001614fc0840151830309614fe0830152806001614f808401510961500083015280613280830151610980840151098181836132a08601516109a08701510908615020840181905261388084015183925090096150408301819052610a40830151829182030961506083015280610a40830151614f808401510961508083015280615060830151614fe0840151086150a08301819052613b608301518291096150c083015280613b60830151615000840151096150e083015280613b6083015161508084015109615100830152806150c0830151614f6084015108615120830152806136a0830151600109615140830152806132c08301516109c0840151098181836132e08601516109e0870151090861516084018190526138a084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c083015280613b808301516151a0840151096151e083015280613b808301516151c084015109615200830152806151e083015161512084015108615220830152806131c083015160010961524083015280610b408301516001096152608301526001615280830181815260026152a08501526152208401516152c085015284919060409060608160075afa141692506152808201516152e08301526152a08201516153008301526060820151615320830152608082015161534083015282600160406152e0850160806152e0870160065afa1416925060a082015161536083015260c0820151615380830152613ce08201516153a0830152826001604061536085016060615360870160075afa141692506152e08201516153c08301526153008201516153e083015261536082015161540083015261538082015161542083015282600160406153c0850160806153c0870160065afa1416925060e0820151615440830152610100820151615460830152614b40820151615480830152826001604061544085016060615440870160075afa141692506153c08201516154a08301526153e08201516154c08301526154408201516154e083015261546082015161550083015282600160406154a0850160806154a0870160065afa141692506101c08201516155208301526101e0820151615540830152614b60820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa141692507f291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db4252906156008301527f154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc615620830152614b80820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692507f176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d6156e08301527f1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51615700830152614ba082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e202507596157c08301527f0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea836157e0830152614bc082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af6158a08301527f24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c436158c0830152614be08201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa46159808301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c06159a0830152614c008201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed615a608301527f286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf615a80830152614c20820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5615b408301527f0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2615b60830152614c40820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36615c208301527f2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890615c40830152614c60820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f615d008301527f1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d615d20830152614c80820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c615de08301527f1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68615e00830152614ca0820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd701615ec08301527f07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a615ee0830152614cc0820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d615fa08301527f154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6615fc0830152614ce0820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f2402db4b1c7746dcd9fe7eab82ab3fa7ebb1bd352a9af94ef6811b2af9ab6f8e6160808301527f2a0047ec08a254753c466648f0dc6e077e88e5495829c3a845873b9058bf44076160a0830152614d008201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a6161608301527f27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e28616180830152614d208201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746162408301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616260830152614d40820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a6163208301527eb004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56616340830152614d60820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f2903a763c1c6b78667f906b6fe2b4ad197b55587c90e14e8502446da8c45ef7d6164008301527f13ea57986f9295e92def3303aef53f2b4f625ba985531201ab53dc7307f46b69616420830152614d80820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692506104208201516164e0830152610440820151616500830152614da082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692506104608201516165c08301526104808201516165e0830152614dc082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104a08201516166a08301526104c08201516166c0830152614de08201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104e08201516167808301526105008201516167a0830152614e008201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa14169250610520820151616860830152610540820151616880830152614e208201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa141692506103808201516169408301526103a0820151616960830152614e40820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa141692506102c0820151616a208301526102e0820151616a40830152614f40820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa14169250610300820151616b00830152610320820151616b208301526150e0820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610340820151616be0830152610360820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610180820151616cc08301526101a0820151616ce0830152615200820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610ae0820151616da0830152610b00820151616dc08301526152408201518103616de0830152508160016040616da084016060616da0860160075afa14169150616d20810151616e00820152616d40810151616e20820152616da0810151616e40820152616dc0810151616e608201528160016040616e0084016080616e00860160065afa14169150610b80810151616e80820152610ba0810151616ea0820152615260810151616ec08201528160016040616e8084016060616e80860160075afa14169150616e00810151616ee0820152616e20810151616f00820152616e80810151616f20820152616ea0810151616f408201528160016040616ee084016080616ee0860160065afa14169150616ee0810151616f60820152616f00810151616f808201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2616fa08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed616fc08201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b616fe08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa617000820152610b80810151617020820152610ba08101516170408201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6170608201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6170808201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456170a08201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff6170c08201528160016020616f608401610180616f60860160085afa616f6093909301516001149214161691505092915050565b604051806170c00160405280610386906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156152b1576152b1615272565b604052919050565b600082601f8301126152ca57600080fd5b813567ffffffffffffffff8111156152e4576152e4615272565b6152f7601f8201601f1916602001615288565b81815284602083860101111561530c57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561533c57600080fd5b823567ffffffffffffffff8082111561535457600080fd5b818501915085601f83011261536857600080fd5b813560208282111561537c5761537c615272565b8160051b61538b828201615288565b928352848101820192828101908a8511156153a557600080fd5b958301955b848710156153c3578635825295830195908301906153aa565b97505050860135925050808211156153da57600080fd5b506153e7858286016152b9565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a26469706673582212208f0f08c113d71e9affd04a930a0ccffff41cc79e358932cfa7ac1395c242440564736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file +{"_format":"hh-sol-artifact-1","contractName":"Verifier","sourceName":"src/InclusionVerifier.sol","abi":[{"inputs":[{"internalType":"uint256[]","name":"pubInputs","type":"uint256[]"},{"internalType":"bytes","name":"proof","type":"bytes"}],"name":"verify","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x608060405234801561001057600080fd5b506155e980620000216000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154ab565b610057565b604051901515815260200160405180910390f35b600060016100636153d4565b6000805160206155948339815191526100d9565b600080516020615574833981519152808310818310169083800960008051602061557483398151915283840960008051602061557483398151915284820990506000805160206155748339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f0aa1294f30774a0392cf024f41480b3c489bd0a6895d82ebaa096ca8edb6bbbc600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155948339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610680830151600209611fa083015280610600830151820361062084015108611fc08301819052611fa0830151829109611fe083015280610600830151820361064084015108612000830152806120008301518203611fe08401510861202083015280610660830151820361062084015108612040830152806120408301518203612020840151086120608301819052611ee083015182910961208083015280612080830151611f80840151086120a0830152806120a0830151610420840151096120c083015280611a00830151611da0840151096120e0830152806120e0830151611a60840151096121008301528061062083015161060084015108612120830152806106808301518203612120840151086121408301819052612100830151829109612160830152806121608301516120c08401510861218083015280612180830151610420840151096121a083018190526121608301518291086121c0830152806121c0830151610420840151096121e08301528061092083015182036001086122008301819052611300830151829109612220830152806122208301516121e084015108612240830152806122408301516104208401510961226083015261098082015181908009612280830152806109808301518203612280840151086122a083018190526112408301518291096122c0830152806122c0830151612260840151086122e0830152806122e083015161042084015109612300830152806109608301518203610980840151086123208301819052611300830151829109612340830152806123408301516123008401510861236083015280612360830151610420840151096123808301528061124083015182036001086123a083015280611280830151611260840151086123c083018190526112a08301518291086123e083018190526112c083015182910861240083018190526112e08301518291086124208301528061242083015182036123a0840151086124408301528061026083015161086084015109612460830152806124608301516106e08401510861248083018190526102c08301518291086124a083015280610260830151610880840151096124c0830152806124c0830151610600840151086124e083018190526102c083015182910861250083018190526124a0830151829109612520830152806102608301516108a084015109612540830152806125408301516106208401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108c0840151096125c0830152806125c0830151610700840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830181905261094083015182910961264083015280610260830151600109612660830152806126608301516105c084015109612680830152806126808301516106e0840151086126a083018190526102c08301518291086126c0830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096126e0830152806126e08301516105c084015109612700830152806127008301516106008401510861272083018190526102c083015182910861274083018190526126c0830151829109612760830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612780830152806127808301516105c0840151096127a0830152806127a0830151610620840151086127c083018190526102c08301518291086127e08301819052612760830151829109612800830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e5209612820830152806128208301516105c084015109612840830152806128408301516107008401510861286083018190526102c083015182910861288083018190526128008301518291096128a083018190526109208301518291096128c0830152806128c08301518203612640840151086128e0830181905261244083015182910961290083015280612900830151612380840151086129208301528061292083015161042084015109612940830152806102608301516108e084015109612960830152806129608301516106808401510861298083018190526102c08301518291086129a083015280610260830151610900840151096129c0830152806129c0830151611380840151086129e083018190526102c0830151829108612a0083018190526129a0830151829109612a2083018190526109a0830151829109612a40830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612a6083015280612a608301516105c084015109612a8083015280612a8083015161068084015108612aa083018190526102c0830151829108612ac0830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612ae083015280612ae08301516105c084015109612b0083015280612b0083015161138084015108612b2083018190526102c0830151829108612b408301819052612ac0830151829109612b608301819052610980830151829109612b8083015280612b808301518203612a4084015108612ba08301819052612440830151829109612bc083015280612bc083015161294084015108612be083015280612be083015161042084015109612c00830152806109c08301518203600108612c208301819052611300830151829109612c4083015280612c40830151612c0084015108612c6083015280612c6083015161042084015109612c808301526109c082015181908009612ca0830152806109c08301518203612ca084015108612cc08301819052611240830151829109612ce083015280612ce0830151612c8084015108612d0083015280612d0083015161042084015109612d2083015280610260830151610a0084015108612d4083018190526109e0830151829109612d60830152806102c0830151610a4084015108612d808301819052612d60830151829109612da08301528061064083015161010009612dc083015280612dc0830151820361060084015108612de08301819052610780830151829109612e008301819052610260830151829108612e2083018190526109c0830151829109612e40830152806102c083015161076084015108612e608301819052612e40830151829109612e8083015280612e808301518203612da084015108612ea08301819052612440830151829109612ec083015280612ec0830151612d2084015108612ee083015280612ee083015161042084015109612f0083015280610a408301518203610a0084015108612f208301819052611300830151829109612f4083015280612f40830151612f0084015108612f6083015280612f6083015161042084015109612f8083015280612440830151612f2084015109612fa083015280610a208301518203610a0084015108612fc08301819052612fa0830151829109612fe083015280612fe0830151612f8084015108613000830152610d40820151819080096130208301819052610d408301518291096130408301819052610d408301518291096130608301819052610d4083015182910961308083015280610d408301516001096130a0830152806130208301516001096130c0830152806130408301516001096130e08301528061306083015160010961310083015280610d6083015161300084015109613120830152806105c0830151610c00840151096131408301528060016105c084015109613160830152806131608301518203610b8084015108613180830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c0840151096131a0830152806131a08301518203610b80840151086131c0830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c084015109613220830152806132208301518203610b808401510861324083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132608401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806132808401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c087015109086132a08401525061318082015181906001096132c083018190526131c08301518291096132e08301819052613240830151829109613300830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133208401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133408401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133608401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613380840152506132008201516132e0830151829190096133a083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806133c08401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806133e08401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134008401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c08701510908613420840152506132408201516132c08301518291900961344083015261326082015181816132808501510990508061346084015281816132a0850151099050806134808401528181613320850151099050806134a084015281816132c0850151099050806134c08401528181613340850151099050806134e084015281816133608501510990508061350084015281816133808501510990508061352084015281816133a08501510990508061354084015281816133c08501510990508061356084015281816133e08501510990508061358084015281816132e0850151099050806135a08401528181613400850151099050806135c08401528181613420850151099050806135e0840152818161344085015109905080613600840152506020613640830152602061366083015260206136808301526136008201516136a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6136c08301526000805160206155948339815191526136e08301528260016020613620850160c0613640870160055afa141692506136208201516000613440840151905082826135e086015109613440850152828282099150613420840151905082826135c086015109613420850152828282099150613400840151905082826135a0860151096134008501528282820991506132e084015190508282613580860151096132e08501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c08501528282820991506133a084015190508282613520860151096133a08501528282820991506133808401519050828261350086015109613380850152828282099150613360840151905082826134e086015109613360850152828282099150613340840151905082826134c0860151096133408501528282820991506132c0840151905082826134a0860151096132c085015282828209915061332084015190508282613480860151096133208501528282820991506132a084015190508282613460860151096132a08501528282820991506132808401519050828261326086015109613280850152828282096132608501819052613280850151909250839150829008905081816132a085015108613700840152506132c0820151613300830151829190096137208301526133208201518061374084015250806133a0830151613300840151096137608301526133408201518181613360850151089050818161338085015108613780840152506132e0820151613300830151829190096137a08301526133c082015181816133e0850151086137c084015250613440820151613300830151829190096137e083015261340082015181816134208501510861380084015250613700820151613740830151829082900990508061382084015281816137808501510990508061384084015281816137c0850151099050806138608401528181613800850151099050806138808401525060206138c083015260206138e083015260206139008301526138808201516139208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff61394083015260008051602061559483398151915261396083015282600160206138a0850160c06138c0870160055afa141692506138a0820151600061380084015190508282613860860151096138008501528282820991506137c084015190508282613840860151096137c0850152828282099150613780840151905082826138208601510961378085015282828209915061374084015190508282613700860151096137408501528282820961370085015250506137408201516137208301518291900961398083015280613780830151613760840151096139a0830152806137c08301516137a0840151096139c0830152806138008301516137e0840151096139e0830152610a8082015181908009613a008301819052610a80830151829109613a208301819052610a80830151829109613a408301819052610a80830151829109613a608301819052610a80830151829109613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c60830152610ae082015181908009613c808301819052610ae0830151829109613ca08301819052610ae0830151829109613cc08301819052610ae0830151829109613ce08301528061326083015161060084015109818183613280860151610640870151090890508181836132a08601516106c08701510908613d0084018190526137008401518392509009613d20830152806001613d20840151830309613d408301528061326083015161062084015109818183613280860151610660870151090890508181836132a08601516106a08701510908613d6084018190526137008401518392509009613d808301819052610a808301518291820309613da083015280610a80830151600109613dc083015280613da0830151613d4084015108613de0830152806001613de084015109613e00830152806001613dc084015109613e2083015280613720830151600109613e408301528061332083015161068084015109613e608301819052613980830151829109613e80830152806001613e80840151830309613ea0830152806001613e4084015109613ec083015280613320830151610a4084015109613ee08301819052613980830151829109613f008301819052610a808301518291820309613f2083015280610a80830151613e4084015109613f4083015280613f20830151613ea084015108613f60830152806133208301516106e084015109613f808301819052613980830151829109613fa08301819052613a008301518291820309613fc083015280613a00830151613e4084015109613fe083015280613fc0830151613f6084015108614000830152806133208301516107008401510961402083018190526139808301518291096140408301819052613a20830151829182030961406083015280613a20830151613e408401510961408083015280614060830151614000840151086140a083015280613320830151610720840151096140c083018190526139808301518291096140e08301819052613a40830151829182030961410083015280613a40830151613e4084015109614120830152806141008301516140a084015108614140830152806133208301516107408401510961416083018190526139808301518291096141808301819052613a6083015182918203096141a083015280613a60830151613e40840151096141c0830152806141a0830151614140840151086141e0830152806133208301516107608401510961420083018190526139808301518291096142208301819052613a80830151829182030961424083015280613a80830151613e4084015109614260830152806142408301516141e08401510861428083015280613320830151610780840151096142a083018190526139808301518291096142c08301819052613aa083015182918203096142e083015280613aa0830151613e4084015109614300830152806142e083015161428084015108614320830152806133208301516107a08401510961434083018190526139808301518291096143608301819052613ac0830151829182030961438083015280613ac0830151613e40840151096143a083015280614380830151614320840151086143c0830152806133208301516107c0840151096143e083018190526139808301518291096144008301819052613ae0830151829182030961442083015280613ae0830151613e4084015109614440830152806144208301516143c084015108614460830152806133208301516107e08401510961448083018190526139808301518291096144a08301819052613b0083015182918203096144c083015280613b00830151613e40840151096144e0830152806144c083015161446084015108614500830152806133208301516108008401510961452083018190526139808301518291096145408301819052613b20830151829182030961456083015280613b20830151613e408401510961458083015280614560830151614500840151086145a083015280613320830151610820840151096145c083018190526139808301518291096145e08301819052613b40830151829182030961460083015280613b40830151613e4084015109614620830152806146008301516145a084015108614640830152806133208301516108608401510961466083018190526139808301518291096146808301819052613b6083015182918203096146a083015280613b60830151613e40840151096146c0830152806146a0830151614640840151086146e0830152806133208301516108808401510961470083018190526139808301518291096147208301819052613b80830151829182030961474083015280613b80830151613e4084015109614760830152806147408301516146e084015108614780830152806133208301516108a0840151096147a083018190526139808301518291096147c08301819052613ba083015182918203096147e083015280613ba0830151613e4084015109614800830152806147e083015161478084015108614820830152806133208301516108c08401510961484083018190526139808301518291096148608301819052613bc0830151829182030961488083015280613bc0830151613e40840151096148a083015280614880830151614820840151086148c0830152806133208301516108e0840151096148e083018190526139808301518291096149008301819052613be0830151829182030961492083015280613be0830151613e4084015109614940830152806149208301516148c084015108614960830152806133208301516109008401510961498083018190526139808301518291096149a08301819052613c0083015182918203096149c083015280613c00830151613e40840151096149e0830152806149c083015161496084015108614a00830152806137208301516130a084015109614a20830152806137208301516130c084015109614a40830152806137208301516130e084015109614a608301528061372083015161310084015109614a808301528061332083015161312084015109614aa08301819052613980830151829109614ac08301819052613c208301518291820309614ae083015280613c20830151613e4084015109614b0083015280613c20830151614a2084015109614b2083015280613c20830151614a4084015109614b4083015280613c20830151614a6084015109614b6083015280613c20830151614a8084015109614b8083015280614ae0830151614a0084015108614ba08301528061332083015161084084015109614bc08301819052613980830151829109614be08301819052613c408301518291820309614c0083015280613c40830151613e4084015109614c2083015280614c00830151614ba084015108614c408301819052610ae0830151829109614c6083015280610ae0830151613ec084015109614c8083015280610ae0830151613f4084015109614ca083015280610ae0830151613fe084015109614cc083015280610ae083015161408084015109614ce083015280610ae083015161412084015109614d0083015280610ae08301516141c084015109614d2083015280610ae083015161426084015109614d4083015280610ae083015161430084015109614d6083015280610ae08301516143a084015109614d8083015280610ae083015161444084015109614da083015280610ae08301516144e084015109614dc083015280610ae083015161458084015109614de083015280610ae083015161462084015109614e0083015280610ae08301516146c084015109614e2083015280610ae083015161476084015109614e4083015280610ae083015161480084015109614e6083015280610ae08301516148a084015109614e8083015280610ae083015161494084015109614ea083015280610ae08301516149e084015109614ec083015280610ae0830151614b0084015109614ee083015280610ae0830151614b2084015109614f0083015280610ae0830151614b4084015109614f2083015280610ae0830151614b6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614c2084015109614f8083015280614c60830151613e0084015108614fa083015280613760830151600109614fc08301528061334083015161092084015109818183613360860151610940870151090890508181836133808601516109608701510908614fe084018190526139a08401518392509009615000830152806001615000840151830309615020830152806001614fc08401510961504083015280613c808301516150208401510961506083015280613c808301516150408401510961508083015280615060830151614fa0840151086150a0830152806137a08301516001096150c0830152806133c0830151610980840151098181836133e08601516109a087015109086150e084018190526139c084015183925090096151008301528060016151008401518303096151208301528060016150c084015109615140830152806133c08301516109c0840151098181836133e08601516109e0870151090861516084018190526139c084015183925090096151808301819052610a8083015182918203096151a083015280610a808301516150c0840151096151c0830152806151a0830151615120840151086151e08301819052613ca083015182910961520083015280613ca08301516151408401510961522083015280613ca08301516151c084015109615240830152806152008301516150a084015108615260830152806137e083015160010961528083015280613400830151610a0084015109818183613420860151610a2087015109086152a084018190526139e084015183925090096152c08301528060016152c08401518303096152e08301528060016152808401510961530083015280613cc08301516152e08401510961532083015280613cc08301516153008401510961534083015280615320830151615260840151086153608301528061330083015160010961538083015280610b808301516001096153a083015260016153c0830181815260026153e085015261536084015161540085015284919060409060608160075afa141692506153c08201516154208301526153e082015161544083015260a082015161546083015260c0820151615480830152826001604061542085016080615420870160065afa1416925060e08201516154a08301526101008201516154c0830152613e208201516154e083015282600160406154a0850160606154a0870160075afa141692506154208201516155008301526154408201516155208301526154a08201516155408301526154c0820151615560830152826001604061550085016080615500870160065afa141692506101208201516155808301526101408201516155a0830152614c808201516155c0830152826001604061558085016060615580870160075afa141692506155008201516155e08301526155208201516156008301526155808201516156208301526155a082015161564083015282600160406155e0850160806155e0870160065afa14169250610200820151615660830152610220820151615680830152614ca08201516156a0830152826001604061566085016060615660870160075afa141692506155e08201516156c08301526156008201516156e083015261566082015161570083015261568082015161572083015282600160406156c0850160806156c0870160065afa141692507f291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db4252906157408301527f154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc615760830152614cc0820151615780830152826001604061574085016060615740870160075afa141692506156c08201516157a08301526156e08201516157c08301526157408201516157e083015261576082015161580083015282600160406157a0850160806157a0870160065afa141692507f176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d6158208301527f1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51615840830152614ce0820151615860830152826001604061582085016060615820870160075afa141692506157a08201516158808301526157c08201516158a08301526158208201516158c08301526158408201516158e0830152826001604061588085016080615880870160065afa141692507f019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e202507596159008301527f0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea83615920830152614d00820151615940830152826001604061590085016060615900870160075afa141692506158808201516159608301526158a08201516159808301526159008201516159a08301526159208201516159c0830152826001604061596085016080615960870160065afa141692507f0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af6159e08301527f24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c43615a00830152614d20820151615a2083015282600160406159e0850160606159e0870160075afa14169250615960820151615a40830152615980820151615a608301526159e0820151615a80830152615a00820151615aa08301528260016040615a4085016080615a40870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615ac08301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615ae0830152614d40820151615b008301528260016040615ac085016060615ac0870160075afa14169250615a40820151615b20830152615a60820151615b40830152615ac0820151615b60830152615ae0820151615b808301528260016040615b2085016080615b20870160065afa141692507f0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed615ba08301527f286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf615bc0830152614d60820151615be08301528260016040615ba085016060615ba0870160075afa14169250615b20820151615c00830152615b40820151615c20830152615ba0820151615c40830152615bc0820151615c608301528260016040615c0085016080615c00870160065afa141692507f14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5615c808301527f0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2615ca0830152614d80820151615cc08301528260016040615c8085016060615c80870160075afa14169250615c00820151615ce0830152615c20820151615d00830152615c80820151615d20830152615ca0820151615d408301528260016040615ce085016080615ce0870160065afa141692507f0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36615d608301527f2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890615d80830152614da0820151615da08301528260016040615d6085016060615d60870160075afa14169250615ce0820151615dc0830152615d00820151615de0830152615d60820151615e00830152615d80820151615e208301528260016040615dc085016080615dc0870160065afa141692507f1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f615e408301527f1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d615e60830152614dc0820151615e808301528260016040615e4085016060615e40870160075afa14169250615dc0820151615ea0830152615de0820151615ec0830152615e40820151615ee0830152615e60820151615f008301528260016040615ea085016080615ea0870160065afa141692507f07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c615f208301527f1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68615f40830152614de0820151615f608301528260016040615f2085016060615f20870160075afa14169250615ea0820151615f80830152615ec0820151615fa0830152615f20820151615fc0830152615f40820151615fe08301528260016040615f8085016080615f80870160065afa141692507f0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd7016160008301527f07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a616020830152614e00820151616040830152826001604061600085016060616000870160075afa14169250615f80820151616060830152615fa08201516160808301526160008201516160a08301526160208201516160c0830152826001604061606085016080616060870160065afa141692507f2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d6160e08301527f154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6616100830152614e2082015161612083015282600160406160e0850160606160e0870160075afa141692506160608201516161408301526160808201516161608301526160e08201516161808301526161008201516161a0830152826001604061614085016080616140870160065afa141692507f2dec3929e07b4276215297f5f653b3ec6bf9b910006678ab3c3d67654001d6da6161c08301527f20b9c7e9a6c29e31e9164962de9a0478aa976e72a2e2d0e9c9ab6fabbb20ba496161e0830152614e4082015161620083015282600160406161c0850160606161c0870160075afa141692506161408201516162208301526161608201516162408301526161c08201516162608301526161e0820151616280830152826001604061622085016080616220870160065afa141692507f0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a6162a08301527f27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e286162c0830152614e608201516162e083015282600160406162a0850160606162a0870160075afa141692506162208201516163008301526162408201516163208301526162a08201516163408301526162c0820151616360830152826001604061630085016080616300870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746163808301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e36163a0830152614e808201516163c0830152826001604061638085016060616380870160075afa141692506163008201516163e08301526163208201516164008301526163808201516164208301526163a082015161644083015282600160406163e0850160806163e0870160065afa141692507f1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a6164608301527eb004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56616480830152614ea08201516164a0830152826001604061646085016060616460870160075afa141692506163e08201516164c08301526164008201516164e083015261646082015161650083015261648082015161652083015282600160406164c0850160806164c0870160065afa141692507f20e2c72c77bcc14c0e9801d47d3ab42674027a82cde0955f1b17e5cad25edfb06165408301527f0350deaf2bcf4305e811ba811ccaae83d66761627e0a4eade1205c1cb0cfcd78616560830152614ec0820151616580830152826001604061654085016060616540870160075afa141692506164c08201516165a08301526164e08201516165c08301526165408201516165e083015261656082015161660083015282600160406165a0850160806165a0870160065afa14169250610460820151616620830152610480820151616640830152614ee0820151616660830152826001604061662085016060616620870160075afa141692506165a08201516166808301526165c08201516166a08301526166208201516166c08301526166408201516166e0830152826001604061668085016080616680870160065afa141692506104a08201516167008301526104c0820151616720830152614f00820151616740830152826001604061670085016060616700870160075afa141692506166808201516167608301526166a08201516167808301526167008201516167a08301526167208201516167c0830152826001604061676085016080616760870160065afa141692506104e08201516167e0830152610500820151616800830152614f2082015161682083015282600160406167e0850160606167e0870160075afa141692506167608201516168408301526167808201516168608301526167e08201516168808301526168008201516168a0830152826001604061684085016080616840870160065afa141692506105208201516168c08301526105408201516168e0830152614f4082015161690083015282600160406168c0850160606168c0870160075afa141692506168408201516169208301526168608201516169408301526168c08201516169608301526168e0820151616980830152826001604061692085016080616920870160065afa141692506105608201516169a08301526105808201516169c0830152614f608201516169e083015282600160406169a0850160606169a0870160075afa14169250616920820151616a00830152616940820151616a208301526169a0820151616a408301526169c0820151616a608301528260016040616a0085016080616a00870160065afa141692506103c0820151616a808301526103e0820151616aa0830152614f80820151616ac08301528260016040616a8085016060616a80870160075afa14169250616a00820151616ae0830152616a20820151616b00830152616a80820151616b20830152616aa0820151616b408301528260016040616ae085016080616ae0870160065afa14169250610300820151616b60830152610320820151616b80830152615080820151616ba08301528260016040616b6085016060616b60870160075afa14169250616ae0820151616bc0830152616b00820151616be0830152616b60820151616c00830152616b80820151616c208301528260016040616bc085016080616bc0870160065afa14169250610340820151616c40830152610360820151616c60830152615220820151616c808301528260016040616c4085016060616c40870160075afa14169250616bc0820151616ca0830152616be0820151616cc0830152616c40820151616ce0830152616c60820151616d008301528260016040616ca085016080616ca0870160065afa14169250610380820151616d208301526103a0820151616d40830152615240820151616d608301528260016040616d2085016060616d20870160075afa14169250616ca0820151616d80830152616cc0820151616da0830152616d20820151616dc0830152616d40820151616de08301528260016040616d8085016080616d80870160065afa141692506101c0820151616e008301526101e0820151616e20830152615340820151616e408301528260016040616e0085016060616e00870160075afa14169250616d80820151616e60830152616da0820151616e80830152616e00820151616ea0830152616e20820151616ec08301528260016040616e6085016080616e60870160065afa14169250610b20820151616ee0830152610b40820151616f008301526153808201518103616f20830152508160016040616ee084016060616ee0860160075afa14169150616e60810151616f40820152616e80810151616f60820152616ee0810151616f80820152616f00810151616fa08201528160016040616f4084016080616f40860160065afa14169150610bc0810151616fc0820152610be0810151616fe08201526153a08101516170008201528160016040616fc084016060616fc0860160075afa14169150616f40810151617020820152616f60810151617040820152616fc0810151617060820152616fe0810151617080820152816001604061702084016080617020860160065afa141691506170208101516170a08201526170408101516170c08201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26170e08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171008201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171208201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa617140820152610bc0810151617160820152610be08101516171808201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6171a08201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6171c08201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456171e08201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61720082015281600160206170a084016101806170a0860160085afa6170a093909301516001149214161691505092915050565b604051806172000160405280610390906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715615433576154336153f4565b604052919050565b600082601f83011261544c57600080fd5b813567ffffffffffffffff811115615466576154666153f4565b615479601f8201601f191660200161540a565b81815284602083860101111561548e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156154be57600080fd5b823567ffffffffffffffff808211156154d657600080fd5b818501915085601f8301126154ea57600080fd5b81356020828211156154fe576154fe6153f4565b8160051b61550d82820161540a565b928352848101820192828101908a85111561552757600080fd5b958301955b848710156155455786358252958301959083019061552c565b975050508601359250508082111561555c57600080fd5b506155698582860161543b565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a26469706673582212200887bb7fb7011a424d0cab95c712805d0f3bb55a90eb7817a154209e094c8eb864736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154ab565b610057565b604051901515815260200160405180910390f35b600060016100636153d4565b6000805160206155948339815191526100d9565b600080516020615574833981519152808310818310169083800960008051602061557483398151915283840960008051602061557483398151915284820990506000805160206155748339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f0aa1294f30774a0392cf024f41480b3c489bd0a6895d82ebaa096ca8edb6bbbc600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155948339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610680830151600209611fa083015280610600830151820361062084015108611fc08301819052611fa0830151829109611fe083015280610600830151820361064084015108612000830152806120008301518203611fe08401510861202083015280610660830151820361062084015108612040830152806120408301518203612020840151086120608301819052611ee083015182910961208083015280612080830151611f80840151086120a0830152806120a0830151610420840151096120c083015280611a00830151611da0840151096120e0830152806120e0830151611a60840151096121008301528061062083015161060084015108612120830152806106808301518203612120840151086121408301819052612100830151829109612160830152806121608301516120c08401510861218083015280612180830151610420840151096121a083018190526121608301518291086121c0830152806121c0830151610420840151096121e08301528061092083015182036001086122008301819052611300830151829109612220830152806122208301516121e084015108612240830152806122408301516104208401510961226083015261098082015181908009612280830152806109808301518203612280840151086122a083018190526112408301518291096122c0830152806122c0830151612260840151086122e0830152806122e083015161042084015109612300830152806109608301518203610980840151086123208301819052611300830151829109612340830152806123408301516123008401510861236083015280612360830151610420840151096123808301528061124083015182036001086123a083015280611280830151611260840151086123c083018190526112a08301518291086123e083018190526112c083015182910861240083018190526112e08301518291086124208301528061242083015182036123a0840151086124408301528061026083015161086084015109612460830152806124608301516106e08401510861248083018190526102c08301518291086124a083015280610260830151610880840151096124c0830152806124c0830151610600840151086124e083018190526102c083015182910861250083018190526124a0830151829109612520830152806102608301516108a084015109612540830152806125408301516106208401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108c0840151096125c0830152806125c0830151610700840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830181905261094083015182910961264083015280610260830151600109612660830152806126608301516105c084015109612680830152806126808301516106e0840151086126a083018190526102c08301518291086126c0830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096126e0830152806126e08301516105c084015109612700830152806127008301516106008401510861272083018190526102c083015182910861274083018190526126c0830151829109612760830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612780830152806127808301516105c0840151096127a0830152806127a0830151610620840151086127c083018190526102c08301518291086127e08301819052612760830151829109612800830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e5209612820830152806128208301516105c084015109612840830152806128408301516107008401510861286083018190526102c083015182910861288083018190526128008301518291096128a083018190526109208301518291096128c0830152806128c08301518203612640840151086128e0830181905261244083015182910961290083015280612900830151612380840151086129208301528061292083015161042084015109612940830152806102608301516108e084015109612960830152806129608301516106808401510861298083018190526102c08301518291086129a083015280610260830151610900840151096129c0830152806129c0830151611380840151086129e083018190526102c0830151829108612a0083018190526129a0830151829109612a2083018190526109a0830151829109612a40830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612a6083015280612a608301516105c084015109612a8083015280612a8083015161068084015108612aa083018190526102c0830151829108612ac0830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612ae083015280612ae08301516105c084015109612b0083015280612b0083015161138084015108612b2083018190526102c0830151829108612b408301819052612ac0830151829109612b608301819052610980830151829109612b8083015280612b808301518203612a4084015108612ba08301819052612440830151829109612bc083015280612bc083015161294084015108612be083015280612be083015161042084015109612c00830152806109c08301518203600108612c208301819052611300830151829109612c4083015280612c40830151612c0084015108612c6083015280612c6083015161042084015109612c808301526109c082015181908009612ca0830152806109c08301518203612ca084015108612cc08301819052611240830151829109612ce083015280612ce0830151612c8084015108612d0083015280612d0083015161042084015109612d2083015280610260830151610a0084015108612d4083018190526109e0830151829109612d60830152806102c0830151610a4084015108612d808301819052612d60830151829109612da08301528061064083015161010009612dc083015280612dc0830151820361060084015108612de08301819052610780830151829109612e008301819052610260830151829108612e2083018190526109c0830151829109612e40830152806102c083015161076084015108612e608301819052612e40830151829109612e8083015280612e808301518203612da084015108612ea08301819052612440830151829109612ec083015280612ec0830151612d2084015108612ee083015280612ee083015161042084015109612f0083015280610a408301518203610a0084015108612f208301819052611300830151829109612f4083015280612f40830151612f0084015108612f6083015280612f6083015161042084015109612f8083015280612440830151612f2084015109612fa083015280610a208301518203610a0084015108612fc08301819052612fa0830151829109612fe083015280612fe0830151612f8084015108613000830152610d40820151819080096130208301819052610d408301518291096130408301819052610d408301518291096130608301819052610d4083015182910961308083015280610d408301516001096130a0830152806130208301516001096130c0830152806130408301516001096130e08301528061306083015160010961310083015280610d6083015161300084015109613120830152806105c0830151610c00840151096131408301528060016105c084015109613160830152806131608301518203610b8084015108613180830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c0840151096131a0830152806131a08301518203610b80840151086131c0830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c084015109613220830152806132208301518203610b808401510861324083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132608401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806132808401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c087015109086132a08401525061318082015181906001096132c083018190526131c08301518291096132e08301819052613240830151829109613300830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133208401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133408401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133608401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613380840152506132008201516132e0830151829190096133a083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806133c08401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806133e08401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134008401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c08701510908613420840152506132408201516132c08301518291900961344083015261326082015181816132808501510990508061346084015281816132a0850151099050806134808401528181613320850151099050806134a084015281816132c0850151099050806134c08401528181613340850151099050806134e084015281816133608501510990508061350084015281816133808501510990508061352084015281816133a08501510990508061354084015281816133c08501510990508061356084015281816133e08501510990508061358084015281816132e0850151099050806135a08401528181613400850151099050806135c08401528181613420850151099050806135e0840152818161344085015109905080613600840152506020613640830152602061366083015260206136808301526136008201516136a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6136c08301526000805160206155948339815191526136e08301528260016020613620850160c0613640870160055afa141692506136208201516000613440840151905082826135e086015109613440850152828282099150613420840151905082826135c086015109613420850152828282099150613400840151905082826135a0860151096134008501528282820991506132e084015190508282613580860151096132e08501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c08501528282820991506133a084015190508282613520860151096133a08501528282820991506133808401519050828261350086015109613380850152828282099150613360840151905082826134e086015109613360850152828282099150613340840151905082826134c0860151096133408501528282820991506132c0840151905082826134a0860151096132c085015282828209915061332084015190508282613480860151096133208501528282820991506132a084015190508282613460860151096132a08501528282820991506132808401519050828261326086015109613280850152828282096132608501819052613280850151909250839150829008905081816132a085015108613700840152506132c0820151613300830151829190096137208301526133208201518061374084015250806133a0830151613300840151096137608301526133408201518181613360850151089050818161338085015108613780840152506132e0820151613300830151829190096137a08301526133c082015181816133e0850151086137c084015250613440820151613300830151829190096137e083015261340082015181816134208501510861380084015250613700820151613740830151829082900990508061382084015281816137808501510990508061384084015281816137c0850151099050806138608401528181613800850151099050806138808401525060206138c083015260206138e083015260206139008301526138808201516139208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff61394083015260008051602061559483398151915261396083015282600160206138a0850160c06138c0870160055afa141692506138a0820151600061380084015190508282613860860151096138008501528282820991506137c084015190508282613840860151096137c0850152828282099150613780840151905082826138208601510961378085015282828209915061374084015190508282613700860151096137408501528282820961370085015250506137408201516137208301518291900961398083015280613780830151613760840151096139a0830152806137c08301516137a0840151096139c0830152806138008301516137e0840151096139e0830152610a8082015181908009613a008301819052610a80830151829109613a208301819052610a80830151829109613a408301819052610a80830151829109613a608301819052610a80830151829109613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c60830152610ae082015181908009613c808301819052610ae0830151829109613ca08301819052610ae0830151829109613cc08301819052610ae0830151829109613ce08301528061326083015161060084015109818183613280860151610640870151090890508181836132a08601516106c08701510908613d0084018190526137008401518392509009613d20830152806001613d20840151830309613d408301528061326083015161062084015109818183613280860151610660870151090890508181836132a08601516106a08701510908613d6084018190526137008401518392509009613d808301819052610a808301518291820309613da083015280610a80830151600109613dc083015280613da0830151613d4084015108613de0830152806001613de084015109613e00830152806001613dc084015109613e2083015280613720830151600109613e408301528061332083015161068084015109613e608301819052613980830151829109613e80830152806001613e80840151830309613ea0830152806001613e4084015109613ec083015280613320830151610a4084015109613ee08301819052613980830151829109613f008301819052610a808301518291820309613f2083015280610a80830151613e4084015109613f4083015280613f20830151613ea084015108613f60830152806133208301516106e084015109613f808301819052613980830151829109613fa08301819052613a008301518291820309613fc083015280613a00830151613e4084015109613fe083015280613fc0830151613f6084015108614000830152806133208301516107008401510961402083018190526139808301518291096140408301819052613a20830151829182030961406083015280613a20830151613e408401510961408083015280614060830151614000840151086140a083015280613320830151610720840151096140c083018190526139808301518291096140e08301819052613a40830151829182030961410083015280613a40830151613e4084015109614120830152806141008301516140a084015108614140830152806133208301516107408401510961416083018190526139808301518291096141808301819052613a6083015182918203096141a083015280613a60830151613e40840151096141c0830152806141a0830151614140840151086141e0830152806133208301516107608401510961420083018190526139808301518291096142208301819052613a80830151829182030961424083015280613a80830151613e4084015109614260830152806142408301516141e08401510861428083015280613320830151610780840151096142a083018190526139808301518291096142c08301819052613aa083015182918203096142e083015280613aa0830151613e4084015109614300830152806142e083015161428084015108614320830152806133208301516107a08401510961434083018190526139808301518291096143608301819052613ac0830151829182030961438083015280613ac0830151613e40840151096143a083015280614380830151614320840151086143c0830152806133208301516107c0840151096143e083018190526139808301518291096144008301819052613ae0830151829182030961442083015280613ae0830151613e4084015109614440830152806144208301516143c084015108614460830152806133208301516107e08401510961448083018190526139808301518291096144a08301819052613b0083015182918203096144c083015280613b00830151613e40840151096144e0830152806144c083015161446084015108614500830152806133208301516108008401510961452083018190526139808301518291096145408301819052613b20830151829182030961456083015280613b20830151613e408401510961458083015280614560830151614500840151086145a083015280613320830151610820840151096145c083018190526139808301518291096145e08301819052613b40830151829182030961460083015280613b40830151613e4084015109614620830152806146008301516145a084015108614640830152806133208301516108608401510961466083018190526139808301518291096146808301819052613b6083015182918203096146a083015280613b60830151613e40840151096146c0830152806146a0830151614640840151086146e0830152806133208301516108808401510961470083018190526139808301518291096147208301819052613b80830151829182030961474083015280613b80830151613e4084015109614760830152806147408301516146e084015108614780830152806133208301516108a0840151096147a083018190526139808301518291096147c08301819052613ba083015182918203096147e083015280613ba0830151613e4084015109614800830152806147e083015161478084015108614820830152806133208301516108c08401510961484083018190526139808301518291096148608301819052613bc0830151829182030961488083015280613bc0830151613e40840151096148a083015280614880830151614820840151086148c0830152806133208301516108e0840151096148e083018190526139808301518291096149008301819052613be0830151829182030961492083015280613be0830151613e4084015109614940830152806149208301516148c084015108614960830152806133208301516109008401510961498083018190526139808301518291096149a08301819052613c0083015182918203096149c083015280613c00830151613e40840151096149e0830152806149c083015161496084015108614a00830152806137208301516130a084015109614a20830152806137208301516130c084015109614a40830152806137208301516130e084015109614a608301528061372083015161310084015109614a808301528061332083015161312084015109614aa08301819052613980830151829109614ac08301819052613c208301518291820309614ae083015280613c20830151613e4084015109614b0083015280613c20830151614a2084015109614b2083015280613c20830151614a4084015109614b4083015280613c20830151614a6084015109614b6083015280613c20830151614a8084015109614b8083015280614ae0830151614a0084015108614ba08301528061332083015161084084015109614bc08301819052613980830151829109614be08301819052613c408301518291820309614c0083015280613c40830151613e4084015109614c2083015280614c00830151614ba084015108614c408301819052610ae0830151829109614c6083015280610ae0830151613ec084015109614c8083015280610ae0830151613f4084015109614ca083015280610ae0830151613fe084015109614cc083015280610ae083015161408084015109614ce083015280610ae083015161412084015109614d0083015280610ae08301516141c084015109614d2083015280610ae083015161426084015109614d4083015280610ae083015161430084015109614d6083015280610ae08301516143a084015109614d8083015280610ae083015161444084015109614da083015280610ae08301516144e084015109614dc083015280610ae083015161458084015109614de083015280610ae083015161462084015109614e0083015280610ae08301516146c084015109614e2083015280610ae083015161476084015109614e4083015280610ae083015161480084015109614e6083015280610ae08301516148a084015109614e8083015280610ae083015161494084015109614ea083015280610ae08301516149e084015109614ec083015280610ae0830151614b0084015109614ee083015280610ae0830151614b2084015109614f0083015280610ae0830151614b4084015109614f2083015280610ae0830151614b6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614c2084015109614f8083015280614c60830151613e0084015108614fa083015280613760830151600109614fc08301528061334083015161092084015109818183613360860151610940870151090890508181836133808601516109608701510908614fe084018190526139a08401518392509009615000830152806001615000840151830309615020830152806001614fc08401510961504083015280613c808301516150208401510961506083015280613c808301516150408401510961508083015280615060830151614fa0840151086150a0830152806137a08301516001096150c0830152806133c0830151610980840151098181836133e08601516109a087015109086150e084018190526139c084015183925090096151008301528060016151008401518303096151208301528060016150c084015109615140830152806133c08301516109c0840151098181836133e08601516109e0870151090861516084018190526139c084015183925090096151808301819052610a8083015182918203096151a083015280610a808301516150c0840151096151c0830152806151a0830151615120840151086151e08301819052613ca083015182910961520083015280613ca08301516151408401510961522083015280613ca08301516151c084015109615240830152806152008301516150a084015108615260830152806137e083015160010961528083015280613400830151610a0084015109818183613420860151610a2087015109086152a084018190526139e084015183925090096152c08301528060016152c08401518303096152e08301528060016152808401510961530083015280613cc08301516152e08401510961532083015280613cc08301516153008401510961534083015280615320830151615260840151086153608301528061330083015160010961538083015280610b808301516001096153a083015260016153c0830181815260026153e085015261536084015161540085015284919060409060608160075afa141692506153c08201516154208301526153e082015161544083015260a082015161546083015260c0820151615480830152826001604061542085016080615420870160065afa1416925060e08201516154a08301526101008201516154c0830152613e208201516154e083015282600160406154a0850160606154a0870160075afa141692506154208201516155008301526154408201516155208301526154a08201516155408301526154c0820151615560830152826001604061550085016080615500870160065afa141692506101208201516155808301526101408201516155a0830152614c808201516155c0830152826001604061558085016060615580870160075afa141692506155008201516155e08301526155208201516156008301526155808201516156208301526155a082015161564083015282600160406155e0850160806155e0870160065afa14169250610200820151615660830152610220820151615680830152614ca08201516156a0830152826001604061566085016060615660870160075afa141692506155e08201516156c08301526156008201516156e083015261566082015161570083015261568082015161572083015282600160406156c0850160806156c0870160065afa141692507f291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db4252906157408301527f154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc615760830152614cc0820151615780830152826001604061574085016060615740870160075afa141692506156c08201516157a08301526156e08201516157c08301526157408201516157e083015261576082015161580083015282600160406157a0850160806157a0870160065afa141692507f176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d6158208301527f1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51615840830152614ce0820151615860830152826001604061582085016060615820870160075afa141692506157a08201516158808301526157c08201516158a08301526158208201516158c08301526158408201516158e0830152826001604061588085016080615880870160065afa141692507f019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e202507596159008301527f0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea83615920830152614d00820151615940830152826001604061590085016060615900870160075afa141692506158808201516159608301526158a08201516159808301526159008201516159a08301526159208201516159c0830152826001604061596085016080615960870160065afa141692507f0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af6159e08301527f24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c43615a00830152614d20820151615a2083015282600160406159e0850160606159e0870160075afa14169250615960820151615a40830152615980820151615a608301526159e0820151615a80830152615a00820151615aa08301528260016040615a4085016080615a40870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615ac08301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615ae0830152614d40820151615b008301528260016040615ac085016060615ac0870160075afa14169250615a40820151615b20830152615a60820151615b40830152615ac0820151615b60830152615ae0820151615b808301528260016040615b2085016080615b20870160065afa141692507f0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed615ba08301527f286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf615bc0830152614d60820151615be08301528260016040615ba085016060615ba0870160075afa14169250615b20820151615c00830152615b40820151615c20830152615ba0820151615c40830152615bc0820151615c608301528260016040615c0085016080615c00870160065afa141692507f14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5615c808301527f0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2615ca0830152614d80820151615cc08301528260016040615c8085016060615c80870160075afa14169250615c00820151615ce0830152615c20820151615d00830152615c80820151615d20830152615ca0820151615d408301528260016040615ce085016080615ce0870160065afa141692507f0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36615d608301527f2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890615d80830152614da0820151615da08301528260016040615d6085016060615d60870160075afa14169250615ce0820151615dc0830152615d00820151615de0830152615d60820151615e00830152615d80820151615e208301528260016040615dc085016080615dc0870160065afa141692507f1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f615e408301527f1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d615e60830152614dc0820151615e808301528260016040615e4085016060615e40870160075afa14169250615dc0820151615ea0830152615de0820151615ec0830152615e40820151615ee0830152615e60820151615f008301528260016040615ea085016080615ea0870160065afa141692507f07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c615f208301527f1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68615f40830152614de0820151615f608301528260016040615f2085016060615f20870160075afa14169250615ea0820151615f80830152615ec0820151615fa0830152615f20820151615fc0830152615f40820151615fe08301528260016040615f8085016080615f80870160065afa141692507f0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd7016160008301527f07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a616020830152614e00820151616040830152826001604061600085016060616000870160075afa14169250615f80820151616060830152615fa08201516160808301526160008201516160a08301526160208201516160c0830152826001604061606085016080616060870160065afa141692507f2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d6160e08301527f154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6616100830152614e2082015161612083015282600160406160e0850160606160e0870160075afa141692506160608201516161408301526160808201516161608301526160e08201516161808301526161008201516161a0830152826001604061614085016080616140870160065afa141692507f2dec3929e07b4276215297f5f653b3ec6bf9b910006678ab3c3d67654001d6da6161c08301527f20b9c7e9a6c29e31e9164962de9a0478aa976e72a2e2d0e9c9ab6fabbb20ba496161e0830152614e4082015161620083015282600160406161c0850160606161c0870160075afa141692506161408201516162208301526161608201516162408301526161c08201516162608301526161e0820151616280830152826001604061622085016080616220870160065afa141692507f0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a6162a08301527f27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e286162c0830152614e608201516162e083015282600160406162a0850160606162a0870160075afa141692506162208201516163008301526162408201516163208301526162a08201516163408301526162c0820151616360830152826001604061630085016080616300870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746163808301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e36163a0830152614e808201516163c0830152826001604061638085016060616380870160075afa141692506163008201516163e08301526163208201516164008301526163808201516164208301526163a082015161644083015282600160406163e0850160806163e0870160065afa141692507f1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a6164608301527eb004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56616480830152614ea08201516164a0830152826001604061646085016060616460870160075afa141692506163e08201516164c08301526164008201516164e083015261646082015161650083015261648082015161652083015282600160406164c0850160806164c0870160065afa141692507f20e2c72c77bcc14c0e9801d47d3ab42674027a82cde0955f1b17e5cad25edfb06165408301527f0350deaf2bcf4305e811ba811ccaae83d66761627e0a4eade1205c1cb0cfcd78616560830152614ec0820151616580830152826001604061654085016060616540870160075afa141692506164c08201516165a08301526164e08201516165c08301526165408201516165e083015261656082015161660083015282600160406165a0850160806165a0870160065afa14169250610460820151616620830152610480820151616640830152614ee0820151616660830152826001604061662085016060616620870160075afa141692506165a08201516166808301526165c08201516166a08301526166208201516166c08301526166408201516166e0830152826001604061668085016080616680870160065afa141692506104a08201516167008301526104c0820151616720830152614f00820151616740830152826001604061670085016060616700870160075afa141692506166808201516167608301526166a08201516167808301526167008201516167a08301526167208201516167c0830152826001604061676085016080616760870160065afa141692506104e08201516167e0830152610500820151616800830152614f2082015161682083015282600160406167e0850160606167e0870160075afa141692506167608201516168408301526167808201516168608301526167e08201516168808301526168008201516168a0830152826001604061684085016080616840870160065afa141692506105208201516168c08301526105408201516168e0830152614f4082015161690083015282600160406168c0850160606168c0870160075afa141692506168408201516169208301526168608201516169408301526168c08201516169608301526168e0820151616980830152826001604061692085016080616920870160065afa141692506105608201516169a08301526105808201516169c0830152614f608201516169e083015282600160406169a0850160606169a0870160075afa14169250616920820151616a00830152616940820151616a208301526169a0820151616a408301526169c0820151616a608301528260016040616a0085016080616a00870160065afa141692506103c0820151616a808301526103e0820151616aa0830152614f80820151616ac08301528260016040616a8085016060616a80870160075afa14169250616a00820151616ae0830152616a20820151616b00830152616a80820151616b20830152616aa0820151616b408301528260016040616ae085016080616ae0870160065afa14169250610300820151616b60830152610320820151616b80830152615080820151616ba08301528260016040616b6085016060616b60870160075afa14169250616ae0820151616bc0830152616b00820151616be0830152616b60820151616c00830152616b80820151616c208301528260016040616bc085016080616bc0870160065afa14169250610340820151616c40830152610360820151616c60830152615220820151616c808301528260016040616c4085016060616c40870160075afa14169250616bc0820151616ca0830152616be0820151616cc0830152616c40820151616ce0830152616c60820151616d008301528260016040616ca085016080616ca0870160065afa14169250610380820151616d208301526103a0820151616d40830152615240820151616d608301528260016040616d2085016060616d20870160075afa14169250616ca0820151616d80830152616cc0820151616da0830152616d20820151616dc0830152616d40820151616de08301528260016040616d8085016080616d80870160065afa141692506101c0820151616e008301526101e0820151616e20830152615340820151616e408301528260016040616e0085016060616e00870160075afa14169250616d80820151616e60830152616da0820151616e80830152616e00820151616ea0830152616e20820151616ec08301528260016040616e6085016080616e60870160065afa14169250610b20820151616ee0830152610b40820151616f008301526153808201518103616f20830152508160016040616ee084016060616ee0860160075afa14169150616e60810151616f40820152616e80810151616f60820152616ee0810151616f80820152616f00810151616fa08201528160016040616f4084016080616f40860160065afa14169150610bc0810151616fc0820152610be0810151616fe08201526153a08101516170008201528160016040616fc084016060616fc0860160075afa14169150616f40810151617020820152616f60810151617040820152616fc0810151617060820152616fe0810151617080820152816001604061702084016080617020860160065afa141691506170208101516170a08201526170408101516170c08201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26170e08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171008201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171208201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa617140820152610bc0810151617160820152610be08101516171808201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6171a08201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6171c08201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456171e08201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61720082015281600160206170a084016101806170a0860160085afa6170a093909301516001149214161691505092915050565b604051806172000160405280610390906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715615433576154336153f4565b604052919050565b600082601f83011261544c57600080fd5b813567ffffffffffffffff811115615466576154666153f4565b615479601f8201601f191660200161540a565b81815284602083860101111561548e57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156154be57600080fd5b823567ffffffffffffffff808211156154d657600080fd5b818501915085601f8301126154ea57600080fd5b81356020828211156154fe576154fe6153f4565b8160051b61550d82820161540a565b928352848101820192828101908a85111561552757600080fd5b958301955b848710156155455786358252958301959083019061552c565b975050508601359250508082111561555c57600080fd5b506155698582860161543b565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a26469706673582212200887bb7fb7011a424d0cab95c712805d0f3bb55a90eb7817a154209e094c8eb864736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file diff --git a/backend/src/contracts/abi/Summa.json b/backend/src/contracts/abi/Summa.json index baed6e54..0104b223 100644 --- a/backend/src/contracts/abi/Summa.json +++ b/backend/src/contracts/abi/Summa.json @@ -1 +1 @@ -{"_format":"hh-sol-artifact-1","contractName":"Summa","sourceName":"src/Summa.sol","abi":[{"inputs":[{"internalType":"contract IVerifier","name":"_inclusionVerifier","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"indexed":false,"internalType":"struct Summa.AddressOwnershipProof[]","name":"addressOwnershipProofs","type":"tuple[]"}],"name":"AddressOwnershipProofSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mstRoot","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"rootSums","type":"uint256[]"},{"components":[{"internalType":"string","name":"assetName","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"indexed":false,"internalType":"struct Summa.Asset[]","name":"assets","type":"tuple[]"}],"name":"LiabilitiesCommitmentSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressOwnershipProofs","outputs":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"commitments","outputs":[{"internalType":"uint256","name":"mstRoot","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"addressHash","type":"bytes32"}],"name":"getAddressOwnershipProof","outputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mstRoot","type":"uint256"},{"internalType":"uint256[]","name":"rootSums","type":"uint256[]"},{"components":[{"internalType":"string","name":"assetName","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"internalType":"struct Summa.Asset[]","name":"assets","type":"tuple[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"submitCommitment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof[]","name":"_addressOwnershipProofs","type":"tuple[]"}],"name":"submitProofOfAddressOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"publicInputs","type":"uint256[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"verifyInclusionProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a060405234801561001057600080fd5b5060405162001b1d38038062001b1d8339810160408190526100319161009b565b61003a3361004b565b6001600160a01b03166080526100cb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100ad57600080fd5b81516001600160a01b03811681146100c457600080fd5b9392505050565b608051611a36620000e76000396000610a4a0152611a366000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a3c4bcf811610066578063a3c4bcf814610114578063c7ddca0e14610137578063c8e581471461014a578063da64a7501461016d578063f2fde38b1461018057600080fd5b806319b339681461009857806349ce8997146100c1578063715018a6146100ef5780638da5cb5b146100f9575b600080fd5b6100ab6100a63660046110ad565b610193565b6040516100b89190611181565b60405180910390f35b6100e16100cf3660046110ad565b60036020526000908152604090205481565b6040519081526020016100b8565b6100f76104aa565b005b6000546040516001600160a01b0390911681526020016100b8565b6101276101223660046110ad565b6104be565b6040516100b8949392919061119b565b6100f761014536600461131a565b61071e565b61015d6101583660046114df565b6109bf565b60405190151581526020016100b8565b6100f761017b36600461154c565b610aca565b6100f761018e366004611693565b610e81565b6101be6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600260205260409020546102155760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b6000828152600260205260409020546001906102329082906116d2565b81548110610242576102426116eb565b906000526020600020906004020160405180608001604052908160008201805461026b90611701565b80601f016020809104026020016040519081016040528092919081815260200182805461029790611701565b80156102e45780601f106102b9576101008083540402835291602001916102e4565b820191906000526020600020905b8154815290600101906020018083116102c757829003601f168201915b505050505081526020016001820180546102fd90611701565b80601f016020809104026020016040519081016040528092919081815260200182805461032990611701565b80156103765780601f1061034b57610100808354040283529160200191610376565b820191906000526020600020905b81548152906001019060200180831161035957829003601f168201915b5050505050815260200160028201805461038f90611701565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb90611701565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b5050505050815260200160038201805461042190611701565b80601f016020809104026020016040519081016040528092919081815260200182805461044d90611701565b801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b5050505050815250509050919050565b6104b2610efa565b6104bc6000610f54565b565b600181815481106104ce57600080fd5b90600052602060002090600402016000915090508060000180546104f190611701565b80601f016020809104026020016040519081016040528092919081815260200182805461051d90611701565b801561056a5780601f1061053f5761010080835404028352916020019161056a565b820191906000526020600020905b81548152906001019060200180831161054d57829003601f168201915b50505050509080600101805461057f90611701565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90611701565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b50505050509080600201805461060d90611701565b80601f016020809104026020016040519081016040528092919081815260200182805461063990611701565b80156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b50505050509080600301805461069b90611701565b80601f01602080910402602001604051908101604052809291908181526020018280546106c790611701565b80156107145780601f106106e957610100808354040283529160200191610714565b820191906000526020600020905b8154815290600101906020018083116106f757829003601f168201915b5050505050905084565b610726610efa565b60005b8151811015610984576000828281518110610746576107466116eb565b602002602001015160000151604051602001610762919061173b565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915080156107d85760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c72656164792076657269666965640000000000000000604482015260640161020c565b60018484815181106107ec576107ec6116eb565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061081e90826117a6565b506020820151600182019061083390826117a6565b506040820151600282019061084890826117a6565b506060820151600382019061085d90826117a6565b5050600154600084815260026020526040902055508351849084908110610886576108866116eb565b602002602001015160000151516000141580156108c257508383815181106108b0576108b06116eb565b60200260200101516020015151600014155b80156108ed57508383815181106108db576108db6116eb565b60200260200101516040015151600014155b80156109185750838381518110610906576109066116eb565b60200260200101516060015151600014155b61096f5760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b606482015260840161020c565b5050808061097c90611866565b915050610729565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516109b4919061187f565b60405180910390a150565b6000826001815181106109d4576109d46116eb565b6020026020010151600360008481526020019081526020016000206000015414610a335760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610a81908690889060040161191c565b602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190611941565b949350505050565b610ad2610efa565b83600003610b155760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b8151835114610b785760405162461bcd60e51b815260206004820152602960248201527f526f6f742061737365742073756d7320616e64206173736574206e756d626572604482015268040dad2e6dac2e8c6d60bb1b606482015260840161020c565b6000825167ffffffffffffffff811115610b9457610b946111f3565b604051908082528060200260200182016040528015610bc757816020015b6060815260200190600190039081610bb25790505b5090506000835167ffffffffffffffff811115610be657610be66111f3565b604051908082528060200260200182016040528015610c1957816020015b6060815260200190600190039081610c045790505b50905060005b8451811015610db657848181518110610c3a57610c3a6116eb565b60200260200101516020015151600014158015610c765750848181518110610c6457610c646116eb565b60200260200101516000015151600014155b610cb25760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a5908185cdcd95d609a1b604482015260640161020c565b858181518110610cc457610cc46116eb565b6020026020010151600003610d2d5760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161020c565b848181518110610d3f57610d3f6116eb565b602002602001015160000151838281518110610d5d57610d5d6116eb565b6020026020010181905250848181518110610d7a57610d7a6116eb565b602002602001015160200151828281518110610d9857610d986116eb565b60200260200101819052508080610dae90611866565b915050610c1f565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260038352939093208251815592518051929392610e019260018501920190610fa4565b5060408201518051610e1d916002840191602090910190610fef565b5060608201518051610e39916003840191602090910190610fef565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610e7193929190611963565b60405180910390a2505050505050565b610e89610efa565b6001600160a01b038116610eee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161020c565b610ef781610f54565b50565b6000546001600160a01b031633146104bc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215610fdf579160200282015b82811115610fdf578251825591602001919060010190610fc4565b50610feb929150611041565b5090565b828054828255906000526020600020908101928215611035579160200282015b82811115611035578251829061102590826117a6565b509160200191906001019061100f565b50610feb929150611056565b5b80821115610feb5760008155600101611042565b80821115610feb57600061106a8282611073565b50600101611056565b50805461107f90611701565b6000825580601f1061108f575050565b601f016020900490600052602060002090810190610ef79190611041565b6000602082840312156110bf57600080fd5b5035919050565b60005b838110156110e15781810151838201526020016110c9565b50506000910152565b600081518084526111028160208601602086016110c6565b601f01601f19169290920160200192915050565b600081516080845261112b60808501826110ea565b90506020830151848203602086015261114482826110ea565b9150506040830151848203604086015261115e82826110ea565b9150506060830151848203606086015261117882826110ea565b95945050505050565b6020815260006111946020830184611116565b9392505050565b6080815260006111ae60808301876110ea565b82810360208401526111c081876110ea565b905082810360408401526111d481866110ea565b905082810360608401526111e881856110ea565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561122c5761122c6111f3565b60405290565b6040805190810167ffffffffffffffff8111828210171561122c5761122c6111f3565b604051601f8201601f1916810167ffffffffffffffff8111828210171561127e5761127e6111f3565b604052919050565b600067ffffffffffffffff8211156112a0576112a06111f3565b5060051b60200190565b600082601f8301126112bb57600080fd5b813567ffffffffffffffff8111156112d5576112d56111f3565b6112e8601f8201601f1916602001611255565b8181528460208386010111156112fd57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561132d57600080fd5b823567ffffffffffffffff8082111561134557600080fd5b818501915085601f83011261135957600080fd5b813561136c61136782611286565b611255565b81815260059190911b8301840190848101908883111561138b57600080fd5b8585015b8381101561146c578035858111156113a657600080fd5b86016080818c03601f190112156113bd5760008081fd5b6113c5611209565b88820135878111156113d75760008081fd5b6113e58d8b838601016112aa565b825250604080830135888111156113fc5760008081fd5b61140a8e8c838701016112aa565b8b84015250606080840135898111156114235760008081fd5b6114318f8d838801016112aa565b8385015250608084013591508882111561144b5760008081fd5b6114598e8c848701016112aa565b908301525084525091860191860161138f565b5098975050505050505050565b600082601f83011261148a57600080fd5b8135602061149a61136783611286565b82815260059290921b840181019181810190868411156114b957600080fd5b8286015b848110156114d457803583529183019183016114bd565b509695505050505050565b6000806000606084860312156114f457600080fd5b833567ffffffffffffffff8082111561150c57600080fd5b611518878388016112aa565b9450602086013591508082111561152e57600080fd5b5061153b86828701611479565b925050604084013590509250925092565b6000806000806080858703121561156257600080fd5b84359350602085013567ffffffffffffffff8082111561158157600080fd5b61158d88838901611479565b945060408701359150808211156115a357600080fd5b818701915087601f8301126115b757600080fd5b6115c46113678335611286565b82358082526020808301929160051b8501018a8111156115e357600080fd5b602085015b8181101561167f5784813511156115fe57600080fd5b803586016040818e03601f1901121561161657600080fd5b61161e611232565b60208201358781111561163057600080fd5b61163f8f6020838601016112aa565b82525060408201358781111561165457600080fd5b6116638f6020838601016112aa565b60208301525080865250506020840193506020810190506115e8565b50979a969950976060013596505050505050565b6000602082840312156116a557600080fd5b81356001600160a01b038116811461119457600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156116e5576116e56116bc565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061171557607f821691505b60208210810361173557634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161174d8184602087016110c6565b9190910192915050565b601f8211156117a157600081815260208120601f850160051c8101602086101561177e5750805b601f850160051c820191505b8181101561179d5782815560010161178a565b5050505b505050565b815167ffffffffffffffff8111156117c0576117c06111f3565b6117d4816117ce8454611701565b84611757565b602080601f83116001811461180957600084156117f15750858301515b600019600386901b1c1916600185901b17855561179d565b600085815260208120601f198616915b8281101561183857888601518255948401946001909101908401611819565b50858210156118565787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201611878576118786116bc565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118d457603f198886030184526118c2858351611116565b945092850192908501906001016118a6565b5092979650505050505050565b600081518084526020808501945080840160005b83811015611911578151875295820195908201906001016118f5565b509495945050505050565b60408152600061192f60408301856118e1565b828103602084015261117881856110ea565b60006020828403121561195357600080fd5b8151801515811461119457600080fd5b8381526000602060608184015261197d60608401866118e1565b6040848203818601528186518084528484019150848160051b85010185890160005b838110156119ef57868303601f19018552815180518785526119c3888601826110ea565b918a0151858303868c01529190506119db81836110ea565b968a0196945050509087019060010161199f565b50909b9a505050505050505050505056fea26469706673582212204f84ac77c240ca40dc1311f57cfee822538b8367a17d26986f56306d795fffbc64736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063a3c4bcf811610066578063a3c4bcf814610114578063c7ddca0e14610137578063c8e581471461014a578063da64a7501461016d578063f2fde38b1461018057600080fd5b806319b339681461009857806349ce8997146100c1578063715018a6146100ef5780638da5cb5b146100f9575b600080fd5b6100ab6100a63660046110ad565b610193565b6040516100b89190611181565b60405180910390f35b6100e16100cf3660046110ad565b60036020526000908152604090205481565b6040519081526020016100b8565b6100f76104aa565b005b6000546040516001600160a01b0390911681526020016100b8565b6101276101223660046110ad565b6104be565b6040516100b8949392919061119b565b6100f761014536600461131a565b61071e565b61015d6101583660046114df565b6109bf565b60405190151581526020016100b8565b6100f761017b36600461154c565b610aca565b6100f761018e366004611693565b610e81565b6101be6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600260205260409020546102155760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b6000828152600260205260409020546001906102329082906116d2565b81548110610242576102426116eb565b906000526020600020906004020160405180608001604052908160008201805461026b90611701565b80601f016020809104026020016040519081016040528092919081815260200182805461029790611701565b80156102e45780601f106102b9576101008083540402835291602001916102e4565b820191906000526020600020905b8154815290600101906020018083116102c757829003601f168201915b505050505081526020016001820180546102fd90611701565b80601f016020809104026020016040519081016040528092919081815260200182805461032990611701565b80156103765780601f1061034b57610100808354040283529160200191610376565b820191906000526020600020905b81548152906001019060200180831161035957829003601f168201915b5050505050815260200160028201805461038f90611701565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb90611701565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b5050505050815260200160038201805461042190611701565b80601f016020809104026020016040519081016040528092919081815260200182805461044d90611701565b801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b5050505050815250509050919050565b6104b2610efa565b6104bc6000610f54565b565b600181815481106104ce57600080fd5b90600052602060002090600402016000915090508060000180546104f190611701565b80601f016020809104026020016040519081016040528092919081815260200182805461051d90611701565b801561056a5780601f1061053f5761010080835404028352916020019161056a565b820191906000526020600020905b81548152906001019060200180831161054d57829003601f168201915b50505050509080600101805461057f90611701565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab90611701565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b50505050509080600201805461060d90611701565b80601f016020809104026020016040519081016040528092919081815260200182805461063990611701565b80156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b50505050509080600301805461069b90611701565b80601f01602080910402602001604051908101604052809291908181526020018280546106c790611701565b80156107145780601f106106e957610100808354040283529160200191610714565b820191906000526020600020905b8154815290600101906020018083116106f757829003601f168201915b5050505050905084565b610726610efa565b60005b8151811015610984576000828281518110610746576107466116eb565b602002602001015160000151604051602001610762919061173b565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915080156107d85760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c72656164792076657269666965640000000000000000604482015260640161020c565b60018484815181106107ec576107ec6116eb565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061081e90826117a6565b506020820151600182019061083390826117a6565b506040820151600282019061084890826117a6565b506060820151600382019061085d90826117a6565b5050600154600084815260026020526040902055508351849084908110610886576108866116eb565b602002602001015160000151516000141580156108c257508383815181106108b0576108b06116eb565b60200260200101516020015151600014155b80156108ed57508383815181106108db576108db6116eb565b60200260200101516040015151600014155b80156109185750838381518110610906576109066116eb565b60200260200101516060015151600014155b61096f5760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b606482015260840161020c565b5050808061097c90611866565b915050610729565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516109b4919061187f565b60405180910390a150565b6000826001815181106109d4576109d46116eb565b6020026020010151600360008481526020019081526020016000206000015414610a335760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610a81908690889060040161191c565b602060405180830381865afa158015610a9e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ac29190611941565b949350505050565b610ad2610efa565b83600003610b155760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b8151835114610b785760405162461bcd60e51b815260206004820152602960248201527f526f6f742061737365742073756d7320616e64206173736574206e756d626572604482015268040dad2e6dac2e8c6d60bb1b606482015260840161020c565b6000825167ffffffffffffffff811115610b9457610b946111f3565b604051908082528060200260200182016040528015610bc757816020015b6060815260200190600190039081610bb25790505b5090506000835167ffffffffffffffff811115610be657610be66111f3565b604051908082528060200260200182016040528015610c1957816020015b6060815260200190600190039081610c045790505b50905060005b8451811015610db657848181518110610c3a57610c3a6116eb565b60200260200101516020015151600014158015610c765750848181518110610c6457610c646116eb565b60200260200101516000015151600014155b610cb25760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a5908185cdcd95d609a1b604482015260640161020c565b858181518110610cc457610cc46116eb565b6020026020010151600003610d2d5760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161020c565b848181518110610d3f57610d3f6116eb565b602002602001015160000151838281518110610d5d57610d5d6116eb565b6020026020010181905250848181518110610d7a57610d7a6116eb565b602002602001015160200151828281518110610d9857610d986116eb565b60200260200101819052508080610dae90611866565b915050610c1f565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260038352939093208251815592518051929392610e019260018501920190610fa4565b5060408201518051610e1d916002840191602090910190610fef565b5060608201518051610e39916003840191602090910190610fef565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610e7193929190611963565b60405180910390a2505050505050565b610e89610efa565b6001600160a01b038116610eee5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161020c565b610ef781610f54565b50565b6000546001600160a01b031633146104bc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215610fdf579160200282015b82811115610fdf578251825591602001919060010190610fc4565b50610feb929150611041565b5090565b828054828255906000526020600020908101928215611035579160200282015b82811115611035578251829061102590826117a6565b509160200191906001019061100f565b50610feb929150611056565b5b80821115610feb5760008155600101611042565b80821115610feb57600061106a8282611073565b50600101611056565b50805461107f90611701565b6000825580601f1061108f575050565b601f016020900490600052602060002090810190610ef79190611041565b6000602082840312156110bf57600080fd5b5035919050565b60005b838110156110e15781810151838201526020016110c9565b50506000910152565b600081518084526111028160208601602086016110c6565b601f01601f19169290920160200192915050565b600081516080845261112b60808501826110ea565b90506020830151848203602086015261114482826110ea565b9150506040830151848203604086015261115e82826110ea565b9150506060830151848203606086015261117882826110ea565b95945050505050565b6020815260006111946020830184611116565b9392505050565b6080815260006111ae60808301876110ea565b82810360208401526111c081876110ea565b905082810360408401526111d481866110ea565b905082810360608401526111e881856110ea565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561122c5761122c6111f3565b60405290565b6040805190810167ffffffffffffffff8111828210171561122c5761122c6111f3565b604051601f8201601f1916810167ffffffffffffffff8111828210171561127e5761127e6111f3565b604052919050565b600067ffffffffffffffff8211156112a0576112a06111f3565b5060051b60200190565b600082601f8301126112bb57600080fd5b813567ffffffffffffffff8111156112d5576112d56111f3565b6112e8601f8201601f1916602001611255565b8181528460208386010111156112fd57600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561132d57600080fd5b823567ffffffffffffffff8082111561134557600080fd5b818501915085601f83011261135957600080fd5b813561136c61136782611286565b611255565b81815260059190911b8301840190848101908883111561138b57600080fd5b8585015b8381101561146c578035858111156113a657600080fd5b86016080818c03601f190112156113bd5760008081fd5b6113c5611209565b88820135878111156113d75760008081fd5b6113e58d8b838601016112aa565b825250604080830135888111156113fc5760008081fd5b61140a8e8c838701016112aa565b8b84015250606080840135898111156114235760008081fd5b6114318f8d838801016112aa565b8385015250608084013591508882111561144b5760008081fd5b6114598e8c848701016112aa565b908301525084525091860191860161138f565b5098975050505050505050565b600082601f83011261148a57600080fd5b8135602061149a61136783611286565b82815260059290921b840181019181810190868411156114b957600080fd5b8286015b848110156114d457803583529183019183016114bd565b509695505050505050565b6000806000606084860312156114f457600080fd5b833567ffffffffffffffff8082111561150c57600080fd5b611518878388016112aa565b9450602086013591508082111561152e57600080fd5b5061153b86828701611479565b925050604084013590509250925092565b6000806000806080858703121561156257600080fd5b84359350602085013567ffffffffffffffff8082111561158157600080fd5b61158d88838901611479565b945060408701359150808211156115a357600080fd5b818701915087601f8301126115b757600080fd5b6115c46113678335611286565b82358082526020808301929160051b8501018a8111156115e357600080fd5b602085015b8181101561167f5784813511156115fe57600080fd5b803586016040818e03601f1901121561161657600080fd5b61161e611232565b60208201358781111561163057600080fd5b61163f8f6020838601016112aa565b82525060408201358781111561165457600080fd5b6116638f6020838601016112aa565b60208301525080865250506020840193506020810190506115e8565b50979a969950976060013596505050505050565b6000602082840312156116a557600080fd5b81356001600160a01b038116811461119457600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156116e5576116e56116bc565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061171557607f821691505b60208210810361173557634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161174d8184602087016110c6565b9190910192915050565b601f8211156117a157600081815260208120601f850160051c8101602086101561177e5750805b601f850160051c820191505b8181101561179d5782815560010161178a565b5050505b505050565b815167ffffffffffffffff8111156117c0576117c06111f3565b6117d4816117ce8454611701565b84611757565b602080601f83116001811461180957600084156117f15750858301515b600019600386901b1c1916600185901b17855561179d565b600085815260208120601f198616915b8281101561183857888601518255948401946001909101908401611819565b50858210156118565787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b600060018201611878576118786116bc565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156118d457603f198886030184526118c2858351611116565b945092850192908501906001016118a6565b5092979650505050505050565b600081518084526020808501945080840160005b83811015611911578151875295820195908201906001016118f5565b509495945050505050565b60408152600061192f60408301856118e1565b828103602084015261117881856110ea565b60006020828403121561195357600080fd5b8151801515811461119457600080fd5b8381526000602060608184015261197d60608401866118e1565b6040848203818601528186518084528484019150848160051b85010185890160005b838110156119ef57868303601f19018552815180518785526119c3888601826110ea565b918a0151858303868c01529190506119db81836110ea565b968a0196945050509087019060010161199f565b50909b9a505050505050505050505056fea26469706673582212204f84ac77c240ca40dc1311f57cfee822538b8367a17d26986f56306d795fffbc64736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file +{"_format":"hh-sol-artifact-1","contractName":"Summa","sourceName":"src/Summa.sol","abi":[{"inputs":[{"internalType":"contract IVerifier","name":"_inclusionVerifier","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"indexed":false,"internalType":"struct Summa.AddressOwnershipProof[]","name":"addressOwnershipProofs","type":"tuple[]"}],"name":"AddressOwnershipProofSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"timestamp","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"mstRoot","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"rootBalances","type":"uint256[]"},{"components":[{"internalType":"string","name":"assetName","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"indexed":false,"internalType":"struct Summa.Asset[]","name":"assets","type":"tuple[]"}],"name":"LiabilitiesCommitmentSubmitted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"addressOwnershipProofs","outputs":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"commitments","outputs":[{"internalType":"uint256","name":"mstRoot","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"addressHash","type":"bytes32"}],"name":"getAddressOwnershipProof","outputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"mstRoot","type":"uint256"},{"internalType":"uint256[]","name":"rootBalances","type":"uint256[]"},{"components":[{"internalType":"string","name":"assetName","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"internalType":"struct Summa.Asset[]","name":"assets","type":"tuple[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"submitCommitment","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"components":[{"internalType":"string","name":"cexAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"},{"internalType":"bytes","name":"signature","type":"bytes"},{"internalType":"bytes","name":"message","type":"bytes"}],"internalType":"struct Summa.AddressOwnershipProof[]","name":"_addressOwnershipProofs","type":"tuple[]"}],"name":"submitProofOfAddressOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes","name":"proof","type":"bytes"},{"internalType":"uint256[]","name":"publicInputs","type":"uint256[]"},{"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"verifyInclusionProof","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}],"bytecode":"0x60a060405234801561001057600080fd5b5060405162001bd838038062001bd88339810160408190526100319161009b565b61003a3361004b565b6001600160a01b03166080526100cb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100ad57600080fd5b81516001600160a01b03811681146100c457600080fd5b9392505050565b608051611af1620000e76000396000610b050152611af16000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a3c4bcf811610066578063a3c4bcf814610114578063c7ddca0e14610137578063c8e581471461014a578063da64a7501461016d578063f2fde38b1461018057600080fd5b806319b339681461009857806349ce8997146100c1578063715018a6146100ef5780638da5cb5b146100f9575b600080fd5b6100ab6100a6366004611168565b610193565b6040516100b8919061123c565b60405180910390f35b6100e16100cf366004611168565b60036020526000908152604090205481565b6040519081526020016100b8565b6100f76104aa565b005b6000546040516001600160a01b0390911681526020016100b8565b610127610122366004611168565b6104be565b6040516100b89493929190611256565b6100f76101453660046113d5565b61071e565b61015d61015836600461159a565b6109bf565b60405190151581526020016100b8565b6100f761017b366004611607565b610b85565b6100f761018e36600461174e565b610f3c565b6101be6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600260205260409020546102155760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b60008281526002602052604090205460019061023290829061178d565b81548110610242576102426117a6565b906000526020600020906004020160405180608001604052908160008201805461026b906117bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610297906117bc565b80156102e45780601f106102b9576101008083540402835291602001916102e4565b820191906000526020600020905b8154815290600101906020018083116102c757829003601f168201915b505050505081526020016001820180546102fd906117bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610329906117bc565b80156103765780601f1061034b57610100808354040283529160200191610376565b820191906000526020600020905b81548152906001019060200180831161035957829003601f168201915b5050505050815260200160028201805461038f906117bc565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb906117bc565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b50505050508152602001600382018054610421906117bc565b80601f016020809104026020016040519081016040528092919081815260200182805461044d906117bc565b801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b5050505050815250509050919050565b6104b2610fb5565b6104bc600061100f565b565b600181815481106104ce57600080fd5b90600052602060002090600402016000915090508060000180546104f1906117bc565b80601f016020809104026020016040519081016040528092919081815260200182805461051d906117bc565b801561056a5780601f1061053f5761010080835404028352916020019161056a565b820191906000526020600020905b81548152906001019060200180831161054d57829003601f168201915b50505050509080600101805461057f906117bc565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab906117bc565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b50505050509080600201805461060d906117bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610639906117bc565b80156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b50505050509080600301805461069b906117bc565b80601f01602080910402602001604051908101604052809291908181526020018280546106c7906117bc565b80156107145780601f106106e957610100808354040283529160200191610714565b820191906000526020600020905b8154815290600101906020018083116106f757829003601f168201915b5050505050905084565b610726610fb5565b60005b8151811015610984576000828281518110610746576107466117a6565b60200260200101516000015160405160200161076291906117f6565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915080156107d85760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c72656164792076657269666965640000000000000000604482015260640161020c565b60018484815181106107ec576107ec6117a6565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061081e9082611861565b50602082015160018201906108339082611861565b50604082015160028201906108489082611861565b506060820151600382019061085d9082611861565b5050600154600084815260026020526040902055508351849084908110610886576108866117a6565b602002602001015160000151516000141580156108c257508383815181106108b0576108b06117a6565b60200260200101516020015151600014155b80156108ed57508383815181106108db576108db6117a6565b60200260200101516040015151600014155b80156109185750838381518110610906576109066117a6565b60200260200101516060015151600014155b61096f5760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b606482015260840161020c565b5050808061097c90611921565b915050610729565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516109b4919061193a565b60405180910390a150565b6000826001815181106109d4576109d46117a6565b6020026020010151600360008481526020019081526020016000206000015414610a335760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b60025b8351811015610aed57838181518110610a5157610a516117a6565b602002602001015160036000858152602001908152602001600020600101600283610a7c919061178d565b81548110610a8c57610a8c6117a6565b906000526020600020015414610adb5760405162461bcd60e51b8152602060048201526014602482015273496e76616c696420726f6f742062616c616e636560601b604482015260640161020c565b80610ae581611921565b915050610a36565b50604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610b3c90869088906004016119d7565b602060405180830381865afa158015610b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7d91906119fc565b949350505050565b610b8d610fb5565b83600003610bd05760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b8151835114610c335760405162461bcd60e51b815260206004820152602960248201527f526f6f742061737365742073756d7320616e64206173736574206e756d626572604482015268040dad2e6dac2e8c6d60bb1b606482015260840161020c565b6000825167ffffffffffffffff811115610c4f57610c4f6112ae565b604051908082528060200260200182016040528015610c8257816020015b6060815260200190600190039081610c6d5790505b5090506000835167ffffffffffffffff811115610ca157610ca16112ae565b604051908082528060200260200182016040528015610cd457816020015b6060815260200190600190039081610cbf5790505b50905060005b8451811015610e7157848181518110610cf557610cf56117a6565b60200260200101516020015151600014158015610d315750848181518110610d1f57610d1f6117a6565b60200260200101516000015151600014155b610d6d5760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a5908185cdcd95d609a1b604482015260640161020c565b858181518110610d7f57610d7f6117a6565b6020026020010151600003610de85760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161020c565b848181518110610dfa57610dfa6117a6565b602002602001015160000151838281518110610e1857610e186117a6565b6020026020010181905250848181518110610e3557610e356117a6565b602002602001015160200151828281518110610e5357610e536117a6565b60200260200101819052508080610e6990611921565b915050610cda565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260038352939093208251815592518051929392610ebc926001850192019061105f565b5060408201518051610ed89160028401916020909101906110aa565b5060608201518051610ef49160038401916020909101906110aa565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610f2c93929190611a1e565b60405180910390a2505050505050565b610f44610fb5565b6001600160a01b038116610fa95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161020c565b610fb28161100f565b50565b6000546001600160a01b031633146104bc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821561109a579160200282015b8281111561109a57825182559160200191906001019061107f565b506110a69291506110fc565b5090565b8280548282559060005260206000209081019282156110f0579160200282015b828111156110f057825182906110e09082611861565b50916020019190600101906110ca565b506110a6929150611111565b5b808211156110a657600081556001016110fd565b808211156110a6576000611125828261112e565b50600101611111565b50805461113a906117bc565b6000825580601f1061114a575050565b601f016020900490600052602060002090810190610fb291906110fc565b60006020828403121561117a57600080fd5b5035919050565b60005b8381101561119c578181015183820152602001611184565b50506000910152565b600081518084526111bd816020860160208601611181565b601f01601f19169290920160200192915050565b60008151608084526111e660808501826111a5565b9050602083015184820360208601526111ff82826111a5565b9150506040830151848203604086015261121982826111a5565b9150506060830151848203606086015261123382826111a5565b95945050505050565b60208152600061124f60208301846111d1565b9392505050565b60808152600061126960808301876111a5565b828103602084015261127b81876111a5565b9050828103604084015261128f81866111a5565b905082810360608401526112a381856111a5565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156112e7576112e76112ae565b60405290565b6040805190810167ffffffffffffffff811182821017156112e7576112e76112ae565b604051601f8201601f1916810167ffffffffffffffff81118282101715611339576113396112ae565b604052919050565b600067ffffffffffffffff82111561135b5761135b6112ae565b5060051b60200190565b600082601f83011261137657600080fd5b813567ffffffffffffffff811115611390576113906112ae565b6113a3601f8201601f1916602001611310565b8181528460208386010111156113b857600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156113e857600080fd5b823567ffffffffffffffff8082111561140057600080fd5b818501915085601f83011261141457600080fd5b813561142761142282611341565b611310565b81815260059190911b8301840190848101908883111561144657600080fd5b8585015b838110156115275780358581111561146157600080fd5b86016080818c03601f190112156114785760008081fd5b6114806112c4565b88820135878111156114925760008081fd5b6114a08d8b83860101611365565b825250604080830135888111156114b75760008081fd5b6114c58e8c83870101611365565b8b84015250606080840135898111156114de5760008081fd5b6114ec8f8d83880101611365565b838501525060808401359150888211156115065760008081fd5b6115148e8c84870101611365565b908301525084525091860191860161144a565b5098975050505050505050565b600082601f83011261154557600080fd5b8135602061155561142283611341565b82815260059290921b8401810191818101908684111561157457600080fd5b8286015b8481101561158f5780358352918301918301611578565b509695505050505050565b6000806000606084860312156115af57600080fd5b833567ffffffffffffffff808211156115c757600080fd5b6115d387838801611365565b945060208601359150808211156115e957600080fd5b506115f686828701611534565b925050604084013590509250925092565b6000806000806080858703121561161d57600080fd5b84359350602085013567ffffffffffffffff8082111561163c57600080fd5b61164888838901611534565b9450604087013591508082111561165e57600080fd5b818701915087601f83011261167257600080fd5b61167f6114228335611341565b82358082526020808301929160051b8501018a81111561169e57600080fd5b602085015b8181101561173a5784813511156116b957600080fd5b803586016040818e03601f190112156116d157600080fd5b6116d96112ed565b6020820135878111156116eb57600080fd5b6116fa8f602083860101611365565b82525060408201358781111561170f57600080fd5b61171e8f602083860101611365565b60208301525080865250506020840193506020810190506116a3565b50979a969950976060013596505050505050565b60006020828403121561176057600080fd5b81356001600160a01b038116811461124f57600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156117a0576117a0611777565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806117d057607f821691505b6020821081036117f057634e487b7160e01b600052602260045260246000fd5b50919050565b60008251611808818460208701611181565b9190910192915050565b601f82111561185c57600081815260208120601f850160051c810160208610156118395750805b601f850160051c820191505b8181101561185857828155600101611845565b5050505b505050565b815167ffffffffffffffff81111561187b5761187b6112ae565b61188f8161188984546117bc565b84611812565b602080601f8311600181146118c457600084156118ac5750858301515b600019600386901b1c1916600185901b178555611858565b600085815260208120601f198616915b828110156118f3578886015182559484019460019091019084016118d4565b50858210156119115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001820161193357611933611777565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561198f57603f1988860301845261197d8583516111d1565b94509285019290850190600101611961565b5092979650505050505050565b600081518084526020808501945080840160005b838110156119cc578151875295820195908201906001016119b0565b509495945050505050565b6040815260006119ea604083018561199c565b828103602084015261123381856111a5565b600060208284031215611a0e57600080fd5b8151801515811461124f57600080fd5b83815260006020606081840152611a38606084018661199c565b6040848203818601528186518084528484019150848160051b85010185890160005b83811015611aaa57868303601f1901855281518051878552611a7e888601826111a5565b918a0151858303868c0152919050611a9681836111a5565b968a01969450505090870190600101611a5a565b50909b9a505050505050505050505056fea26469706673582212207cb85ea038da5fbb4d243dafda10edb44d56ab6f16ada87b78199597fde11ce064736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063a3c4bcf811610066578063a3c4bcf814610114578063c7ddca0e14610137578063c8e581471461014a578063da64a7501461016d578063f2fde38b1461018057600080fd5b806319b339681461009857806349ce8997146100c1578063715018a6146100ef5780638da5cb5b146100f9575b600080fd5b6100ab6100a6366004611168565b610193565b6040516100b8919061123c565b60405180910390f35b6100e16100cf366004611168565b60036020526000908152604090205481565b6040519081526020016100b8565b6100f76104aa565b005b6000546040516001600160a01b0390911681526020016100b8565b610127610122366004611168565b6104be565b6040516100b89493929190611256565b6100f76101453660046113d5565b61071e565b61015d61015836600461159a565b6109bf565b60405190151581526020016100b8565b6100f761017b366004611607565b610b85565b6100f761018e36600461174e565b610f3c565b6101be6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600260205260409020546102155760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b60008281526002602052604090205460019061023290829061178d565b81548110610242576102426117a6565b906000526020600020906004020160405180608001604052908160008201805461026b906117bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610297906117bc565b80156102e45780601f106102b9576101008083540402835291602001916102e4565b820191906000526020600020905b8154815290600101906020018083116102c757829003601f168201915b505050505081526020016001820180546102fd906117bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610329906117bc565b80156103765780601f1061034b57610100808354040283529160200191610376565b820191906000526020600020905b81548152906001019060200180831161035957829003601f168201915b5050505050815260200160028201805461038f906117bc565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb906117bc565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b50505050508152602001600382018054610421906117bc565b80601f016020809104026020016040519081016040528092919081815260200182805461044d906117bc565b801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b5050505050815250509050919050565b6104b2610fb5565b6104bc600061100f565b565b600181815481106104ce57600080fd5b90600052602060002090600402016000915090508060000180546104f1906117bc565b80601f016020809104026020016040519081016040528092919081815260200182805461051d906117bc565b801561056a5780601f1061053f5761010080835404028352916020019161056a565b820191906000526020600020905b81548152906001019060200180831161054d57829003601f168201915b50505050509080600101805461057f906117bc565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab906117bc565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b50505050509080600201805461060d906117bc565b80601f0160208091040260200160405190810160405280929190818152602001828054610639906117bc565b80156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b50505050509080600301805461069b906117bc565b80601f01602080910402602001604051908101604052809291908181526020018280546106c7906117bc565b80156107145780601f106106e957610100808354040283529160200191610714565b820191906000526020600020905b8154815290600101906020018083116106f757829003601f168201915b5050505050905084565b610726610fb5565b60005b8151811015610984576000828281518110610746576107466117a6565b60200260200101516000015160405160200161076291906117f6565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915080156107d85760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c72656164792076657269666965640000000000000000604482015260640161020c565b60018484815181106107ec576107ec6117a6565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061081e9082611861565b50602082015160018201906108339082611861565b50604082015160028201906108489082611861565b506060820151600382019061085d9082611861565b5050600154600084815260026020526040902055508351849084908110610886576108866117a6565b602002602001015160000151516000141580156108c257508383815181106108b0576108b06117a6565b60200260200101516020015151600014155b80156108ed57508383815181106108db576108db6117a6565b60200260200101516040015151600014155b80156109185750838381518110610906576109066117a6565b60200260200101516060015151600014155b61096f5760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b606482015260840161020c565b5050808061097c90611921565b915050610729565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516109b4919061193a565b60405180910390a150565b6000826001815181106109d4576109d46117a6565b6020026020010151600360008481526020019081526020016000206000015414610a335760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b60025b8351811015610aed57838181518110610a5157610a516117a6565b602002602001015160036000858152602001908152602001600020600101600283610a7c919061178d565b81548110610a8c57610a8c6117a6565b906000526020600020015414610adb5760405162461bcd60e51b8152602060048201526014602482015273496e76616c696420726f6f742062616c616e636560601b604482015260640161020c565b80610ae581611921565b915050610a36565b50604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610b3c90869088906004016119d7565b602060405180830381865afa158015610b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7d91906119fc565b949350505050565b610b8d610fb5565b83600003610bd05760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b8151835114610c335760405162461bcd60e51b815260206004820152602960248201527f526f6f742061737365742073756d7320616e64206173736574206e756d626572604482015268040dad2e6dac2e8c6d60bb1b606482015260840161020c565b6000825167ffffffffffffffff811115610c4f57610c4f6112ae565b604051908082528060200260200182016040528015610c8257816020015b6060815260200190600190039081610c6d5790505b5090506000835167ffffffffffffffff811115610ca157610ca16112ae565b604051908082528060200260200182016040528015610cd457816020015b6060815260200190600190039081610cbf5790505b50905060005b8451811015610e7157848181518110610cf557610cf56117a6565b60200260200101516020015151600014158015610d315750848181518110610d1f57610d1f6117a6565b60200260200101516000015151600014155b610d6d5760405162461bcd60e51b815260206004820152600d60248201526c125b9d985b1a5908185cdcd95d609a1b604482015260640161020c565b858181518110610d7f57610d7f6117a6565b6020026020010151600003610de85760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161020c565b848181518110610dfa57610dfa6117a6565b602002602001015160000151838281518110610e1857610e186117a6565b6020026020010181905250848181518110610e3557610e356117a6565b602002602001015160200151828281518110610e5357610e536117a6565b60200260200101819052508080610e6990611921565b915050610cda565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260038352939093208251815592518051929392610ebc926001850192019061105f565b5060408201518051610ed89160028401916020909101906110aa565b5060608201518051610ef49160038401916020909101906110aa565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610f2c93929190611a1e565b60405180910390a2505050505050565b610f44610fb5565b6001600160a01b038116610fa95760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161020c565b610fb28161100f565b50565b6000546001600160a01b031633146104bc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821561109a579160200282015b8281111561109a57825182559160200191906001019061107f565b506110a69291506110fc565b5090565b8280548282559060005260206000209081019282156110f0579160200282015b828111156110f057825182906110e09082611861565b50916020019190600101906110ca565b506110a6929150611111565b5b808211156110a657600081556001016110fd565b808211156110a6576000611125828261112e565b50600101611111565b50805461113a906117bc565b6000825580601f1061114a575050565b601f016020900490600052602060002090810190610fb291906110fc565b60006020828403121561117a57600080fd5b5035919050565b60005b8381101561119c578181015183820152602001611184565b50506000910152565b600081518084526111bd816020860160208601611181565b601f01601f19169290920160200192915050565b60008151608084526111e660808501826111a5565b9050602083015184820360208601526111ff82826111a5565b9150506040830151848203604086015261121982826111a5565b9150506060830151848203606086015261123382826111a5565b95945050505050565b60208152600061124f60208301846111d1565b9392505050565b60808152600061126960808301876111a5565b828103602084015261127b81876111a5565b9050828103604084015261128f81866111a5565b905082810360608401526112a381856111a5565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156112e7576112e76112ae565b60405290565b6040805190810167ffffffffffffffff811182821017156112e7576112e76112ae565b604051601f8201601f1916810167ffffffffffffffff81118282101715611339576113396112ae565b604052919050565b600067ffffffffffffffff82111561135b5761135b6112ae565b5060051b60200190565b600082601f83011261137657600080fd5b813567ffffffffffffffff811115611390576113906112ae565b6113a3601f8201601f1916602001611310565b8181528460208386010111156113b857600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156113e857600080fd5b823567ffffffffffffffff8082111561140057600080fd5b818501915085601f83011261141457600080fd5b813561142761142282611341565b611310565b81815260059190911b8301840190848101908883111561144657600080fd5b8585015b838110156115275780358581111561146157600080fd5b86016080818c03601f190112156114785760008081fd5b6114806112c4565b88820135878111156114925760008081fd5b6114a08d8b83860101611365565b825250604080830135888111156114b75760008081fd5b6114c58e8c83870101611365565b8b84015250606080840135898111156114de5760008081fd5b6114ec8f8d83880101611365565b838501525060808401359150888211156115065760008081fd5b6115148e8c84870101611365565b908301525084525091860191860161144a565b5098975050505050505050565b600082601f83011261154557600080fd5b8135602061155561142283611341565b82815260059290921b8401810191818101908684111561157457600080fd5b8286015b8481101561158f5780358352918301918301611578565b509695505050505050565b6000806000606084860312156115af57600080fd5b833567ffffffffffffffff808211156115c757600080fd5b6115d387838801611365565b945060208601359150808211156115e957600080fd5b506115f686828701611534565b925050604084013590509250925092565b6000806000806080858703121561161d57600080fd5b84359350602085013567ffffffffffffffff8082111561163c57600080fd5b61164888838901611534565b9450604087013591508082111561165e57600080fd5b818701915087601f83011261167257600080fd5b61167f6114228335611341565b82358082526020808301929160051b8501018a81111561169e57600080fd5b602085015b8181101561173a5784813511156116b957600080fd5b803586016040818e03601f190112156116d157600080fd5b6116d96112ed565b6020820135878111156116eb57600080fd5b6116fa8f602083860101611365565b82525060408201358781111561170f57600080fd5b61171e8f602083860101611365565b60208301525080865250506020840193506020810190506116a3565b50979a969950976060013596505050505050565b60006020828403121561176057600080fd5b81356001600160a01b038116811461124f57600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156117a0576117a0611777565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806117d057607f821691505b6020821081036117f057634e487b7160e01b600052602260045260246000fd5b50919050565b60008251611808818460208701611181565b9190910192915050565b601f82111561185c57600081815260208120601f850160051c810160208610156118395750805b601f850160051c820191505b8181101561185857828155600101611845565b5050505b505050565b815167ffffffffffffffff81111561187b5761187b6112ae565b61188f8161188984546117bc565b84611812565b602080601f8311600181146118c457600084156118ac5750858301515b600019600386901b1c1916600185901b178555611858565b600085815260208120601f198616915b828110156118f3578886015182559484019460019091019084016118d4565b50858210156119115787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001820161193357611933611777565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b8281101561198f57603f1988860301845261197d8583516111d1565b94509285019290850190600101611961565b5092979650505050505050565b600081518084526020808501945080840160005b838110156119cc578151875295820195908201906001016119b0565b509495945050505050565b6040815260006119ea604083018561199c565b828103602084015261123381856111a5565b600060208284031215611a0e57600080fd5b8151801515811461124f57600080fd5b83815260006020606081840152611a38606084018661199c565b6040848203818601528186518084528484019150848160051b85010185890160005b83811015611aaa57868303601f1901855281518051878552611a7e888601826111a5565b918a0151858303868c0152919050611a9681836111a5565b968a01969450505090870190600101611a5a565b50909b9a505050505050505050505056fea26469706673582212207cb85ea038da5fbb4d243dafda10edb44d56ab6f16ada87b78199597fde11ce064736f6c63430008120033","linkReferences":{},"deployedLinkReferences":{}} \ No newline at end of file diff --git a/backend/src/contracts/generated/inclusion_verifier.rs b/backend/src/contracts/generated/inclusion_verifier.rs index 71ddc9f7..a3ed1c98 100644 --- a/backend/src/contracts/generated/inclusion_verifier.rs +++ b/backend/src/contracts/generated/inclusion_verifier.rs @@ -40,12 +40,13 @@ pub mod inclusion_verifier { 91, 80, 97, - 84, - 103, + 85, + 233, 128, - 97, + 98, 0, - 32, + 0, + 33, 96, 0, 57, @@ -112,8 +113,8 @@ pub mod inclusion_verifier { 96, 4, 97, - 83, - 41, + 84, + 171, 86, 91, 97, @@ -149,8 +150,8 @@ pub mod inclusion_verifier { 0, 99, 97, - 82, - 82, + 83, + 212, 86, 91, 96, @@ -160,8 +161,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 148, 131, 57, 129, @@ -180,8 +181,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 116, 131, 57, 129, @@ -206,8 +207,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 116, 131, 57, 129, @@ -224,8 +225,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 116, 131, 57, 129, @@ -244,8 +245,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 116, 131, 57, 129, @@ -295,39 +296,63 @@ pub mod inclusion_verifier { 131, 1, 82, - 127, - 45, - 241, - 98, - 24, - 168, - 45, - 57, + 128, + 96, + 96, + 135, + 1, + 81, + 6, + 96, + 96, 131, - 16, - 113, - 228, - 105, - 86, - 194, - 51, - 238, - 154, - 167, - 155, - 176, - 101, - 178, - 101, + 1, + 82, + 128, + 96, + 128, 135, - 16, + 1, + 81, + 6, + 96, 128, - 216, - 100, - 63, - 47, + 131, + 1, 82, - 171, + 127, + 10, + 161, + 41, + 79, + 48, + 119, + 74, + 3, + 146, + 207, + 2, + 79, + 65, + 72, + 11, + 60, + 72, + 155, + 208, + 166, + 137, + 93, + 130, + 235, + 170, + 9, + 108, + 168, + 237, + 182, + 187, + 188, 96, 0, 131, @@ -340,7 +365,7 @@ pub mod inclusion_verifier { 81, 128, 96, - 96, + 160, 132, 1, 82, @@ -351,14 +376,14 @@ pub mod inclusion_verifier { 81, 128, 96, - 128, + 192, 133, 1, 82, 132, 97, 1, - 56, + 80, 130, 132, 97, @@ -378,7 +403,7 @@ pub mod inclusion_verifier { 81, 128, 96, - 160, + 224, 132, 1, 82, @@ -388,15 +413,16 @@ pub mod inclusion_verifier { 1, 81, 128, - 96, - 192, + 97, + 1, + 0, 133, 1, 82, 132, 97, 1, - 94, + 119, 130, 132, 97, @@ -415,8 +441,9 @@ pub mod inclusion_verifier { 1, 81, 128, - 96, - 224, + 97, + 1, + 32, 132, 1, 82, @@ -428,14 +455,14 @@ pub mod inclusion_verifier { 128, 97, 1, - 0, + 64, 133, 1, 82, 132, 97, 1, - 133, + 159, 130, 132, 97, @@ -450,7 +477,7 @@ pub mod inclusion_verifier { 80, 97, 1, - 32, + 96, 96, 0, 131, @@ -458,13 +485,13 @@ pub mod inclusion_verifier { 32, 97, 1, - 32, + 96, 131, 1, 82, 97, 1, - 32, + 96, 130, 1, 81, @@ -473,14 +500,14 @@ pub mod inclusion_verifier { 6, 97, 1, - 64, + 128, 132, 1, 82, 128, 97, 1, - 96, + 160, 132, 1, 82, @@ -493,7 +520,7 @@ pub mod inclusion_verifier { 128, 97, 1, - 128, + 192, 132, 1, 82, @@ -506,14 +533,14 @@ pub mod inclusion_verifier { 128, 97, 1, - 160, + 224, 133, 1, 82, 132, 97, 1, - 211, + 237, 130, 132, 97, @@ -534,8 +561,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 1, - 192, + 2, + 0, 132, 1, 82, @@ -547,15 +574,15 @@ pub mod inclusion_verifier { 81, 128, 97, - 1, - 224, + 2, + 32, 133, 1, 82, 132, 97, - 1, - 253, + 2, + 23, 130, 132, 97, @@ -567,13 +594,13 @@ pub mod inclusion_verifier { 160, 97, 1, - 96, + 160, 135, 1, 32, 97, 2, - 0, + 64, 135, 1, 129, @@ -584,13 +611,13 @@ pub mod inclusion_verifier { 6, 97, 2, - 32, + 96, 136, 1, 82, 97, 2, - 64, + 128, 135, 1, 82, @@ -604,7 +631,7 @@ pub mod inclusion_verifier { 80, 97, 2, - 96, + 160, 131, 1, 83, @@ -612,13 +639,13 @@ pub mod inclusion_verifier { 33, 97, 2, - 64, + 128, 131, 1, 32, 97, 2, - 96, + 160, 131, 1, 129, @@ -629,13 +656,13 @@ pub mod inclusion_verifier { 6, 97, 2, - 128, + 192, 132, 1, 82, 97, 2, - 160, + 224, 131, 1, 82, @@ -646,8 +673,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 2, - 192, + 3, + 0, 131, 1, 129, @@ -660,8 +687,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 2, - 224, + 3, + 32, 132, 1, 129, @@ -670,7 +697,7 @@ pub mod inclusion_verifier { 132, 97, 2, - 112, + 138, 130, 132, 97, @@ -692,7 +719,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 0, + 64, 132, 1, 82, @@ -705,14 +732,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 32, + 96, 133, 1, 82, 132, 97, 2, - 154, + 180, 130, 132, 97, @@ -734,7 +761,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 64, + 128, 132, 1, 82, @@ -747,14 +774,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 96, + 160, 133, 1, 82, 132, 97, 2, - 196, + 222, 130, 132, 97, @@ -776,7 +803,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 128, + 192, 132, 1, 82, @@ -789,14 +816,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 160, + 224, 133, 1, 82, 132, 97, - 2, - 238, + 3, + 8, 130, 132, 97, @@ -814,19 +841,19 @@ pub mod inclusion_verifier { 32, 97, 2, - 160, + 224, 131, 1, 32, 97, - 3, - 192, + 4, + 0, 131, 1, 82, 97, - 3, - 192, + 4, + 0, 130, 1, 81, @@ -834,15 +861,15 @@ pub mod inclusion_verifier { 129, 6, 97, - 3, - 224, + 4, + 32, 132, 1, 82, 128, 97, 4, - 0, + 64, 132, 1, 82, @@ -856,7 +883,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 32, + 96, 132, 1, 82, @@ -869,14 +896,14 @@ pub mod inclusion_verifier { 128, 97, 4, - 64, + 128, 133, 1, 82, 132, 97, 3, - 62, + 88, 130, 132, 97, @@ -898,7 +925,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 96, + 160, 132, 1, 82, @@ -911,14 +938,14 @@ pub mod inclusion_verifier { 128, 97, 4, - 128, + 192, 133, 1, 82, 132, 97, 3, - 104, + 130, 130, 132, 97, @@ -940,7 +967,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 160, + 224, 132, 1, 82, @@ -952,15 +979,15 @@ pub mod inclusion_verifier { 81, 128, 97, - 4, - 192, + 5, + 0, 133, 1, 82, 132, 97, 3, - 146, + 172, 130, 132, 97, @@ -981,8 +1008,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 4, - 224, + 5, + 32, 132, 1, 82, @@ -995,14 +1022,14 @@ pub mod inclusion_verifier { 128, 97, 5, - 0, + 64, 133, 1, 82, 132, 97, 3, - 188, + 214, 130, 132, 97, @@ -1024,7 +1051,7 @@ pub mod inclusion_verifier { 128, 97, 5, - 32, + 96, 132, 1, 82, @@ -1037,14 +1064,14 @@ pub mod inclusion_verifier { 128, 97, 5, - 64, + 128, 133, 1, 82, 132, 97, - 3, - 230, + 4, + 0, 130, 132, 97, @@ -1062,19 +1089,19 @@ pub mod inclusion_verifier { 96, 97, 4, - 0, + 64, 131, 1, 32, 97, 5, - 96, + 160, 131, 1, 82, 97, 5, - 96, + 160, 130, 1, 81, @@ -1083,14 +1110,14 @@ pub mod inclusion_verifier { 6, 97, 5, - 128, + 192, 132, 1, 82, 128, 97, 5, - 160, + 224, 132, 1, 82, @@ -1104,8 +1131,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 5, - 192, + 6, + 0, 131, 1, 82, @@ -1118,8 +1145,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 5, - 224, + 6, + 32, 131, 1, 82, @@ -1133,7 +1160,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 0, + 64, 131, 1, 82, @@ -1147,7 +1174,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 32, + 96, 131, 1, 82, @@ -1161,7 +1188,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 64, + 128, 131, 1, 82, @@ -1175,7 +1202,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 96, + 160, 131, 1, 82, @@ -1189,7 +1216,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 128, + 192, 131, 1, 82, @@ -1203,7 +1230,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 160, + 224, 131, 1, 82, @@ -1216,8 +1243,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 6, - 192, + 7, + 0, 131, 1, 82, @@ -1230,8 +1257,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 6, - 224, + 7, + 32, 131, 1, 82, @@ -1245,7 +1272,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 0, + 64, 131, 1, 82, @@ -1259,7 +1286,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 32, + 96, 131, 1, 82, @@ -1273,7 +1300,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 64, + 128, 131, 1, 82, @@ -1287,7 +1314,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 96, + 160, 131, 1, 82, @@ -1301,7 +1328,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 128, + 192, 131, 1, 82, @@ -1315,7 +1342,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 160, + 224, 131, 1, 82, @@ -1328,8 +1355,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 7, - 192, + 8, + 0, 131, 1, 82, @@ -1342,8 +1369,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 7, - 224, + 8, + 32, 131, 1, 82, @@ -1357,7 +1384,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 0, + 64, 131, 1, 82, @@ -1371,7 +1398,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 32, + 96, 131, 1, 82, @@ -1385,7 +1412,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 64, + 128, 131, 1, 82, @@ -1399,7 +1426,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 96, + 160, 131, 1, 82, @@ -1413,7 +1440,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 128, + 192, 131, 1, 82, @@ -1427,7 +1454,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 160, + 224, 131, 1, 82, @@ -1440,8 +1467,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 8, - 192, + 9, + 0, 131, 1, 82, @@ -1454,8 +1481,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 8, - 224, + 9, + 32, 131, 1, 82, @@ -1469,7 +1496,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 0, + 64, 131, 1, 82, @@ -1483,7 +1510,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 32, + 96, 131, 1, 82, @@ -1497,7 +1524,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 64, + 128, 131, 1, 82, @@ -1511,7 +1538,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 96, + 160, 131, 1, 82, @@ -1525,7 +1552,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 128, + 192, 131, 1, 82, @@ -1539,7 +1566,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 160, + 224, 131, 1, 82, @@ -1552,8 +1579,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 9, - 192, + 10, + 0, 131, 1, 82, @@ -1566,8 +1593,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 9, - 224, + 10, + 32, 131, 1, 82, @@ -1581,7 +1608,7 @@ pub mod inclusion_verifier { 6, 97, 10, - 0, + 64, 131, 1, 82, @@ -1590,19 +1617,19 @@ pub mod inclusion_verifier { 128, 97, 5, - 160, + 224, 131, 1, 32, 97, 10, - 32, + 96, 131, 1, 82, 97, 10, - 32, + 96, 130, 1, 81, @@ -1611,14 +1638,14 @@ pub mod inclusion_verifier { 6, 97, 10, - 64, + 128, 132, 1, 82, 128, 97, 10, - 96, + 160, 132, 1, 82, @@ -1627,7 +1654,7 @@ pub mod inclusion_verifier { 1, 97, 10, - 128, + 192, 131, 1, 83, @@ -1635,13 +1662,13 @@ pub mod inclusion_verifier { 33, 97, 10, - 96, + 160, 131, 1, 32, 97, 10, - 128, + 192, 131, 1, 129, @@ -1652,13 +1679,13 @@ pub mod inclusion_verifier { 6, 97, 10, - 160, + 224, 132, 1, 82, 97, - 10, - 192, + 11, + 0, 131, 1, 82, @@ -1669,8 +1696,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 10, - 224, + 11, + 32, 131, 1, 129, @@ -1684,7 +1711,7 @@ pub mod inclusion_verifier { 81, 97, 11, - 0, + 64, 132, 1, 129, @@ -1693,7 +1720,7 @@ pub mod inclusion_verifier { 132, 97, 6, - 111, + 137, 130, 132, 97, @@ -1709,20 +1736,20 @@ pub mod inclusion_verifier { 96, 96, 97, - 10, - 192, + 11, + 0, 131, 1, 32, 97, 11, - 32, + 96, 131, 1, 82, 97, 11, - 32, + 96, 130, 1, 81, @@ -1731,14 +1758,14 @@ pub mod inclusion_verifier { 6, 97, 11, - 64, + 128, 132, 1, 82, 128, 97, 11, - 96, + 160, 132, 1, 82, @@ -1752,7 +1779,7 @@ pub mod inclusion_verifier { 128, 97, 11, - 128, + 192, 132, 1, 82, @@ -1765,14 +1792,14 @@ pub mod inclusion_verifier { 128, 97, 11, - 160, + 224, 133, 1, 82, 132, 97, 6, - 190, + 216, 130, 132, 97, @@ -1788,20 +1815,20 @@ pub mod inclusion_verifier { 128, 97, 5, - 128, + 192, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 11, - 192, + 12, + 0, 131, 1, 129, @@ -1812,8 +1839,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 11, - 224, + 12, + 32, 131, 1, 129, @@ -1825,7 +1852,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 0, + 64, 131, 1, 129, @@ -1837,7 +1864,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 32, + 96, 131, 1, 129, @@ -1849,7 +1876,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 64, + 128, 131, 1, 129, @@ -1861,7 +1888,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 96, + 160, 131, 1, 129, @@ -1873,7 +1900,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 128, + 192, 131, 1, 129, @@ -1885,7 +1912,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 160, + 224, 131, 1, 129, @@ -1896,8 +1923,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 12, - 192, + 13, + 0, 131, 1, 129, @@ -1908,8 +1935,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 12, - 224, + 13, + 32, 131, 1, 129, @@ -1921,7 +1948,7 @@ pub mod inclusion_verifier { 9, 97, 13, - 0, + 64, 131, 1, 82, @@ -1961,14 +1988,14 @@ pub mod inclusion_verifier { 0, 97, 13, - 0, + 64, 132, 1, 81, 8, 97, 13, - 32, + 96, 131, 1, 82, @@ -2008,14 +2035,14 @@ pub mod inclusion_verifier { 1, 97, 13, - 32, + 96, 132, 1, 81, 9, 97, 13, - 64, + 128, 131, 1, 82, @@ -2055,14 +2082,14 @@ pub mod inclusion_verifier { 2, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 13, - 96, + 160, 131, 1, 82, @@ -2102,14 +2129,14 @@ pub mod inclusion_verifier { 255, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 13, - 128, + 192, 131, 1, 82, @@ -2149,14 +2176,14 @@ pub mod inclusion_verifier { 81, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 13, - 160, + 224, 131, 1, 82, @@ -2196,14 +2223,14 @@ pub mod inclusion_verifier { 176, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, - 13, - 192, + 14, + 0, 131, 1, 82, @@ -2243,14 +2270,14 @@ pub mod inclusion_verifier { 53, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, - 13, - 224, + 14, + 32, 131, 1, 82, @@ -2290,14 +2317,14 @@ pub mod inclusion_verifier { 204, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 0, + 64, 131, 1, 82, @@ -2337,14 +2364,14 @@ pub mod inclusion_verifier { 37, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 32, + 96, 131, 1, 82, @@ -2384,14 +2411,14 @@ pub mod inclusion_verifier { 220, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 64, + 128, 131, 1, 82, @@ -2431,14 +2458,14 @@ pub mod inclusion_verifier { 227, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 96, + 160, 131, 1, 82, @@ -2478,14 +2505,14 @@ pub mod inclusion_verifier { 30, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 128, + 192, 131, 1, 82, @@ -2525,14 +2552,14 @@ pub mod inclusion_verifier { 26, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 160, + 224, 131, 1, 82, @@ -2572,14 +2599,14 @@ pub mod inclusion_verifier { 231, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, - 14, - 192, + 15, + 0, 131, 1, 82, @@ -2588,14 +2615,14 @@ pub mod inclusion_verifier { 1, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, - 14, - 224, + 15, + 32, 131, 1, 82, @@ -2635,14 +2662,14 @@ pub mod inclusion_verifier { 0, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 15, - 0, + 64, 131, 1, 82, @@ -2682,14 +2709,14 @@ pub mod inclusion_verifier { 95, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 15, - 32, + 96, 131, 1, 82, @@ -2729,28 +2756,216 @@ pub mod inclusion_verifier { 162, 97, 5, + 192, + 132, + 1, + 81, + 8, + 97, + 15, + 128, + 131, + 1, + 82, + 128, + 127, + 42, + 217, + 2, + 30, + 208, + 124, + 66, + 171, + 25, + 247, + 124, + 92, + 242, + 203, + 210, + 222, + 177, + 53, + 234, + 51, + 15, + 27, + 21, + 115, + 189, + 8, + 217, + 147, + 9, + 196, + 187, + 125, + 97, + 13, + 128, + 132, + 1, + 81, + 9, + 97, + 15, + 160, + 131, + 1, + 82, 128, + 127, + 5, + 139, + 76, + 84, + 16, + 181, + 93, + 126, + 158, + 88, + 201, + 89, + 142, + 181, + 133, + 126, + 118, + 253, + 254, + 21, + 106, + 158, + 91, + 29, + 134, + 217, + 28, + 0, + 230, + 59, + 68, + 132, + 97, + 5, + 192, 132, 1, 81, 8, 97, 15, - 64, + 192, 131, 1, 82, + 128, + 127, + 25, + 8, + 89, + 125, + 47, + 195, + 188, + 29, + 163, + 18, + 239, + 163, + 68, + 224, + 252, + 138, + 112, + 121, + 48, + 2, + 56, + 242, + 238, + 53, + 119, + 79, + 17, + 126, + 102, + 253, + 68, + 103, 97, 13, 128, + 132, + 1, + 81, + 9, + 97, + 15, + 224, + 131, + 1, + 82, + 128, + 127, + 23, + 91, + 244, + 245, + 177, + 109, + 228, + 12, + 21, + 61, + 86, + 19, + 60, + 160, + 91, + 210, + 183, + 186, + 184, + 70, + 64, + 198, 130, + 91, + 204, + 146, + 228, + 21, + 137, + 2, + 187, + 154, + 97, + 5, + 192, + 132, 1, 81, - 129, - 129, + 8, + 97, + 16, + 0, + 131, + 1, + 82, 97, 13, 192, + 130, + 1, + 81, + 129, + 129, + 97, + 14, + 0, 133, 1, 81, @@ -2759,8 +2974,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 96, + 16, + 32, 132, 1, 82, @@ -2768,7 +2983,7 @@ pub mod inclusion_verifier { 129, 97, 14, - 0, + 64, 133, 1, 81, @@ -2777,8 +2992,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 128, + 16, + 64, 132, 1, 82, @@ -2786,7 +3001,7 @@ pub mod inclusion_verifier { 129, 97, 14, - 64, + 128, 133, 1, 81, @@ -2795,8 +3010,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 160, + 16, + 96, 132, 1, 82, @@ -2804,7 +3019,25 @@ pub mod inclusion_verifier { 129, 97, 14, + 192, + 133, + 1, + 81, + 9, + 144, + 80, + 128, + 97, + 16, 128, + 132, + 1, + 82, + 129, + 129, + 97, + 15, + 0, 133, 1, 81, @@ -2813,7 +3046,25 @@ pub mod inclusion_verifier { 80, 128, 97, + 16, + 160, + 132, + 1, + 82, + 129, + 129, + 97, 15, + 64, + 133, + 1, + 81, + 9, + 144, + 80, + 128, + 97, + 16, 192, 132, 1, @@ -2821,8 +3072,8 @@ pub mod inclusion_verifier { 129, 129, 97, - 14, - 192, + 15, + 128, 133, 1, 81, @@ -2831,7 +3082,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, + 16, 224, 132, 1, @@ -2840,7 +3091,7 @@ pub mod inclusion_verifier { 129, 97, 15, - 0, + 192, 133, 1, 81, @@ -2849,7 +3100,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 0, 132, 1, @@ -2857,8 +3108,8 @@ pub mod inclusion_verifier { 129, 129, 97, - 15, - 64, + 16, + 0, 133, 1, 81, @@ -2867,7 +3118,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 32, 132, 1, @@ -2876,7 +3127,7 @@ pub mod inclusion_verifier { 129, 97, 13, - 32, + 96, 133, 1, 81, @@ -2885,7 +3136,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 64, 132, 1, @@ -2894,7 +3145,7 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 128, 131, 1, @@ -2902,7 +3153,7 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 160, 131, 1, @@ -2910,19 +3161,19 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 192, 131, 1, 82, 97, - 16, + 17, 64, 130, 1, 81, 97, - 16, + 17, 224, 131, 1, @@ -2961,7 +3212,7 @@ pub mod inclusion_verifier { 255, 255, 97, - 17, + 18, 0, 131, 1, @@ -2973,8 +3224,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 148, 131, 57, 129, @@ -2982,7 +3233,7 @@ pub mod inclusion_verifier { 145, 82, 97, - 17, + 18, 32, 131, 1, @@ -2993,14 +3244,14 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 96, 133, 1, 96, 192, 97, - 16, + 17, 128, 135, 1, @@ -3013,7 +3264,7 @@ pub mod inclusion_verifier { 146, 80, 97, - 16, + 17, 96, 130, 1, @@ -3022,7 +3273,7 @@ pub mod inclusion_verifier { 0, 97, 13, - 32, + 96, 132, 1, 81, @@ -3031,7 +3282,7 @@ pub mod inclusion_verifier { 130, 130, 97, - 16, + 17, 32, 134, 1, @@ -3039,7 +3290,7 @@ pub mod inclusion_verifier { 9, 97, 13, - 32, + 96, 133, 1, 82, @@ -3050,8 +3301,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 15, - 64, + 16, + 0, 132, 1, 81, @@ -3060,15 +3311,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 16, + 17, 0, 134, 1, 81, 9, 97, - 15, - 64, + 16, + 0, 133, 1, 82, @@ -3080,7 +3331,7 @@ pub mod inclusion_verifier { 80, 97, 15, - 0, + 192, 132, 1, 81, @@ -3089,7 +3340,7 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, + 16, 224, 134, 1, @@ -3097,7 +3348,7 @@ pub mod inclusion_verifier { 9, 97, 15, - 0, + 192, 133, 1, 82, @@ -3108,8 +3359,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 14, - 192, + 15, + 128, 132, 1, 81, @@ -3118,15 +3369,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, + 16, 192, 134, 1, 81, 9, 97, - 14, - 192, + 15, + 128, 133, 1, 82, @@ -3137,8 +3388,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 14, - 128, + 15, + 64, 132, 1, 81, @@ -3147,15 +3398,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, + 16, 160, 134, 1, 81, 9, 97, - 14, - 128, + 15, + 64, 133, 1, 82, @@ -3166,8 +3417,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 14, - 64, + 15, + 0, 132, 1, 81, @@ -3176,15 +3427,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, + 16, 128, 134, 1, 81, 9, 97, - 14, - 64, + 15, + 0, 133, 1, 82, @@ -3196,7 +3447,7 @@ pub mod inclusion_verifier { 80, 97, 14, - 0, + 192, 132, 1, 81, @@ -3205,7 +3456,7 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, + 16, 96, 134, 1, @@ -3213,7 +3464,7 @@ pub mod inclusion_verifier { 9, 97, 14, - 0, + 192, 133, 1, 82, @@ -3224,8 +3475,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 13, - 192, + 14, + 128, 132, 1, 81, @@ -3234,15 +3485,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 13, - 128, + 16, + 64, 134, 1, 81, 9, 97, - 13, - 192, + 14, + 128, 133, 1, 82, @@ -3250,50 +3501,88 @@ pub mod inclusion_verifier { 130, 130, 9, + 145, + 80, 97, - 13, - 128, - 133, + 14, + 64, + 132, 1, - 129, + 81, 144, - 82, + 80, + 130, + 130, 97, - 13, - 96, - 133, + 16, + 32, + 134, 1, 81, - 132, - 147, + 9, + 97, + 14, + 64, + 133, + 1, + 82, + 130, + 130, + 130, + 9, + 145, 80, + 97, + 14, + 0, + 132, + 1, + 81, 144, - 145, 80, + 130, + 130, + 97, + 13, + 192, + 134, + 1, + 81, 9, 97, - 17, - 64, - 131, + 14, + 0, + 133, 1, 82, - 128, + 130, + 130, + 130, + 9, 97, 13, 192, - 131, + 133, 1, - 81, + 129, + 144, + 82, 97, 13, 160, - 132, + 133, 1, 81, + 132, + 147, + 80, + 144, + 145, + 80, 9, 97, - 17, - 96, + 18, + 64, 131, 1, 82, @@ -3312,8 +3601,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 17, - 128, + 18, + 96, 131, 1, 82, @@ -3332,8 +3621,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 17, - 160, + 18, + 128, 131, 1, 82, @@ -3352,8 +3641,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 17, - 192, + 18, + 160, 131, 1, 82, @@ -3372,8 +3661,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 17, - 224, + 18, + 192, 131, 1, 82, @@ -3393,7 +3682,7 @@ pub mod inclusion_verifier { 9, 97, 18, - 0, + 224, 131, 1, 82, @@ -3412,56 +3701,152 @@ pub mod inclusion_verifier { 81, 9, 97, - 18, - 32, + 19, + 0, 131, 1, 82, 128, - 96, - 32, + 97, + 15, + 128, 131, 1, 81, 97, - 18, - 0, + 15, + 96, 132, 1, 81, 9, - 129, - 129, + 97, + 19, + 32, + 131, + 1, + 82, + 128, + 97, + 15, + 192, 131, - 96, - 64, - 134, 1, 81, 97, - 18, - 32, - 135, + 15, + 160, + 132, 1, 81, 9, - 8, 97, - 18, + 19, 64, - 132, + 131, 1, 82, - 80, + 128, 97, - 6, - 224, - 130, + 16, + 0, + 131, 1, 81, 97, - 5, - 192, + 15, + 224, + 132, + 1, + 81, + 9, + 97, + 19, + 96, + 131, + 1, + 82, + 128, + 96, + 32, + 131, + 1, + 81, + 97, + 19, + 0, + 132, + 1, + 81, + 9, + 129, + 129, + 131, + 96, + 64, + 134, + 1, + 81, + 97, + 19, + 32, + 135, + 1, + 81, + 9, + 8, + 144, + 80, + 129, + 129, + 131, + 96, + 96, + 134, + 1, + 81, + 97, + 19, + 64, + 135, + 1, + 81, + 9, + 8, + 144, + 80, + 129, + 129, + 131, + 96, + 128, + 134, + 1, + 81, + 97, + 19, + 96, + 135, + 1, + 81, + 9, + 8, + 97, + 19, + 128, + 132, + 1, + 82, + 80, + 97, + 7, + 32, + 130, + 1, + 81, + 97, + 6, + 0, 131, 1, 81, @@ -3470,8 +3855,8 @@ pub mod inclusion_verifier { 144, 8, 97, - 18, - 96, + 19, + 160, 131, 1, 129, @@ -3482,8 +3867,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 18, - 128, + 19, + 192, 131, 1, 129, @@ -3494,28 +3879,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 18, - 160, + 19, + 224, 131, 1, 82, 128, 97, - 18, - 160, + 19, + 224, 131, 1, 81, 97, - 18, - 96, + 19, + 160, 132, 1, 81, 9, 97, - 18, - 192, + 20, + 0, 131, 1, 82, @@ -3554,35 +3939,35 @@ pub mod inclusion_verifier { 122, 213, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 9, 97, - 18, - 224, + 20, + 32, 131, 1, 82, 128, 97, 7, - 0, + 64, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 19, - 0, + 20, + 64, 131, 1, 129, @@ -3593,8 +3978,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 19, - 32, + 20, + 96, 131, 1, 129, @@ -3605,28 +3990,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 19, - 64, + 20, + 128, 131, 1, 82, 128, 97, - 19, - 64, + 20, + 128, 131, 1, 81, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 19, - 96, + 20, + 160, 131, 1, 82, @@ -3665,57 +4050,57 @@ pub mod inclusion_verifier { 177, 232, 97, - 19, - 96, + 20, + 160, 132, 1, 81, 9, 97, - 19, - 128, + 20, + 192, 131, 1, 82, 128, 97, - 19, - 128, + 20, + 192, 131, 1, 81, 97, - 18, - 224, + 20, + 32, 132, 1, 81, 8, 97, - 19, - 160, + 20, + 224, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, 130, 3, 97, - 19, - 160, + 20, + 224, 132, 1, 81, 8, 97, - 19, - 192, + 21, + 0, 131, 1, 129, @@ -3723,7 +4108,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 128, + 192, 131, 1, 81, @@ -3731,28 +4116,28 @@ pub mod inclusion_verifier { 145, 9, 97, - 19, - 224, + 21, + 32, 131, 1, 82, 128, 97, - 19, - 224, + 21, + 32, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 20, - 0, + 21, + 64, 131, 1, 82, @@ -3791,15 +4176,15 @@ pub mod inclusion_verifier { 143, 249, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 9, 97, - 20, - 32, + 21, + 96, 131, 1, 82, @@ -3838,57 +4223,57 @@ pub mod inclusion_verifier { 3, 200, 97, - 19, - 96, + 20, + 160, 132, 1, 81, 9, 97, - 20, - 64, + 21, + 128, 131, 1, 82, 128, 97, - 20, - 64, + 21, + 128, 131, 1, 81, 97, - 20, - 32, + 21, + 96, 132, 1, 81, 8, 97, - 20, - 96, + 21, + 160, 131, 1, 82, 128, 97, 6, - 32, + 96, 131, 1, 81, 130, 3, 97, - 20, - 96, + 21, + 160, 132, 1, 81, 8, 97, - 20, - 128, + 21, + 192, 131, 1, 129, @@ -3896,7 +4281,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 128, + 192, 131, 1, 81, @@ -3904,70 +4289,70 @@ pub mod inclusion_verifier { 145, 9, 97, - 20, - 160, + 21, + 224, 131, 1, 82, 128, 97, - 20, - 160, + 21, + 224, 131, 1, 81, 97, - 20, - 0, + 21, + 64, 132, 1, 81, 8, 97, - 20, - 192, + 22, + 0, 131, 1, 82, 128, 97, - 20, - 192, + 22, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 20, - 224, + 22, + 32, 131, 1, 82, 128, 97, 6, - 64, + 128, 131, 1, 81, 130, 3, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 8, 97, - 21, - 0, + 22, + 64, 131, 1, 129, @@ -3975,7 +4360,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -3983,48 +4368,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 21, - 32, + 22, + 96, 131, 1, 82, 128, 97, - 21, - 32, + 22, + 96, 131, 1, 81, 97, - 20, - 224, + 22, + 32, 132, 1, 81, 8, 97, - 21, - 64, + 22, + 128, 131, 1, 82, 128, 97, - 21, - 64, + 22, + 128, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 21, - 96, + 22, + 160, 131, 1, 82, @@ -4064,14 +4449,14 @@ pub mod inclusion_verifier { 213, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 21, - 128, + 22, + 192, 131, 1, 82, @@ -4110,35 +4495,35 @@ pub mod inclusion_verifier { 177, 232, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 21, - 160, + 22, + 224, 131, 1, 82, 128, 97, - 21, - 160, + 22, + 224, 131, 1, 81, 97, - 21, - 128, + 22, + 192, 132, 1, 81, 8, 97, - 21, - 192, + 23, + 0, 131, 1, 129, @@ -4146,7 +4531,7 @@ pub mod inclusion_verifier { 82, 97, 6, - 160, + 224, 131, 1, 81, @@ -4154,8 +4539,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 21, - 224, + 23, + 32, 131, 1, 129, @@ -4166,8 +4551,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 22, - 0, + 23, + 64, 131, 1, 129, @@ -4178,28 +4563,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 22, - 32, + 23, + 96, 131, 1, 82, 128, 97, - 22, - 32, + 23, + 96, 131, 1, 81, 97, - 21, - 224, + 23, + 32, 132, 1, 81, 9, 97, - 22, - 64, + 23, + 128, 131, 1, 82, @@ -4239,14 +4624,14 @@ pub mod inclusion_verifier { 102, 97, 6, - 0, + 64, 132, 1, 81, 9, 97, - 22, - 96, + 23, + 160, 131, 1, 82, @@ -4286,56 +4671,56 @@ pub mod inclusion_verifier { 254, 97, 6, - 32, + 96, 132, 1, 81, 9, 97, - 22, - 128, + 23, + 192, 131, 1, 82, 128, 97, - 22, - 128, + 23, + 192, 131, 1, 81, 97, - 22, - 96, + 23, + 160, 132, 1, 81, 8, 97, - 22, - 160, + 23, + 224, 131, 1, 82, 128, 97, - 22, - 160, + 23, + 224, 131, 1, 81, 130, 3, 97, - 22, - 64, + 23, + 128, 132, 1, 81, 8, 97, - 22, - 192, + 24, + 0, 131, 1, 129, @@ -4343,7 +4728,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -4351,48 +4736,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 22, - 224, + 24, + 32, 131, 1, 82, 128, 97, - 22, - 224, + 24, + 32, 131, 1, 81, 97, - 21, - 96, + 22, + 160, 132, 1, 81, 8, 97, - 23, - 0, + 24, + 64, 131, 1, 82, 128, 97, - 23, - 0, + 24, + 64, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 23, - 32, + 24, + 96, 131, 1, 82, @@ -4432,14 +4817,14 @@ pub mod inclusion_verifier { 249, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 23, - 64, + 24, + 128, 131, 1, 82, @@ -4478,43 +4863,43 @@ pub mod inclusion_verifier { 3, 200, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 23, - 96, + 24, + 160, 131, 1, 82, 128, 97, - 23, - 96, + 24, + 160, 131, 1, 81, 97, - 23, - 64, + 24, + 128, 132, 1, 81, 8, 97, - 23, - 128, + 24, + 192, 131, 1, 129, 144, 82, 97, - 6, - 192, + 7, + 0, 131, 1, 81, @@ -4522,8 +4907,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 23, - 160, + 24, + 224, 131, 1, 82, @@ -4563,14 +4948,14 @@ pub mod inclusion_verifier { 2, 97, 6, - 0, + 64, 132, 1, 81, 9, 97, - 23, - 192, + 25, + 0, 131, 1, 82, @@ -4610,56 +4995,56 @@ pub mod inclusion_verifier { 190, 97, 6, - 32, + 96, 132, 1, 81, 9, 97, - 23, - 224, + 25, + 32, 131, 1, 82, 128, 97, - 23, - 224, + 25, + 32, 131, 1, 81, 97, - 23, - 192, + 25, + 0, 132, 1, 81, 8, 97, - 24, - 0, + 25, + 64, 131, 1, 82, 128, 97, - 24, - 0, + 25, + 64, 131, 1, 81, 130, 3, 97, - 23, - 160, + 24, + 224, 132, 1, 81, 8, 97, - 24, - 32, + 25, + 96, 131, 1, 129, @@ -4667,7 +5052,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -4675,55 +5060,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 24, - 64, + 25, + 128, 131, 1, 82, 128, 97, - 24, - 64, + 25, + 128, 131, 1, 81, 97, - 23, - 32, + 24, + 96, 132, 1, 81, 8, 97, - 24, - 96, + 25, + 160, 131, 1, 82, 128, 97, - 24, - 96, + 25, + 160, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 24, - 128, + 25, + 192, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -4733,8 +5118,8 @@ pub mod inclusion_verifier { 1, 8, 97, - 24, - 160, + 25, + 224, 131, 1, 129, @@ -4742,7 +5127,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 96, + 160, 131, 1, 81, @@ -4750,15 +5135,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 24, - 192, + 26, + 0, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -4768,16 +5153,16 @@ pub mod inclusion_verifier { 2, 8, 97, - 24, - 224, + 26, + 32, 131, 1, 129, 144, 82, 97, - 24, - 192, + 26, + 0, 131, 1, 81, @@ -4785,15 +5170,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 0, + 26, + 64, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -4803,16 +5188,16 @@ pub mod inclusion_verifier { 4, 8, 97, - 25, - 32, + 26, + 96, 131, 1, 129, 144, 82, 97, - 25, - 0, + 26, + 64, 131, 1, 81, @@ -4820,58 +5205,58 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 64, + 26, + 128, 131, 1, 82, 128, 97, - 5, - 192, + 6, + 0, 131, 1, 81, 97, 6, - 128, + 192, 132, 1, 81, 8, 97, - 25, - 96, + 26, + 160, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, 130, 3, 97, - 25, - 96, + 26, + 160, 132, 1, 81, 8, 97, - 25, - 128, + 26, + 192, 131, 1, 129, 144, 82, 97, - 25, - 64, + 26, + 128, 131, 1, 81, @@ -4879,55 +5264,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 160, + 26, + 224, 131, 1, 82, 128, 97, - 25, - 160, + 26, + 224, 131, 1, 81, 97, - 24, - 128, + 25, + 192, 132, 1, 81, 8, 97, - 25, - 192, + 27, + 0, 131, 1, 82, 128, 97, - 25, - 192, + 27, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 25, - 224, + 27, + 32, 131, 1, 82, 128, 97, 6, - 32, + 96, 131, 1, 81, @@ -4935,397 +5320,397 @@ pub mod inclusion_verifier { 3, 97, 6, - 96, + 160, 132, 1, 81, 8, 97, - 26, - 0, + 27, + 64, 131, 1, 129, 144, 82, 97, - 25, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 26, - 32, - 131, - 1, - 82, - 128, - 97, - 26, - 32, - 131, - 1, - 81, - 97, - 25, - 224, - 132, - 1, - 81, - 8, - 97, 26, - 64, - 131, - 1, - 82, 128, - 97, - 26, - 64, 131, 1, 81, - 97, - 3, - 224, - 132, - 1, - 81, + 130, + 145, 9, 97, - 26, + 27, 96, 131, 1, 82, 128, 97, - 7, - 192, + 27, + 96, 131, 1, 81, 97, - 19, - 192, + 27, + 32, 132, 1, 81, - 9, + 8, 97, - 26, + 27, 128, 131, 1, 82, 128, 97, - 26, + 27, 128, 131, 1, 81, 97, - 26, - 96, + 4, + 32, 132, 1, 81, - 8, + 9, 97, - 26, + 27, 160, 131, 1, 82, 128, 97, - 26, - 160, + 8, + 0, 131, 1, 81, 97, - 3, - 224, + 21, + 0, 132, 1, 81, 9, 97, - 26, + 27, 192, 131, 1, 82, 128, 97, - 7, + 27, 192, 131, 1, 81, 97, - 20, - 128, + 27, + 160, 132, 1, 81, - 9, + 8, 97, - 26, + 27, 224, 131, 1, 82, 128, 97, - 26, + 27, 224, 131, 1, 81, 97, - 26, - 192, + 4, + 32, 132, 1, 81, - 8, + 9, 97, - 27, + 28, 0, 131, 1, 82, 128, 97, - 27, + 8, 0, 131, 1, 81, 97, - 3, - 224, + 21, + 192, 132, 1, 81, 9, 97, - 27, + 28, 32, 131, 1, 82, 128, 97, - 7, - 224, + 28, + 32, 131, 1, 81, 97, - 21, + 28, 0, 132, 1, 81, - 9, + 8, 97, - 27, + 28, 64, 131, 1, 82, 128, 97, - 27, + 28, 64, 131, 1, 81, 97, - 27, + 4, 32, 132, 1, 81, - 8, + 9, 97, - 27, + 28, 96, 131, 1, 82, 128, 97, - 27, - 96, + 8, + 32, 131, 1, 81, 97, - 3, - 224, + 22, + 64, 132, 1, 81, 9, 97, - 27, + 28, 128, 131, 1, 82, 128, 97, - 7, - 224, + 28, + 128, 131, 1, 81, 97, - 22, - 192, + 28, + 96, 132, 1, 81, - 9, + 8, 97, - 27, + 28, 160, 131, 1, 82, 128, 97, - 27, + 28, 160, 131, 1, 81, 97, - 27, - 128, + 4, + 32, 132, 1, 81, - 8, + 9, 97, - 27, + 28, 192, 131, 1, 82, 128, 97, - 27, - 192, + 8, + 32, 131, 1, 81, 97, - 3, - 224, + 24, + 0, 132, 1, 81, 9, 97, - 27, + 28, 224, 131, 1, 82, 128, 97, - 7, + 28, 224, 131, 1, 81, 97, - 24, - 32, + 28, + 192, 132, 1, 81, - 9, + 8, 97, - 28, + 29, 0, 131, 1, 82, 128, 97, - 28, + 29, 0, 131, 1, 81, 97, - 27, - 224, + 4, + 32, 132, 1, 81, - 8, + 9, 97, - 28, + 29, 32, 131, 1, 82, 128, 97, - 28, + 8, 32, 131, 1, 81, 97, - 3, - 224, + 25, + 96, 132, 1, 81, 9, 97, - 28, + 29, 64, 131, 1, 82, 128, 97, - 7, - 96, + 29, + 64, 131, 1, 81, - 130, - 3, + 97, + 29, + 32, + 132, + 1, + 81, + 8, + 97, + 29, + 96, + 131, + 1, + 82, + 128, + 97, + 29, + 96, + 131, + 1, + 81, + 97, + 4, + 32, + 132, + 1, + 81, + 9, + 97, + 29, + 128, + 131, + 1, + 82, + 128, + 97, + 7, + 160, + 131, + 1, + 81, + 130, + 3, 96, 3, 8, 97, - 28, - 96, + 29, + 160, 131, 1, 129, 144, 82, 97, - 25, - 0, + 26, + 64, 131, 1, 81, @@ -5333,215 +5718,215 @@ pub mod inclusion_verifier { 145, 9, 97, - 28, - 128, + 29, + 192, 131, 1, 82, 128, 97, - 28, - 128, + 29, + 192, 131, 1, 81, 97, - 25, - 128, + 26, + 192, 132, 1, 81, 9, 97, - 28, - 160, + 29, + 224, 131, 1, 82, 128, 97, - 28, - 160, + 29, + 224, 131, 1, 81, 97, - 28, - 64, + 29, + 128, 132, 1, 81, 8, 97, - 28, - 192, + 30, + 0, 131, 1, 82, 128, 97, - 28, - 192, + 30, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 28, - 224, + 30, + 32, 131, 1, 82, 128, 97, - 28, - 128, + 29, + 192, 131, 1, 81, 97, - 26, - 0, + 27, + 64, 132, 1, 81, 9, 97, - 29, - 0, + 30, + 64, 131, 1, 82, 128, 97, - 29, - 0, + 30, + 64, 131, 1, 81, 97, - 28, - 224, + 30, + 32, 132, 1, 81, 8, 97, - 29, - 32, + 30, + 96, 131, 1, 82, 128, 97, - 29, - 32, + 30, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 29, - 64, + 30, + 128, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, 97, - 24, - 224, + 26, + 32, 132, 1, 81, 9, 97, - 29, - 96, + 30, + 160, 131, 1, 82, 128, 97, - 29, - 96, + 30, + 160, 131, 1, 81, 97, - 28, - 96, + 29, + 160, 132, 1, 81, 9, 97, - 29, - 128, + 30, + 192, 131, 1, 82, 128, 97, - 29, - 128, + 30, + 192, 131, 1, 81, 97, - 25, - 32, + 26, + 96, 132, 1, 81, 9, 97, - 29, - 160, + 30, + 224, 131, 1, 82, 128, 97, - 29, - 160, + 30, + 224, 131, 1, 81, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 29, - 192, + 31, + 0, 131, 1, 82, 128, 97, 6, - 64, + 128, 131, 1, 81, @@ -5551,16 +5936,16 @@ pub mod inclusion_verifier { 1, 8, 97, - 29, - 224, + 31, + 32, 131, 1, 129, 144, 82, 97, - 29, - 192, + 31, + 0, 131, 1, 81, @@ -5568,55 +5953,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 30, - 0, + 31, + 64, 131, 1, 82, 128, 97, - 30, - 0, + 31, + 64, 131, 1, 81, 97, - 29, - 64, + 30, + 128, 132, 1, 81, 8, 97, - 30, - 32, + 31, + 96, 131, 1, 82, 128, 97, - 30, - 32, + 31, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 30, - 64, + 31, + 128, 131, 1, 82, 128, 97, 6, - 64, + 128, 131, 1, 81, @@ -5624,38 +6009,38 @@ pub mod inclusion_verifier { 2, 9, 97, - 30, - 96, + 31, + 160, 131, 1, 82, 128, 97, - 5, - 192, + 6, + 0, 131, 1, 81, 130, 3, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 30, - 128, + 31, + 192, 131, 1, 129, 144, 82, 97, - 30, - 96, + 31, + 160, 131, 1, 81, @@ -5663,15 +6048,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 30, - 160, + 31, + 224, 131, 1, 82, 128, 97, - 5, - 192, + 6, + 0, 131, 1, 81, @@ -5679,88 +6064,88 @@ pub mod inclusion_verifier { 3, 97, 6, - 0, + 64, 132, 1, 81, 8, 97, - 30, - 192, + 32, + 0, 131, 1, 82, 128, 97, - 30, - 192, + 32, + 0, 131, 1, 81, 130, 3, 97, - 30, - 160, + 31, + 224, 132, 1, 81, 8, 97, - 30, - 224, + 32, + 32, 131, 1, 82, 128, 97, 6, - 32, + 96, 131, 1, 81, 130, 3, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 31, - 0, + 32, + 64, 131, 1, 82, 128, 97, - 31, - 0, + 32, + 64, 131, 1, 81, 130, 3, 97, - 30, - 224, + 32, + 32, 132, 1, 81, 8, 97, - 31, 32, + 96, 131, 1, 129, 144, 82, 97, - 29, - 160, + 30, + 224, 131, 1, 81, @@ -5768,138 +6153,138 @@ pub mod inclusion_verifier { 145, 9, 97, - 31, - 64, + 32, + 128, 131, 1, 82, 128, 97, - 31, - 64, + 32, + 128, 131, 1, 81, 97, - 30, - 64, + 31, + 128, 132, 1, 81, 8, 97, - 31, - 96, + 32, + 160, 131, 1, 82, 128, 97, - 31, - 96, + 32, + 160, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 31, - 128, + 32, + 192, 131, 1, 82, 128, 97, - 24, - 192, + 26, + 0, 131, 1, 81, 97, - 28, - 96, + 29, + 160, 132, 1, 81, 9, 97, - 31, - 160, + 32, + 224, 131, 1, 82, 128, 97, - 31, - 160, + 32, + 224, 131, 1, 81, 97, - 25, - 32, + 26, + 96, 132, 1, 81, 9, 97, - 31, - 192, + 33, + 0, 131, 1, 82, 128, 97, - 5, - 224, + 6, + 32, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 31, - 224, + 33, + 32, 131, 1, 82, 128, 97, 6, - 64, + 128, 131, 1, 81, 130, 3, 97, - 31, - 224, + 33, + 32, 132, 1, 81, 8, 97, - 32, - 0, + 33, + 64, 131, 1, 129, 144, 82, 97, - 31, - 192, + 33, + 0, 131, 1, 81, @@ -5907,56 +6292,56 @@ pub mod inclusion_verifier { 145, 9, 97, - 32, - 32, + 33, + 96, 131, 1, 82, 128, 97, - 32, - 32, + 33, + 96, 131, 1, 81, 97, - 31, - 128, + 32, + 192, 132, 1, 81, 8, 97, - 32, - 64, + 33, + 128, 131, 1, 82, 128, 97, - 32, - 64, + 33, + 128, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 32, - 96, + 33, + 160, 131, 1, 129, 144, 82, 97, - 32, - 32, + 33, + 96, 131, 1, 81, @@ -5964,35 +6349,35 @@ pub mod inclusion_verifier { 145, 8, 97, - 32, - 128, + 33, + 192, 131, 1, 82, 128, 97, - 32, - 128, + 33, + 192, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 32, - 160, + 33, + 224, 131, 1, 82, 128, 97, - 8, - 224, + 9, + 32, 131, 1, 81, @@ -6002,15 +6387,15 @@ pub mod inclusion_verifier { 1, 8, 97, - 32, - 192, + 34, + 0, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -6019,54 +6404,54 @@ pub mod inclusion_verifier { 145, 9, 97, + 34, 32, - 224, 131, 1, 82, 128, 97, + 34, 32, - 224, 131, 1, 81, 97, - 32, - 160, + 33, + 224, 132, 1, 81, 8, 97, - 33, - 0, + 34, + 64, 131, 1, 82, 128, 97, - 33, - 0, + 34, + 64, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 33, - 32, + 34, + 96, 131, 1, 82, 97, 9, - 64, + 128, 130, 1, 81, @@ -6075,37 +6460,37 @@ pub mod inclusion_verifier { 128, 9, 97, - 33, - 64, + 34, + 128, 131, 1, 82, 128, 97, 9, - 64, + 128, 131, 1, 81, 130, 3, 97, - 33, - 64, + 34, + 128, 132, 1, 81, 8, 97, - 33, - 96, + 34, + 160, 131, 1, 129, 144, 82, 97, - 17, + 18, 64, 131, 1, @@ -6114,55 +6499,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 33, - 128, + 34, + 192, 131, 1, 82, 128, 97, - 33, - 128, + 34, + 192, 131, 1, 81, 97, - 33, - 32, + 34, + 96, 132, 1, 81, 8, 97, - 33, - 160, + 34, + 224, 131, 1, 82, 128, 97, - 33, - 160, + 34, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 33, - 192, + 35, + 0, 131, 1, 82, 128, 97, 9, - 32, + 96, 131, 1, 81, @@ -6170,21 +6555,21 @@ pub mod inclusion_verifier { 3, 97, 9, - 64, + 128, 132, 1, 81, 8, 97, - 33, - 224, + 35, + 32, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -6193,54 +6578,54 @@ pub mod inclusion_verifier { 145, 9, 97, - 34, - 0, + 35, + 64, 131, 1, 82, 128, 97, - 34, - 0, + 35, + 64, 131, 1, 81, 97, - 33, - 192, + 35, + 0, 132, 1, 81, 8, 97, - 34, - 32, + 35, + 96, 131, 1, 82, 128, 97, - 34, - 32, + 35, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 34, - 64, + 35, + 128, 131, 1, 82, 128, 97, - 17, + 18, 64, 131, 1, @@ -6251,35 +6636,35 @@ pub mod inclusion_verifier { 1, 8, 97, - 34, - 96, + 35, + 160, 131, 1, 82, 128, 97, - 17, + 18, 128, 131, 1, 81, 97, - 17, + 18, 96, 132, 1, 81, 8, 97, - 34, - 128, + 35, + 192, 131, 1, 129, 144, 82, 97, - 17, + 18, 160, 131, 1, @@ -6288,15 +6673,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 34, - 160, + 35, + 224, 131, 1, 129, 144, 82, 97, - 17, + 18, 192, 131, 1, @@ -6305,15 +6690,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 34, - 192, + 36, + 0, 131, 1, 129, 144, 82, 97, - 17, + 18, 224, 131, 1, @@ -6322,70 +6707,70 @@ pub mod inclusion_verifier { 145, 8, 97, - 34, - 224, + 36, + 32, 131, 1, 82, 128, 97, - 34, - 224, + 36, + 32, 131, 1, 81, 130, 3, 97, - 34, - 96, + 35, + 160, 132, 1, 81, 8, 97, - 35, - 0, + 36, + 64, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 32, + 96, 132, 1, 81, 9, 97, - 35, - 32, + 36, + 96, 131, 1, 82, 128, 97, - 35, - 32, + 36, + 96, 131, 1, 81, 97, 6, - 160, + 224, 132, 1, 81, 8, 97, - 35, - 64, + 36, + 128, 131, 1, 129, @@ -6393,7 +6778,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -6401,48 +6786,48 @@ pub mod inclusion_verifier { 145, 8, 97, - 35, - 96, + 36, + 160, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 64, + 128, 132, 1, 81, 9, 97, - 35, - 128, + 36, + 192, 131, 1, 82, 128, 97, - 35, - 128, + 36, + 192, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 35, - 160, + 36, + 224, 131, 1, 129, @@ -6450,7 +6835,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -6458,16 +6843,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 35, - 192, + 37, + 0, 131, 1, 129, 144, 82, 97, - 35, - 96, + 36, + 160, 131, 1, 81, @@ -6475,48 +6860,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 35, - 224, + 37, + 32, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 96, + 160, 132, 1, 81, 9, 97, - 36, - 0, + 37, + 64, 131, 1, 82, 128, 97, - 36, - 0, + 37, + 64, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 36, - 32, + 37, + 96, 131, 1, 129, @@ -6524,7 +6909,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -6532,16 +6917,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 36, - 64, + 37, + 128, 131, 1, 129, 144, 82, 97, - 35, - 224, + 37, + 32, 131, 1, 81, @@ -6549,48 +6934,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 36, - 96, + 37, + 160, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 128, + 192, 132, 1, 81, 9, 97, - 36, - 128, + 37, + 192, 131, 1, 82, 128, 97, - 36, - 128, + 37, + 192, 131, 1, 81, 97, - 6, - 192, + 7, + 0, 132, 1, 81, 8, 97, - 36, - 160, + 37, + 224, 131, 1, 129, @@ -6598,7 +6983,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -6606,16 +6991,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 36, - 192, + 38, + 0, 131, 1, 129, 144, 82, 97, - 36, - 96, + 37, + 160, 131, 1, 81, @@ -6623,8 +7008,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 36, - 224, + 38, + 32, 131, 1, 129, @@ -6632,7 +7017,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 0, + 64, 131, 1, 81, @@ -6640,15 +7025,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 37, - 0, + 38, + 64, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -6656,48 +7041,48 @@ pub mod inclusion_verifier { 1, 9, 97, - 37, - 32, + 38, + 96, 131, 1, 82, 128, 97, - 37, - 32, + 38, + 96, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 37, - 64, + 38, + 128, 131, 1, 82, 128, 97, - 37, - 64, + 38, + 128, 131, 1, 81, 97, 6, - 160, + 224, 132, 1, 81, 8, 97, - 37, - 96, + 38, + 160, 131, 1, 129, @@ -6705,7 +7090,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -6713,15 +7098,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 37, - 128, + 38, + 192, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -6760,48 +7145,48 @@ pub mod inclusion_verifier { 162, 9, 97, - 37, - 160, + 38, + 224, 131, 1, 82, 128, 97, - 37, - 160, + 38, + 224, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 37, - 192, + 39, + 0, 131, 1, 82, 128, 97, - 37, - 192, + 39, + 0, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 37, - 224, + 39, + 32, 131, 1, 129, @@ -6809,7 +7194,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -6817,16 +7202,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 38, - 0, + 39, + 64, 131, 1, 129, 144, 82, 97, - 37, - 128, + 38, + 192, 131, 1, 81, @@ -6834,15 +7219,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 38, - 32, + 39, + 96, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -6881,48 +7266,48 @@ pub mod inclusion_verifier { 43, 9, 97, - 38, - 64, + 39, + 128, 131, 1, 82, 128, 97, - 38, - 64, + 39, + 128, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 38, - 96, + 39, + 160, 131, 1, 82, 128, 97, - 38, - 96, + 39, + 160, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 38, - 128, + 39, + 192, 131, 1, 129, @@ -6930,7 +7315,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -6938,16 +7323,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 38, - 160, + 39, + 224, 131, 1, 129, 144, 82, 97, - 38, - 32, + 39, + 96, 131, 1, 81, @@ -6955,15 +7340,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 38, - 192, + 40, + 0, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -7002,48 +7387,48 @@ pub mod inclusion_verifier { 82, 9, 97, - 38, - 224, + 40, + 32, 131, 1, 82, 128, 97, - 38, - 224, + 40, + 32, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 39, - 0, + 40, + 64, 131, 1, 82, 128, 97, - 39, - 0, + 40, + 64, 131, 1, 81, 97, - 6, - 192, + 7, + 0, 132, 1, 81, 8, 97, - 39, - 32, + 40, + 96, 131, 1, 129, @@ -7051,7 +7436,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -7059,16 +7444,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 39, - 64, + 40, + 128, 131, 1, 129, 144, 82, 97, - 38, - 192, + 40, + 0, 131, 1, 81, @@ -7076,16 +7461,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 39, - 96, + 40, + 160, 131, 1, 129, 144, 82, 97, - 8, - 224, + 9, + 32, 131, 1, 81, @@ -7093,38 +7478,38 @@ pub mod inclusion_verifier { 145, 9, 97, - 39, - 128, + 40, + 192, 131, 1, 82, 128, 97, - 39, - 128, + 40, + 192, 131, 1, 81, 130, 3, 97, - 37, - 0, + 38, + 64, 132, 1, 81, 8, 97, - 39, - 160, + 40, + 224, 131, 1, 129, 144, 82, 97, - 35, - 0, + 36, + 64, 131, 1, 81, @@ -7132,88 +7517,88 @@ pub mod inclusion_verifier { 145, 9, 97, - 39, - 192, + 41, + 0, 131, 1, 82, 128, 97, - 39, - 192, + 41, + 0, 131, 1, 81, 97, - 34, - 64, + 35, + 128, 132, 1, 81, 8, 97, - 39, - 224, + 41, + 32, 131, 1, 82, 128, 97, - 39, - 224, + 41, + 32, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 40, - 0, + 41, + 64, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 160, + 224, 132, 1, 81, 9, 97, - 40, - 32, + 41, + 96, 131, 1, 82, 128, 97, - 40, - 32, + 41, + 96, 131, 1, 81, 97, 6, - 64, + 128, 132, 1, 81, 8, 97, - 40, - 64, + 41, + 128, 131, 1, 129, @@ -7221,7 +7606,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -7229,48 +7614,48 @@ pub mod inclusion_verifier { 145, 8, 97, - 40, - 96, + 41, + 160, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, - 8, - 192, + 9, + 0, 132, 1, 81, 9, 97, - 40, - 128, + 41, + 192, 131, 1, 82, 128, 97, - 40, - 128, + 41, + 192, 131, 1, 81, 97, - 18, - 64, + 19, + 128, 132, 1, 81, 8, 97, - 40, - 160, + 41, + 224, 131, 1, 129, @@ -7278,7 +7663,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -7286,16 +7671,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 40, - 192, + 42, + 0, 131, 1, 129, 144, 82, 97, - 40, - 96, + 41, + 160, 131, 1, 81, @@ -7303,8 +7688,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 40, - 224, + 42, + 32, 131, 1, 129, @@ -7312,7 +7697,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 96, + 160, 131, 1, 81, @@ -7320,15 +7705,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 41, - 0, + 42, + 64, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -7366,48 +7751,48 @@ pub mod inclusion_verifier { 66, 9, 97, - 41, - 32, + 42, + 96, 131, 1, 82, 128, 97, - 41, - 32, + 42, + 96, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 41, - 64, + 42, + 128, 131, 1, 82, 128, 97, - 41, - 64, + 42, + 128, 131, 1, 81, 97, 6, - 64, + 128, 132, 1, 81, 8, 97, - 41, - 96, + 42, + 160, 131, 1, 129, @@ -7415,7 +7800,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -7423,15 +7808,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 41, - 128, + 42, + 192, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -7470,48 +7855,48 @@ pub mod inclusion_verifier { 157, 9, 97, - 41, - 160, + 42, + 224, 131, 1, 82, 128, 97, - 41, - 160, + 42, + 224, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 41, - 192, + 43, + 0, 131, 1, 82, 128, 97, - 41, - 192, + 43, + 0, 131, 1, 81, 97, - 18, - 64, + 19, + 128, 132, 1, 81, 8, 97, - 41, - 224, + 43, + 32, 131, 1, 129, @@ -7519,7 +7904,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -7527,16 +7912,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 42, - 0, + 43, + 64, 131, 1, 129, 144, 82, 97, - 41, - 128, + 42, + 192, 131, 1, 81, @@ -7544,8 +7929,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 32, + 43, + 96, 131, 1, 129, @@ -7553,7 +7938,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 64, + 128, 131, 1, 81, @@ -7561,38 +7946,38 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 64, + 43, + 128, 131, 1, 82, 128, 97, - 42, - 64, + 43, + 128, 131, 1, 81, 130, 3, 97, - 41, - 0, + 42, + 64, 132, 1, 81, 8, 97, - 42, - 96, + 43, + 160, 131, 1, 129, 144, 82, 97, - 35, - 0, + 36, + 64, 131, 1, 81, @@ -7600,55 +7985,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 128, + 43, + 192, 131, 1, 82, 128, 97, - 42, - 128, + 43, + 192, 131, 1, 81, 97, - 40, - 0, + 41, + 64, 132, 1, 81, 8, 97, - 42, - 160, + 43, + 224, 131, 1, 82, 128, 97, - 42, - 160, + 43, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 42, - 192, + 44, + 0, 131, 1, 82, 128, 97, 9, - 128, + 192, 131, 1, 81, @@ -7658,15 +8043,15 @@ pub mod inclusion_verifier { 1, 8, 97, - 42, - 224, + 44, + 32, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -7675,54 +8060,54 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 0, + 44, + 64, 131, 1, 82, 128, 97, - 43, - 0, + 44, + 64, 131, 1, 81, 97, - 42, - 192, + 44, + 0, 132, 1, 81, 8, 97, - 43, - 32, + 44, + 96, 131, 1, 82, 128, 97, - 43, - 32, + 44, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 43, - 64, + 44, + 128, 131, 1, 82, 97, 9, - 128, + 192, 130, 1, 81, @@ -7731,37 +8116,37 @@ pub mod inclusion_verifier { 128, 9, 97, - 43, - 96, + 44, + 160, 131, 1, 82, 128, 97, 9, - 128, + 192, 131, 1, 81, 130, 3, 97, - 43, - 96, + 44, + 160, 132, 1, 81, 8, 97, - 43, - 128, + 44, + 192, 131, 1, 129, 144, 82, 97, - 17, + 18, 64, 131, 1, @@ -7770,68 +8155,68 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 160, + 44, + 224, 131, 1, 82, 128, 97, - 43, - 160, + 44, + 224, 131, 1, 81, 97, - 43, - 64, + 44, + 128, 132, 1, 81, 8, 97, - 43, - 192, + 45, + 0, 131, 1, 82, 128, 97, - 43, - 192, + 45, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 43, - 224, + 45, + 32, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 44, - 0, + 45, + 64, 131, 1, 129, @@ -7839,7 +8224,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 160, + 224, 131, 1, 81, @@ -7847,36 +8232,36 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 32, + 45, + 96, 131, 1, 82, 128, 97, 2, - 128, + 192, 131, 1, 81, 97, 10, - 0, + 64, 132, 1, 81, 8, 97, - 44, - 64, + 45, + 128, 131, 1, 129, 144, 82, 97, - 44, - 32, + 45, + 96, 131, 1, 81, @@ -7884,15 +8269,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 96, + 45, + 160, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, @@ -7901,30 +8286,30 @@ pub mod inclusion_verifier { 0, 9, 97, - 44, - 128, + 45, + 192, 131, 1, 82, 128, 97, - 44, - 128, + 45, + 192, 131, 1, 81, 130, 3, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 44, - 160, + 45, + 224, 131, 1, 129, @@ -7932,7 +8317,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 64, + 128, 131, 1, 81, @@ -7940,8 +8325,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 192, + 46, + 0, 131, 1, 129, @@ -7949,7 +8334,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 32, + 96, 131, 1, 81, @@ -7957,8 +8342,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 44, - 224, + 46, + 32, 131, 1, 129, @@ -7966,7 +8351,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 128, + 192, 131, 1, 81, @@ -7974,36 +8359,36 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 0, + 46, + 64, 131, 1, 82, 128, 97, 2, - 128, + 192, 131, 1, 81, 97, 7, - 32, + 96, 132, 1, 81, 8, 97, - 45, - 32, + 46, + 96, 131, 1, 129, 144, 82, 97, - 45, - 0, + 46, + 64, 131, 1, 81, @@ -8011,38 +8396,38 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 64, + 46, + 128, 131, 1, 82, 128, 97, - 45, - 64, + 46, + 128, 131, 1, 81, 130, 3, 97, - 44, - 96, + 45, + 160, 132, 1, 81, 8, 97, - 45, - 96, + 46, + 160, 131, 1, 129, 144, 82, 97, - 35, - 0, + 36, + 64, 131, 1, 81, @@ -8050,77 +8435,77 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 128, + 46, + 192, 131, 1, 82, 128, 97, - 45, - 128, + 46, + 192, 131, 1, 81, 97, - 43, - 224, + 45, + 32, 132, 1, 81, 8, 97, - 45, - 160, + 46, + 224, 131, 1, 82, 128, 97, - 45, - 160, + 46, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 45, - 192, + 47, + 0, 131, 1, 82, 128, 97, 10, - 0, + 64, 131, 1, 81, 130, 3, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 45, - 224, + 47, + 32, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -8129,98 +8514,98 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 0, + 47, + 64, 131, 1, 82, 128, 97, - 46, - 0, + 47, + 64, 131, 1, 81, 97, - 45, - 192, + 47, + 0, 132, 1, 81, 8, 97, - 46, - 32, + 47, + 96, 131, 1, 82, 128, 97, - 46, - 32, + 47, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 46, - 64, + 47, + 128, 131, 1, 82, 128, 97, - 35, - 0, + 36, + 64, 131, 1, 81, 97, - 45, - 224, + 47, + 32, 132, 1, 81, 9, 97, - 46, - 96, + 47, + 160, 131, 1, 82, 128, 97, - 9, - 224, + 10, + 32, 131, 1, 81, 130, 3, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 46, - 128, + 47, + 192, 131, 1, 129, 144, 82, 97, - 46, - 96, + 47, + 160, 131, 1, 81, @@ -8228,34 +8613,34 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 160, + 47, + 224, 131, 1, 82, 128, 97, - 46, - 160, + 47, + 224, 131, 1, 81, 97, - 46, - 64, + 47, + 128, 132, 1, 81, 8, 97, - 46, - 192, + 48, + 0, 131, 1, 82, 97, 13, - 0, + 64, 130, 1, 81, @@ -8264,8 +8649,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 46, - 224, + 48, + 32, 131, 1, 129, @@ -8273,7 +8658,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -8281,8 +8666,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 0, + 48, + 64, 131, 1, 129, @@ -8290,7 +8675,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -8298,8 +8683,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 32, + 48, + 96, 131, 1, 129, @@ -8307,7 +8692,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -8315,15 +8700,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 64, + 48, + 128, 131, 1, 82, 128, 97, 13, - 0, + 64, 131, 1, 81, @@ -8331,15 +8716,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 96, + 48, + 160, 131, 1, 82, 128, 97, - 46, - 224, + 48, + 32, 131, 1, 81, @@ -8347,15 +8732,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 128, + 48, + 192, 131, 1, 82, 128, 97, - 47, - 0, + 48, + 64, 131, 1, 81, @@ -8363,15 +8748,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 160, + 48, + 224, 131, 1, 82, 128, 97, - 47, - 32, + 48, + 96, 131, 1, 81, @@ -8379,48 +8764,48 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 192, + 49, + 0, 131, 1, 82, 128, 97, 13, - 32, + 96, 131, 1, 81, 97, - 46, - 192, + 48, + 0, 132, 1, 81, 9, 97, - 47, - 224, + 49, + 32, 131, 1, 82, 128, 97, 5, - 128, + 192, 131, 1, 81, 97, - 11, - 192, + 12, + 0, 132, 1, 81, 9, 97, - 48, - 0, + 49, + 64, 131, 1, 82, @@ -8429,21 +8814,21 @@ pub mod inclusion_verifier { 1, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 32, + 49, + 96, 131, 1, 82, 128, 97, - 48, - 32, + 49, + 96, 131, 1, 81, @@ -8451,14 +8836,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 64, + 49, + 128, 131, 1, 82, @@ -8498,21 +8883,21 @@ pub mod inclusion_verifier { 95, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 96, + 49, + 160, 131, 1, 82, 128, 97, - 48, - 96, + 49, + 160, 131, 1, 81, @@ -8520,14 +8905,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 128, + 49, + 192, 131, 1, 82, @@ -8567,21 +8952,21 @@ pub mod inclusion_verifier { 2, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 160, + 49, + 224, 131, 1, 82, 128, 97, - 48, - 160, + 49, + 224, 131, 1, 81, @@ -8589,14 +8974,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 192, + 50, + 0, 131, 1, 82, @@ -8636,21 +9021,21 @@ pub mod inclusion_verifier { 26, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 224, + 50, + 32, 131, 1, 82, 128, 97, - 48, - 224, + 50, + 32, 131, 1, 81, @@ -8658,14 +9043,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 49, - 0, + 50, + 64, 131, 1, 82, @@ -8705,15 +9090,15 @@ pub mod inclusion_verifier { 121, 139, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -8756,15 +9141,15 @@ pub mod inclusion_verifier { 134, 118, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -8774,8 +9159,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 32, + 50, + 96, 132, 1, 82, @@ -8816,15 +9201,15 @@ pub mod inclusion_verifier { 97, 54, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -8867,15 +9252,15 @@ pub mod inclusion_verifier { 231, 116, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -8885,8 +9270,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 64, + 50, + 128, 132, 1, 82, @@ -8927,15 +9312,15 @@ pub mod inclusion_verifier { 12, 40, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -8978,30 +9363,30 @@ pub mod inclusion_verifier { 239, 215, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 49, - 96, + 50, + 160, 132, 1, 82, 80, 97, - 48, - 64, + 49, + 128, 130, 1, 81, @@ -9011,16 +9396,16 @@ pub mod inclusion_verifier { 1, 9, 97, - 49, - 128, + 50, + 192, 131, 1, 129, 144, 82, 97, - 48, - 128, + 49, + 192, 131, 1, 81, @@ -9028,16 +9413,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 49, - 160, + 50, + 224, 131, 1, 129, 144, 82, 97, - 49, - 0, + 50, + 64, 131, 1, 81, @@ -9045,8 +9430,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 49, - 192, + 51, + 0, 131, 1, 82, @@ -9055,7 +9440,7 @@ pub mod inclusion_verifier { 1, 97, 11, - 64, + 128, 132, 1, 81, @@ -9098,7 +9483,7 @@ pub mod inclusion_verifier { 0, 97, 5, - 128, + 192, 135, 1, 81, @@ -9108,8 +9493,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 224, + 51, + 32, 132, 1, 82, @@ -9150,15 +9535,15 @@ pub mod inclusion_verifier { 76, 242, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9201,15 +9586,15 @@ pub mod inclusion_verifier { 179, 15, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -9219,8 +9604,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 0, + 51, + 64, 132, 1, 82, @@ -9261,15 +9646,15 @@ pub mod inclusion_verifier { 141, 207, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9312,15 +9697,15 @@ pub mod inclusion_verifier { 38, 251, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -9330,8 +9715,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 32, + 51, + 96, 132, 1, 82, @@ -9372,15 +9757,15 @@ pub mod inclusion_verifier { 8, 51, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9423,36 +9808,36 @@ pub mod inclusion_verifier { 46, 39, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 50, - 64, + 51, + 128, 132, 1, 82, 80, 97, - 48, - 192, + 50, + 0, 130, 1, 81, 97, - 49, - 160, + 50, + 224, 131, 1, 81, @@ -9461,8 +9846,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 50, - 96, + 51, + 160, 131, 1, 82, @@ -9503,14 +9888,14 @@ pub mod inclusion_verifier { 163, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9554,14 +9939,14 @@ pub mod inclusion_verifier { 94, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -9571,8 +9956,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 128, + 51, + 192, 132, 1, 82, @@ -9614,14 +9999,14 @@ pub mod inclusion_verifier { 94, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9665,14 +10050,14 @@ pub mod inclusion_verifier { 227, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -9682,8 +10067,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 160, + 51, + 224, 132, 1, 82, @@ -9725,14 +10110,14 @@ pub mod inclusion_verifier { 232, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9776,14 +10161,14 @@ pub mod inclusion_verifier { 25, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -9793,8 +10178,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 192, + 52, + 0, 132, 1, 82, @@ -9836,14 +10221,14 @@ pub mod inclusion_verifier { 25, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -9887,35 +10272,35 @@ pub mod inclusion_verifier { 55, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 50, - 224, + 52, + 32, 132, 1, 82, 80, 97, - 49, - 0, + 50, + 64, 130, 1, 81, 97, - 49, - 128, + 50, + 192, 131, 1, 81, @@ -9924,22 +10309,22 @@ pub mod inclusion_verifier { 144, 9, 97, - 51, - 0, + 52, + 64, 131, 1, 82, 97, - 49, - 32, + 50, + 96, 130, 1, 81, 129, 129, 97, - 49, - 64, + 50, + 128, 133, 1, 81, @@ -9948,16 +10333,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 32, + 52, + 96, 132, 1, 82, 129, 129, 97, - 49, - 96, + 50, + 160, 133, 1, 81, @@ -9966,16 +10351,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 64, + 52, + 128, 132, 1, 82, 129, 129, 97, - 49, - 224, + 51, + 32, 133, 1, 81, @@ -9984,16 +10369,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 96, + 52, + 160, 132, 1, 82, 129, 129, 97, - 49, - 128, + 50, + 192, 133, 1, 81, @@ -10002,16 +10387,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 128, + 52, + 192, 132, 1, 82, 129, 129, 97, - 50, - 0, + 51, + 64, 133, 1, 81, @@ -10020,16 +10405,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 160, + 52, + 224, 132, 1, 82, 129, 129, 97, - 50, - 32, + 51, + 96, 133, 1, 81, @@ -10038,16 +10423,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 192, + 53, + 0, 132, 1, 82, 129, 129, 97, - 50, - 64, + 51, + 128, 133, 1, 81, @@ -10056,16 +10441,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 224, + 53, + 32, 132, 1, 82, 129, 129, 97, - 50, - 96, + 51, + 160, 133, 1, 81, @@ -10074,16 +10459,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 0, + 53, + 64, 132, 1, 82, 129, 129, 97, - 50, - 128, + 51, + 192, 133, 1, 81, @@ -10092,16 +10477,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 32, + 53, + 96, 132, 1, 82, 129, 129, 97, - 50, - 160, + 51, + 224, 133, 1, 81, @@ -10110,16 +10495,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 64, + 53, + 128, 132, 1, 82, 129, 129, 97, - 49, - 160, + 50, + 224, 133, 1, 81, @@ -10128,16 +10513,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 96, + 53, + 160, 132, 1, 82, 129, 129, 97, - 50, - 192, + 52, + 0, 133, 1, 81, @@ -10146,16 +10531,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 128, + 53, + 192, 132, 1, 82, 129, 129, 97, - 50, - 224, + 52, + 32, 133, 1, 81, @@ -10164,16 +10549,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 160, + 53, + 224, 132, 1, 82, 129, 129, 97, - 51, - 0, + 52, + 64, 133, 1, 81, @@ -10182,8 +10567,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 192, + 54, + 0, 132, 1, 82, @@ -10191,36 +10576,36 @@ pub mod inclusion_verifier { 96, 32, 97, - 53, - 0, + 54, + 64, 131, 1, 82, 96, 32, 97, - 53, - 32, + 54, + 96, 131, 1, 82, 96, 32, 97, - 53, - 64, + 54, + 128, 131, 1, 82, 97, - 52, - 192, + 54, + 0, 130, 1, 81, 97, - 53, - 96, + 54, + 160, 131, 1, 82, @@ -10258,8 +10643,8 @@ pub mod inclusion_verifier { 255, 255, 97, - 53, - 128, + 54, + 192, 131, 1, 82, @@ -10270,8 +10655,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 148, 131, 57, 129, @@ -10279,8 +10664,8 @@ pub mod inclusion_verifier { 145, 82, 97, - 53, - 160, + 54, + 224, 131, 1, 82, @@ -10290,15 +10675,15 @@ pub mod inclusion_verifier { 96, 32, 97, - 52, - 224, + 54, + 32, 133, 1, 96, 192, 97, - 53, - 0, + 54, + 64, 135, 1, 96, @@ -10310,16 +10695,16 @@ pub mod inclusion_verifier { 146, 80, 97, - 52, - 224, + 54, + 32, 130, 1, 81, 96, 0, 97, - 51, - 0, + 52, + 64, 132, 1, 81, @@ -10328,15 +10713,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 160, + 53, + 224, 134, 1, 81, 9, 97, - 51, - 0, + 52, + 64, 133, 1, 82, @@ -10347,8 +10732,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 224, + 52, + 32, 132, 1, 81, @@ -10357,15 +10742,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 128, + 53, + 192, 134, 1, 81, 9, 97, - 50, - 224, + 52, + 32, 133, 1, 82, @@ -10376,8 +10761,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 192, + 52, + 0, 132, 1, 81, @@ -10386,15 +10771,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 96, + 53, + 160, 134, 1, 81, 9, 97, - 50, - 192, + 52, + 0, 133, 1, 82, @@ -10405,8 +10790,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 160, + 50, + 224, 132, 1, 81, @@ -10415,15 +10800,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 64, + 53, + 128, 134, 1, 81, 9, 97, - 49, - 160, + 50, + 224, 133, 1, 82, @@ -10434,8 +10819,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 160, + 51, + 224, 132, 1, 81, @@ -10444,15 +10829,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 32, + 53, + 96, 134, 1, 81, 9, 97, - 50, - 160, + 51, + 224, 133, 1, 82, @@ -10463,8 +10848,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 128, + 51, + 192, 132, 1, 81, @@ -10473,15 +10858,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 0, + 53, + 64, 134, 1, 81, 9, 97, - 50, - 128, + 51, + 192, 133, 1, 82, @@ -10492,8 +10877,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 96, + 51, + 160, 132, 1, 81, @@ -10502,15 +10887,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 224, + 53, + 32, 134, 1, 81, 9, 97, - 50, - 96, + 51, + 160, 133, 1, 82, @@ -10521,8 +10906,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 64, + 51, + 128, 132, 1, 81, @@ -10531,15 +10916,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 192, + 53, + 0, 134, 1, 81, 9, 97, - 50, - 64, + 51, + 128, 133, 1, 82, @@ -10550,8 +10935,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 32, + 51, + 96, 132, 1, 81, @@ -10560,15 +10945,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 160, + 52, + 224, 134, 1, 81, 9, 97, - 50, - 32, + 51, + 96, 133, 1, 82, @@ -10579,8 +10964,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 0, + 51, + 64, 132, 1, 81, @@ -10589,15 +10974,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 128, + 52, + 192, 134, 1, 81, 9, 97, - 50, - 0, + 51, + 64, 133, 1, 82, @@ -10608,8 +10993,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 128, + 50, + 192, 132, 1, 81, @@ -10618,15 +11003,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 96, + 52, + 160, 134, 1, 81, 9, 97, - 49, - 128, + 50, + 192, 133, 1, 82, @@ -10637,8 +11022,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 224, + 51, + 32, 132, 1, 81, @@ -10647,15 +11032,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 64, + 52, + 128, 134, 1, 81, 9, 97, - 49, - 224, + 51, + 32, 133, 1, 82, @@ -10666,8 +11051,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 96, + 50, + 160, 132, 1, 81, @@ -10676,15 +11061,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 32, + 52, + 96, 134, 1, 81, 9, 97, - 49, - 96, + 50, + 160, 133, 1, 82, @@ -10695,8 +11080,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 64, + 50, + 128, 132, 1, 81, @@ -10705,15 +11090,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 49, - 32, + 50, + 96, 134, 1, 81, 9, 97, - 49, - 64, + 50, + 128, 133, 1, 82, @@ -10722,16 +11107,16 @@ pub mod inclusion_verifier { 130, 9, 97, - 49, - 32, + 50, + 96, 133, 1, 129, 144, 82, 97, - 49, - 64, + 50, + 128, 133, 1, 81, @@ -10749,28 +11134,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 49, - 96, + 50, + 160, 133, 1, 81, 8, 97, - 53, - 192, + 55, + 0, 132, 1, 82, 80, 97, - 49, - 128, + 50, + 192, 130, 1, 81, 97, - 49, - 192, + 51, + 0, 131, 1, 81, @@ -10779,56 +11164,56 @@ pub mod inclusion_verifier { 144, 9, 97, - 53, - 224, + 55, + 32, 131, 1, 82, 97, - 49, - 224, + 51, + 32, 130, 1, 81, 128, 97, - 54, - 0, + 55, + 64, 132, 1, 82, 80, 128, 97, - 50, - 96, + 51, + 160, 131, 1, 81, 97, - 49, - 192, + 51, + 0, 132, 1, 81, 9, 97, - 54, - 32, + 55, + 96, 131, 1, 82, 97, - 50, - 0, + 51, + 64, 130, 1, 81, 129, 129, 97, - 50, - 32, + 51, + 96, 133, 1, 81, @@ -10838,28 +11223,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 50, - 64, + 51, + 128, 133, 1, 81, 8, 97, - 54, - 64, + 55, + 128, 132, 1, 82, 80, 97, - 49, - 160, + 50, + 224, 130, 1, 81, 97, - 49, - 192, + 51, + 0, 131, 1, 81, @@ -10868,42 +11253,42 @@ pub mod inclusion_verifier { 144, 9, 97, - 54, - 96, + 55, + 160, 131, 1, 82, 97, - 50, - 128, + 51, + 192, 130, 1, 81, 129, 129, 97, - 50, - 160, + 51, + 224, 133, 1, 81, 8, 97, - 54, - 128, + 55, + 192, 132, 1, 82, 80, 97, - 51, - 0, + 52, + 64, 130, 1, 81, 97, - 49, - 192, + 51, + 0, 131, 1, 81, @@ -10912,42 +11297,42 @@ pub mod inclusion_verifier { 144, 9, 97, - 54, - 160, + 55, + 224, 131, 1, 82, 97, - 50, - 192, + 52, + 0, 130, 1, 81, 129, 129, 97, - 50, - 224, + 52, + 32, 133, 1, 81, 8, 97, - 54, - 192, + 56, + 0, 132, 1, 82, 80, 97, - 53, - 192, + 55, + 0, 130, 1, 81, 97, - 54, - 0, + 55, + 64, 131, 1, 81, @@ -10960,16 +11345,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 54, - 224, + 56, + 32, 132, 1, 82, 129, 129, 97, - 54, - 64, + 55, + 128, 133, 1, 81, @@ -10978,16 +11363,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 0, + 56, + 64, 132, 1, 82, 129, 129, 97, - 54, - 128, + 55, + 192, 133, 1, 81, @@ -10996,16 +11381,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 32, + 56, + 96, 132, 1, 82, 129, 129, 97, - 54, - 192, + 56, + 0, 133, 1, 81, @@ -11014,8 +11399,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 64, + 56, + 128, 132, 1, 82, @@ -11023,36 +11408,36 @@ pub mod inclusion_verifier { 96, 32, 97, - 55, - 128, + 56, + 192, 131, 1, 82, 96, 32, 97, - 55, - 160, + 56, + 224, 131, 1, 82, 96, 32, 97, - 55, - 192, + 57, + 0, 131, 1, 82, 97, - 55, - 64, + 56, + 128, 130, 1, 81, 97, - 55, - 224, + 57, + 32, 131, 1, 82, @@ -11090,8 +11475,8 @@ pub mod inclusion_verifier { 255, 255, 97, - 56, - 0, + 57, + 64, 131, 1, 82, @@ -11102,8 +11487,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 148, 131, 57, 129, @@ -11111,8 +11496,8 @@ pub mod inclusion_verifier { 145, 82, 97, - 56, - 32, + 57, + 96, 131, 1, 82, @@ -11122,15 +11507,15 @@ pub mod inclusion_verifier { 96, 32, 97, - 55, - 96, + 56, + 160, 133, 1, 96, 192, 97, - 55, - 128, + 56, + 192, 135, 1, 96, @@ -11142,16 +11527,16 @@ pub mod inclusion_verifier { 146, 80, 97, - 55, - 96, + 56, + 160, 130, 1, 81, 96, 0, 97, - 54, - 192, + 56, + 0, 132, 1, 81, @@ -11160,15 +11545,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 55, - 32, + 56, + 96, 134, 1, 81, 9, 97, - 54, - 192, + 56, + 0, 133, 1, 82, @@ -11179,8 +11564,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 128, + 55, + 192, 132, 1, 81, @@ -11189,15 +11574,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 55, - 0, + 56, + 64, 134, 1, 81, 9, 97, - 54, - 128, + 55, + 192, 133, 1, 82, @@ -11208,8 +11593,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 64, + 55, + 128, 132, 1, 81, @@ -11218,15 +11603,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 54, - 224, + 56, + 32, 134, 1, 81, 9, 97, - 54, - 64, + 55, + 128, 133, 1, 82, @@ -11237,8 +11622,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 0, + 55, + 64, 132, 1, 81, @@ -11247,15 +11632,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 192, + 55, + 0, 134, 1, 81, 9, 97, - 54, - 0, + 55, + 64, 133, 1, 82, @@ -11264,22 +11649,22 @@ pub mod inclusion_verifier { 130, 9, 97, - 53, - 192, + 55, + 0, 133, 1, 82, 80, 80, 97, - 54, - 0, + 55, + 64, 130, 1, 81, 97, - 53, - 224, + 55, + 32, 131, 1, 81, @@ -11288,74 +11673,74 @@ pub mod inclusion_verifier { 144, 9, 97, - 56, - 64, + 57, + 128, 131, 1, 82, 128, 97, - 54, - 64, + 55, + 128, 131, 1, 81, 97, - 54, - 32, + 55, + 96, 132, 1, 81, 9, 97, - 56, - 96, + 57, + 160, 131, 1, 82, 128, 97, - 54, - 128, + 55, + 192, 131, 1, 81, 97, - 54, - 96, + 55, + 160, 132, 1, 81, 9, 97, - 56, - 128, + 57, + 192, 131, 1, 82, 128, 97, - 54, - 192, + 56, + 0, 131, 1, 81, 97, - 54, - 160, + 55, + 224, 132, 1, 81, 9, 97, - 56, - 160, + 57, + 224, 131, 1, 82, 97, 10, - 64, + 128, 130, 1, 81, @@ -11364,8 +11749,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 56, - 192, + 58, + 0, 131, 1, 129, @@ -11373,7 +11758,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11381,8 +11766,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 56, - 224, + 58, + 32, 131, 1, 129, @@ -11390,7 +11775,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11398,8 +11783,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 0, + 58, + 64, 131, 1, 129, @@ -11407,7 +11792,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11415,8 +11800,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 32, + 58, + 96, 131, 1, 129, @@ -11424,7 +11809,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11432,8 +11817,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 64, + 58, + 128, 131, 1, 129, @@ -11441,7 +11826,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11449,8 +11834,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 96, + 58, + 160, 131, 1, 129, @@ -11458,7 +11843,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11466,8 +11851,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 128, + 58, + 192, 131, 1, 129, @@ -11475,7 +11860,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11483,8 +11868,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 160, + 58, + 224, 131, 1, 129, @@ -11492,7 +11877,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11500,8 +11885,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 192, + 59, + 0, 131, 1, 129, @@ -11509,7 +11894,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11517,8 +11902,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 224, + 59, + 32, 131, 1, 129, @@ -11526,7 +11911,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11534,8 +11919,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 0, + 59, + 64, 131, 1, 129, @@ -11543,7 +11928,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11551,8 +11936,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 32, + 59, + 96, 131, 1, 129, @@ -11560,7 +11945,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11568,8 +11953,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 64, + 59, + 128, 131, 1, 129, @@ -11577,7 +11962,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11585,8 +11970,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 96, + 59, + 160, 131, 1, 129, @@ -11594,7 +11979,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11602,8 +11987,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 128, + 59, + 192, 131, 1, 129, @@ -11611,7 +11996,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11619,8 +12004,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 160, + 59, + 224, 131, 1, 129, @@ -11628,7 +12013,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11636,8 +12021,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 192, + 60, + 0, 131, 1, 129, @@ -11645,7 +12030,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11653,8 +12038,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 224, + 60, + 32, 131, 1, 129, @@ -11662,7 +12047,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11670,8 +12055,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 0, + 60, + 64, 131, 1, 129, @@ -11679,7 +12064,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11687,14 +12072,14 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 32, + 60, + 96, 131, 1, 82, 97, 10, - 160, + 224, 130, 1, 81, @@ -11703,8 +12088,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 59, - 64, + 60, + 128, 131, 1, 129, @@ -11712,7 +12097,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -11720,8 +12105,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 96, + 60, + 160, 131, 1, 129, @@ -11729,7 +12114,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -11737,8 +12122,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 128, + 60, + 192, 131, 1, 129, @@ -11746,7 +12131,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -11754,21 +12139,21 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 160, + 60, + 224, 131, 1, 82, 128, 97, - 49, - 32, + 50, + 96, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, @@ -11777,14 +12162,14 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 64, + 50, + 128, 134, 1, 81, 97, 6, - 0, + 64, 135, 1, 81, @@ -11796,30 +12181,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 96, + 50, + 160, 134, 1, 81, 97, 6, - 128, + 192, 135, 1, 81, 9, 8, 97, - 59, - 192, + 61, + 0, 132, 1, 129, 144, 82, 97, - 53, - 192, + 55, + 0, 132, 1, 81, @@ -11829,8 +12214,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 59, - 224, + 61, + 32, 131, 1, 82, @@ -11838,8 +12223,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 59, - 224, + 61, + 32, 132, 1, 81, @@ -11847,21 +12232,21 @@ pub mod inclusion_verifier { 3, 9, 97, - 60, - 0, + 61, + 64, 131, 1, 82, 128, 97, - 49, - 32, + 50, + 96, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, @@ -11870,14 +12255,14 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 64, + 50, + 128, 134, 1, 81, 97, 6, - 32, + 96, 135, 1, 81, @@ -11889,30 +12274,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 96, + 50, + 160, 134, 1, 81, 97, 6, - 96, + 160, 135, 1, 81, 9, 8, 97, - 60, - 32, + 61, + 96, 132, 1, 129, 144, 82, 97, - 53, - 192, + 55, + 0, 132, 1, 81, @@ -11922,8 +12307,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 60, - 64, + 61, + 128, 131, 1, 129, @@ -11931,7 +12316,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -11941,15 +12326,15 @@ pub mod inclusion_verifier { 3, 9, 97, - 60, - 96, + 61, + 160, 131, 1, 82, 128, 97, 10, - 64, + 128, 131, 1, 81, @@ -11957,28 +12342,28 @@ pub mod inclusion_verifier { 1, 9, 97, - 60, - 128, + 61, + 192, 131, 1, 82, 128, 97, - 60, - 96, + 61, + 160, 131, 1, 81, 97, - 60, - 0, + 61, + 64, 132, 1, 81, 8, 97, - 60, - 160, + 61, + 224, 131, 1, 82, @@ -11986,15 +12371,15 @@ pub mod inclusion_verifier { 96, 1, 97, - 60, - 160, + 61, + 224, 132, 1, 81, 9, 97, - 60, - 192, + 62, + 0, 131, 1, 82, @@ -12002,22 +12387,22 @@ pub mod inclusion_verifier { 96, 1, 97, - 60, - 128, + 61, + 192, 132, 1, 81, 9, 97, - 60, - 224, + 62, + 32, 131, 1, 82, 128, 97, - 53, - 224, + 55, + 32, 131, 1, 81, @@ -12025,36 +12410,36 @@ pub mod inclusion_verifier { 1, 9, 97, - 61, - 0, + 62, + 64, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 61, - 32, + 62, + 96, 131, 1, 129, 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -12062,8 +12447,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 61, - 64, + 62, + 128, 131, 1, 82, @@ -12071,8 +12456,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 61, - 64, + 62, + 128, 132, 1, 81, @@ -12080,8 +12465,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 61, - 96, + 62, + 160, 131, 1, 82, @@ -12089,43 +12474,43 @@ pub mod inclusion_verifier { 96, 1, 97, - 61, - 0, + 62, + 64, 132, 1, 81, 9, 97, - 61, - 128, + 62, + 192, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, 10, - 0, + 64, 132, 1, 81, 9, 97, - 61, - 160, + 62, + 224, 131, 1, 129, 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -12133,8 +12518,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 61, - 192, + 63, + 0, 131, 1, 129, @@ -12142,7 +12527,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -12152,76 +12537,76 @@ pub mod inclusion_verifier { 3, 9, 97, - 61, - 224, + 63, + 32, 131, 1, 82, 128, 97, 10, - 64, + 128, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, 9, 97, - 62, - 0, + 63, + 64, 131, 1, 82, 128, 97, - 61, - 224, + 63, + 32, 131, 1, 81, 97, - 61, - 96, + 62, + 160, 132, 1, 81, 8, 97, - 62, - 32, + 63, + 96, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, 6, - 160, + 224, 132, 1, 81, 9, 97, - 62, - 64, + 63, + 128, 131, 1, 129, 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -12229,16 +12614,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 62, - 96, + 63, + 160, 131, 1, 129, 144, 82, 97, - 56, - 192, + 58, + 0, 131, 1, 81, @@ -12248,227 +12633,35 @@ pub mod inclusion_verifier { 3, 9, 97, - 62, - 128, + 63, + 192, 131, 1, 82, 128, 97, - 56, - 192, + 58, + 0, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, 9, 97, - 62, - 160, + 63, + 224, 131, 1, 82, 128, 97, - 62, - 128, - 131, - 1, - 81, - 97, - 62, - 32, - 132, - 1, - 81, - 8, - 97, - 62, - 192, - 131, - 1, - 82, - 128, - 97, - 49, - 224, - 131, - 1, - 81, - 97, - 6, - 192, - 132, - 1, - 81, - 9, - 97, - 62, - 224, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 63, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 224, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 63, - 32, - 131, - 1, - 82, - 128, - 97, - 56, - 224, - 131, - 1, - 81, - 97, - 61, - 0, - 132, - 1, - 81, - 9, - 97, - 63, - 64, - 131, - 1, - 82, - 128, - 97, - 63, - 32, - 131, - 1, - 81, - 97, - 62, - 192, - 132, - 1, - 81, - 8, - 97, - 63, - 96, - 131, - 1, - 82, - 128, - 97, - 49, - 224, - 131, - 1, - 81, - 97, - 6, - 224, - 132, - 1, - 81, - 9, - 97, - 63, - 128, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 63, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 57, - 0, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 63, - 192, - 131, - 1, - 82, - 128, - 97, - 57, - 0, - 131, - 1, - 81, - 97, - 61, - 0, - 132, - 1, - 81, - 9, - 97, - 63, - 224, - 131, - 1, - 82, - 128, - 97, - 63, - 192, + 63, + 192, 131, 1, 81, @@ -12487,8 +12680,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -12508,8 +12701,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -12525,7 +12718,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 32, 131, 1, @@ -12543,14 +12736,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 32, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -12583,8 +12776,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -12604,8 +12797,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -12621,7 +12814,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 64, 131, 1, @@ -12639,14 +12832,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 64, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -12679,8 +12872,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -12700,8 +12893,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -12717,7 +12910,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 96, 131, 1, @@ -12735,14 +12928,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 96, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -12775,8 +12968,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -12796,8 +12989,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -12813,7 +13006,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 128, 131, 1, @@ -12831,14 +13024,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 128, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -12871,8 +13064,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -12892,8 +13085,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -12909,7 +13102,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 160, 131, 1, @@ -12927,14 +13120,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 160, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -12967,8 +13160,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -12988,8 +13181,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -13005,7 +13198,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 192, 131, 1, @@ -13023,14 +13216,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 192, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -13063,8 +13256,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -13084,8 +13277,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -13101,7 +13294,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 224, 131, 1, @@ -13119,14 +13312,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 224, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -13159,8 +13352,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -13180,8 +13373,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -13197,7 +13390,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 0, 131, 1, @@ -13215,14 +13408,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 0, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -13255,14 +13448,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, 8, - 32, + 0, 132, 1, 81, @@ -13276,8 +13469,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -13293,7 +13486,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 32, 131, 1, @@ -13311,14 +13504,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 32, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -13351,14 +13544,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, 8, - 64, + 32, 132, 1, 81, @@ -13372,8 +13565,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -13389,7 +13582,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 64, 131, 1, @@ -13407,14 +13600,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 64, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -13447,8 +13640,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -13468,8 +13661,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -13485,7 +13678,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 96, 131, 1, @@ -13503,14 +13696,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 96, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -13543,8 +13736,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -13564,8 +13757,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -13581,7 +13774,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 128, 131, 1, @@ -13599,14 +13792,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 128, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -13639,8 +13832,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -13660,8 +13853,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -13677,7 +13870,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 160, 131, 1, @@ -13695,14 +13888,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 160, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -13735,8 +13928,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -13756,8 +13949,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -13773,7 +13966,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 192, 131, 1, @@ -13791,14 +13984,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 192, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -13831,14 +14024,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 53, - 224, + 51, + 32, 131, 1, 81, 97, - 47, - 96, + 8, + 224, 132, 1, 81, @@ -13848,92 +14041,108 @@ pub mod inclusion_verifier { 224, 131, 1, + 129, + 144, 82, - 128, 97, - 53, - 224, + 57, + 128, 131, 1, 81, + 130, + 145, + 9, 97, - 47, - 128, - 132, + 73, + 0, + 131, + 1, + 129, + 144, + 82, + 97, + 59, + 224, + 131, 1, 81, + 130, + 145, + 130, + 3, 9, 97, 73, - 0, + 32, 131, 1, 82, 128, 97, - 53, + 59, 224, 131, 1, 81, 97, - 47, - 160, + 62, + 64, 132, 1, 81, 9, 97, 73, - 32, + 64, 131, 1, 82, 128, 97, - 53, - 224, + 73, + 32, 131, 1, 81, 97, - 47, + 72, 192, 132, 1, 81, - 9, + 8, 97, 73, - 64, + 96, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, - 47, - 224, + 9, + 0, 132, 1, 81, 9, 97, 73, - 96, + 128, 131, 1, 129, 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -13942,15 +14151,15 @@ pub mod inclusion_verifier { 9, 97, 73, - 128, + 160, 131, 1, 129, 144, 82, 97, - 58, - 224, + 60, + 0, 131, 1, 81, @@ -13961,155 +14170,155 @@ pub mod inclusion_verifier { 9, 97, 73, - 160, + 192, 131, 1, 82, 128, 97, - 58, - 224, + 60, + 0, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, 9, 97, 73, - 192, + 224, 131, 1, 82, 128, 97, - 58, - 224, + 73, + 192, 131, 1, 81, 97, - 72, - 224, + 73, + 96, 132, 1, 81, - 9, + 8, 97, - 73, - 224, + 74, + 0, 131, 1, 82, 128, 97, - 58, - 224, + 55, + 32, 131, 1, 81, 97, - 73, - 0, + 48, + 160, 132, 1, 81, 9, 97, 74, - 0, + 32, 131, 1, 82, 128, 97, - 58, - 224, + 55, + 32, 131, 1, 81, 97, - 73, - 32, + 48, + 192, 132, 1, 81, 9, 97, 74, - 32, + 64, 131, 1, 82, 128, 97, - 58, - 224, + 55, + 32, 131, 1, 81, 97, - 73, - 64, + 48, + 224, 132, 1, 81, 9, 97, 74, - 64, + 96, 131, 1, 82, 128, 97, - 73, - 160, + 55, + 32, 131, 1, 81, 97, - 72, - 192, + 49, + 0, 132, 1, 81, - 8, + 9, 97, 74, - 96, + 128, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, - 8, - 0, + 49, + 32, 132, 1, 81, 9, 97, 74, - 128, + 160, 131, 1, 129, 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -14118,15 +14327,15 @@ pub mod inclusion_verifier { 9, 97, 74, - 160, + 192, 131, 1, 129, 144, 82, 97, - 59, - 0, + 60, + 32, 131, 1, 81, @@ -14137,60 +14346,43 @@ pub mod inclusion_verifier { 9, 97, 74, - 192, + 224, 131, 1, 82, 128, 97, - 59, - 0, + 60, + 32, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, 9, 97, - 74, - 224, + 75, + 0, 131, 1, 82, 128, 97, - 74, - 192, + 60, + 32, 131, 1, 81, 97, 74, - 96, + 32, 132, 1, 81, - 8, - 97, - 75, - 0, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 160, - 131, - 1, - 81, - 130, - 145, 9, 97, 75, @@ -14200,14 +14392,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, - 160, + 60, + 32, 131, 1, 81, 97, - 61, - 128, + 74, + 64, 132, 1, 81, @@ -14220,14 +14412,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, - 160, + 60, + 32, 131, 1, 81, 97, - 62, - 0, + 74, + 96, 132, 1, 81, @@ -14240,14 +14432,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, - 160, + 60, + 32, 131, 1, 81, 97, - 62, - 160, + 74, + 128, 132, 1, 81, @@ -14260,18 +14452,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, - 160, + 74, + 224, 131, 1, 81, 97, - 63, - 64, + 74, + 0, 132, 1, 81, - 9, + 8, 97, 75, 160, @@ -14280,14 +14472,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, - 160, + 51, + 32, 131, 1, 81, 97, - 63, - 224, + 8, + 64, 132, 1, 81, @@ -14297,40 +14489,36 @@ pub mod inclusion_verifier { 192, 131, 1, + 129, + 144, 82, - 128, - 97, - 10, - 160, - 131, - 1, - 81, 97, - 64, + 57, 128, - 132, + 131, 1, 81, + 130, + 145, 9, 97, 75, 224, 131, 1, + 129, + 144, 82, - 128, 97, - 10, - 160, + 60, + 64, 131, 1, 81, - 97, - 65, - 32, - 132, - 1, - 81, + 130, + 145, + 130, + 3, 9, 97, 76, @@ -14340,14 +14528,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, - 160, + 60, + 64, 131, 1, 81, 97, - 65, - 192, + 62, + 64, 132, 1, 81, @@ -14360,37 +14548,34 @@ pub mod inclusion_verifier { 82, 128, 97, - 10, - 160, + 76, + 0, 131, 1, 81, 97, - 66, - 96, + 75, + 160, 132, 1, 81, - 9, + 8, 97, 76, 64, 131, 1, + 129, + 144, 82, - 128, 97, 10, - 160, + 224, 131, 1, 81, - 97, - 67, - 0, - 132, - 1, - 81, + 130, + 145, 9, 97, 76, @@ -14401,13 +14586,13 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 67, - 160, + 62, + 192, 132, 1, 81, @@ -14421,12 +14606,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 68, + 63, 64, 132, 1, @@ -14441,12 +14626,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 68, + 63, 224, 132, 1, @@ -14461,12 +14646,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 69, + 64, 128, 132, 1, @@ -14481,12 +14666,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 70, + 65, 32, 132, 1, @@ -14501,12 +14686,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 70, + 65, 192, 132, 1, @@ -14521,12 +14706,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 71, + 66, 96, 132, 1, @@ -14541,12 +14726,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 72, + 67, 0, 132, 1, @@ -14561,12 +14746,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 72, + 67, 160, 132, 1, @@ -14581,13 +14766,13 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 73, - 192, + 68, + 64, 132, 1, 81, @@ -14601,12 +14786,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 73, + 68, 224, 132, 1, @@ -14621,13 +14806,13 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, - 0, + 69, + 128, 132, 1, 81, @@ -14641,12 +14826,12 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, + 70, 32, 132, 1, @@ -14661,13 +14846,13 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, - 64, + 70, + 192, 132, 1, 81, @@ -14681,13 +14866,13 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, - 224, + 71, + 96, 132, 1, 81, @@ -14700,18 +14885,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 75, - 32, + 10, + 224, 131, 1, 81, 97, - 60, - 192, + 72, + 0, 132, 1, 81, - 8, + 9, 97, 78, 96, @@ -14720,13 +14905,17 @@ pub mod inclusion_verifier { 82, 128, 97, - 54, - 32, + 10, + 224, 131, 1, 81, - 96, + 97, + 72, + 160, + 132, 1, + 81, 9, 97, 78, @@ -14736,14 +14925,210 @@ pub mod inclusion_verifier { 82, 128, 97, - 50, + 10, + 224, + 131, + 1, + 81, + 97, + 73, + 64, + 132, + 1, + 81, + 9, + 97, + 78, + 160, + 131, + 1, + 82, + 128, + 97, + 10, + 224, + 131, + 1, + 81, + 97, + 73, + 224, + 132, + 1, + 81, + 9, + 97, + 78, + 192, + 131, + 1, + 82, + 128, + 97, + 10, + 224, + 131, + 1, + 81, + 97, + 75, 0, + 132, + 1, + 81, + 9, + 97, + 78, + 224, + 131, + 1, + 82, + 128, + 97, + 10, + 224, 131, 1, 81, 97, - 8, + 75, + 32, + 132, + 1, + 81, + 9, + 97, + 79, + 0, + 131, + 1, + 82, + 128, + 97, + 10, 224, + 131, + 1, + 81, + 97, + 75, + 64, + 132, + 1, + 81, + 9, + 97, + 79, + 32, + 131, + 1, + 82, + 128, + 97, + 10, + 224, + 131, + 1, + 81, + 97, + 75, + 96, + 132, + 1, + 81, + 9, + 97, + 79, + 64, + 131, + 1, + 82, + 128, + 97, + 10, + 224, + 131, + 1, + 81, + 97, + 75, + 128, + 132, + 1, + 81, + 9, + 97, + 79, + 96, + 131, + 1, + 82, + 128, + 97, + 10, + 224, + 131, + 1, + 81, + 97, + 76, + 32, + 132, + 1, + 81, + 9, + 97, + 79, + 128, + 131, + 1, + 82, + 128, + 97, + 76, + 96, + 131, + 1, + 81, + 97, + 62, + 0, + 132, + 1, + 81, + 8, + 97, + 79, + 160, + 131, + 1, + 82, + 128, + 97, + 55, + 96, + 131, + 1, + 81, + 96, + 1, + 9, + 97, + 79, + 192, + 131, + 1, + 82, + 128, + 97, + 51, + 64, + 131, + 1, + 81, + 97, + 9, + 32, 132, 1, 81, @@ -14752,14 +15137,14 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 32, + 51, + 96, 134, 1, 81, 97, 9, - 0, + 64, 135, 1, 81, @@ -14771,30 +15156,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 64, + 51, + 128, 134, 1, 81, 97, 9, - 32, + 96, 135, 1, 81, 9, 8, 97, - 78, - 160, + 79, + 224, 132, 1, 129, 144, 82, 97, - 56, - 96, + 57, + 160, 132, 1, 81, @@ -14804,8 +15189,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 78, - 192, + 80, + 0, 131, 1, 82, @@ -14813,8 +15198,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 78, - 192, + 80, + 0, 132, 1, 81, @@ -14822,8 +15207,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 78, - 224, + 80, + 32, 131, 1, 82, @@ -14831,82 +15216,82 @@ pub mod inclusion_verifier { 96, 1, 97, - 78, - 128, + 79, + 192, 132, 1, 81, 9, 97, - 79, - 0, + 80, + 64, 131, 1, 82, 128, 97, - 59, - 64, + 60, + 128, 131, 1, 81, 97, - 78, - 224, + 80, + 32, 132, 1, 81, 9, 97, - 79, - 32, + 80, + 96, 131, 1, 82, 128, 97, - 59, - 64, + 60, + 128, 131, 1, 81, 97, - 79, - 0, + 80, + 64, 132, 1, 81, 9, 97, - 79, - 64, + 80, + 128, 131, 1, 82, 128, 97, - 79, - 32, + 80, + 96, 131, 1, 81, 97, - 78, - 96, + 79, + 160, 132, 1, 81, 8, 97, - 79, - 96, + 80, + 160, 131, 1, 82, 128, 97, - 54, - 96, + 55, + 160, 131, 1, 81, @@ -14914,21 +15299,21 @@ pub mod inclusion_verifier { 1, 9, 97, - 79, - 128, + 80, + 192, 131, 1, 82, 128, 97, - 50, - 128, + 51, + 192, 131, 1, 81, 97, 9, - 64, + 128, 132, 1, 81, @@ -14937,30 +15322,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 160, + 51, + 224, 134, 1, 81, 97, 9, - 96, + 160, 135, 1, 81, 9, 8, 97, - 79, - 160, + 80, + 224, 132, 1, 129, 144, 82, 97, - 56, - 128, + 57, + 192, 132, 1, 81, @@ -14970,8 +15355,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 79, - 192, + 81, + 0, 131, 1, 82, @@ -14979,8 +15364,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 79, - 192, + 81, + 0, 132, 1, 81, @@ -14988,8 +15373,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 79, - 224, + 81, + 32, 131, 1, 82, @@ -14997,28 +15382,28 @@ pub mod inclusion_verifier { 96, 1, 97, - 79, - 128, + 80, + 192, 132, 1, 81, 9, 97, - 80, - 0, + 81, + 64, 131, 1, 82, 128, 97, - 50, - 128, + 51, + 192, 131, 1, 81, 97, 9, - 128, + 192, 132, 1, 81, @@ -15027,30 +15412,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 160, + 51, + 224, 134, 1, 81, 97, 9, - 160, + 224, 135, 1, 81, 9, 8, 97, - 80, - 32, + 81, + 96, 132, 1, 129, 144, 82, 97, - 56, - 128, + 57, + 192, 132, 1, 81, @@ -15060,8 +15445,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 80, - 64, + 81, + 128, 131, 1, 129, @@ -15069,7 +15454,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -15079,56 +15464,56 @@ pub mod inclusion_verifier { 3, 9, 97, - 80, - 96, + 81, + 160, 131, 1, 82, 128, 97, 10, - 64, + 128, 131, 1, 81, 97, - 79, - 128, + 80, + 192, 132, 1, 81, 9, 97, - 80, - 128, + 81, + 192, 131, 1, 82, 128, 97, - 80, - 96, + 81, + 160, 131, 1, 81, 97, - 79, - 224, + 81, + 32, 132, 1, 81, 8, 97, - 80, - 160, + 81, + 224, 131, 1, 129, 144, 82, 97, - 59, - 96, + 60, + 160, 131, 1, 81, @@ -15136,75 +15521,75 @@ pub mod inclusion_verifier { 145, 9, 97, - 80, - 192, + 82, + 0, 131, 1, 82, 128, 97, - 59, - 96, + 60, + 160, 131, 1, 81, 97, - 80, - 0, + 81, + 64, 132, 1, 81, 9, 97, - 80, - 224, + 82, + 32, 131, 1, 82, 128, 97, - 59, - 96, + 60, + 160, 131, 1, 81, 97, - 80, - 128, + 81, + 192, 132, 1, 81, 9, 97, - 81, - 0, + 82, + 64, 131, 1, 82, 128, 97, - 80, - 192, + 82, + 0, 131, 1, 81, 97, - 79, - 96, + 80, + 160, 132, 1, 81, 8, 97, - 81, - 32, + 82, + 96, 131, 1, 82, 128, 97, - 54, - 160, + 55, + 224, 131, 1, 81, @@ -15212,21 +15597,21 @@ pub mod inclusion_verifier { 1, 9, 97, - 81, - 64, + 82, + 128, 131, 1, 82, 128, 97, - 50, - 192, + 52, + 0, 131, 1, 81, 97, - 9, - 192, + 10, + 0, 132, 1, 81, @@ -15235,30 +15620,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 224, + 52, + 32, 134, 1, 81, 97, - 9, - 224, + 10, + 32, 135, 1, 81, 9, 8, 97, - 81, - 96, + 82, + 160, 132, 1, 129, 144, 82, 97, - 56, - 160, + 57, + 224, 132, 1, 81, @@ -15268,8 +15653,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 81, - 128, + 82, + 192, 131, 1, 82, @@ -15277,8 +15662,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 81, - 128, + 82, + 192, 132, 1, 81, @@ -15286,8 +15671,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 81, - 160, + 82, + 224, 131, 1, 82, @@ -15295,82 +15680,82 @@ pub mod inclusion_verifier { 96, 1, 97, - 81, - 64, + 82, + 128, 132, 1, 81, 9, 97, - 81, - 192, + 83, + 0, 131, 1, 82, 128, 97, - 59, - 128, + 60, + 192, 131, 1, 81, 97, - 81, - 160, + 82, + 224, 132, 1, 81, 9, 97, - 81, - 224, + 83, + 32, 131, 1, 82, 128, 97, - 59, - 128, + 60, + 192, 131, 1, 81, 97, - 81, - 192, + 83, + 0, 132, 1, 81, 9, 97, - 82, - 0, + 83, + 64, 131, 1, 82, 128, 97, - 81, - 224, + 83, + 32, 131, 1, 81, 97, - 81, - 32, + 82, + 96, 132, 1, 81, 8, 97, - 82, - 32, + 83, + 96, 131, 1, 82, 128, 97, - 49, - 192, + 51, + 0, 131, 1, 81, @@ -15378,15 +15763,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 82, - 64, + 83, + 128, 131, 1, 82, 128, 97, 11, - 64, + 128, 131, 1, 81, @@ -15394,16 +15779,16 @@ pub mod inclusion_verifier { 1, 9, 97, - 82, - 96, + 83, + 160, 131, 1, 82, 96, 1, 97, - 82, - 128, + 83, + 192, 131, 1, 129, @@ -15412,20 +15797,20 @@ pub mod inclusion_verifier { 96, 2, 97, - 82, - 160, + 83, + 224, 133, 1, 82, 97, - 82, - 32, + 83, + 96, 132, 1, 81, 97, - 82, - 192, + 84, + 0, 133, 1, 82, @@ -15447,48 +15832,48 @@ pub mod inclusion_verifier { 146, 80, 97, - 82, - 128, + 83, + 192, 130, 1, 81, 97, - 82, - 224, + 84, + 32, 131, 1, 82, 97, - 82, - 160, + 83, + 224, 130, 1, 81, 97, - 83, - 0, + 84, + 64, 131, 1, 82, 96, - 96, + 160, 130, 1, 81, 97, - 83, - 32, + 84, + 96, 131, 1, 82, 96, - 128, + 192, 130, 1, 81, 97, - 83, - 64, + 84, + 128, 131, 1, 82, @@ -15498,15 +15883,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 82, - 224, + 84, + 32, 133, 1, 96, 128, 97, - 82, - 224, + 84, + 32, 135, 1, 96, @@ -15518,36 +15903,37 @@ pub mod inclusion_verifier { 146, 80, 96, - 160, + 224, 130, 1, 81, 97, - 83, - 96, + 84, + 160, 131, 1, 82, - 96, - 192, + 97, + 1, + 0, 130, 1, 81, 97, - 83, - 128, + 84, + 192, 131, 1, 82, 97, - 60, - 224, + 62, + 32, 130, 1, 81, 97, - 83, - 160, + 84, + 224, 131, 1, 82, @@ -15557,15 +15943,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 83, - 96, + 84, + 160, 133, 1, 96, 96, 97, - 83, - 96, + 84, + 160, 135, 1, 96, @@ -15577,50 +15963,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 82, - 224, + 84, + 32, 130, 1, 81, 97, - 83, - 192, + 85, + 0, 131, 1, 82, 97, - 83, - 0, + 84, + 64, 130, 1, 81, 97, - 83, - 224, + 85, + 32, 131, 1, 82, 97, - 83, - 96, + 84, + 160, 130, 1, 81, 97, - 84, - 0, + 85, + 64, 131, 1, 82, 97, - 83, - 128, + 84, + 192, 130, 1, 81, 97, - 84, - 32, + 85, + 96, 131, 1, 82, @@ -15630,15 +16016,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 83, - 192, + 85, + 0, 133, 1, 96, 128, 97, - 83, - 192, + 85, + 0, 135, 1, 96, @@ -15649,38 +16035,39 @@ pub mod inclusion_verifier { 22, 146, 80, - 96, - 224, + 97, + 1, + 32, 130, 1, 81, 97, - 84, - 64, + 85, + 128, 131, 1, 82, 97, 1, - 0, + 64, 130, 1, 81, 97, - 84, - 96, + 85, + 160, 131, 1, 82, 97, - 75, - 64, + 76, + 128, 130, 1, 81, 97, - 84, - 128, + 85, + 192, 131, 1, 82, @@ -15690,15 +16077,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 84, - 64, + 85, + 128, 133, 1, 96, 96, 97, - 84, - 64, + 85, + 128, 135, 1, 96, @@ -15710,50 +16097,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 83, - 192, + 85, + 0, 130, 1, 81, 97, - 84, - 160, + 85, + 224, 131, 1, 82, 97, - 83, - 224, + 85, + 32, 130, 1, 81, 97, - 84, - 192, + 86, + 0, 131, 1, 82, 97, - 84, - 64, + 85, + 128, 130, 1, 81, 97, - 84, - 224, + 86, + 32, 131, 1, 82, 97, - 84, - 96, + 85, + 160, 130, 1, 81, 97, - 85, - 0, + 86, + 64, 131, 1, 82, @@ -15763,15 +16150,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 84, - 160, + 85, + 224, 133, 1, 96, 128, 97, - 84, - 160, + 85, + 224, 135, 1, 96, @@ -15783,38 +16170,38 @@ pub mod inclusion_verifier { 146, 80, 97, - 1, - 192, + 2, + 0, 130, 1, 81, 97, - 85, - 32, + 86, + 96, 131, 1, 82, 97, - 1, - 224, + 2, + 32, 130, 1, 81, 97, - 85, - 64, + 86, + 128, 131, 1, 82, 97, - 75, - 96, + 76, + 160, 130, 1, 81, 97, - 85, - 96, + 86, + 160, 131, 1, 82, @@ -15824,15 +16211,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 85, - 32, + 86, + 96, 133, 1, 96, 96, 97, - 85, - 32, + 86, + 96, 135, 1, 96, @@ -15844,50 +16231,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 84, - 160, + 85, + 224, 130, 1, 81, 97, - 85, - 128, + 86, + 192, 131, 1, 82, 97, - 84, - 192, + 86, + 0, 130, 1, 81, 97, - 85, - 160, + 86, + 224, 131, 1, 82, 97, - 85, - 32, + 86, + 96, 130, 1, 81, 97, - 85, - 192, + 87, + 0, 131, 1, 82, 97, - 85, - 64, + 86, + 128, 130, 1, 81, 97, - 85, - 224, + 87, + 32, 131, 1, 82, @@ -15897,15 +16284,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 85, - 128, + 86, + 192, 133, 1, 96, 128, 97, - 85, - 128, + 86, + 192, 135, 1, 96, @@ -15950,8 +16337,8 @@ pub mod inclusion_verifier { 82, 144, 97, - 86, - 0, + 87, + 64, 131, 1, 82, @@ -15989,20 +16376,20 @@ pub mod inclusion_verifier { 148, 252, 97, - 86, - 32, + 87, + 96, 131, 1, 82, 97, - 75, - 128, + 76, + 192, 130, 1, 81, 97, - 86, - 64, + 87, + 128, 131, 1, 82, @@ -16012,15 +16399,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 86, - 0, + 87, + 64, 133, 1, 96, 96, 97, - 86, - 0, + 87, + 64, 135, 1, 96, @@ -16032,50 +16419,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 85, - 128, + 86, + 192, 130, 1, 81, 97, - 86, - 96, + 87, + 160, 131, 1, 82, 97, - 85, - 160, + 86, + 224, 130, 1, 81, 97, - 86, - 128, + 87, + 192, 131, 1, 82, 97, - 86, - 0, + 87, + 64, 130, 1, 81, 97, - 86, - 160, + 87, + 224, 131, 1, 82, 97, - 86, - 32, + 87, + 96, 130, 1, 81, 97, - 86, - 192, + 88, + 0, 131, 1, 82, @@ -16085,15 +16472,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 86, - 96, + 87, + 160, 133, 1, 96, 128, 97, - 86, - 96, + 87, + 160, 135, 1, 96, @@ -16138,8 +16525,8 @@ pub mod inclusion_verifier { 145, 157, 97, - 86, - 224, + 88, + 32, 131, 1, 82, @@ -16177,20 +16564,20 @@ pub mod inclusion_verifier { 156, 81, 97, - 87, - 0, + 88, + 64, 131, 1, 82, 97, - 75, - 160, + 76, + 224, 130, 1, 81, 97, - 87, - 32, + 88, + 96, 131, 1, 82, @@ -16200,15 +16587,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 86, - 224, + 88, + 32, 133, 1, 96, 96, 97, - 86, - 224, + 88, + 32, 135, 1, 96, @@ -16220,50 +16607,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 86, - 96, + 87, + 160, 130, 1, 81, 97, - 87, - 64, + 88, + 128, 131, 1, 82, 97, - 86, - 128, + 87, + 192, 130, 1, 81, 97, - 87, - 96, + 88, + 160, 131, 1, 82, 97, - 86, - 224, + 88, + 32, 130, 1, 81, 97, - 87, - 128, + 88, + 192, 131, 1, 82, 97, - 87, - 0, + 88, + 64, 130, 1, 81, 97, - 87, - 160, + 88, + 224, 131, 1, 82, @@ -16273,15 +16660,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 87, - 64, + 88, + 128, 133, 1, 96, 128, 97, - 87, - 64, + 88, + 128, 135, 1, 96, @@ -16326,8 +16713,8 @@ pub mod inclusion_verifier { 7, 89, 97, - 87, - 192, + 89, + 0, 131, 1, 82, @@ -16365,20 +16752,20 @@ pub mod inclusion_verifier { 234, 131, 97, - 87, - 224, + 89, + 32, 131, 1, 82, 97, - 75, - 192, + 77, + 0, 130, 1, 81, 97, - 88, - 0, + 89, + 64, 131, 1, 82, @@ -16388,15 +16775,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 87, - 192, + 89, + 0, 133, 1, 96, 96, 97, - 87, - 192, + 89, + 0, 135, 1, 96, @@ -16408,50 +16795,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 87, - 64, + 88, + 128, 130, 1, 81, 97, - 88, - 32, + 89, + 96, 131, 1, 82, 97, - 87, - 96, + 88, + 160, 130, 1, 81, 97, - 88, - 64, + 89, + 128, 131, 1, 82, 97, - 87, - 192, + 89, + 0, 130, 1, 81, 97, - 88, - 96, + 89, + 160, 131, 1, 82, 97, - 87, - 224, + 89, + 32, 130, 1, 81, 97, - 88, - 128, + 89, + 192, 131, 1, 82, @@ -16461,15 +16848,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 88, - 32, + 89, + 96, 133, 1, 96, 128, 97, - 88, - 32, + 89, + 96, 135, 1, 96, @@ -16514,8 +16901,8 @@ pub mod inclusion_verifier { 66, 175, 97, - 88, - 160, + 89, + 224, 131, 1, 82, @@ -16553,20 +16940,20 @@ pub mod inclusion_verifier { 156, 67, 97, - 88, - 192, + 90, + 0, 131, 1, 82, 97, - 75, - 224, + 77, + 32, 130, 1, 81, 97, - 88, - 224, + 90, + 32, 131, 1, 82, @@ -16576,15 +16963,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 88, - 160, + 89, + 224, 133, 1, 96, 96, 97, - 88, - 160, + 89, + 224, 135, 1, 96, @@ -16596,50 +16983,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 88, - 32, + 89, + 96, 130, 1, 81, 97, - 89, - 0, + 90, + 64, 131, 1, 82, 97, - 88, - 64, + 89, + 128, 130, 1, 81, 97, - 89, - 32, + 90, + 96, 131, 1, 82, 97, - 88, - 160, + 89, + 224, 130, 1, 81, 97, - 89, - 64, + 90, + 128, 131, 1, 82, 97, - 88, - 192, + 90, + 0, 130, 1, 81, 97, - 89, - 96, + 90, + 160, 131, 1, 82, @@ -16649,15 +17036,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 89, - 0, + 90, + 64, 133, 1, 96, 128, 97, - 89, - 0, + 90, + 64, 135, 1, 96, @@ -16702,8 +17089,8 @@ pub mod inclusion_verifier { 186, 164, 97, - 89, - 128, + 90, + 192, 131, 1, 82, @@ -16741,20 +17128,20 @@ pub mod inclusion_verifier { 39, 192, 97, - 89, - 160, + 90, + 224, 131, 1, 82, 97, - 76, - 0, + 77, + 64, 130, 1, 81, 97, - 89, - 192, + 91, + 0, 131, 1, 82, @@ -16764,15 +17151,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 89, - 128, + 90, + 192, 133, 1, 96, 96, 97, - 89, - 128, + 90, + 192, 135, 1, 96, @@ -16784,50 +17171,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 89, - 0, + 90, + 64, 130, 1, 81, 97, - 89, - 224, + 91, + 32, 131, 1, 82, 97, - 89, - 32, + 90, + 96, 130, 1, 81, 97, - 90, - 0, + 91, + 64, 131, 1, 82, 97, - 89, - 128, + 90, + 192, 130, 1, 81, 97, - 90, - 32, + 91, + 96, 131, 1, 82, 97, - 89, - 160, + 90, + 224, 130, 1, 81, 97, - 90, - 64, + 91, + 128, 131, 1, 82, @@ -16837,15 +17224,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 89, - 224, + 91, + 32, 133, 1, 96, 128, 97, - 89, - 224, + 91, + 32, 135, 1, 96, @@ -16890,8 +17277,8 @@ pub mod inclusion_verifier { 247, 237, 97, - 90, - 96, + 91, + 160, 131, 1, 82, @@ -16929,20 +17316,20 @@ pub mod inclusion_verifier { 54, 207, 97, - 90, - 128, + 91, + 192, 131, 1, 82, 97, - 76, - 32, + 77, + 96, 130, 1, 81, 97, - 90, - 160, + 91, + 224, 131, 1, 82, @@ -16952,15 +17339,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 90, - 96, + 91, + 160, 133, 1, 96, 96, 97, - 90, - 96, + 91, + 160, 135, 1, 96, @@ -16972,50 +17359,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 89, - 224, + 91, + 32, 130, 1, 81, 97, - 90, - 192, + 92, + 0, 131, 1, 82, 97, - 90, - 0, + 91, + 64, 130, 1, 81, 97, - 90, - 224, + 92, + 32, 131, 1, 82, 97, - 90, - 96, + 91, + 160, 130, 1, 81, 97, - 91, - 0, + 92, + 64, 131, 1, 82, 97, - 90, - 128, + 91, + 192, 130, 1, 81, 97, - 91, - 32, + 92, + 96, 131, 1, 82, @@ -17025,15 +17412,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 90, - 192, + 92, + 0, 133, 1, 96, 128, 97, - 90, - 192, + 92, + 0, 135, 1, 96, @@ -17078,8 +17465,8 @@ pub mod inclusion_verifier { 89, 229, 97, - 91, - 64, + 92, + 128, 131, 1, 82, @@ -17117,20 +17504,20 @@ pub mod inclusion_verifier { 153, 210, 97, - 91, - 96, + 92, + 160, 131, 1, 82, 97, - 76, - 64, + 77, + 128, 130, 1, 81, 97, - 91, - 128, + 92, + 192, 131, 1, 82, @@ -17140,15 +17527,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 91, - 64, + 92, + 128, 133, 1, 96, 96, 97, - 91, - 64, + 92, + 128, 135, 1, 96, @@ -17160,50 +17547,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 90, - 192, + 92, + 0, 130, 1, 81, 97, - 91, - 160, + 92, + 224, 131, 1, 82, 97, - 90, - 224, + 92, + 32, 130, 1, 81, 97, - 91, - 192, + 93, + 0, 131, 1, 82, 97, - 91, - 64, + 92, + 128, 130, 1, 81, 97, - 91, - 224, + 93, + 32, 131, 1, 82, 97, - 91, - 96, + 92, + 160, 130, 1, 81, 97, - 92, - 0, + 93, + 64, 131, 1, 82, @@ -17213,15 +17600,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 91, - 160, + 92, + 224, 133, 1, 96, 128, 97, - 91, - 160, + 92, + 224, 135, 1, 96, @@ -17266,8 +17653,8 @@ pub mod inclusion_verifier { 27, 54, 97, - 92, - 32, + 93, + 96, 131, 1, 82, @@ -17305,20 +17692,20 @@ pub mod inclusion_verifier { 72, 144, 97, - 92, - 64, + 93, + 128, 131, 1, 82, 97, - 76, - 96, + 77, + 160, 130, 1, 81, 97, - 92, - 96, + 93, + 160, 131, 1, 82, @@ -17328,15 +17715,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 92, - 32, + 93, + 96, 133, 1, 96, 96, 97, - 92, - 32, + 93, + 96, 135, 1, 96, @@ -17348,50 +17735,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 91, - 160, + 92, + 224, 130, 1, 81, 97, - 92, - 128, + 93, + 192, 131, 1, 82, 97, - 91, - 192, + 93, + 0, 130, 1, 81, 97, - 92, - 160, + 93, + 224, 131, 1, 82, 97, - 92, - 32, + 93, + 96, 130, 1, 81, 97, - 92, - 192, + 94, + 0, 131, 1, 82, 97, - 92, - 64, + 93, + 128, 130, 1, 81, 97, - 92, - 224, + 94, + 32, 131, 1, 82, @@ -17401,15 +17788,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 92, - 128, + 93, + 192, 133, 1, 96, 128, 97, - 92, - 128, + 93, + 192, 135, 1, 96, @@ -17454,8 +17841,8 @@ pub mod inclusion_verifier { 75, 159, 97, - 93, - 0, + 94, + 64, 131, 1, 82, @@ -17493,20 +17880,20 @@ pub mod inclusion_verifier { 195, 157, 97, - 93, - 32, + 94, + 96, 131, 1, 82, 97, - 76, - 128, + 77, + 192, 130, 1, 81, 97, - 93, - 64, + 94, + 128, 131, 1, 82, @@ -17516,15 +17903,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 93, - 0, + 94, + 64, 133, 1, 96, 96, 97, - 93, - 0, + 94, + 64, 135, 1, 96, @@ -17536,50 +17923,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 92, - 128, + 93, + 192, 130, 1, 81, 97, - 93, - 96, + 94, + 160, 131, 1, 82, 97, - 92, - 160, + 93, + 224, 130, 1, 81, 97, - 93, - 128, + 94, + 192, 131, 1, 82, 97, - 93, - 0, + 94, + 64, 130, 1, 81, 97, - 93, - 160, + 94, + 224, 131, 1, 82, 97, - 93, - 32, + 94, + 96, 130, 1, 81, 97, - 93, - 192, + 95, + 0, 131, 1, 82, @@ -17589,15 +17976,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 93, - 96, + 94, + 160, 133, 1, 96, 128, 97, - 93, - 96, + 94, + 160, 135, 1, 96, @@ -17642,8 +18029,8 @@ pub mod inclusion_verifier { 17, 108, 97, - 93, - 224, + 95, + 32, 131, 1, 82, @@ -17681,20 +18068,20 @@ pub mod inclusion_verifier { 123, 104, 97, - 94, - 0, + 95, + 64, 131, 1, 82, 97, - 76, - 160, + 77, + 224, 130, 1, 81, 97, - 94, - 32, + 95, + 96, 131, 1, 82, @@ -17704,15 +18091,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 93, - 224, + 95, + 32, 133, 1, 96, 96, 97, - 93, - 224, + 95, + 32, 135, 1, 96, @@ -17724,50 +18111,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 93, - 96, + 94, + 160, 130, 1, 81, 97, - 94, - 64, + 95, + 128, 131, 1, 82, 97, - 93, - 128, + 94, + 192, 130, 1, 81, 97, - 94, - 96, + 95, + 160, 131, 1, 82, 97, - 93, - 224, + 95, + 32, 130, 1, 81, 97, - 94, - 128, + 95, + 192, 131, 1, 82, 97, - 94, - 0, + 95, + 64, 130, 1, 81, 97, - 94, - 160, + 95, + 224, 131, 1, 82, @@ -17777,15 +18164,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 94, - 64, + 95, + 128, 133, 1, 96, 128, 97, - 94, - 64, + 95, + 128, 135, 1, 96, @@ -17830,8 +18217,8 @@ pub mod inclusion_verifier { 215, 1, 97, - 94, - 192, + 96, + 0, 131, 1, 82, @@ -17869,20 +18256,20 @@ pub mod inclusion_verifier { 158, 138, 97, - 94, - 224, + 96, + 32, 131, 1, 82, 97, - 76, - 192, + 78, + 0, 130, 1, 81, 97, - 95, - 0, + 96, + 64, 131, 1, 82, @@ -17892,15 +18279,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 94, - 192, + 96, + 0, 133, 1, 96, 96, 97, - 94, - 192, + 96, + 0, 135, 1, 96, @@ -17912,50 +18299,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 94, - 64, + 95, + 128, 130, 1, 81, 97, - 95, - 32, + 96, + 96, 131, 1, 82, 97, - 94, - 96, + 95, + 160, 130, 1, 81, 97, - 95, - 64, + 96, + 128, 131, 1, 82, 97, - 94, - 192, + 96, + 0, 130, 1, 81, 97, - 95, 96, + 160, 131, 1, 82, 97, - 94, - 224, + 96, + 32, 130, 1, 81, 97, - 95, - 128, + 96, + 192, 131, 1, 82, @@ -17965,15 +18352,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 95, - 32, + 96, + 96, 133, 1, 96, 128, 97, - 95, - 32, + 96, + 96, 135, 1, 96, @@ -18018,8 +18405,8 @@ pub mod inclusion_verifier { 104, 77, 97, - 95, - 160, + 96, + 224, 131, 1, 82, @@ -18057,20 +18444,20 @@ pub mod inclusion_verifier { 76, 166, 97, - 95, - 192, + 97, + 0, 131, 1, 82, 97, - 76, - 224, + 78, + 32, 130, 1, 81, 97, - 95, - 224, + 97, + 32, 131, 1, 82, @@ -18080,15 +18467,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 95, - 160, + 96, + 224, 133, 1, 96, 96, 97, - 95, - 160, + 96, + 224, 135, 1, 96, @@ -18100,50 +18487,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 95, - 32, + 96, + 96, 130, 1, 81, 97, - 96, - 0, + 97, + 64, 131, 1, 82, 97, - 95, - 64, + 96, + 128, 130, 1, 81, 97, + 97, 96, - 32, 131, 1, 82, 97, - 95, - 160, + 96, + 224, 130, 1, 81, 97, - 96, - 64, + 97, + 128, 131, 1, 82, 97, - 95, - 192, + 97, + 0, 130, 1, 81, 97, - 96, - 96, + 97, + 160, 131, 1, 82, @@ -18153,15 +18540,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 96, - 0, + 97, + 64, 133, 1, 96, 128, 97, - 96, - 0, + 97, + 64, 135, 1, 96, @@ -18173,92 +18560,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 36, - 2, - 219, - 75, - 28, - 119, - 70, - 220, - 217, - 254, - 126, - 171, - 130, - 171, - 63, - 167, - 235, - 177, - 189, - 53, - 42, - 154, - 249, - 78, + 45, + 236, + 57, + 41, + 224, + 123, + 66, + 118, + 33, + 82, + 151, + 245, 246, - 129, - 27, - 42, + 83, + 179, + 236, + 107, 249, + 185, + 16, + 0, + 102, + 120, 171, - 111, - 142, + 60, + 61, + 103, + 101, + 64, + 1, + 214, + 218, 97, - 96, - 128, + 97, + 192, 131, 1, 82, 127, - 42, - 0, - 71, - 236, - 8, - 162, - 84, - 117, - 60, - 70, - 102, - 72, - 240, - 220, + 32, + 185, + 199, + 233, + 166, + 194, + 158, + 49, + 233, + 22, + 73, + 98, + 222, + 154, + 4, + 120, + 170, + 151, 110, - 7, - 126, - 136, - 229, + 114, + 162, + 226, + 208, + 233, + 201, + 171, + 111, + 171, + 187, + 32, + 186, 73, - 88, - 41, - 195, - 168, - 69, - 135, - 59, - 144, - 88, - 191, - 68, - 7, 97, - 96, - 160, + 97, + 224, 131, 1, 82, 97, - 77, - 0, + 78, + 64, 130, 1, 81, 97, - 96, - 192, + 98, + 0, 131, 1, 82, @@ -18268,15 +18655,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 96, - 128, + 97, + 192, 133, 1, 96, 96, 97, - 96, - 128, + 97, + 192, 135, 1, 96, @@ -18288,50 +18675,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 96, - 0, + 97, + 64, 130, 1, 81, 97, - 96, - 224, + 98, + 32, 131, 1, 82, 97, + 97, 96, - 32, 130, 1, 81, 97, - 97, - 0, + 98, + 64, 131, 1, 82, 97, - 96, - 128, + 97, + 192, 130, 1, 81, 97, - 97, - 32, + 98, + 96, 131, 1, 82, 97, - 96, - 160, + 97, + 224, 130, 1, 81, 97, - 97, - 64, + 98, + 128, 131, 1, 82, @@ -18341,15 +18728,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 96, - 224, + 98, + 32, 133, 1, 96, 128, 97, - 96, - 224, + 98, + 32, 135, 1, 96, @@ -18394,8 +18781,8 @@ pub mod inclusion_verifier { 26, 26, 97, - 97, - 96, + 98, + 160, 131, 1, 82, @@ -18433,20 +18820,20 @@ pub mod inclusion_verifier { 14, 40, 97, - 97, - 128, + 98, + 192, 131, 1, 82, 97, - 77, - 32, + 78, + 96, 130, 1, 81, 97, - 97, - 160, + 98, + 224, 131, 1, 82, @@ -18456,15 +18843,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 97, - 96, + 98, + 160, 133, 1, 96, 96, 97, - 97, - 96, + 98, + 160, 135, 1, 96, @@ -18476,50 +18863,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 96, - 224, + 98, + 32, 130, 1, 81, 97, - 97, - 192, + 99, + 0, 131, 1, 82, 97, - 97, - 0, + 98, + 64, 130, 1, 81, 97, - 97, - 224, + 99, + 32, 131, 1, 82, 97, - 97, - 96, + 98, + 160, 130, 1, 81, 97, - 98, - 0, + 99, + 64, 131, 1, 82, 97, - 97, - 128, + 98, + 192, 130, 1, 81, 97, - 98, - 32, + 99, + 96, 131, 1, 82, @@ -18529,15 +18916,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 97, - 192, + 99, + 0, 133, 1, 96, 128, 97, - 97, - 192, + 99, + 0, 135, 1, 96, @@ -18582,8 +18969,8 @@ pub mod inclusion_verifier { 41, 116, 97, - 98, - 64, + 99, + 128, 131, 1, 82, @@ -18621,20 +19008,20 @@ pub mod inclusion_verifier { 25, 227, 97, - 98, - 96, + 99, + 160, 131, 1, 82, 97, - 77, - 64, + 78, + 128, 130, 1, 81, 97, - 98, - 128, + 99, + 192, 131, 1, 82, @@ -18644,15 +19031,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 98, - 64, + 99, + 128, 133, 1, 96, 96, 97, - 98, - 64, + 99, + 128, 135, 1, 96, @@ -18664,50 +19051,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 97, - 192, + 99, + 0, 130, 1, 81, 97, - 98, - 160, + 99, + 224, 131, 1, 82, 97, - 97, - 224, + 99, + 32, 130, 1, 81, 97, - 98, - 192, + 100, + 0, 131, 1, 82, 97, - 98, - 64, + 99, + 128, 130, 1, 81, 97, - 98, - 224, + 100, + 32, 131, 1, 82, 97, - 98, - 96, + 99, + 160, 130, 1, 81, 97, - 99, - 0, + 100, + 64, 131, 1, 82, @@ -18717,15 +19104,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 98, - 160, + 99, + 224, 133, 1, 96, 128, 97, - 98, - 160, + 99, + 224, 135, 1, 96, @@ -18770,8 +19157,8 @@ pub mod inclusion_verifier { 10, 42, 97, - 99, - 32, + 100, + 96, 131, 1, 82, @@ -18808,208 +19195,20 @@ pub mod inclusion_verifier { 188, 86, 97, - 99, - 64, - 131, - 1, - 82, - 97, - 77, - 96, - 130, - 1, - 81, - 97, - 99, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 32, - 133, - 1, - 96, - 96, - 97, - 99, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 98, - 160, - 130, - 1, - 81, - 97, - 99, + 100, 128, 131, 1, 82, 97, - 98, - 192, - 130, - 1, - 81, - 97, - 99, + 78, 160, - 131, - 1, - 82, - 97, - 99, - 32, - 130, - 1, - 81, - 97, - 99, - 192, - 131, - 1, - 82, - 97, - 99, - 64, - 130, - 1, - 81, - 97, - 99, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 128, - 133, - 1, - 96, - 128, - 97, - 99, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 41, - 3, - 167, - 99, - 193, - 198, - 183, - 134, - 103, - 249, - 6, - 182, - 254, - 43, - 74, - 209, - 151, - 181, - 85, - 135, - 201, - 14, - 20, - 232, - 80, - 36, - 70, - 218, - 140, - 69, - 239, - 125, - 97, - 100, - 0, - 131, - 1, - 82, - 127, - 19, - 234, - 87, - 152, - 111, - 146, - 149, - 233, - 45, - 239, - 51, - 3, - 174, - 245, - 63, - 43, - 79, - 98, - 91, - 169, - 133, - 83, - 18, - 1, - 171, - 83, - 220, - 115, - 7, - 244, - 107, - 105, - 97, - 100, - 32, - 131, - 1, - 82, - 97, - 77, - 128, 130, 1, 81, 97, 100, - 64, + 160, 131, 1, 82, @@ -19020,14 +19219,14 @@ pub mod inclusion_verifier { 64, 97, 100, - 0, + 96, 133, 1, 96, 96, 97, 100, - 0, + 96, 135, 1, 96, @@ -19040,49 +19239,49 @@ pub mod inclusion_verifier { 80, 97, 99, - 128, + 224, 130, 1, 81, 97, 100, - 96, + 192, 131, 1, 82, 97, - 99, - 160, + 100, + 0, 130, 1, 81, 97, 100, - 128, + 224, 131, 1, 82, 97, 100, - 0, + 96, 130, 1, 81, 97, - 100, - 160, + 101, + 0, 131, 1, 82, 97, 100, - 32, + 128, 130, 1, 81, 97, - 100, - 192, + 101, + 32, 131, 1, 82, @@ -19093,14 +19292,14 @@ pub mod inclusion_verifier { 64, 97, 100, - 96, + 192, 133, 1, 96, 128, 97, 100, - 96, + 192, 135, 1, 96, @@ -19111,39 +19310,93 @@ pub mod inclusion_verifier { 22, 146, 80, - 97, - 4, + 127, 32, - 130, + 226, + 199, + 44, + 119, + 188, + 193, + 76, + 14, + 152, 1, - 81, - 97, - 100, + 212, + 125, + 58, + 180, + 38, + 116, + 2, + 122, + 130, + 205, 224, + 149, + 95, + 27, + 23, + 229, + 202, + 210, + 94, + 223, + 176, + 97, + 101, + 64, 131, 1, 82, + 127, + 3, + 80, + 222, + 175, + 43, + 207, + 67, + 5, + 232, + 17, + 186, + 129, + 28, + 202, + 174, + 131, + 214, + 103, 97, - 4, - 64, - 130, - 1, - 81, + 98, + 126, + 10, + 78, + 173, + 225, + 32, + 92, + 28, + 176, + 207, + 205, + 120, 97, 101, - 0, + 96, 131, 1, 82, 97, - 77, - 160, + 78, + 192, 130, 1, 81, 97, 101, - 32, + 128, 131, 1, 82, @@ -19153,15 +19406,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 100, - 224, + 101, + 64, 133, 1, 96, 96, 97, - 100, - 224, + 101, + 64, 135, 1, 96, @@ -19174,49 +19427,49 @@ pub mod inclusion_verifier { 80, 97, 100, - 96, + 192, 130, 1, 81, 97, 101, - 64, + 160, 131, 1, 82, 97, 100, - 128, + 224, 130, 1, 81, 97, 101, - 96, + 192, 131, 1, 82, 97, - 100, - 224, + 101, + 64, 130, 1, 81, 97, 101, - 128, + 224, 131, 1, 82, 97, 101, - 0, + 96, 130, 1, 81, 97, - 101, - 160, + 102, + 0, 131, 1, 82, @@ -19227,14 +19480,14 @@ pub mod inclusion_verifier { 64, 97, 101, - 64, + 160, 133, 1, 96, 128, 97, 101, - 64, + 160, 135, 1, 96, @@ -19252,8 +19505,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 101, - 192, + 102, + 32, 131, 1, 82, @@ -19264,20 +19517,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 101, - 224, + 102, + 64, 131, 1, 82, 97, - 77, - 192, + 78, + 224, 130, 1, 81, 97, 102, - 0, + 96, 131, 1, 82, @@ -19287,15 +19540,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 101, - 192, + 102, + 32, 133, 1, 96, 96, 97, - 101, - 192, + 102, + 32, 135, 1, 96, @@ -19308,49 +19561,49 @@ pub mod inclusion_verifier { 80, 97, 101, - 64, + 160, 130, 1, 81, 97, 102, - 32, + 128, 131, 1, 82, 97, 101, - 96, + 192, 130, 1, 81, 97, 102, - 64, + 160, 131, 1, 82, 97, - 101, - 192, + 102, + 32, 130, 1, 81, 97, 102, - 96, + 192, 131, 1, 82, 97, - 101, - 224, + 102, + 64, 130, 1, 81, 97, 102, - 128, + 224, 131, 1, 82, @@ -19361,14 +19614,14 @@ pub mod inclusion_verifier { 64, 97, 102, - 32, + 128, 133, 1, 96, 128, 97, 102, - 32, + 128, 135, 1, 96, @@ -19386,8 +19639,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 102, - 160, + 103, + 0, 131, 1, 82, @@ -19398,20 +19651,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 102, - 192, + 103, + 32, 131, 1, 82, 97, - 77, - 224, + 79, + 0, 130, 1, 81, 97, - 102, - 224, + 103, + 64, 131, 1, 82, @@ -19421,15 +19674,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 102, - 160, + 103, + 0, 133, 1, 96, 96, 97, - 102, - 160, + 103, + 0, 135, 1, 96, @@ -19442,49 +19695,49 @@ pub mod inclusion_verifier { 80, 97, 102, - 32, + 128, 130, 1, 81, 97, 103, - 0, + 96, 131, 1, 82, 97, 102, - 64, + 160, 130, 1, 81, 97, 103, - 32, + 128, 131, 1, 82, 97, - 102, - 160, + 103, + 0, 130, 1, 81, 97, 103, - 64, + 160, 131, 1, 82, 97, - 102, - 192, + 103, + 32, 130, 1, 81, 97, 103, - 96, + 192, 131, 1, 82, @@ -19495,14 +19748,14 @@ pub mod inclusion_verifier { 64, 97, 103, - 0, + 96, 133, 1, 96, 128, 97, 103, - 0, + 96, 135, 1, 96, @@ -19521,7 +19774,7 @@ pub mod inclusion_verifier { 81, 97, 103, - 128, + 224, 131, 1, 82, @@ -19532,20 +19785,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 103, - 160, + 104, + 0, 131, 1, 82, 97, - 78, - 0, + 79, + 32, 130, 1, 81, 97, - 103, - 192, + 104, + 32, 131, 1, 82, @@ -19556,14 +19809,14 @@ pub mod inclusion_verifier { 64, 97, 103, - 128, + 224, 133, 1, 96, 96, 97, 103, - 128, + 224, 135, 1, 96, @@ -19576,49 +19829,49 @@ pub mod inclusion_verifier { 80, 97, 103, - 0, + 96, 130, 1, 81, 97, - 103, - 224, + 104, + 64, 131, 1, 82, 97, 103, - 32, + 128, 130, 1, 81, 97, 104, - 0, + 96, 131, 1, 82, 97, 103, - 128, + 224, 130, 1, 81, 97, 104, - 32, + 128, 131, 1, 82, 97, - 103, - 160, + 104, + 0, 130, 1, 81, 97, 104, - 64, + 160, 131, 1, 82, @@ -19628,15 +19881,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 103, - 224, + 104, + 64, 133, 1, 96, 128, 97, - 103, - 224, + 104, + 64, 135, 1, 96, @@ -19655,7 +19908,7 @@ pub mod inclusion_verifier { 81, 97, 104, - 96, + 192, 131, 1, 82, @@ -19667,19 +19920,19 @@ pub mod inclusion_verifier { 81, 97, 104, - 128, + 224, 131, 1, 82, 97, - 78, - 32, + 79, + 64, 130, 1, 81, 97, - 104, - 160, + 105, + 0, 131, 1, 82, @@ -19690,14 +19943,14 @@ pub mod inclusion_verifier { 64, 97, 104, - 96, + 192, 133, 1, 96, 96, 97, 104, - 96, + 192, 135, 1, 96, @@ -19709,50 +19962,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 103, - 224, + 104, + 64, 130, 1, 81, 97, - 104, - 192, + 105, + 32, 131, 1, 82, 97, 104, - 0, + 96, 130, 1, 81, 97, - 104, - 224, + 105, + 64, 131, 1, 82, 97, 104, - 96, + 192, 130, 1, 81, 97, 105, - 0, + 96, 131, 1, 82, 97, 104, - 128, + 224, 130, 1, 81, 97, 105, - 32, + 128, 131, 1, 82, @@ -19762,15 +20015,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 104, - 192, + 105, + 32, 133, 1, 96, 128, 97, - 104, - 192, + 105, + 32, 135, 1, 96, @@ -19782,38 +20035,38 @@ pub mod inclusion_verifier { 146, 80, 97, - 3, - 128, + 5, + 96, 130, 1, 81, 97, 105, - 64, + 160, 131, 1, 82, 97, - 3, - 160, + 5, + 128, 130, 1, 81, 97, 105, - 96, + 192, 131, 1, 82, 97, - 78, - 64, + 79, + 96, 130, 1, 81, 97, 105, - 128, + 224, 131, 1, 82, @@ -19824,14 +20077,14 @@ pub mod inclusion_verifier { 64, 97, 105, - 64, + 160, 133, 1, 96, 96, 97, 105, - 64, + 160, 135, 1, 96, @@ -19843,50 +20096,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 104, - 192, + 105, + 32, 130, 1, 81, 97, - 105, - 160, + 106, + 0, 131, 1, 82, 97, - 104, - 224, + 105, + 64, 130, 1, 81, 97, - 105, - 192, + 106, + 32, 131, 1, 82, 97, 105, - 64, + 160, 130, 1, 81, 97, - 105, - 224, + 106, + 64, 131, 1, 82, 97, 105, - 96, + 192, 130, 1, 81, 97, 106, - 0, + 96, 131, 1, 82, @@ -19896,15 +20149,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 105, - 160, + 106, + 0, 133, 1, 96, 128, 97, - 105, - 160, + 106, + 0, 135, 1, 96, @@ -19916,38 +20169,38 @@ pub mod inclusion_verifier { 146, 80, 97, - 2, + 3, 192, 130, 1, 81, 97, 106, - 32, + 128, 131, 1, 82, 97, - 2, + 3, 224, 130, 1, 81, 97, 106, - 64, + 160, 131, 1, 82, 97, 79, - 64, + 128, 130, 1, 81, 97, 106, - 96, + 192, 131, 1, 82, @@ -19958,14 +20211,14 @@ pub mod inclusion_verifier { 64, 97, 106, - 32, + 128, 133, 1, 96, 96, 97, 106, - 32, + 128, 135, 1, 96, @@ -19977,68 +20230,202 @@ pub mod inclusion_verifier { 146, 80, 97, - 105, - 160, + 106, + 0, 130, 1, 81, 97, 106, - 128, + 224, 131, 1, 82, 97, - 105, - 192, + 106, + 32, + 130, + 1, + 81, + 97, + 107, + 0, + 131, + 1, + 82, + 97, + 106, + 128, 130, 1, 81, 97, + 107, + 32, + 131, + 1, + 82, + 97, 106, 160, + 130, + 1, + 81, + 97, + 107, + 64, 131, 1, 82, + 130, + 96, + 1, + 96, + 64, + 97, + 106, + 224, + 133, + 1, + 96, + 128, 97, 106, + 224, + 135, + 1, + 96, + 6, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 3, + 0, + 130, + 1, + 81, + 97, + 107, + 96, + 131, + 1, + 82, + 97, + 3, 32, 130, 1, 81, 97, + 107, + 128, + 131, + 1, + 82, + 97, + 80, + 128, + 130, + 1, + 81, + 97, + 107, + 160, + 131, + 1, + 82, + 130, + 96, + 1, + 96, + 64, + 97, + 107, + 96, + 133, + 1, + 96, + 96, + 97, + 107, + 96, + 135, + 1, + 96, + 7, + 90, + 250, + 20, + 22, + 146, + 80, + 97, 106, + 224, + 130, + 1, + 81, + 97, + 107, 192, 131, 1, 82, 97, - 106, - 64, + 107, + 0, 130, 1, 81, 97, - 106, + 107, 224, 131, 1, 82, + 97, + 107, + 96, + 130, + 1, + 81, + 97, + 108, + 0, + 131, + 1, + 82, + 97, + 107, + 128, + 130, + 1, + 81, + 97, + 108, + 32, + 131, + 1, + 82, 130, 96, 1, 96, 64, 97, - 106, - 128, + 107, + 192, 133, 1, 96, 128, 97, - 106, - 128, + 107, + 192, 135, 1, 96, @@ -20051,37 +20438,37 @@ pub mod inclusion_verifier { 80, 97, 3, - 0, + 64, 130, 1, 81, 97, - 107, - 0, + 108, + 64, 131, 1, 82, 97, 3, - 32, + 96, 130, 1, 81, 97, - 107, - 32, + 108, + 96, 131, 1, 82, 97, - 80, - 224, + 82, + 32, 130, 1, 81, 97, - 107, - 64, + 108, + 128, 131, 1, 82, @@ -20091,15 +20478,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 107, - 0, + 108, + 64, 133, 1, 96, 96, 97, - 107, - 0, + 108, + 64, 135, 1, 96, @@ -20111,50 +20498,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 106, - 128, + 107, + 192, 130, 1, 81, 97, - 107, - 96, + 108, + 160, 131, 1, 82, 97, - 106, - 160, + 107, + 224, 130, 1, 81, 97, - 107, - 128, + 108, + 192, 131, 1, 82, 97, - 107, - 0, + 108, + 64, 130, 1, 81, 97, - 107, - 160, + 108, + 224, 131, 1, 82, 97, - 107, - 32, + 108, + 96, 130, 1, 81, 97, - 107, - 192, + 109, + 0, 131, 1, 82, @@ -20164,15 +20551,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 107, - 96, + 108, + 160, 133, 1, 96, 128, 97, - 107, - 96, + 108, + 160, 135, 1, 96, @@ -20185,37 +20572,37 @@ pub mod inclusion_verifier { 80, 97, 3, - 64, + 128, 130, 1, 81, 97, - 107, - 224, + 109, + 32, 131, 1, 82, 97, 3, - 96, + 160, 130, 1, 81, 97, - 108, - 0, + 109, + 64, 131, 1, 82, 97, - 81, - 0, + 82, + 64, 130, 1, 81, 97, - 108, - 32, + 109, + 96, 131, 1, 82, @@ -20225,15 +20612,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 107, - 224, + 109, + 32, 133, 1, 96, 96, 97, - 107, - 224, + 109, + 32, 135, 1, 96, @@ -20245,50 +20632,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 107, - 96, + 108, + 160, 130, 1, 81, 97, - 108, - 64, + 109, + 128, 131, 1, 82, 97, - 107, - 128, + 108, + 192, 130, 1, 81, 97, - 108, - 96, + 109, + 160, 131, 1, 82, 97, - 107, - 224, + 109, + 32, 130, 1, 81, 97, - 108, - 128, + 109, + 192, 131, 1, 82, 97, - 108, - 0, + 109, + 64, 130, 1, 81, 97, - 108, - 160, + 109, + 224, 131, 1, 82, @@ -20298,15 +20685,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 108, - 64, + 109, + 128, 133, 1, 96, 128, 97, - 108, - 64, + 109, + 128, 135, 1, 96, @@ -20319,37 +20706,37 @@ pub mod inclusion_verifier { 80, 97, 1, - 128, + 192, 130, 1, 81, 97, - 108, - 192, + 110, + 0, 131, 1, 82, 97, 1, - 160, + 224, 130, 1, 81, 97, - 108, - 224, + 110, + 32, 131, 1, 82, 97, - 82, - 0, + 83, + 64, 130, 1, 81, 97, - 109, - 0, + 110, + 64, 131, 1, 82, @@ -20359,15 +20746,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 108, - 192, + 110, + 0, 133, 1, 96, 96, 97, - 108, - 192, + 110, + 0, 135, 1, 96, @@ -20379,50 +20766,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 108, - 64, + 109, + 128, 130, 1, 81, 97, - 109, - 32, + 110, + 96, 131, 1, 82, 97, - 108, - 96, + 109, + 160, 130, 1, 81, 97, - 109, - 64, + 110, + 128, 131, 1, 82, 97, - 108, - 192, + 110, + 0, 130, 1, 81, 97, - 109, - 96, + 110, + 160, 131, 1, 82, 97, - 108, - 224, + 110, + 32, 130, 1, 81, 97, - 109, - 128, + 110, + 192, 131, 1, 82, @@ -20432,15 +20819,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 109, - 32, + 110, + 96, 133, 1, 96, 128, 97, - 109, - 32, + 110, + 96, 135, 1, 96, @@ -20452,40 +20839,40 @@ pub mod inclusion_verifier { 146, 80, 97, - 10, - 224, + 11, + 32, 130, 1, 81, 97, - 109, - 160, + 110, + 224, 131, 1, 82, 97, 11, - 0, + 64, 130, 1, 81, 97, - 109, - 192, + 111, + 0, 131, 1, 82, 97, - 82, - 64, + 83, + 128, 130, 1, 81, 129, 3, 97, - 109, - 224, + 111, + 32, 131, 1, 82, @@ -20496,15 +20883,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 109, - 160, + 110, + 224, 132, 1, 96, 96, 97, - 109, - 160, + 110, + 224, 134, 1, 96, @@ -20516,50 +20903,50 @@ pub mod inclusion_verifier { 145, 80, 97, - 109, - 32, + 110, + 96, 129, 1, 81, 97, - 110, - 0, + 111, + 64, 130, 1, 82, 97, - 109, - 64, + 110, + 128, 129, 1, 81, 97, - 110, - 32, + 111, + 96, 130, 1, 82, 97, - 109, - 160, + 110, + 224, 129, 1, 81, 97, - 110, - 64, + 111, + 128, 130, 1, 82, 97, - 109, - 192, + 111, + 0, 129, 1, 81, 97, - 110, - 96, + 111, + 160, 130, 1, 82, @@ -20569,15 +20956,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 0, + 111, + 64, 132, 1, 96, 128, 97, - 110, - 0, + 111, + 64, 134, 1, 96, @@ -20590,37 +20977,37 @@ pub mod inclusion_verifier { 80, 97, 11, - 128, + 192, 129, 1, 81, 97, - 110, - 128, + 111, + 192, 130, 1, 82, 97, 11, - 160, + 224, 129, 1, 81, 97, - 110, - 160, + 111, + 224, 130, 1, 82, 97, - 82, - 96, + 83, + 160, 129, 1, 81, 97, - 110, - 192, + 112, + 0, 130, 1, 82, @@ -20630,15 +21017,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 128, + 111, + 192, 132, 1, 96, 96, 97, - 110, - 128, + 111, + 192, 134, 1, 96, @@ -20650,50 +21037,50 @@ pub mod inclusion_verifier { 145, 80, 97, - 110, - 0, + 111, + 64, 129, 1, 81, 97, - 110, - 224, + 112, + 32, 130, 1, 82, 97, - 110, - 32, + 111, + 96, 129, 1, 81, 97, - 111, - 0, + 112, + 64, 130, 1, 82, 97, - 110, - 128, + 111, + 192, 129, 1, 81, 97, - 111, - 32, + 112, + 96, 130, 1, 82, 97, - 110, - 160, + 111, + 224, 129, 1, 81, 97, - 111, - 64, + 112, + 128, 130, 1, 82, @@ -20703,15 +21090,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 224, + 112, + 32, 132, 1, 96, 128, 97, - 110, - 224, + 112, + 32, 134, 1, 96, @@ -20723,26 +21110,26 @@ pub mod inclusion_verifier { 145, 80, 97, - 110, - 224, + 112, + 32, 129, 1, 81, 97, - 111, - 96, + 112, + 160, 130, 1, 82, 97, - 111, - 0, + 112, + 64, 129, 1, 81, 97, - 111, - 128, + 112, + 192, 130, 1, 82, @@ -20780,8 +21167,8 @@ pub mod inclusion_verifier { 18, 194, 97, - 111, - 160, + 112, + 224, 130, 1, 82, @@ -20819,8 +21206,8 @@ pub mod inclusion_verifier { 246, 237, 97, - 111, - 192, + 113, + 0, 130, 1, 82, @@ -20858,8 +21245,8 @@ pub mod inclusion_verifier { 151, 91, 97, - 111, - 224, + 113, + 32, 130, 1, 82, @@ -20897,32 +21284,32 @@ pub mod inclusion_verifier { 125, 170, 97, - 112, - 0, + 113, + 64, 130, 1, 82, 97, 11, - 128, + 192, 129, 1, 81, 97, - 112, - 32, + 113, + 96, 130, 1, 82, 97, 11, - 160, + 224, 129, 1, 81, 97, - 112, - 64, + 113, + 128, 130, 1, 82, @@ -20960,8 +21347,8 @@ pub mod inclusion_verifier { 226, 61, 97, - 112, - 96, + 113, + 160, 130, 1, 82, @@ -20999,8 +21386,8 @@ pub mod inclusion_verifier { 247, 158, 97, - 112, - 128, + 113, + 192, 130, 1, 82, @@ -21038,8 +21425,8 @@ pub mod inclusion_verifier { 193, 69, 97, - 112, - 160, + 113, + 224, 130, 1, 82, @@ -21077,8 +21464,8 @@ pub mod inclusion_verifier { 222, 255, 97, - 112, - 192, + 114, + 0, 130, 1, 82, @@ -21088,16 +21475,16 @@ pub mod inclusion_verifier { 96, 32, 97, - 111, - 96, + 112, + 160, 132, 1, 97, 1, 128, 97, - 111, - 96, + 112, + 160, 134, 1, 96, @@ -21105,8 +21492,8 @@ pub mod inclusion_verifier { 90, 250, 97, - 111, - 96, + 112, + 160, 147, 144, 147, @@ -21133,8 +21520,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 112, - 192, + 114, + 0, 1, 96, 64, @@ -21142,7 +21529,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 134, + 144, 144, 96, 32, @@ -21212,15 +21599,15 @@ pub mod inclusion_verifier { 23, 21, 97, - 82, - 177, + 84, + 51, 87, 97, - 82, - 177, + 84, + 51, 97, - 82, - 114, + 83, + 244, 86, 91, 96, @@ -21240,8 +21627,8 @@ pub mod inclusion_verifier { 1, 18, 97, - 82, - 202, + 84, + 76, 87, 96, 0, @@ -21263,20 +21650,20 @@ pub mod inclusion_verifier { 17, 21, 97, - 82, - 228, + 84, + 102, 87, 97, - 82, - 228, + 84, + 102, 97, - 82, - 114, + 83, + 244, 86, 91, 97, - 82, - 247, + 84, + 121, 96, 31, 130, @@ -21289,8 +21676,8 @@ pub mod inclusion_verifier { 32, 1, 97, - 82, - 136, + 84, + 10, 86, 91, 129, @@ -21306,8 +21693,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 12, + 84, + 142, 87, 96, 0, @@ -21354,8 +21741,8 @@ pub mod inclusion_verifier { 18, 21, 97, - 83, - 60, + 84, + 190, 87, 96, 0, @@ -21378,8 +21765,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, 84, + 214, 87, 96, 0, @@ -21398,8 +21785,8 @@ pub mod inclusion_verifier { 1, 18, 97, - 83, - 104, + 84, + 234, 87, 96, 0, @@ -21415,15 +21802,15 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 124, + 84, + 254, 87, 97, - 83, - 124, + 84, + 254, 97, - 82, - 114, + 83, + 244, 86, 91, 129, @@ -21431,14 +21818,14 @@ pub mod inclusion_verifier { 5, 27, 97, - 83, - 139, + 85, + 13, 130, 130, 1, 97, - 82, - 136, + 84, + 10, 86, 91, 146, @@ -21459,8 +21846,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 165, + 85, + 39, 87, 96, 0, @@ -21477,8 +21864,8 @@ pub mod inclusion_verifier { 16, 21, 97, - 83, - 195, + 85, + 69, 87, 134, 53, @@ -21493,8 +21880,8 @@ pub mod inclusion_verifier { 1, 144, 97, - 83, - 170, + 85, + 44, 86, 91, 151, @@ -21512,8 +21899,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 218, + 85, + 92, 87, 96, 0, @@ -21522,15 +21909,15 @@ pub mod inclusion_verifier { 91, 80, 97, - 83, - 231, + 85, + 105, 133, 130, 134, 1, 97, - 82, - 185, + 84, + 59, 86, 91, 145, @@ -21617,38 +22004,38 @@ pub mod inclusion_verifier { 34, 18, 32, - 143, - 15, 8, - 193, - 19, - 215, - 30, - 154, - 255, - 208, - 74, - 147, - 10, + 135, + 187, + 127, + 183, + 1, + 26, + 66, + 77, 12, - 207, - 255, - 244, - 28, + 171, + 149, 199, + 18, + 128, + 93, + 15, + 59, + 181, + 90, + 144, + 235, + 120, + 23, + 161, + 84, + 32, 158, - 53, - 137, - 50, - 207, - 167, - 172, - 19, - 149, - 194, - 66, - 68, - 5, + 9, + 76, + 142, + 184, 100, 115, 111, @@ -21726,8 +22113,8 @@ pub mod inclusion_verifier { 96, 4, 97, - 83, - 41, + 84, + 171, 86, 91, 97, @@ -21763,8 +22150,8 @@ pub mod inclusion_verifier { 0, 99, 97, - 82, - 82, + 83, + 212, 86, 91, 96, @@ -21774,8 +22161,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 148, 131, 57, 129, @@ -21794,8 +22181,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 116, 131, 57, 129, @@ -21820,8 +22207,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 116, 131, 57, 129, @@ -21838,8 +22225,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 116, 131, 57, 129, @@ -21858,8 +22245,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 83, - 242, + 85, + 116, 131, 57, 129, @@ -21909,39 +22296,63 @@ pub mod inclusion_verifier { 131, 1, 82, - 127, - 45, - 241, - 98, - 24, - 168, - 45, - 57, + 128, + 96, + 96, + 135, + 1, + 81, + 6, + 96, + 96, 131, - 16, - 113, - 228, - 105, - 86, - 194, - 51, - 238, - 154, - 167, - 155, - 176, - 101, - 178, - 101, + 1, + 82, + 128, + 96, + 128, 135, - 16, + 1, + 81, + 6, + 96, 128, - 216, - 100, - 63, - 47, + 131, + 1, 82, - 171, + 127, + 10, + 161, + 41, + 79, + 48, + 119, + 74, + 3, + 146, + 207, + 2, + 79, + 65, + 72, + 11, + 60, + 72, + 155, + 208, + 166, + 137, + 93, + 130, + 235, + 170, + 9, + 108, + 168, + 237, + 182, + 187, + 188, 96, 0, 131, @@ -21954,7 +22365,7 @@ pub mod inclusion_verifier { 81, 128, 96, - 96, + 160, 132, 1, 82, @@ -21965,14 +22376,14 @@ pub mod inclusion_verifier { 81, 128, 96, - 128, + 192, 133, 1, 82, 132, 97, 1, - 56, + 80, 130, 132, 97, @@ -21992,7 +22403,7 @@ pub mod inclusion_verifier { 81, 128, 96, - 160, + 224, 132, 1, 82, @@ -22002,15 +22413,16 @@ pub mod inclusion_verifier { 1, 81, 128, - 96, - 192, + 97, + 1, + 0, 133, 1, 82, 132, 97, 1, - 94, + 119, 130, 132, 97, @@ -22029,8 +22441,9 @@ pub mod inclusion_verifier { 1, 81, 128, - 96, - 224, + 97, + 1, + 32, 132, 1, 82, @@ -22042,14 +22455,14 @@ pub mod inclusion_verifier { 128, 97, 1, - 0, + 64, 133, 1, 82, 132, 97, 1, - 133, + 159, 130, 132, 97, @@ -22064,7 +22477,7 @@ pub mod inclusion_verifier { 80, 97, 1, - 32, + 96, 96, 0, 131, @@ -22072,13 +22485,13 @@ pub mod inclusion_verifier { 32, 97, 1, - 32, + 96, 131, 1, 82, 97, 1, - 32, + 96, 130, 1, 81, @@ -22087,14 +22500,14 @@ pub mod inclusion_verifier { 6, 97, 1, - 64, + 128, 132, 1, 82, 128, 97, 1, - 96, + 160, 132, 1, 82, @@ -22107,7 +22520,7 @@ pub mod inclusion_verifier { 128, 97, 1, - 128, + 192, 132, 1, 82, @@ -22120,14 +22533,14 @@ pub mod inclusion_verifier { 128, 97, 1, - 160, + 224, 133, 1, 82, 132, 97, 1, - 211, + 237, 130, 132, 97, @@ -22148,8 +22561,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 1, - 192, + 2, + 0, 132, 1, 82, @@ -22161,15 +22574,15 @@ pub mod inclusion_verifier { 81, 128, 97, - 1, - 224, + 2, + 32, 133, 1, 82, 132, 97, - 1, - 253, + 2, + 23, 130, 132, 97, @@ -22181,13 +22594,13 @@ pub mod inclusion_verifier { 160, 97, 1, - 96, + 160, 135, 1, 32, 97, 2, - 0, + 64, 135, 1, 129, @@ -22198,13 +22611,13 @@ pub mod inclusion_verifier { 6, 97, 2, - 32, + 96, 136, 1, 82, 97, 2, - 64, + 128, 135, 1, 82, @@ -22218,7 +22631,7 @@ pub mod inclusion_verifier { 80, 97, 2, - 96, + 160, 131, 1, 83, @@ -22226,13 +22639,13 @@ pub mod inclusion_verifier { 33, 97, 2, - 64, + 128, 131, 1, 32, 97, 2, - 96, + 160, 131, 1, 129, @@ -22243,13 +22656,13 @@ pub mod inclusion_verifier { 6, 97, 2, - 128, + 192, 132, 1, 82, 97, 2, - 160, + 224, 131, 1, 82, @@ -22260,8 +22673,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 2, - 192, + 3, + 0, 131, 1, 129, @@ -22274,8 +22687,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 2, - 224, + 3, + 32, 132, 1, 129, @@ -22284,7 +22697,7 @@ pub mod inclusion_verifier { 132, 97, 2, - 112, + 138, 130, 132, 97, @@ -22306,7 +22719,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 0, + 64, 132, 1, 82, @@ -22319,14 +22732,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 32, + 96, 133, 1, 82, 132, 97, 2, - 154, + 180, 130, 132, 97, @@ -22348,7 +22761,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 64, + 128, 132, 1, 82, @@ -22361,14 +22774,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 96, + 160, 133, 1, 82, 132, 97, 2, - 196, + 222, 130, 132, 97, @@ -22390,7 +22803,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 128, + 192, 132, 1, 82, @@ -22403,14 +22816,14 @@ pub mod inclusion_verifier { 128, 97, 3, - 160, + 224, 133, 1, 82, 132, 97, - 2, - 238, + 3, + 8, 130, 132, 97, @@ -22428,19 +22841,19 @@ pub mod inclusion_verifier { 32, 97, 2, - 160, + 224, 131, 1, 32, 97, - 3, - 192, + 4, + 0, 131, 1, 82, 97, - 3, - 192, + 4, + 0, 130, 1, 81, @@ -22448,15 +22861,15 @@ pub mod inclusion_verifier { 129, 6, 97, - 3, - 224, + 4, + 32, 132, 1, 82, 128, 97, 4, - 0, + 64, 132, 1, 82, @@ -22470,7 +22883,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 32, + 96, 132, 1, 82, @@ -22483,14 +22896,14 @@ pub mod inclusion_verifier { 128, 97, 4, - 64, + 128, 133, 1, 82, 132, 97, 3, - 62, + 88, 130, 132, 97, @@ -22512,7 +22925,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 96, + 160, 132, 1, 82, @@ -22525,14 +22938,14 @@ pub mod inclusion_verifier { 128, 97, 4, - 128, + 192, 133, 1, 82, 132, 97, 3, - 104, + 130, 130, 132, 97, @@ -22554,7 +22967,7 @@ pub mod inclusion_verifier { 128, 97, 4, - 160, + 224, 132, 1, 82, @@ -22566,15 +22979,15 @@ pub mod inclusion_verifier { 81, 128, 97, - 4, - 192, + 5, + 0, 133, 1, 82, 132, 97, 3, - 146, + 172, 130, 132, 97, @@ -22595,8 +23008,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 4, - 224, + 5, + 32, 132, 1, 82, @@ -22609,14 +23022,14 @@ pub mod inclusion_verifier { 128, 97, 5, - 0, + 64, 133, 1, 82, 132, 97, 3, - 188, + 214, 130, 132, 97, @@ -22638,7 +23051,7 @@ pub mod inclusion_verifier { 128, 97, 5, - 32, + 96, 132, 1, 82, @@ -22651,14 +23064,14 @@ pub mod inclusion_verifier { 128, 97, 5, - 64, + 128, 133, 1, 82, 132, 97, - 3, - 230, + 4, + 0, 130, 132, 97, @@ -22676,19 +23089,19 @@ pub mod inclusion_verifier { 96, 97, 4, - 0, + 64, 131, 1, 32, 97, 5, - 96, + 160, 131, 1, 82, 97, 5, - 96, + 160, 130, 1, 81, @@ -22697,14 +23110,14 @@ pub mod inclusion_verifier { 6, 97, 5, - 128, + 192, 132, 1, 82, 128, 97, 5, - 160, + 224, 132, 1, 82, @@ -22718,8 +23131,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 5, - 192, + 6, + 0, 131, 1, 82, @@ -22732,8 +23145,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 5, - 224, + 6, + 32, 131, 1, 82, @@ -22747,7 +23160,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 0, + 64, 131, 1, 82, @@ -22761,7 +23174,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 32, + 96, 131, 1, 82, @@ -22775,7 +23188,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 64, + 128, 131, 1, 82, @@ -22789,7 +23202,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 96, + 160, 131, 1, 82, @@ -22803,7 +23216,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 128, + 192, 131, 1, 82, @@ -22817,7 +23230,7 @@ pub mod inclusion_verifier { 6, 97, 6, - 160, + 224, 131, 1, 82, @@ -22830,8 +23243,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 6, - 192, + 7, + 0, 131, 1, 82, @@ -22844,8 +23257,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 6, - 224, + 7, + 32, 131, 1, 82, @@ -22859,7 +23272,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 0, + 64, 131, 1, 82, @@ -22873,7 +23286,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 32, + 96, 131, 1, 82, @@ -22887,7 +23300,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 64, + 128, 131, 1, 82, @@ -22901,7 +23314,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 96, + 160, 131, 1, 82, @@ -22915,7 +23328,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 128, + 192, 131, 1, 82, @@ -22929,7 +23342,7 @@ pub mod inclusion_verifier { 6, 97, 7, - 160, + 224, 131, 1, 82, @@ -22942,8 +23355,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 7, - 192, + 8, + 0, 131, 1, 82, @@ -22956,8 +23369,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 7, - 224, + 8, + 32, 131, 1, 82, @@ -22971,7 +23384,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 0, + 64, 131, 1, 82, @@ -22985,7 +23398,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 32, + 96, 131, 1, 82, @@ -22999,7 +23412,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 64, + 128, 131, 1, 82, @@ -23013,7 +23426,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 96, + 160, 131, 1, 82, @@ -23027,7 +23440,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 128, + 192, 131, 1, 82, @@ -23041,7 +23454,7 @@ pub mod inclusion_verifier { 6, 97, 8, - 160, + 224, 131, 1, 82, @@ -23054,8 +23467,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 8, - 192, + 9, + 0, 131, 1, 82, @@ -23068,8 +23481,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 8, - 224, + 9, + 32, 131, 1, 82, @@ -23083,7 +23496,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 0, + 64, 131, 1, 82, @@ -23097,7 +23510,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 32, + 96, 131, 1, 82, @@ -23111,7 +23524,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 64, + 128, 131, 1, 82, @@ -23125,7 +23538,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 96, + 160, 131, 1, 82, @@ -23139,7 +23552,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 128, + 192, 131, 1, 82, @@ -23153,7 +23566,7 @@ pub mod inclusion_verifier { 6, 97, 9, - 160, + 224, 131, 1, 82, @@ -23166,8 +23579,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 9, - 192, + 10, + 0, 131, 1, 82, @@ -23180,8 +23593,8 @@ pub mod inclusion_verifier { 81, 6, 97, - 9, - 224, + 10, + 32, 131, 1, 82, @@ -23195,7 +23608,7 @@ pub mod inclusion_verifier { 6, 97, 10, - 0, + 64, 131, 1, 82, @@ -23204,19 +23617,19 @@ pub mod inclusion_verifier { 128, 97, 5, - 160, + 224, 131, 1, 32, 97, 10, - 32, + 96, 131, 1, 82, 97, 10, - 32, + 96, 130, 1, 81, @@ -23225,14 +23638,14 @@ pub mod inclusion_verifier { 6, 97, 10, - 64, + 128, 132, 1, 82, 128, 97, 10, - 96, + 160, 132, 1, 82, @@ -23241,7 +23654,7 @@ pub mod inclusion_verifier { 1, 97, 10, - 128, + 192, 131, 1, 83, @@ -23249,13 +23662,13 @@ pub mod inclusion_verifier { 33, 97, 10, - 96, + 160, 131, 1, 32, 97, 10, - 128, + 192, 131, 1, 129, @@ -23266,13 +23679,13 @@ pub mod inclusion_verifier { 6, 97, 10, - 160, + 224, 132, 1, 82, 97, - 10, - 192, + 11, + 0, 131, 1, 82, @@ -23283,8 +23696,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 10, - 224, + 11, + 32, 131, 1, 129, @@ -23298,7 +23711,7 @@ pub mod inclusion_verifier { 81, 97, 11, - 0, + 64, 132, 1, 129, @@ -23307,7 +23720,7 @@ pub mod inclusion_verifier { 132, 97, 6, - 111, + 137, 130, 132, 97, @@ -23323,20 +23736,20 @@ pub mod inclusion_verifier { 96, 96, 97, - 10, - 192, + 11, + 0, 131, 1, 32, 97, 11, - 32, + 96, 131, 1, 82, 97, 11, - 32, + 96, 130, 1, 81, @@ -23345,14 +23758,14 @@ pub mod inclusion_verifier { 6, 97, 11, - 64, + 128, 132, 1, 82, 128, 97, 11, - 96, + 160, 132, 1, 82, @@ -23366,7 +23779,7 @@ pub mod inclusion_verifier { 128, 97, 11, - 128, + 192, 132, 1, 82, @@ -23379,14 +23792,14 @@ pub mod inclusion_verifier { 128, 97, 11, - 160, + 224, 133, 1, 82, 132, 97, 6, - 190, + 216, 130, 132, 97, @@ -23402,20 +23815,20 @@ pub mod inclusion_verifier { 128, 97, 5, - 128, + 192, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 11, - 192, + 12, + 0, 131, 1, 129, @@ -23426,8 +23839,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 11, - 224, + 12, + 32, 131, 1, 129, @@ -23439,7 +23852,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 0, + 64, 131, 1, 129, @@ -23451,7 +23864,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 32, + 96, 131, 1, 129, @@ -23463,7 +23876,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 64, + 128, 131, 1, 129, @@ -23475,7 +23888,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 96, + 160, 131, 1, 129, @@ -23487,7 +23900,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 128, + 192, 131, 1, 129, @@ -23499,7 +23912,7 @@ pub mod inclusion_verifier { 9, 97, 12, - 160, + 224, 131, 1, 129, @@ -23510,8 +23923,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 12, - 192, + 13, + 0, 131, 1, 129, @@ -23522,8 +23935,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 12, - 224, + 13, + 32, 131, 1, 129, @@ -23535,7 +23948,7 @@ pub mod inclusion_verifier { 9, 97, 13, - 0, + 64, 131, 1, 82, @@ -23575,14 +23988,14 @@ pub mod inclusion_verifier { 0, 97, 13, - 0, + 64, 132, 1, 81, 8, 97, 13, - 32, + 96, 131, 1, 82, @@ -23622,14 +24035,14 @@ pub mod inclusion_verifier { 1, 97, 13, - 32, + 96, 132, 1, 81, 9, 97, 13, - 64, + 128, 131, 1, 82, @@ -23669,14 +24082,14 @@ pub mod inclusion_verifier { 2, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 13, - 96, + 160, 131, 1, 82, @@ -23716,14 +24129,14 @@ pub mod inclusion_verifier { 255, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 13, - 128, + 192, 131, 1, 82, @@ -23763,14 +24176,14 @@ pub mod inclusion_verifier { 81, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 13, - 160, + 224, 131, 1, 82, @@ -23810,14 +24223,14 @@ pub mod inclusion_verifier { 176, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, - 13, - 192, + 14, + 0, 131, 1, 82, @@ -23857,14 +24270,14 @@ pub mod inclusion_verifier { 53, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, - 13, - 224, + 14, + 32, 131, 1, 82, @@ -23904,14 +24317,14 @@ pub mod inclusion_verifier { 204, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 0, + 64, 131, 1, 82, @@ -23951,14 +24364,14 @@ pub mod inclusion_verifier { 37, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 32, + 96, 131, 1, 82, @@ -23998,14 +24411,14 @@ pub mod inclusion_verifier { 220, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 64, + 128, 131, 1, 82, @@ -24045,14 +24458,14 @@ pub mod inclusion_verifier { 227, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 96, + 160, 131, 1, 82, @@ -24092,14 +24505,14 @@ pub mod inclusion_verifier { 30, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 14, - 128, + 192, 131, 1, 82, @@ -24139,14 +24552,14 @@ pub mod inclusion_verifier { 26, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 14, - 160, + 224, 131, 1, 82, @@ -24186,14 +24599,14 @@ pub mod inclusion_verifier { 231, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, - 14, - 192, + 15, + 0, 131, 1, 82, @@ -24202,14 +24615,14 @@ pub mod inclusion_verifier { 1, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, - 14, - 224, + 15, + 32, 131, 1, 82, @@ -24249,14 +24662,14 @@ pub mod inclusion_verifier { 0, 97, 5, - 128, + 192, 132, 1, 81, 8, 97, 15, - 0, + 64, 131, 1, 82, @@ -24296,14 +24709,14 @@ pub mod inclusion_verifier { 95, 97, 13, - 64, + 128, 132, 1, 81, 9, 97, 15, - 32, + 96, 131, 1, 82, @@ -24343,28 +24756,216 @@ pub mod inclusion_verifier { 162, 97, 5, + 192, + 132, + 1, + 81, + 8, + 97, + 15, + 128, + 131, + 1, + 82, + 128, + 127, + 42, + 217, + 2, + 30, + 208, + 124, + 66, + 171, + 25, + 247, + 124, + 92, + 242, + 203, + 210, + 222, + 177, + 53, + 234, + 51, + 15, + 27, + 21, + 115, + 189, + 8, + 217, + 147, + 9, + 196, + 187, + 125, + 97, + 13, 128, 132, 1, 81, + 9, + 97, + 15, + 160, + 131, + 1, + 82, + 128, + 127, + 5, + 139, + 76, + 84, + 16, + 181, + 93, + 126, + 158, + 88, + 201, + 89, + 142, + 181, + 133, + 126, + 118, + 253, + 254, + 21, + 106, + 158, + 91, + 29, + 134, + 217, + 28, + 0, + 230, + 59, + 68, + 132, + 97, + 5, + 192, + 132, + 1, + 81, 8, 97, 15, - 64, + 192, 131, 1, 82, + 128, + 127, + 25, + 8, + 89, + 125, + 47, + 195, + 188, + 29, + 163, + 18, + 239, + 163, + 68, + 224, + 252, + 138, + 112, + 121, + 48, + 2, + 56, + 242, + 238, + 53, + 119, + 79, + 17, + 126, + 102, + 253, + 68, + 103, 97, 13, 128, + 132, + 1, + 81, + 9, + 97, + 15, + 224, + 131, + 1, + 82, + 128, + 127, + 23, + 91, + 244, + 245, + 177, + 109, + 228, + 12, + 21, + 61, + 86, + 19, + 60, + 160, + 91, + 210, + 183, + 186, + 184, + 70, + 64, + 198, 130, + 91, + 204, + 146, + 228, + 21, + 137, + 2, + 187, + 154, + 97, + 5, + 192, + 132, 1, 81, - 129, - 129, + 8, + 97, + 16, + 0, + 131, + 1, + 82, 97, 13, 192, + 130, + 1, + 81, + 129, + 129, + 97, + 14, + 0, 133, 1, 81, @@ -24373,8 +24974,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 96, + 16, + 32, 132, 1, 82, @@ -24382,7 +24983,7 @@ pub mod inclusion_verifier { 129, 97, 14, - 0, + 64, 133, 1, 81, @@ -24391,8 +24992,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 128, + 16, + 64, 132, 1, 82, @@ -24400,7 +25001,7 @@ pub mod inclusion_verifier { 129, 97, 14, - 64, + 128, 133, 1, 81, @@ -24409,8 +25010,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, - 160, + 16, + 96, 132, 1, 82, @@ -24418,7 +25019,25 @@ pub mod inclusion_verifier { 129, 97, 14, + 192, + 133, + 1, + 81, + 9, + 144, + 80, 128, + 97, + 16, + 128, + 132, + 1, + 82, + 129, + 129, + 97, + 15, + 0, 133, 1, 81, @@ -24427,7 +25046,25 @@ pub mod inclusion_verifier { 80, 128, 97, + 16, + 160, + 132, + 1, + 82, + 129, + 129, + 97, 15, + 64, + 133, + 1, + 81, + 9, + 144, + 80, + 128, + 97, + 16, 192, 132, 1, @@ -24435,8 +25072,8 @@ pub mod inclusion_verifier { 129, 129, 97, - 14, - 192, + 15, + 128, 133, 1, 81, @@ -24445,7 +25082,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 15, + 16, 224, 132, 1, @@ -24454,7 +25091,7 @@ pub mod inclusion_verifier { 129, 97, 15, - 0, + 192, 133, 1, 81, @@ -24463,7 +25100,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 0, 132, 1, @@ -24471,8 +25108,8 @@ pub mod inclusion_verifier { 129, 129, 97, - 15, - 64, + 16, + 0, 133, 1, 81, @@ -24481,7 +25118,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 32, 132, 1, @@ -24490,7 +25127,7 @@ pub mod inclusion_verifier { 129, 97, 13, - 32, + 96, 133, 1, 81, @@ -24499,7 +25136,7 @@ pub mod inclusion_verifier { 80, 128, 97, - 16, + 17, 64, 132, 1, @@ -24508,7 +25145,7 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 128, 131, 1, @@ -24516,7 +25153,7 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 160, 131, 1, @@ -24524,19 +25161,19 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 192, 131, 1, 82, 97, - 16, + 17, 64, 130, 1, 81, 97, - 16, + 17, 224, 131, 1, @@ -24575,7 +25212,7 @@ pub mod inclusion_verifier { 255, 255, 97, - 17, + 18, 0, 131, 1, @@ -24587,8 +25224,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 148, 131, 57, 129, @@ -24596,7 +25233,7 @@ pub mod inclusion_verifier { 145, 82, 97, - 17, + 18, 32, 131, 1, @@ -24607,14 +25244,14 @@ pub mod inclusion_verifier { 96, 32, 97, - 16, + 17, 96, 133, 1, 96, 192, 97, - 16, + 17, 128, 135, 1, @@ -24627,7 +25264,7 @@ pub mod inclusion_verifier { 146, 80, 97, - 16, + 17, 96, 130, 1, @@ -24636,7 +25273,7 @@ pub mod inclusion_verifier { 0, 97, 13, - 32, + 96, 132, 1, 81, @@ -24645,7 +25282,7 @@ pub mod inclusion_verifier { 130, 130, 97, - 16, + 17, 32, 134, 1, @@ -24653,7 +25290,94 @@ pub mod inclusion_verifier { 9, 97, 13, - 32, + 96, + 133, + 1, + 82, + 130, + 130, + 130, + 9, + 145, + 80, + 97, + 16, + 0, + 132, + 1, + 81, + 144, + 80, + 130, + 130, + 97, + 17, + 0, + 134, + 1, + 81, + 9, + 97, + 16, + 0, + 133, + 1, + 82, + 130, + 130, + 130, + 9, + 145, + 80, + 97, + 15, + 192, + 132, + 1, + 81, + 144, + 80, + 130, + 130, + 97, + 16, + 224, + 134, + 1, + 81, + 9, + 97, + 15, + 192, + 133, + 1, + 82, + 130, + 130, + 130, + 9, + 145, + 80, + 97, + 15, + 128, + 132, + 1, + 81, + 144, + 80, + 130, + 130, + 97, + 16, + 192, + 134, + 1, + 81, + 9, + 97, + 15, + 128, 133, 1, 82, @@ -24675,7 +25399,7 @@ pub mod inclusion_verifier { 130, 97, 16, - 0, + 160, 134, 1, 81, @@ -24703,8 +25427,8 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, - 224, + 16, + 128, 134, 1, 81, @@ -24732,8 +25456,8 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, - 192, + 16, + 96, 134, 1, 81, @@ -24761,8 +25485,8 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, - 160, + 16, + 64, 134, 1, 81, @@ -24790,8 +25514,8 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, - 128, + 16, + 32, 134, 1, 81, @@ -24819,8 +25543,8 @@ pub mod inclusion_verifier { 130, 130, 97, - 15, - 96, + 13, + 192, 134, 1, 81, @@ -24835,46 +25559,17 @@ pub mod inclusion_verifier { 130, 130, 9, - 145, - 80, - 97, - 13, - 192, - 132, - 1, - 81, - 144, - 80, - 130, - 130, - 97, - 13, - 128, - 134, - 1, - 81, - 9, 97, 13, 192, 133, 1, - 82, - 130, - 130, - 130, - 9, - 97, - 13, - 128, - 133, - 1, 129, 144, 82, 97, 13, - 96, + 160, 133, 1, 81, @@ -24886,27 +25581,27 @@ pub mod inclusion_verifier { 80, 9, 97, - 17, + 18, 64, 131, 1, 82, 128, 97, - 13, - 192, + 14, + 0, 131, 1, 81, 97, 13, - 160, + 224, 132, 1, 81, 9, 97, - 17, + 18, 96, 131, 1, @@ -24914,19 +25609,19 @@ pub mod inclusion_verifier { 128, 97, 14, - 0, + 64, 131, 1, 81, 97, - 13, - 224, + 14, + 32, 132, 1, 81, 9, 97, - 17, + 18, 128, 131, 1, @@ -24934,19 +25629,19 @@ pub mod inclusion_verifier { 128, 97, 14, - 64, + 128, 131, 1, 81, 97, 14, - 32, + 96, 132, 1, 81, 9, 97, - 17, + 18, 160, 131, 1, @@ -24954,39 +25649,39 @@ pub mod inclusion_verifier { 128, 97, 14, - 128, + 192, 131, 1, 81, 97, 14, - 96, + 160, 132, 1, 81, 9, 97, - 17, + 18, 192, 131, 1, 82, 128, 97, - 14, - 192, + 15, + 0, 131, 1, 81, 97, 14, - 160, + 224, 132, 1, 81, 9, 97, - 17, + 18, 224, 131, 1, @@ -24994,19 +25689,19 @@ pub mod inclusion_verifier { 128, 97, 15, - 0, + 64, 131, 1, 81, 97, - 14, - 224, + 15, + 32, 132, 1, 81, 9, 97, - 18, + 19, 0, 131, 1, @@ -25014,31 +25709,71 @@ pub mod inclusion_verifier { 128, 97, 15, - 64, + 128, 131, 1, 81, 97, 15, - 32, + 96, 132, 1, 81, 9, 97, - 18, + 19, 32, 131, 1, 82, 128, + 97, + 15, + 192, + 131, + 1, + 81, + 97, + 15, + 160, + 132, + 1, + 81, + 9, + 97, + 19, + 64, + 131, + 1, + 82, + 128, + 97, + 16, + 0, + 131, + 1, + 81, + 97, + 15, + 224, + 132, + 1, + 81, + 9, + 97, + 19, + 96, + 131, + 1, + 82, + 128, 96, 32, 131, 1, 81, 97, - 18, + 19, 0, 132, 1, @@ -25053,29 +25788,65 @@ pub mod inclusion_verifier { 1, 81, 97, - 18, + 19, 32, 135, 1, 81, 9, 8, + 144, + 80, + 129, + 129, + 131, + 96, + 96, + 134, + 1, + 81, 97, - 18, + 19, 64, + 135, + 1, + 81, + 9, + 8, + 144, + 80, + 129, + 129, + 131, + 96, + 128, + 134, + 1, + 81, + 97, + 19, + 96, + 135, + 1, + 81, + 9, + 8, + 97, + 19, + 128, 132, 1, 82, 80, 97, - 6, - 224, + 7, + 32, 130, 1, 81, 97, - 5, - 192, + 6, + 0, 131, 1, 81, @@ -25084,8 +25855,8 @@ pub mod inclusion_verifier { 144, 8, 97, - 18, - 96, + 19, + 160, 131, 1, 129, @@ -25096,8 +25867,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 18, - 128, + 19, + 192, 131, 1, 129, @@ -25108,28 +25879,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 18, - 160, + 19, + 224, 131, 1, 82, 128, 97, - 18, - 160, + 19, + 224, 131, 1, 81, 97, - 18, - 96, + 19, + 160, 132, 1, 81, 9, 97, - 18, - 192, + 20, + 0, 131, 1, 82, @@ -25168,35 +25939,35 @@ pub mod inclusion_verifier { 122, 213, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 9, 97, - 18, - 224, + 20, + 32, 131, 1, 82, 128, 97, 7, - 0, + 64, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 19, - 0, + 20, + 64, 131, 1, 129, @@ -25207,8 +25978,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 19, - 32, + 20, + 96, 131, 1, 129, @@ -25219,28 +25990,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 19, - 64, + 20, + 128, 131, 1, 82, 128, 97, - 19, - 64, + 20, + 128, 131, 1, 81, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 19, - 96, + 20, + 160, 131, 1, 82, @@ -25279,57 +26050,57 @@ pub mod inclusion_verifier { 177, 232, 97, - 19, - 96, + 20, + 160, 132, 1, 81, 9, 97, - 19, - 128, + 20, + 192, 131, 1, 82, 128, 97, - 19, - 128, + 20, + 192, 131, 1, 81, 97, - 18, - 224, + 20, + 32, 132, 1, 81, 8, 97, - 19, - 160, + 20, + 224, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, 130, 3, 97, - 19, - 160, + 20, + 224, 132, 1, 81, 8, 97, - 19, - 192, + 21, + 0, 131, 1, 129, @@ -25337,7 +26108,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 128, + 192, 131, 1, 81, @@ -25345,28 +26116,28 @@ pub mod inclusion_verifier { 145, 9, 97, - 19, - 224, + 21, + 32, 131, 1, 82, 128, 97, - 19, - 224, + 21, + 32, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 20, - 0, + 21, + 64, 131, 1, 82, @@ -25405,15 +26176,15 @@ pub mod inclusion_verifier { 143, 249, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 9, 97, - 20, - 32, + 21, + 96, 131, 1, 82, @@ -25452,57 +26223,57 @@ pub mod inclusion_verifier { 3, 200, 97, - 19, - 96, + 20, + 160, 132, 1, 81, 9, 97, - 20, - 64, + 21, + 128, 131, 1, 82, 128, 97, - 20, - 64, + 21, + 128, 131, 1, 81, 97, - 20, - 32, + 21, + 96, 132, 1, 81, 8, 97, - 20, - 96, + 21, + 160, 131, 1, 82, 128, 97, 6, - 32, + 96, 131, 1, 81, 130, 3, 97, - 20, - 96, + 21, + 160, 132, 1, 81, 8, 97, - 20, - 128, + 21, + 192, 131, 1, 129, @@ -25510,7 +26281,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 128, + 192, 131, 1, 81, @@ -25518,70 +26289,70 @@ pub mod inclusion_verifier { 145, 9, 97, - 20, - 160, + 21, + 224, 131, 1, 82, 128, 97, - 20, - 160, + 21, + 224, 131, 1, 81, 97, - 20, - 0, + 21, + 64, 132, 1, 81, 8, 97, - 20, - 192, + 22, + 0, 131, 1, 82, 128, 97, - 20, - 192, + 22, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 20, - 224, + 22, + 32, 131, 1, 82, 128, 97, 6, - 64, + 128, 131, 1, 81, 130, 3, 97, - 18, - 192, + 20, + 0, 132, 1, 81, 8, 97, - 21, - 0, + 22, + 64, 131, 1, 129, @@ -25589,7 +26360,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -25597,48 +26368,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 21, - 32, + 22, + 96, 131, 1, 82, 128, 97, - 21, - 32, + 22, + 96, 131, 1, 81, 97, - 20, - 224, + 22, + 32, 132, 1, 81, 8, 97, - 21, - 64, + 22, + 128, 131, 1, 82, 128, 97, - 21, - 64, + 22, + 128, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 21, - 96, + 22, + 160, 131, 1, 82, @@ -25678,14 +26449,14 @@ pub mod inclusion_verifier { 213, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 21, - 128, + 22, + 192, 131, 1, 82, @@ -25724,35 +26495,35 @@ pub mod inclusion_verifier { 177, 232, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 21, - 160, + 22, + 224, 131, 1, 82, 128, 97, - 21, - 160, + 22, + 224, 131, 1, 81, 97, - 21, - 128, + 22, + 192, 132, 1, 81, 8, 97, - 21, - 192, + 23, + 0, 131, 1, 129, @@ -25760,7 +26531,7 @@ pub mod inclusion_verifier { 82, 97, 6, - 160, + 224, 131, 1, 81, @@ -25768,8 +26539,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 21, - 224, + 23, + 32, 131, 1, 129, @@ -25780,8 +26551,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 22, - 0, + 23, + 64, 131, 1, 129, @@ -25792,28 +26563,28 @@ pub mod inclusion_verifier { 128, 9, 97, - 22, - 32, + 23, + 96, 131, 1, 82, 128, 97, - 22, - 32, + 23, + 96, 131, 1, 81, 97, - 21, - 224, + 23, + 32, 132, 1, 81, 9, 97, - 22, - 64, + 23, + 128, 131, 1, 82, @@ -25853,14 +26624,14 @@ pub mod inclusion_verifier { 102, 97, 6, - 0, + 64, 132, 1, 81, 9, 97, - 22, - 96, + 23, + 160, 131, 1, 82, @@ -25900,56 +26671,56 @@ pub mod inclusion_verifier { 254, 97, 6, - 32, + 96, 132, 1, 81, 9, 97, - 22, - 128, + 23, + 192, 131, 1, 82, 128, 97, - 22, - 128, + 23, + 192, 131, 1, 81, 97, - 22, - 96, + 23, + 160, 132, 1, 81, 8, 97, - 22, - 160, + 23, + 224, 131, 1, 82, 128, 97, - 22, - 160, + 23, + 224, 131, 1, 81, 130, 3, 97, - 22, - 64, + 23, + 128, 132, 1, 81, 8, 97, - 22, - 192, + 24, + 0, 131, 1, 129, @@ -25957,7 +26728,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -25965,48 +26736,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 22, - 224, + 24, + 32, 131, 1, 82, 128, 97, - 22, - 224, + 24, + 32, 131, 1, 81, 97, - 21, - 96, + 22, + 160, 132, 1, 81, 8, 97, - 23, - 0, + 24, + 64, 131, 1, 82, 128, 97, - 23, - 0, + 24, + 64, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 23, - 32, + 24, + 96, 131, 1, 82, @@ -26046,14 +26817,14 @@ pub mod inclusion_verifier { 249, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 23, - 64, + 24, + 128, 131, 1, 82, @@ -26092,43 +26863,43 @@ pub mod inclusion_verifier { 3, 200, 97, - 19, - 0, + 20, + 64, 132, 1, 81, 9, 97, - 23, - 96, + 24, + 160, 131, 1, 82, 128, 97, - 23, - 96, + 24, + 160, 131, 1, 81, 97, - 23, - 64, + 24, + 128, 132, 1, 81, 8, 97, - 23, - 128, + 24, + 192, 131, 1, 129, 144, 82, 97, - 6, - 192, + 7, + 0, 131, 1, 81, @@ -26136,8 +26907,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 23, - 160, + 24, + 224, 131, 1, 82, @@ -26177,14 +26948,14 @@ pub mod inclusion_verifier { 2, 97, 6, - 0, + 64, 132, 1, 81, 9, 97, - 23, - 192, + 25, + 0, 131, 1, 82, @@ -26224,56 +26995,56 @@ pub mod inclusion_verifier { 190, 97, 6, - 32, + 96, 132, 1, 81, 9, 97, - 23, - 224, + 25, + 32, 131, 1, 82, 128, 97, - 23, - 224, + 25, + 32, 131, 1, 81, 97, - 23, - 192, + 25, + 0, 132, 1, 81, 8, 97, - 24, - 0, + 25, + 64, 131, 1, 82, 128, 97, - 24, - 0, + 25, + 64, 131, 1, 81, 130, 3, 97, - 23, - 160, + 24, + 224, 132, 1, 81, 8, 97, - 24, - 32, + 25, + 96, 131, 1, 129, @@ -26281,7 +27052,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 160, + 224, 131, 1, 81, @@ -26289,55 +27060,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 24, - 64, + 25, + 128, 131, 1, 82, 128, 97, - 24, - 64, + 25, + 128, 131, 1, 81, 97, - 23, - 32, + 24, + 96, 132, 1, 81, 8, 97, - 24, - 96, + 25, + 160, 131, 1, 82, 128, 97, - 24, - 96, + 25, + 160, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 24, - 128, + 25, + 192, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -26347,8 +27118,8 @@ pub mod inclusion_verifier { 1, 8, 97, - 24, - 160, + 25, + 224, 131, 1, 129, @@ -26356,7 +27127,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 96, + 160, 131, 1, 81, @@ -26364,15 +27135,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 24, - 192, + 26, + 0, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -26382,16 +27153,16 @@ pub mod inclusion_verifier { 2, 8, 97, - 24, - 224, + 26, + 32, 131, 1, 129, 144, 82, 97, - 24, - 192, + 26, + 0, 131, 1, 81, @@ -26399,15 +27170,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 0, + 26, + 64, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -26417,16 +27188,16 @@ pub mod inclusion_verifier { 4, 8, 97, - 25, - 32, + 26, + 96, 131, 1, 129, 144, 82, 97, - 25, - 0, + 26, + 64, 131, 1, 81, @@ -26434,58 +27205,58 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 64, + 26, + 128, 131, 1, 82, 128, 97, - 5, - 192, + 6, + 0, 131, 1, 81, 97, 6, - 128, + 192, 132, 1, 81, 8, 97, - 25, - 96, + 26, + 160, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, 130, 3, 97, - 25, - 96, + 26, + 160, 132, 1, 81, 8, 97, - 25, - 128, + 26, + 192, 131, 1, 129, 144, 82, 97, - 25, - 64, + 26, + 128, 131, 1, 81, @@ -26493,55 +27264,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 25, - 160, + 26, + 224, 131, 1, 82, 128, 97, - 25, - 160, + 26, + 224, 131, 1, 81, 97, - 24, - 128, + 25, + 192, 132, 1, 81, 8, 97, - 25, - 192, + 27, + 0, 131, 1, 82, 128, 97, - 25, - 192, + 27, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 25, - 224, + 27, + 32, 131, 1, 82, 128, 97, 6, - 32, + 96, 131, 1, 81, @@ -26549,22 +27320,22 @@ pub mod inclusion_verifier { 3, 97, 6, - 96, + 160, 132, 1, 81, 8, 97, - 26, - 0, + 27, + 64, 131, 1, 129, 144, 82, 97, - 25, - 64, + 26, + 128, 131, 1, 81, @@ -26572,355 +27343,355 @@ pub mod inclusion_verifier { 145, 9, 97, - 26, - 32, + 27, + 96, 131, 1, 82, 128, 97, - 26, - 32, + 27, + 96, 131, 1, 81, 97, - 25, - 224, + 27, + 32, 132, 1, 81, 8, 97, - 26, - 64, + 27, + 128, 131, 1, 82, 128, 97, - 26, - 64, + 27, + 128, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 26, - 96, + 27, + 160, 131, 1, 82, 128, 97, - 7, - 192, + 8, + 0, 131, 1, 81, 97, - 19, - 192, + 21, + 0, 132, 1, 81, 9, 97, - 26, - 128, + 27, + 192, 131, 1, 82, 128, 97, - 26, - 128, + 27, + 192, 131, 1, 81, 97, - 26, - 96, + 27, + 160, 132, 1, 81, 8, 97, - 26, - 160, + 27, + 224, 131, 1, 82, 128, 97, - 26, - 160, + 27, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 26, - 192, + 28, + 0, 131, 1, 82, 128, 97, - 7, - 192, + 8, + 0, 131, 1, 81, 97, - 20, - 128, + 21, + 192, 132, 1, 81, 9, 97, - 26, - 224, + 28, + 32, 131, 1, 82, 128, 97, - 26, - 224, + 28, + 32, 131, 1, 81, 97, - 26, - 192, + 28, + 0, 132, 1, 81, 8, 97, - 27, - 0, + 28, + 64, 131, 1, 82, 128, 97, - 27, - 0, + 28, + 64, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 27, - 32, + 28, + 96, 131, 1, 82, 128, 97, - 7, - 224, + 8, + 32, 131, 1, 81, 97, - 21, - 0, + 22, + 64, 132, 1, 81, 9, 97, - 27, - 64, + 28, + 128, 131, 1, 82, 128, 97, - 27, - 64, + 28, + 128, 131, 1, 81, 97, - 27, - 32, + 28, + 96, 132, 1, 81, 8, 97, - 27, - 96, + 28, + 160, 131, 1, 82, 128, 97, - 27, - 96, + 28, + 160, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 27, - 128, + 28, + 192, 131, 1, 82, 128, 97, - 7, - 224, + 8, + 32, 131, 1, 81, 97, - 22, - 192, + 24, + 0, 132, 1, 81, 9, 97, - 27, - 160, + 28, + 224, 131, 1, 82, 128, 97, - 27, - 160, + 28, + 224, 131, 1, 81, 97, - 27, - 128, + 28, + 192, 132, 1, 81, 8, 97, - 27, - 192, + 29, + 0, 131, 1, 82, 128, 97, - 27, - 192, + 29, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 27, - 224, + 29, + 32, 131, 1, 82, 128, 97, - 7, - 224, + 8, + 32, 131, 1, 81, 97, - 24, - 32, + 25, + 96, 132, 1, 81, 9, 97, - 28, - 0, + 29, + 64, 131, 1, 82, 128, 97, - 28, - 0, + 29, + 64, 131, 1, 81, 97, - 27, - 224, + 29, + 32, 132, 1, 81, 8, 97, - 28, - 32, + 29, + 96, 131, 1, 82, 128, 97, - 28, - 32, + 29, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 28, - 64, + 29, + 128, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, @@ -26930,16 +27701,16 @@ pub mod inclusion_verifier { 3, 8, 97, - 28, - 96, + 29, + 160, 131, 1, 129, 144, 82, 97, - 25, - 0, + 26, + 64, 131, 1, 81, @@ -26947,215 +27718,215 @@ pub mod inclusion_verifier { 145, 9, 97, - 28, - 128, + 29, + 192, 131, 1, 82, 128, 97, - 28, - 128, + 29, + 192, 131, 1, 81, 97, - 25, - 128, + 26, + 192, 132, 1, 81, 9, 97, - 28, - 160, + 29, + 224, 131, 1, 82, 128, 97, - 28, - 160, + 29, + 224, 131, 1, 81, 97, - 28, - 64, + 29, + 128, 132, 1, 81, 8, 97, - 28, - 192, + 30, + 0, 131, 1, 82, 128, 97, - 28, - 192, + 30, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 28, - 224, + 30, + 32, 131, 1, 82, 128, 97, - 28, - 128, + 29, + 192, 131, 1, 81, 97, - 26, - 0, + 27, + 64, 132, 1, 81, 9, 97, - 29, - 0, + 30, + 64, 131, 1, 82, 128, 97, - 29, - 0, + 30, + 64, 131, 1, 81, 97, - 28, - 224, + 30, + 32, 132, 1, 81, 8, 97, - 29, - 32, + 30, + 96, 131, 1, 82, 128, 97, - 29, - 32, + 30, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 29, - 64, + 30, + 128, 131, 1, 82, 128, 97, 7, - 96, + 160, 131, 1, 81, 97, - 24, - 224, + 26, + 32, 132, 1, 81, 9, 97, - 29, - 96, + 30, + 160, 131, 1, 82, 128, 97, - 29, - 96, + 30, + 160, 131, 1, 81, 97, - 28, - 96, + 29, + 160, 132, 1, 81, 9, 97, - 29, - 128, + 30, + 192, 131, 1, 82, 128, 97, - 29, - 128, + 30, + 192, 131, 1, 81, 97, - 25, - 32, + 26, + 96, 132, 1, 81, 9, 97, - 29, - 160, + 30, + 224, 131, 1, 82, 128, 97, - 29, - 160, + 30, + 224, 131, 1, 81, 97, 6, - 64, + 128, 132, 1, 81, 9, 97, - 29, - 192, + 31, + 0, 131, 1, 82, 128, 97, 6, - 64, + 128, 131, 1, 81, @@ -27165,16 +27936,16 @@ pub mod inclusion_verifier { 1, 8, 97, - 29, - 224, + 31, + 32, 131, 1, 129, 144, 82, 97, - 29, - 192, + 31, + 0, 131, 1, 81, @@ -27182,55 +27953,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 30, - 0, + 31, + 64, 131, 1, 82, 128, 97, - 30, - 0, + 31, + 64, 131, 1, 81, 97, - 29, - 64, + 30, + 128, 132, 1, 81, 8, 97, - 30, - 32, + 31, + 96, 131, 1, 82, 128, 97, - 30, - 32, + 31, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 30, - 64, + 31, + 128, 131, 1, 82, 128, 97, 6, - 64, + 128, 131, 1, 81, @@ -27238,38 +28009,38 @@ pub mod inclusion_verifier { 2, 9, 97, - 30, - 96, + 31, + 160, 131, 1, 82, 128, 97, - 5, - 192, + 6, + 0, 131, 1, 81, 130, 3, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 30, - 128, + 31, + 192, 131, 1, 129, 144, 82, 97, - 30, - 96, + 31, + 160, 131, 1, 81, @@ -27277,15 +28048,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 30, - 160, + 31, + 224, 131, 1, 82, 128, 97, - 5, - 192, + 6, + 0, 131, 1, 81, @@ -27293,88 +28064,88 @@ pub mod inclusion_verifier { 3, 97, 6, - 0, + 64, 132, 1, 81, 8, 97, - 30, - 192, + 32, + 0, 131, 1, 82, 128, 97, - 30, - 192, + 32, + 0, 131, 1, 81, 130, 3, 97, - 30, - 160, + 31, + 224, 132, 1, 81, 8, 97, - 30, - 224, + 32, + 32, 131, 1, 82, 128, 97, 6, - 32, + 96, 131, 1, 81, 130, 3, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 31, - 0, + 32, + 64, 131, 1, 82, 128, 97, - 31, - 0, + 32, + 64, 131, 1, 81, 130, 3, 97, - 30, - 224, + 32, + 32, 132, 1, 81, 8, 97, - 31, 32, + 96, 131, 1, 129, 144, 82, 97, - 29, - 160, + 30, + 224, 131, 1, 81, @@ -27382,138 +28153,138 @@ pub mod inclusion_verifier { 145, 9, 97, - 31, - 64, + 32, + 128, 131, 1, 82, 128, 97, - 31, - 64, + 32, + 128, 131, 1, 81, 97, - 30, - 64, + 31, + 128, 132, 1, 81, 8, 97, - 31, - 96, + 32, + 160, 131, 1, 82, 128, 97, - 31, - 96, + 32, + 160, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 31, - 128, + 32, + 192, 131, 1, 82, 128, 97, - 24, - 192, + 26, + 0, 131, 1, 81, 97, - 28, - 96, + 29, + 160, 132, 1, 81, 9, 97, - 31, - 160, + 32, + 224, 131, 1, 82, 128, 97, - 31, - 160, + 32, + 224, 131, 1, 81, 97, - 25, - 32, + 26, + 96, 132, 1, 81, 9, 97, - 31, - 192, + 33, + 0, 131, 1, 82, 128, 97, - 5, - 224, + 6, + 32, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 31, - 224, + 33, + 32, 131, 1, 82, 128, 97, 6, - 64, + 128, 131, 1, 81, 130, 3, 97, - 31, - 224, + 33, + 32, 132, 1, 81, 8, 97, - 32, - 0, + 33, + 64, 131, 1, 129, 144, 82, 97, - 31, - 192, + 33, + 0, 131, 1, 81, @@ -27521,56 +28292,56 @@ pub mod inclusion_verifier { 145, 9, 97, - 32, - 32, + 33, + 96, 131, 1, 82, 128, 97, - 32, - 32, + 33, + 96, 131, 1, 81, 97, - 31, - 128, + 32, + 192, 132, 1, 81, 8, 97, - 32, - 64, + 33, + 128, 131, 1, 82, 128, 97, - 32, - 64, + 33, + 128, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 32, - 96, + 33, + 160, 131, 1, 129, 144, 82, 97, - 32, - 32, + 33, + 96, 131, 1, 81, @@ -27578,35 +28349,35 @@ pub mod inclusion_verifier { 145, 8, 97, - 32, - 128, + 33, + 192, 131, 1, 82, 128, 97, - 32, - 128, + 33, + 192, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 32, - 160, + 33, + 224, 131, 1, 82, 128, 97, - 8, - 224, + 9, + 32, 131, 1, 81, @@ -27616,15 +28387,15 @@ pub mod inclusion_verifier { 1, 8, 97, - 32, - 192, + 34, + 0, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -27633,54 +28404,54 @@ pub mod inclusion_verifier { 145, 9, 97, + 34, 32, - 224, 131, 1, 82, 128, 97, + 34, 32, - 224, 131, 1, 81, 97, - 32, - 160, + 33, + 224, 132, 1, 81, 8, 97, - 33, - 0, + 34, + 64, 131, 1, 82, 128, 97, - 33, - 0, + 34, + 64, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 33, - 32, + 34, + 96, 131, 1, 82, 97, 9, - 64, + 128, 130, 1, 81, @@ -27689,37 +28460,37 @@ pub mod inclusion_verifier { 128, 9, 97, - 33, - 64, + 34, + 128, 131, 1, 82, 128, 97, 9, - 64, + 128, 131, 1, 81, 130, 3, 97, - 33, - 64, + 34, + 128, 132, 1, 81, 8, 97, - 33, - 96, + 34, + 160, 131, 1, 129, 144, 82, 97, - 17, + 18, 64, 131, 1, @@ -27728,55 +28499,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 33, - 128, + 34, + 192, 131, 1, 82, 128, 97, - 33, - 128, + 34, + 192, 131, 1, 81, 97, - 33, - 32, + 34, + 96, 132, 1, 81, 8, 97, - 33, - 160, + 34, + 224, 131, 1, 82, 128, 97, - 33, - 160, + 34, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 33, - 192, + 35, + 0, 131, 1, 82, 128, 97, 9, - 32, + 96, 131, 1, 81, @@ -27784,21 +28555,21 @@ pub mod inclusion_verifier { 3, 97, 9, - 64, + 128, 132, 1, 81, 8, 97, - 33, - 224, + 35, + 32, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -27807,54 +28578,54 @@ pub mod inclusion_verifier { 145, 9, 97, - 34, - 0, + 35, + 64, 131, 1, 82, 128, 97, - 34, - 0, + 35, + 64, 131, 1, 81, 97, - 33, - 192, + 35, + 0, 132, 1, 81, 8, 97, - 34, - 32, + 35, + 96, 131, 1, 82, 128, 97, - 34, - 32, + 35, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 34, - 64, + 35, + 128, 131, 1, 82, 128, 97, - 17, + 18, 64, 131, 1, @@ -27865,35 +28636,35 @@ pub mod inclusion_verifier { 1, 8, 97, - 34, - 96, + 35, + 160, 131, 1, 82, 128, 97, - 17, + 18, 128, 131, 1, 81, 97, - 17, + 18, 96, 132, 1, 81, 8, 97, - 34, - 128, + 35, + 192, 131, 1, 129, 144, 82, 97, - 17, + 18, 160, 131, 1, @@ -27902,15 +28673,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 34, - 160, + 35, + 224, 131, 1, 129, 144, 82, 97, - 17, + 18, 192, 131, 1, @@ -27919,15 +28690,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 34, - 192, + 36, + 0, 131, 1, 129, 144, 82, 97, - 17, + 18, 224, 131, 1, @@ -27936,70 +28707,70 @@ pub mod inclusion_verifier { 145, 8, 97, - 34, - 224, + 36, + 32, 131, 1, 82, 128, 97, - 34, - 224, + 36, + 32, 131, 1, 81, 130, 3, 97, - 34, - 96, + 35, + 160, 132, 1, 81, 8, 97, - 35, - 0, + 36, + 64, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 32, + 96, 132, 1, 81, 9, 97, - 35, - 32, + 36, + 96, 131, 1, 82, 128, 97, - 35, - 32, + 36, + 96, 131, 1, 81, 97, 6, - 160, + 224, 132, 1, 81, 8, 97, - 35, - 64, + 36, + 128, 131, 1, 129, @@ -28007,7 +28778,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28015,48 +28786,48 @@ pub mod inclusion_verifier { 145, 8, 97, - 35, - 96, + 36, + 160, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 64, + 128, 132, 1, 81, 9, 97, - 35, - 128, + 36, + 192, 131, 1, 82, 128, 97, - 35, - 128, + 36, + 192, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 35, - 160, + 36, + 224, 131, 1, 129, @@ -28064,7 +28835,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28072,16 +28843,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 35, - 192, + 37, + 0, 131, 1, 129, 144, 82, 97, - 35, - 96, + 36, + 160, 131, 1, 81, @@ -28089,48 +28860,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 35, - 224, + 37, + 32, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 96, + 160, 132, 1, 81, 9, 97, - 36, - 0, + 37, + 64, 131, 1, 82, 128, 97, - 36, - 0, + 37, + 64, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 36, - 32, + 37, + 96, 131, 1, 129, @@ -28138,7 +28909,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28146,16 +28917,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 36, - 64, + 37, + 128, 131, 1, 129, 144, 82, 97, - 35, - 224, + 37, + 32, 131, 1, 81, @@ -28163,48 +28934,48 @@ pub mod inclusion_verifier { 145, 9, 97, - 36, - 96, + 37, + 160, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 128, + 192, 132, 1, 81, 9, 97, - 36, - 128, + 37, + 192, 131, 1, 82, 128, 97, - 36, - 128, + 37, + 192, 131, 1, 81, 97, - 6, - 192, + 7, + 0, 132, 1, 81, 8, 97, - 36, - 160, + 37, + 224, 131, 1, 129, @@ -28212,7 +28983,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28220,16 +28991,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 36, - 192, + 38, + 0, 131, 1, 129, 144, 82, 97, - 36, - 96, + 37, + 160, 131, 1, 81, @@ -28237,8 +29008,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 36, - 224, + 38, + 32, 131, 1, 129, @@ -28246,7 +29017,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 0, + 64, 131, 1, 81, @@ -28254,15 +29025,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 37, - 0, + 38, + 64, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -28270,48 +29041,48 @@ pub mod inclusion_verifier { 1, 9, 97, - 37, - 32, + 38, + 96, 131, 1, 82, 128, 97, - 37, - 32, + 38, + 96, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 37, - 64, + 38, + 128, 131, 1, 82, 128, 97, - 37, - 64, + 38, + 128, 131, 1, 81, 97, 6, - 160, + 224, 132, 1, 81, 8, 97, - 37, - 96, + 38, + 160, 131, 1, 129, @@ -28319,7 +29090,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28327,15 +29098,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 37, - 128, + 38, + 192, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -28374,48 +29145,48 @@ pub mod inclusion_verifier { 162, 9, 97, - 37, - 160, + 38, + 224, 131, 1, 82, 128, 97, - 37, - 160, + 38, + 224, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 37, - 192, + 39, + 0, 131, 1, 82, 128, 97, - 37, - 192, + 39, + 0, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 37, - 224, + 39, + 32, 131, 1, 129, @@ -28423,7 +29194,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28431,16 +29202,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 38, - 0, + 39, + 64, 131, 1, 129, 144, 82, 97, - 37, - 128, + 38, + 192, 131, 1, 81, @@ -28448,15 +29219,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 38, - 32, + 39, + 96, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -28495,48 +29266,48 @@ pub mod inclusion_verifier { 43, 9, 97, - 38, - 64, + 39, + 128, 131, 1, 82, 128, 97, - 38, - 64, + 39, + 128, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 38, - 96, + 39, + 160, 131, 1, 82, 128, 97, - 38, - 96, + 39, + 160, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, 8, 97, - 38, - 128, + 39, + 192, 131, 1, 129, @@ -28544,7 +29315,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28552,16 +29323,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 38, - 160, + 39, + 224, 131, 1, 129, 144, 82, 97, - 38, - 32, + 39, + 96, 131, 1, 81, @@ -28569,15 +29340,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 38, - 192, + 40, + 0, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -28616,48 +29387,48 @@ pub mod inclusion_verifier { 82, 9, 97, - 38, - 224, + 40, + 32, 131, 1, 82, 128, 97, - 38, - 224, + 40, + 32, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 39, - 0, + 40, + 64, 131, 1, 82, 128, 97, - 39, - 0, + 40, + 64, 131, 1, 81, 97, - 6, - 192, + 7, + 0, 132, 1, 81, 8, 97, - 39, - 32, + 40, + 96, 131, 1, 129, @@ -28665,7 +29436,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28673,16 +29444,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 39, - 64, + 40, + 128, 131, 1, 129, 144, 82, 97, - 38, - 192, + 40, + 0, 131, 1, 81, @@ -28690,16 +29461,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 39, - 96, + 40, + 160, 131, 1, 129, 144, 82, 97, - 8, - 224, + 9, + 32, 131, 1, 81, @@ -28707,38 +29478,38 @@ pub mod inclusion_verifier { 145, 9, 97, - 39, - 128, + 40, + 192, 131, 1, 82, 128, 97, - 39, - 128, + 40, + 192, 131, 1, 81, 130, 3, 97, - 37, - 0, + 38, + 64, 132, 1, 81, 8, 97, - 39, - 160, + 40, + 224, 131, 1, 129, 144, 82, 97, - 35, - 0, + 36, + 64, 131, 1, 81, @@ -28746,88 +29517,88 @@ pub mod inclusion_verifier { 145, 9, 97, - 39, - 192, + 41, + 0, 131, 1, 82, 128, 97, - 39, - 192, + 41, + 0, 131, 1, 81, 97, - 34, - 64, + 35, + 128, 132, 1, 81, 8, 97, - 39, - 224, + 41, + 32, 131, 1, 82, 128, 97, - 39, - 224, + 41, + 32, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 40, - 0, + 41, + 64, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, 8, - 160, + 224, 132, 1, 81, 9, 97, - 40, - 32, + 41, + 96, 131, 1, 82, 128, 97, - 40, - 32, + 41, + 96, 131, 1, 81, 97, 6, - 64, + 128, 132, 1, 81, 8, 97, - 40, - 64, + 41, + 128, 131, 1, 129, @@ -28835,7 +29606,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28843,48 +29614,48 @@ pub mod inclusion_verifier { 145, 8, 97, - 40, - 96, + 41, + 160, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, - 8, - 192, + 9, + 0, 132, 1, 81, 9, 97, - 40, - 128, + 41, + 192, 131, 1, 82, 128, 97, - 40, - 128, + 41, + 192, 131, 1, 81, 97, - 18, - 64, + 19, + 128, 132, 1, 81, 8, 97, - 40, - 160, + 41, + 224, 131, 1, 129, @@ -28892,7 +29663,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -28900,16 +29671,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 40, - 192, + 42, + 0, 131, 1, 129, 144, 82, 97, - 40, - 96, + 41, + 160, 131, 1, 81, @@ -28917,8 +29688,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 40, - 224, + 42, + 32, 131, 1, 129, @@ -28926,7 +29697,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 96, + 160, 131, 1, 81, @@ -28934,15 +29705,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 41, - 0, + 42, + 64, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -28980,48 +29751,48 @@ pub mod inclusion_verifier { 66, 9, 97, - 41, - 32, + 42, + 96, 131, 1, 82, 128, 97, - 41, - 32, + 42, + 96, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 41, - 64, + 42, + 128, 131, 1, 82, 128, 97, - 41, - 64, + 42, + 128, 131, 1, 81, 97, 6, - 64, + 128, 132, 1, 81, 8, 97, - 41, - 96, + 42, + 160, 131, 1, 129, @@ -29029,7 +29800,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -29037,15 +29808,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 41, - 128, + 42, + 192, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, @@ -29084,48 +29855,48 @@ pub mod inclusion_verifier { 157, 9, 97, - 41, - 160, + 42, + 224, 131, 1, 82, 128, 97, - 41, - 160, + 42, + 224, 131, 1, 81, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 41, - 192, + 43, + 0, 131, 1, 82, 128, 97, - 41, - 192, + 43, + 0, 131, 1, 81, 97, - 18, - 64, + 19, + 128, 132, 1, 81, 8, 97, - 41, - 224, + 43, + 32, 131, 1, 129, @@ -29133,7 +29904,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 128, + 192, 131, 1, 81, @@ -29141,16 +29912,16 @@ pub mod inclusion_verifier { 145, 8, 97, - 42, - 0, + 43, + 64, 131, 1, 129, 144, 82, 97, - 41, - 128, + 42, + 192, 131, 1, 81, @@ -29158,8 +29929,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 32, + 43, + 96, 131, 1, 129, @@ -29167,7 +29938,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 64, + 128, 131, 1, 81, @@ -29175,38 +29946,38 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 64, + 43, + 128, 131, 1, 82, 128, 97, - 42, - 64, + 43, + 128, 131, 1, 81, 130, 3, 97, - 41, - 0, + 42, + 64, 132, 1, 81, 8, 97, - 42, - 96, + 43, + 160, 131, 1, 129, 144, 82, 97, - 35, - 0, + 36, + 64, 131, 1, 81, @@ -29214,55 +29985,55 @@ pub mod inclusion_verifier { 145, 9, 97, - 42, - 128, + 43, + 192, 131, 1, 82, 128, 97, - 42, - 128, + 43, + 192, 131, 1, 81, 97, - 40, - 0, + 41, + 64, 132, 1, 81, 8, 97, - 42, - 160, + 43, + 224, 131, 1, 82, 128, 97, - 42, - 160, + 43, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 42, - 192, + 44, + 0, 131, 1, 82, 128, 97, 9, - 128, + 192, 131, 1, 81, @@ -29272,15 +30043,15 @@ pub mod inclusion_verifier { 1, 8, 97, - 42, - 224, + 44, + 32, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -29289,54 +30060,54 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 0, + 44, + 64, 131, 1, 82, 128, 97, - 43, - 0, + 44, + 64, 131, 1, 81, 97, - 42, - 192, + 44, + 0, 132, 1, 81, 8, 97, - 43, - 32, + 44, + 96, 131, 1, 82, 128, 97, - 43, - 32, + 44, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 43, - 64, + 44, + 128, 131, 1, 82, 97, 9, - 128, + 192, 130, 1, 81, @@ -29345,37 +30116,37 @@ pub mod inclusion_verifier { 128, 9, 97, - 43, - 96, + 44, + 160, 131, 1, 82, 128, 97, 9, - 128, + 192, 131, 1, 81, 130, 3, 97, - 43, - 96, + 44, + 160, 132, 1, 81, 8, 97, - 43, - 128, + 44, + 192, 131, 1, 129, 144, 82, 97, - 17, + 18, 64, 131, 1, @@ -29384,68 +30155,68 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 160, + 44, + 224, 131, 1, 82, 128, 97, - 43, - 160, + 44, + 224, 131, 1, 81, 97, - 43, - 64, + 44, + 128, 132, 1, 81, 8, 97, - 43, - 192, + 45, + 0, 131, 1, 82, 128, 97, - 43, - 192, + 45, + 0, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 43, - 224, + 45, + 32, 131, 1, 82, 128, 97, 2, - 32, + 96, 131, 1, 81, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 44, - 0, + 45, + 64, 131, 1, 129, @@ -29453,7 +30224,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 160, + 224, 131, 1, 81, @@ -29461,36 +30232,36 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 32, + 45, + 96, 131, 1, 82, 128, 97, 2, - 128, + 192, 131, 1, 81, 97, 10, - 0, + 64, 132, 1, 81, 8, 97, - 44, - 64, + 45, + 128, 131, 1, 129, 144, 82, 97, - 44, - 32, + 45, + 96, 131, 1, 81, @@ -29498,15 +30269,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 96, + 45, + 160, 131, 1, 82, 128, 97, 6, - 0, + 64, 131, 1, 81, @@ -29515,30 +30286,30 @@ pub mod inclusion_verifier { 0, 9, 97, - 44, - 128, + 45, + 192, 131, 1, 82, 128, 97, - 44, - 128, + 45, + 192, 131, 1, 81, 130, 3, 97, - 5, - 192, + 6, + 0, 132, 1, 81, 8, 97, - 44, - 160, + 45, + 224, 131, 1, 129, @@ -29546,7 +30317,7 @@ pub mod inclusion_verifier { 82, 97, 7, - 64, + 128, 131, 1, 81, @@ -29554,8 +30325,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 192, + 46, + 0, 131, 1, 129, @@ -29563,7 +30334,7 @@ pub mod inclusion_verifier { 82, 97, 2, - 32, + 96, 131, 1, 81, @@ -29571,8 +30342,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 44, - 224, + 46, + 32, 131, 1, 129, @@ -29580,7 +30351,7 @@ pub mod inclusion_verifier { 82, 97, 9, - 128, + 192, 131, 1, 81, @@ -29588,36 +30359,36 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 0, + 46, + 64, 131, 1, 82, 128, 97, 2, - 128, + 192, 131, 1, 81, 97, 7, - 32, + 96, 132, 1, 81, 8, 97, - 45, - 32, + 46, + 96, 131, 1, 129, 144, 82, 97, - 45, - 0, + 46, + 64, 131, 1, 81, @@ -29625,38 +30396,38 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 64, + 46, + 128, 131, 1, 82, 128, 97, - 45, - 64, + 46, + 128, 131, 1, 81, 130, 3, 97, - 44, - 96, + 45, + 160, 132, 1, 81, 8, 97, - 45, - 96, + 46, + 160, 131, 1, 129, 144, 82, 97, - 35, - 0, + 36, + 64, 131, 1, 81, @@ -29664,77 +30435,77 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 128, + 46, + 192, 131, 1, 82, 128, 97, - 45, - 128, + 46, + 192, 131, 1, 81, 97, - 43, - 224, + 45, + 32, 132, 1, 81, 8, 97, - 45, - 160, + 46, + 224, 131, 1, 82, 128, 97, - 45, - 160, + 46, + 224, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 45, - 192, + 47, + 0, 131, 1, 82, 128, 97, 10, - 0, + 64, 131, 1, 81, 130, 3, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 45, - 224, + 47, + 32, 131, 1, 129, 144, 82, 97, - 18, + 19, 0, 131, 1, @@ -29743,98 +30514,98 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 0, + 47, + 64, 131, 1, 82, 128, 97, - 46, - 0, + 47, + 64, 131, 1, 81, 97, - 45, - 192, + 47, + 0, 132, 1, 81, 8, 97, - 46, - 32, + 47, + 96, 131, 1, 82, 128, 97, - 46, - 32, + 47, + 96, 131, 1, 81, 97, - 3, - 224, + 4, + 32, 132, 1, 81, 9, 97, - 46, - 64, + 47, + 128, 131, 1, 82, 128, 97, - 35, - 0, + 36, + 64, 131, 1, 81, 97, - 45, - 224, + 47, + 32, 132, 1, 81, 9, 97, - 46, - 96, + 47, + 160, 131, 1, 82, 128, 97, - 9, - 224, + 10, + 32, 131, 1, 81, 130, 3, 97, - 9, - 192, + 10, + 0, 132, 1, 81, 8, 97, - 46, - 128, + 47, + 192, 131, 1, 129, 144, 82, 97, - 46, - 96, + 47, + 160, 131, 1, 81, @@ -29842,34 +30613,34 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 160, + 47, + 224, 131, 1, 82, 128, 97, - 46, - 160, + 47, + 224, 131, 1, 81, 97, - 46, - 64, + 47, + 128, 132, 1, 81, 8, 97, - 46, - 192, + 48, + 0, 131, 1, 82, 97, 13, - 0, + 64, 130, 1, 81, @@ -29878,8 +30649,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 46, - 224, + 48, + 32, 131, 1, 129, @@ -29887,7 +30658,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -29895,8 +30666,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 0, + 48, + 64, 131, 1, 129, @@ -29904,7 +30675,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -29912,8 +30683,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 32, + 48, + 96, 131, 1, 129, @@ -29921,7 +30692,7 @@ pub mod inclusion_verifier { 82, 97, 13, - 0, + 64, 131, 1, 81, @@ -29929,15 +30700,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 64, + 48, + 128, 131, 1, 82, 128, 97, 13, - 0, + 64, 131, 1, 81, @@ -29945,15 +30716,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 96, + 48, + 160, 131, 1, 82, 128, 97, - 46, - 224, + 48, + 32, 131, 1, 81, @@ -29961,15 +30732,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 128, + 48, + 192, 131, 1, 82, 128, 97, - 47, - 0, + 48, + 64, 131, 1, 81, @@ -29977,15 +30748,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 160, + 48, + 224, 131, 1, 82, 128, 97, - 47, - 32, + 48, + 96, 131, 1, 81, @@ -29993,48 +30764,48 @@ pub mod inclusion_verifier { 1, 9, 97, - 47, - 192, + 49, + 0, 131, 1, 82, 128, 97, 13, - 32, + 96, 131, 1, 81, 97, - 46, - 192, + 48, + 0, 132, 1, 81, 9, 97, - 47, - 224, + 49, + 32, 131, 1, 82, 128, 97, 5, - 128, + 192, 131, 1, 81, 97, - 11, - 192, + 12, + 0, 132, 1, 81, 9, 97, - 48, - 0, + 49, + 64, 131, 1, 82, @@ -30043,21 +30814,21 @@ pub mod inclusion_verifier { 1, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 32, + 49, + 96, 131, 1, 82, 128, 97, - 48, - 32, + 49, + 96, 131, 1, 81, @@ -30065,14 +30836,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 64, + 49, + 128, 131, 1, 82, @@ -30112,21 +30883,21 @@ pub mod inclusion_verifier { 95, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 96, + 49, + 160, 131, 1, 82, 128, 97, - 48, - 96, + 49, + 160, 131, 1, 81, @@ -30134,14 +30905,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 128, + 49, + 192, 131, 1, 82, @@ -30181,21 +30952,21 @@ pub mod inclusion_verifier { 2, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 160, + 49, + 224, 131, 1, 82, 128, 97, - 48, - 160, + 49, + 224, 131, 1, 81, @@ -30203,14 +30974,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 48, - 192, + 50, + 0, 131, 1, 82, @@ -30250,21 +31021,21 @@ pub mod inclusion_verifier { 26, 97, 5, - 128, + 192, 132, 1, 81, 9, 97, - 48, - 224, + 50, + 32, 131, 1, 82, 128, 97, - 48, - 224, + 50, + 32, 131, 1, 81, @@ -30272,14 +31043,14 @@ pub mod inclusion_verifier { 3, 97, 11, - 64, + 128, 132, 1, 81, 8, 97, - 49, - 0, + 50, + 64, 131, 1, 82, @@ -30319,15 +31090,15 @@ pub mod inclusion_verifier { 121, 139, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -30370,15 +31141,15 @@ pub mod inclusion_verifier { 134, 118, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -30388,8 +31159,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 32, + 50, + 96, 132, 1, 82, @@ -30430,15 +31201,15 @@ pub mod inclusion_verifier { 97, 54, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -30481,15 +31252,15 @@ pub mod inclusion_verifier { 231, 116, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -30499,8 +31270,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 64, + 50, + 128, 132, 1, 82, @@ -30541,15 +31312,15 @@ pub mod inclusion_verifier { 12, 40, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -30592,30 +31363,30 @@ pub mod inclusion_verifier { 239, 215, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 49, - 96, + 50, + 160, 132, 1, 82, 80, 97, - 48, - 64, + 49, + 128, 130, 1, 81, @@ -30625,16 +31396,16 @@ pub mod inclusion_verifier { 1, 9, 97, - 49, - 128, + 50, + 192, 131, 1, 129, 144, 82, 97, - 48, - 128, + 49, + 192, 131, 1, 81, @@ -30642,16 +31413,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 49, - 160, + 50, + 224, 131, 1, 129, 144, 82, 97, - 49, - 0, + 50, + 64, 131, 1, 81, @@ -30659,8 +31430,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 49, - 192, + 51, + 0, 131, 1, 82, @@ -30669,7 +31440,7 @@ pub mod inclusion_verifier { 1, 97, 11, - 64, + 128, 132, 1, 81, @@ -30712,7 +31483,7 @@ pub mod inclusion_verifier { 0, 97, 5, - 128, + 192, 135, 1, 81, @@ -30722,8 +31493,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 49, - 224, + 51, + 32, 132, 1, 82, @@ -30764,15 +31535,15 @@ pub mod inclusion_verifier { 76, 242, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -30815,15 +31586,15 @@ pub mod inclusion_verifier { 179, 15, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -30833,8 +31604,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 0, + 51, + 64, 132, 1, 82, @@ -30875,15 +31646,15 @@ pub mod inclusion_verifier { 141, 207, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -30926,15 +31697,15 @@ pub mod inclusion_verifier { 38, 251, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -30944,8 +31715,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 32, + 51, + 96, 132, 1, 82, @@ -30986,15 +31757,15 @@ pub mod inclusion_verifier { 8, 51, 97, - 11, - 192, + 12, + 0, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -31037,36 +31808,36 @@ pub mod inclusion_verifier { 46, 39, 97, - 11, - 192, + 12, + 0, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 50, - 64, + 51, + 128, 132, 1, 82, 80, 97, - 48, - 192, + 50, + 0, 130, 1, 81, 97, - 49, - 160, + 50, + 224, 131, 1, 81, @@ -31075,8 +31846,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 50, - 96, + 51, + 160, 131, 1, 82, @@ -31117,14 +31888,14 @@ pub mod inclusion_verifier { 163, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -31168,14 +31939,14 @@ pub mod inclusion_verifier { 94, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -31185,8 +31956,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 128, + 51, + 192, 132, 1, 82, @@ -31228,14 +31999,14 @@ pub mod inclusion_verifier { 94, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -31279,14 +32050,14 @@ pub mod inclusion_verifier { 227, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -31296,8 +32067,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 160, + 51, + 224, 132, 1, 82, @@ -31339,14 +32110,14 @@ pub mod inclusion_verifier { 232, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -31390,14 +32161,14 @@ pub mod inclusion_verifier { 25, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, @@ -31407,8 +32178,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 192, + 52, + 0, 132, 1, 82, @@ -31450,14 +32221,14 @@ pub mod inclusion_verifier { 25, 97, 5, - 128, + 192, 133, 1, 81, 9, 97, 11, - 64, + 128, 132, 1, 81, @@ -31501,35 +32272,35 @@ pub mod inclusion_verifier { 55, 97, 5, - 128, + 192, 136, 1, 81, 9, 97, 5, - 128, + 192, 135, 1, 81, 9, 8, 97, - 50, - 224, + 52, + 32, 132, 1, 82, 80, 97, - 49, - 0, + 50, + 64, 130, 1, 81, 97, - 49, - 128, + 50, + 192, 131, 1, 81, @@ -31538,22 +32309,22 @@ pub mod inclusion_verifier { 144, 9, 97, - 51, - 0, + 52, + 64, 131, 1, 82, 97, - 49, - 32, + 50, + 96, 130, 1, 81, 129, 129, 97, - 49, - 64, + 50, + 128, 133, 1, 81, @@ -31562,16 +32333,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 32, + 52, + 96, 132, 1, 82, 129, 129, 97, - 49, - 96, + 50, + 160, 133, 1, 81, @@ -31580,16 +32351,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 64, + 52, + 128, 132, 1, 82, 129, 129, 97, - 49, - 224, + 51, + 32, 133, 1, 81, @@ -31598,16 +32369,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 96, + 52, + 160, 132, 1, 82, 129, 129, 97, - 49, - 128, + 50, + 192, 133, 1, 81, @@ -31616,16 +32387,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 128, + 52, + 192, 132, 1, 82, 129, 129, 97, - 50, - 0, + 51, + 64, 133, 1, 81, @@ -31634,16 +32405,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 160, + 52, + 224, 132, 1, 82, 129, 129, 97, - 50, - 32, + 51, + 96, 133, 1, 81, @@ -31652,16 +32423,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 192, + 53, + 0, 132, 1, 82, 129, 129, 97, - 50, - 64, + 51, + 128, 133, 1, 81, @@ -31670,16 +32441,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 224, + 53, + 32, 132, 1, 82, 129, 129, 97, - 50, - 96, + 51, + 160, 133, 1, 81, @@ -31688,16 +32459,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 0, + 53, + 64, 132, 1, 82, 129, 129, 97, - 50, - 128, + 51, + 192, 133, 1, 81, @@ -31706,16 +32477,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 32, + 53, + 96, 132, 1, 82, 129, 129, 97, - 50, - 160, + 51, + 224, 133, 1, 81, @@ -31724,16 +32495,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 64, + 53, + 128, 132, 1, 82, 129, 129, 97, - 49, - 160, + 50, + 224, 133, 1, 81, @@ -31742,16 +32513,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 96, + 53, + 160, 132, 1, 82, 129, 129, 97, - 50, - 192, + 52, + 0, 133, 1, 81, @@ -31760,16 +32531,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 128, + 53, + 192, 132, 1, 82, 129, 129, 97, - 50, - 224, + 52, + 32, 133, 1, 81, @@ -31778,16 +32549,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 160, + 53, + 224, 132, 1, 82, 129, 129, 97, - 51, - 0, + 52, + 64, 133, 1, 81, @@ -31796,8 +32567,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 52, - 192, + 54, + 0, 132, 1, 82, @@ -31805,36 +32576,36 @@ pub mod inclusion_verifier { 96, 32, 97, - 53, - 0, + 54, + 64, 131, 1, 82, 96, 32, 97, - 53, - 32, + 54, + 96, 131, 1, 82, 96, 32, 97, - 53, - 64, + 54, + 128, 131, 1, 82, 97, - 52, - 192, + 54, + 0, 130, 1, 81, 97, - 53, - 96, + 54, + 160, 131, 1, 82, @@ -31872,8 +32643,8 @@ pub mod inclusion_verifier { 255, 255, 97, - 53, - 128, + 54, + 192, 131, 1, 82, @@ -31884,8 +32655,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 148, 131, 57, 129, @@ -31893,8 +32664,8 @@ pub mod inclusion_verifier { 145, 82, 97, - 53, - 160, + 54, + 224, 131, 1, 82, @@ -31904,15 +32675,15 @@ pub mod inclusion_verifier { 96, 32, 97, - 52, - 224, + 54, + 32, 133, 1, 96, 192, 97, - 53, - 0, + 54, + 64, 135, 1, 96, @@ -31924,16 +32695,16 @@ pub mod inclusion_verifier { 146, 80, 97, - 52, - 224, + 54, + 32, 130, 1, 81, 96, 0, 97, - 51, - 0, + 52, + 64, 132, 1, 81, @@ -31942,15 +32713,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 160, + 53, + 224, 134, 1, 81, 9, 97, - 51, - 0, + 52, + 64, 133, 1, 82, @@ -31961,8 +32732,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 224, + 52, + 32, 132, 1, 81, @@ -31971,15 +32742,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 128, + 53, + 192, 134, 1, 81, 9, 97, - 50, - 224, + 52, + 32, 133, 1, 82, @@ -31990,8 +32761,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 192, + 52, + 0, 132, 1, 81, @@ -32000,15 +32771,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 96, + 53, + 160, 134, 1, 81, 9, 97, - 50, - 192, + 52, + 0, 133, 1, 82, @@ -32019,8 +32790,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 160, + 50, + 224, 132, 1, 81, @@ -32029,15 +32800,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 64, + 53, + 128, 134, 1, 81, 9, 97, - 49, - 160, + 50, + 224, 133, 1, 82, @@ -32048,8 +32819,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 160, + 51, + 224, 132, 1, 81, @@ -32058,15 +32829,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 32, + 53, + 96, 134, 1, 81, 9, 97, - 50, - 160, + 51, + 224, 133, 1, 82, @@ -32077,8 +32848,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 128, + 51, + 192, 132, 1, 81, @@ -32087,15 +32858,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 0, + 53, + 64, 134, 1, 81, 9, 97, - 50, - 128, + 51, + 192, 133, 1, 82, @@ -32106,8 +32877,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 96, + 51, + 160, 132, 1, 81, @@ -32116,15 +32887,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 224, + 53, + 32, 134, 1, 81, 9, 97, - 50, - 96, + 51, + 160, 133, 1, 82, @@ -32135,8 +32906,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 64, + 51, + 128, 132, 1, 81, @@ -32145,15 +32916,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 192, + 53, + 0, 134, 1, 81, 9, 97, - 50, - 64, + 51, + 128, 133, 1, 82, @@ -32164,8 +32935,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 32, + 51, + 96, 132, 1, 81, @@ -32174,15 +32945,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 160, + 52, + 224, 134, 1, 81, 9, 97, - 50, - 32, + 51, + 96, 133, 1, 82, @@ -32193,8 +32964,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 0, + 51, + 64, 132, 1, 81, @@ -32203,15 +32974,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 128, + 52, + 192, 134, 1, 81, 9, 97, - 50, - 0, + 51, + 64, 133, 1, 82, @@ -32222,8 +32993,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 128, + 50, + 192, 132, 1, 81, @@ -32232,15 +33003,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 96, + 52, + 160, 134, 1, 81, 9, 97, - 49, - 128, + 50, + 192, 133, 1, 82, @@ -32251,8 +33022,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 224, + 51, + 32, 132, 1, 81, @@ -32261,15 +33032,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 64, + 52, + 128, 134, 1, 81, 9, 97, - 49, - 224, + 51, + 32, 133, 1, 82, @@ -32280,8 +33051,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 96, + 50, + 160, 132, 1, 81, @@ -32290,15 +33061,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 51, - 32, + 52, + 96, 134, 1, 81, 9, 97, - 49, - 96, + 50, + 160, 133, 1, 82, @@ -32309,8 +33080,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 49, - 64, + 50, + 128, 132, 1, 81, @@ -32319,15 +33090,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 49, - 32, + 50, + 96, 134, 1, 81, 9, 97, - 49, - 64, + 50, + 128, 133, 1, 82, @@ -32336,16 +33107,16 @@ pub mod inclusion_verifier { 130, 9, 97, - 49, - 32, + 50, + 96, 133, 1, 129, 144, 82, 97, - 49, - 64, + 50, + 128, 133, 1, 81, @@ -32363,28 +33134,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 49, - 96, + 50, + 160, 133, 1, 81, 8, 97, - 53, - 192, + 55, + 0, 132, 1, 82, 80, 97, - 49, - 128, + 50, + 192, 130, 1, 81, 97, - 49, - 192, + 51, + 0, 131, 1, 81, @@ -32393,56 +33164,56 @@ pub mod inclusion_verifier { 144, 9, 97, - 53, - 224, + 55, + 32, 131, 1, 82, 97, - 49, - 224, + 51, + 32, 130, 1, 81, 128, 97, - 54, - 0, + 55, + 64, 132, 1, 82, 80, 128, 97, - 50, - 96, + 51, + 160, 131, 1, 81, 97, - 49, - 192, + 51, + 0, 132, 1, 81, 9, 97, - 54, - 32, + 55, + 96, 131, 1, 82, 97, - 50, - 0, + 51, + 64, 130, 1, 81, 129, 129, 97, - 50, - 32, + 51, + 96, 133, 1, 81, @@ -32452,28 +33223,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 50, - 64, + 51, + 128, 133, 1, 81, 8, 97, - 54, - 64, + 55, + 128, 132, 1, 82, 80, 97, - 49, - 160, + 50, + 224, 130, 1, 81, 97, - 49, - 192, + 51, + 0, 131, 1, 81, @@ -32482,42 +33253,42 @@ pub mod inclusion_verifier { 144, 9, 97, - 54, - 96, + 55, + 160, 131, 1, 82, 97, - 50, - 128, + 51, + 192, 130, 1, 81, 129, 129, 97, - 50, - 160, + 51, + 224, 133, 1, 81, 8, 97, - 54, - 128, + 55, + 192, 132, 1, 82, 80, 97, - 51, - 0, + 52, + 64, 130, 1, 81, 97, - 49, - 192, + 51, + 0, 131, 1, 81, @@ -32526,42 +33297,42 @@ pub mod inclusion_verifier { 144, 9, 97, - 54, - 160, + 55, + 224, 131, 1, 82, 97, - 50, - 192, + 52, + 0, 130, 1, 81, 129, 129, 97, - 50, - 224, + 52, + 32, 133, 1, 81, 8, 97, - 54, - 192, + 56, + 0, 132, 1, 82, 80, 97, - 53, - 192, + 55, + 0, 130, 1, 81, 97, - 54, - 0, + 55, + 64, 131, 1, 81, @@ -32574,16 +33345,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 54, - 224, + 56, + 32, 132, 1, 82, 129, 129, 97, - 54, - 64, + 55, + 128, 133, 1, 81, @@ -32592,16 +33363,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 0, + 56, + 64, 132, 1, 82, 129, 129, 97, - 54, - 128, + 55, + 192, 133, 1, 81, @@ -32610,16 +33381,16 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 32, + 56, + 96, 132, 1, 82, 129, 129, 97, - 54, - 192, + 56, + 0, 133, 1, 81, @@ -32628,8 +33399,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 55, - 64, + 56, + 128, 132, 1, 82, @@ -32637,36 +33408,36 @@ pub mod inclusion_verifier { 96, 32, 97, - 55, - 128, + 56, + 192, 131, 1, 82, 96, 32, 97, - 55, - 160, + 56, + 224, 131, 1, 82, 96, 32, 97, - 55, - 192, + 57, + 0, 131, 1, 82, 97, - 55, - 64, + 56, + 128, 130, 1, 81, 97, - 55, - 224, + 57, + 32, 131, 1, 82, @@ -32704,8 +33475,8 @@ pub mod inclusion_verifier { 255, 255, 97, - 56, - 0, + 57, + 64, 131, 1, 82, @@ -32716,8 +33487,8 @@ pub mod inclusion_verifier { 96, 32, 97, - 84, - 18, + 85, + 148, 131, 57, 129, @@ -32725,8 +33496,8 @@ pub mod inclusion_verifier { 145, 82, 97, - 56, - 32, + 57, + 96, 131, 1, 82, @@ -32736,15 +33507,15 @@ pub mod inclusion_verifier { 96, 32, 97, - 55, - 96, + 56, + 160, 133, 1, 96, 192, 97, - 55, - 128, + 56, + 192, 135, 1, 96, @@ -32756,16 +33527,16 @@ pub mod inclusion_verifier { 146, 80, 97, - 55, - 96, + 56, + 160, 130, 1, 81, 96, 0, 97, - 54, - 192, + 56, + 0, 132, 1, 81, @@ -32774,15 +33545,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 55, - 32, + 56, + 96, 134, 1, 81, 9, 97, - 54, - 192, + 56, + 0, 133, 1, 82, @@ -32793,8 +33564,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 128, + 55, + 192, 132, 1, 81, @@ -32803,15 +33574,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 55, - 0, + 56, + 64, 134, 1, 81, 9, 97, - 54, - 128, + 55, + 192, 133, 1, 82, @@ -32822,8 +33593,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 64, + 55, + 128, 132, 1, 81, @@ -32832,15 +33603,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 54, - 224, + 56, + 32, 134, 1, 81, 9, 97, - 54, - 64, + 55, + 128, 133, 1, 82, @@ -32851,8 +33622,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 54, - 0, + 55, + 64, 132, 1, 81, @@ -32861,15 +33632,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 192, + 55, + 0, 134, 1, 81, 9, 97, - 54, - 0, + 55, + 64, 133, 1, 82, @@ -32878,22 +33649,22 @@ pub mod inclusion_verifier { 130, 9, 97, - 53, - 192, + 55, + 0, 133, 1, 82, 80, 80, 97, - 54, - 0, + 55, + 64, 130, 1, 81, 97, - 53, - 224, + 55, + 32, 131, 1, 81, @@ -32902,74 +33673,74 @@ pub mod inclusion_verifier { 144, 9, 97, - 56, - 64, + 57, + 128, 131, 1, 82, 128, 97, - 54, - 64, + 55, + 128, 131, 1, 81, 97, - 54, - 32, + 55, + 96, 132, 1, 81, 9, 97, - 56, - 96, + 57, + 160, 131, 1, 82, 128, 97, - 54, - 128, + 55, + 192, 131, 1, 81, 97, - 54, - 96, + 55, + 160, 132, 1, 81, 9, 97, - 56, - 128, + 57, + 192, 131, 1, 82, 128, 97, - 54, - 192, + 56, + 0, 131, 1, 81, 97, - 54, - 160, + 55, + 224, 132, 1, 81, 9, 97, - 56, - 160, + 57, + 224, 131, 1, 82, 97, 10, - 64, + 128, 130, 1, 81, @@ -32978,8 +33749,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 56, - 192, + 58, + 0, 131, 1, 129, @@ -32987,7 +33758,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -32995,8 +33766,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 56, - 224, + 58, + 32, 131, 1, 129, @@ -33004,7 +33775,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33012,8 +33783,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 0, + 58, + 64, 131, 1, 129, @@ -33021,7 +33792,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33029,8 +33800,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 32, + 58, + 96, 131, 1, 129, @@ -33038,7 +33809,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33046,8 +33817,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 64, + 58, + 128, 131, 1, 129, @@ -33055,7 +33826,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33063,8 +33834,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 96, + 58, + 160, 131, 1, 129, @@ -33072,7 +33843,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33080,8 +33851,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 128, + 58, + 192, 131, 1, 129, @@ -33089,7 +33860,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33097,8 +33868,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 160, + 58, + 224, 131, 1, 129, @@ -33106,7 +33877,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33114,8 +33885,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 192, + 59, + 0, 131, 1, 129, @@ -33123,7 +33894,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33131,8 +33902,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 57, - 224, + 59, + 32, 131, 1, 129, @@ -33140,7 +33911,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33148,8 +33919,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 0, + 59, + 64, 131, 1, 129, @@ -33157,7 +33928,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33165,8 +33936,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 32, + 59, + 96, 131, 1, 129, @@ -33174,7 +33945,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33182,8 +33953,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 64, + 59, + 128, 131, 1, 129, @@ -33191,7 +33962,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33199,8 +33970,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 96, + 59, + 160, 131, 1, 129, @@ -33208,7 +33979,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33216,8 +33987,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 128, + 59, + 192, 131, 1, 129, @@ -33225,7 +33996,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33233,8 +34004,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 160, + 59, + 224, 131, 1, 129, @@ -33242,7 +34013,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33250,8 +34021,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 192, + 60, + 0, 131, 1, 129, @@ -33259,7 +34030,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33267,8 +34038,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 224, + 60, + 32, 131, 1, 129, @@ -33276,7 +34047,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33284,8 +34055,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 0, + 60, + 64, 131, 1, 129, @@ -33293,7 +34064,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33301,14 +34072,14 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 32, + 60, + 96, 131, 1, 82, 97, 10, - 160, + 224, 130, 1, 81, @@ -33317,8 +34088,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 59, - 64, + 60, + 128, 131, 1, 129, @@ -33326,7 +34097,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -33334,8 +34105,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 96, + 60, + 160, 131, 1, 129, @@ -33343,7 +34114,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -33351,8 +34122,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 128, + 60, + 192, 131, 1, 129, @@ -33360,7 +34131,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -33368,21 +34139,21 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 160, + 60, + 224, 131, 1, 82, 128, 97, - 49, - 32, + 50, + 96, 131, 1, 81, 97, - 5, - 192, + 6, + 0, 132, 1, 81, @@ -33391,14 +34162,14 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 64, + 50, + 128, 134, 1, 81, 97, 6, - 0, + 64, 135, 1, 81, @@ -33410,30 +34181,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 96, + 50, + 160, 134, 1, 81, 97, 6, - 128, + 192, 135, 1, 81, 9, 8, 97, - 59, - 192, + 61, + 0, 132, 1, 129, 144, 82, 97, - 53, - 192, + 55, + 0, 132, 1, 81, @@ -33443,8 +34214,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 59, - 224, + 61, + 32, 131, 1, 82, @@ -33452,8 +34223,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 59, - 224, + 61, + 32, 132, 1, 81, @@ -33461,21 +34232,21 @@ pub mod inclusion_verifier { 3, 9, 97, - 60, - 0, + 61, + 64, 131, 1, 82, 128, 97, - 49, - 32, + 50, + 96, 131, 1, 81, 97, - 5, - 224, + 6, + 32, 132, 1, 81, @@ -33484,14 +34255,14 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 64, + 50, + 128, 134, 1, 81, 97, 6, - 32, + 96, 135, 1, 81, @@ -33503,30 +34274,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 49, - 96, + 50, + 160, 134, 1, 81, 97, 6, - 96, + 160, 135, 1, 81, 9, 8, 97, - 60, - 32, + 61, + 96, 132, 1, 129, 144, 82, 97, - 53, - 192, + 55, + 0, 132, 1, 81, @@ -33536,8 +34307,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 60, - 64, + 61, + 128, 131, 1, 129, @@ -33545,7 +34316,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -33555,83 +34326,15 @@ pub mod inclusion_verifier { 3, 9, 97, - 60, - 96, - 131, - 1, - 82, - 128, - 97, - 10, - 64, - 131, - 1, - 81, - 96, - 1, - 9, - 97, - 60, - 128, - 131, - 1, - 82, - 128, - 97, - 60, - 96, - 131, - 1, - 81, - 97, - 60, - 0, - 132, - 1, - 81, - 8, - 97, - 60, - 160, - 131, - 1, - 82, - 128, - 96, - 1, - 97, - 60, + 61, 160, - 132, - 1, - 81, - 9, - 97, - 60, - 192, 131, 1, 82, 128, - 96, - 1, - 97, - 60, - 128, - 132, - 1, - 81, - 9, 97, - 60, - 224, - 131, - 1, - 82, + 10, 128, - 97, - 53, - 224, 131, 1, 81, @@ -33640,62 +34343,27 @@ pub mod inclusion_verifier { 9, 97, 61, - 0, + 192, 131, 1, 82, 128, 97, - 49, - 224, - 131, - 1, - 81, - 97, - 6, - 64, - 132, - 1, - 81, - 9, - 97, 61, - 32, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, + 160, 131, 1, 81, - 130, - 145, - 9, - 97, - 61, - 64, - 131, - 1, - 82, - 128, - 96, - 1, 97, 61, 64, 132, 1, 81, - 131, - 3, - 9, + 8, 97, 61, - 96, + 224, 131, 1, 82, @@ -33704,146 +34372,65 @@ pub mod inclusion_verifier { 1, 97, 61, - 0, - 132, - 1, - 81, - 9, - 97, - 61, - 128, - 131, - 1, - 82, - 128, - 97, - 49, 224, - 131, - 1, - 81, - 97, - 10, - 0, 132, 1, 81, 9, 97, - 61, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 61, - 192, - 131, - 1, - 129, - 144, - 82, - 97, - 10, - 64, - 131, - 1, - 81, - 130, - 145, - 130, - 3, - 9, - 97, - 61, - 224, + 62, + 0, 131, 1, 82, 128, - 97, - 10, - 64, - 131, + 96, 1, - 81, 97, 61, - 0, + 192, 132, 1, 81, 9, 97, 62, - 0, + 32, 131, 1, 82, 128, 97, - 61, - 224, + 55, + 32, 131, 1, 81, - 97, - 61, 96, - 132, 1, - 81, - 8, + 9, 97, 62, - 32, + 64, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, 6, - 160, + 128, 132, 1, 81, 9, 97, 62, - 64, - 131, - 1, - 129, - 144, - 82, - 97, - 56, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 62, 96, 131, 1, @@ -33851,15 +34438,13 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 192, + 57, + 128, 131, 1, 81, 130, 145, - 130, - 3, 9, 97, 62, @@ -33868,18 +34453,16 @@ pub mod inclusion_verifier { 1, 82, 128, - 97, - 56, - 192, - 131, + 96, 1, - 81, 97, - 61, - 0, + 62, + 128, 132, 1, 81, + 131, + 3, 9, 97, 62, @@ -33888,19 +34471,15 @@ pub mod inclusion_verifier { 1, 82, 128, - 97, - 62, - 128, - 131, + 96, 1, - 81, 97, 62, - 32, + 64, 132, 1, 81, - 8, + 9, 97, 62, 192, @@ -33909,14 +34488,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, - 6, - 192, + 10, + 64, 132, 1, 81, @@ -33930,8 +34509,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -33947,8 +34526,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 224, + 10, + 128, 131, 1, 81, @@ -33965,14 +34544,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 56, - 224, + 10, + 128, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -33992,7 +34571,7 @@ pub mod inclusion_verifier { 81, 97, 62, - 192, + 160, 132, 1, 81, @@ -34005,8 +34584,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -34026,8 +34605,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -34043,7 +34622,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 0, 131, 1, @@ -34061,14 +34640,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 0, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -34101,8 +34680,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -34122,8 +34701,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -34139,7 +34718,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 32, 131, 1, @@ -34157,14 +34736,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 32, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -34197,8 +34776,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -34218,8 +34797,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -34235,7 +34814,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 64, 131, 1, @@ -34253,14 +34832,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 64, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -34293,8 +34872,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -34314,8 +34893,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -34331,7 +34910,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 96, 131, 1, @@ -34349,14 +34928,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 96, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -34389,8 +34968,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -34410,8 +34989,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -34427,7 +35006,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 128, 131, 1, @@ -34445,14 +35024,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 128, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -34485,8 +35064,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -34506,8 +35085,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -34523,7 +35102,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 160, 131, 1, @@ -34541,14 +35120,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 160, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -34581,8 +35160,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -34602,8 +35181,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -34619,7 +35198,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 192, 131, 1, @@ -34637,14 +35216,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 192, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -34677,8 +35256,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -34698,8 +35277,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -34715,7 +35294,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 57, + 58, 224, 131, 1, @@ -34733,14 +35312,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 57, + 58, 224, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -34773,8 +35352,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -34794,8 +35373,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -34811,7 +35390,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 0, 131, 1, @@ -34829,14 +35408,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 0, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -34869,14 +35448,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, 8, - 32, + 0, 132, 1, 81, @@ -34890,8 +35469,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -34907,7 +35486,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 32, 131, 1, @@ -34925,14 +35504,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 32, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -34965,14 +35544,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, 8, - 64, + 32, 132, 1, 81, @@ -34986,8 +35565,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -35003,7 +35582,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 64, 131, 1, @@ -35021,14 +35600,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 64, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -35061,8 +35640,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -35082,8 +35661,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -35099,7 +35678,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 96, 131, 1, @@ -35117,14 +35696,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 96, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -35157,8 +35736,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -35178,8 +35757,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -35195,7 +35774,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 128, 131, 1, @@ -35213,14 +35792,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 128, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -35253,8 +35832,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -35274,8 +35853,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -35291,7 +35870,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 160, 131, 1, @@ -35309,14 +35888,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, 160, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, @@ -35349,8 +35928,8 @@ pub mod inclusion_verifier { 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, @@ -35370,8 +35949,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -35387,7 +35966,7 @@ pub mod inclusion_verifier { 144, 82, 97, - 58, + 59, 192, 131, 1, @@ -35405,149 +35984,341 @@ pub mod inclusion_verifier { 82, 128, 97, - 58, + 59, + 192, + 131, + 1, + 81, + 97, + 62, + 64, + 132, + 1, + 81, + 9, + 97, + 72, + 160, + 131, + 1, + 82, + 128, + 97, + 72, + 128, + 131, + 1, + 81, + 97, + 72, + 32, + 132, + 1, + 81, + 8, + 97, + 72, + 192, + 131, + 1, + 82, + 128, + 97, + 51, + 32, + 131, + 1, + 81, + 97, + 8, + 224, + 132, + 1, + 81, + 9, + 97, + 72, + 224, + 131, + 1, + 129, + 144, + 82, + 97, + 57, + 128, + 131, + 1, + 81, + 130, + 145, + 9, + 97, + 73, + 0, + 131, + 1, + 129, + 144, + 82, + 97, + 59, + 224, + 131, + 1, + 81, + 130, + 145, + 130, + 3, + 9, + 97, + 73, + 32, + 131, + 1, + 82, + 128, + 97, + 59, + 224, + 131, + 1, + 81, + 97, + 62, + 64, + 132, + 1, + 81, + 9, + 97, + 73, + 64, + 131, + 1, + 82, + 128, + 97, + 73, + 32, + 131, + 1, + 81, + 97, + 72, + 192, + 132, + 1, + 81, + 8, + 97, + 73, + 96, + 131, + 1, + 82, + 128, + 97, + 51, + 32, + 131, + 1, + 81, + 97, + 9, + 0, + 132, + 1, + 81, + 9, + 97, + 73, + 128, + 131, + 1, + 129, + 144, + 82, + 97, + 57, + 128, + 131, + 1, + 81, + 130, + 145, + 9, + 97, + 73, + 160, + 131, + 1, + 129, + 144, + 82, + 97, + 60, + 0, + 131, + 1, + 81, + 130, + 145, + 130, + 3, + 9, + 97, + 73, 192, 131, 1, + 82, + 128, + 97, + 60, + 0, + 131, + 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, 9, 97, - 72, - 160, + 73, + 224, 131, 1, 82, 128, 97, - 72, - 128, + 73, + 192, 131, 1, 81, 97, - 72, - 32, + 73, + 96, 132, 1, 81, 8, 97, - 72, - 192, + 74, + 0, 131, 1, 82, 128, 97, - 53, - 224, + 55, + 32, 131, 1, 81, 97, - 47, - 96, + 48, + 160, 132, 1, 81, 9, 97, - 72, - 224, + 74, + 32, 131, 1, 82, 128, 97, - 53, - 224, + 55, + 32, 131, 1, 81, 97, - 47, - 128, + 48, + 192, 132, 1, 81, 9, 97, - 73, - 0, + 74, + 64, 131, 1, 82, 128, 97, - 53, - 224, + 55, + 32, 131, 1, 81, 97, - 47, - 160, + 48, + 224, 132, 1, 81, 9, 97, - 73, - 32, + 74, + 96, 131, 1, 82, 128, 97, - 53, - 224, + 55, + 32, 131, 1, 81, 97, - 47, - 192, + 49, + 0, 132, 1, 81, 9, 97, - 73, - 64, + 74, + 128, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, - 47, - 224, + 49, + 32, 132, 1, 81, 9, 97, - 73, - 96, + 74, + 160, 131, 1, 129, 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -35555,16 +36326,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 73, - 128, + 74, + 192, 131, 1, 129, 144, 82, 97, - 58, - 224, + 60, + 32, 131, 1, 81, @@ -35574,156 +36345,156 @@ pub mod inclusion_verifier { 3, 9, 97, - 73, - 160, + 74, + 224, 131, 1, 82, 128, 97, - 58, - 224, + 60, + 32, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, 9, 97, - 73, - 192, + 75, + 0, 131, 1, 82, 128, 97, - 58, - 224, + 60, + 32, 131, 1, 81, 97, - 72, - 224, + 74, + 32, 132, 1, 81, 9, 97, - 73, - 224, + 75, + 32, 131, 1, 82, 128, 97, - 58, - 224, + 60, + 32, 131, 1, 81, 97, - 73, - 0, + 74, + 64, 132, 1, 81, 9, 97, - 74, - 0, + 75, + 64, 131, 1, 82, 128, 97, - 58, - 224, + 60, + 32, 131, 1, 81, 97, - 73, - 32, + 74, + 96, 132, 1, 81, 9, 97, - 74, - 32, + 75, + 96, 131, 1, 82, 128, 97, - 58, - 224, + 60, + 32, 131, 1, 81, 97, - 73, - 64, + 74, + 128, 132, 1, 81, 9, 97, - 74, - 64, + 75, + 128, 131, 1, 82, 128, 97, - 73, - 160, + 74, + 224, 131, 1, 81, 97, - 72, - 192, + 74, + 0, 132, 1, 81, 8, 97, - 74, - 96, + 75, + 160, 131, 1, 82, 128, 97, - 49, - 224, + 51, + 32, 131, 1, 81, 97, 8, - 0, + 64, 132, 1, 81, 9, 97, - 74, - 128, + 75, + 192, 131, 1, 129, 144, 82, 97, - 56, - 64, + 57, + 128, 131, 1, 81, @@ -35731,16 +36502,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 74, - 160, + 75, + 224, 131, 1, 129, 144, 82, 97, - 59, - 0, + 60, + 64, 131, 1, 81, @@ -35750,48 +36521,48 @@ pub mod inclusion_verifier { 3, 9, 97, - 74, - 192, + 76, + 0, 131, 1, 82, 128, 97, - 59, - 0, + 60, + 64, 131, 1, 81, 97, - 61, - 0, + 62, + 64, 132, 1, 81, 9, 97, - 74, - 224, + 76, + 32, 131, 1, 82, 128, 97, - 74, - 192, + 76, + 0, 131, 1, 81, 97, - 74, - 96, + 75, + 160, 132, 1, 81, 8, 97, - 75, - 0, + 76, + 64, 131, 1, 129, @@ -35799,7 +36570,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 160, + 224, 131, 1, 81, @@ -35807,47 +36578,7 @@ pub mod inclusion_verifier { 145, 9, 97, - 75, - 32, - 131, - 1, - 82, - 128, - 97, - 10, - 160, - 131, - 1, - 81, - 97, - 61, - 128, - 132, - 1, - 81, - 9, - 97, - 75, - 64, - 131, - 1, - 82, - 128, - 97, - 10, - 160, - 131, - 1, - 81, - 97, - 62, - 0, - 132, - 1, - 81, - 9, - 97, - 75, + 76, 96, 131, 1, @@ -35855,19 +36586,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, 62, - 160, + 192, 132, 1, 81, 9, 97, - 75, + 76, 128, 131, 1, @@ -35875,7 +36606,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -35887,7 +36618,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 75, + 76, 160, 131, 1, @@ -35895,7 +36626,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -35907,7 +36638,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 75, + 76, 192, 131, 1, @@ -35915,7 +36646,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -35927,7 +36658,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 75, + 76, 224, 131, 1, @@ -35935,7 +36666,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -35947,7 +36678,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 76, + 77, 0, 131, 1, @@ -35955,7 +36686,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -35967,7 +36698,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 76, + 77, 32, 131, 1, @@ -35975,7 +36706,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -35987,7 +36718,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 76, + 77, 64, 131, 1, @@ -35995,7 +36726,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -36007,7 +36738,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 76, + 77, 96, 131, 1, @@ -36015,7 +36746,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -36027,7 +36758,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 76, + 77, 128, 131, 1, @@ -36035,7 +36766,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -36047,7 +36778,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 76, + 77, 160, 131, 1, @@ -36055,7 +36786,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -36067,7 +36798,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 76, + 77, 192, 131, 1, @@ -36075,7 +36806,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -36087,7 +36818,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 76, + 77, 224, 131, 1, @@ -36095,7 +36826,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -36107,7 +36838,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 77, + 78, 0, 131, 1, @@ -36115,7 +36846,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -36127,7 +36858,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 77, + 78, 32, 131, 1, @@ -36135,7 +36866,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -36147,7 +36878,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 77, + 78, 64, 131, 1, @@ -36155,7 +36886,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -36167,7 +36898,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 77, + 78, 96, 131, 1, @@ -36175,7 +36906,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -36187,7 +36918,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 77, + 78, 128, 131, 1, @@ -36195,19 +36926,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, 73, - 192, + 64, 132, 1, 81, 9, 97, - 77, + 78, 160, 131, 1, @@ -36215,7 +36946,7 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, @@ -36227,7 +36958,7 @@ pub mod inclusion_verifier { 81, 9, 97, - 77, + 78, 192, 131, 1, @@ -36235,19 +36966,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, + 75, 0, 132, 1, 81, 9, 97, - 77, + 78, 224, 131, 1, @@ -36255,19 +36986,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, + 75, 32, 132, 1, 81, 9, 97, - 78, + 79, 0, 131, 1, @@ -36275,19 +37006,19 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, + 75, 64, 132, 1, 81, 9, 97, - 78, + 79, 32, 131, 1, @@ -36295,47 +37026,87 @@ pub mod inclusion_verifier { 128, 97, 10, - 160, + 224, 131, 1, 81, 97, - 74, - 224, + 75, + 96, 132, 1, 81, 9, 97, - 78, + 79, 64, 131, 1, 82, 128, 97, + 10, + 224, + 131, + 1, + 81, + 97, 75, + 128, + 132, + 1, + 81, + 9, + 97, + 79, + 96, + 131, + 1, + 82, + 128, + 97, + 10, + 224, + 131, + 1, + 81, + 97, + 76, 32, + 132, + 1, + 81, + 9, + 97, + 79, + 128, + 131, + 1, + 82, + 128, + 97, + 76, + 96, 131, 1, 81, 97, - 60, - 192, + 62, + 0, 132, 1, 81, 8, 97, - 78, - 96, + 79, + 160, 131, 1, 82, 128, 97, - 54, - 32, + 55, + 96, 131, 1, 81, @@ -36343,21 +37114,21 @@ pub mod inclusion_verifier { 1, 9, 97, - 78, - 128, + 79, + 192, 131, 1, 82, 128, 97, - 50, - 0, + 51, + 64, 131, 1, 81, 97, - 8, - 224, + 9, + 32, 132, 1, 81, @@ -36366,14 +37137,14 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 32, + 51, + 96, 134, 1, 81, 97, 9, - 0, + 64, 135, 1, 81, @@ -36385,30 +37156,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 64, + 51, + 128, 134, 1, 81, 97, 9, - 32, + 96, 135, 1, 81, 9, 8, 97, - 78, - 160, + 79, + 224, 132, 1, 129, 144, 82, 97, - 56, - 96, + 57, + 160, 132, 1, 81, @@ -36418,8 +37189,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 78, - 192, + 80, + 0, 131, 1, 82, @@ -36427,8 +37198,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 78, - 192, + 80, + 0, 132, 1, 81, @@ -36436,8 +37207,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 78, - 224, + 80, + 32, 131, 1, 82, @@ -36445,82 +37216,82 @@ pub mod inclusion_verifier { 96, 1, 97, - 78, - 128, + 79, + 192, 132, 1, 81, 9, 97, - 79, - 0, + 80, + 64, 131, 1, 82, 128, 97, - 59, - 64, + 60, + 128, 131, 1, 81, 97, - 78, - 224, + 80, + 32, 132, 1, 81, 9, 97, - 79, - 32, + 80, + 96, 131, 1, 82, 128, 97, - 59, - 64, + 60, + 128, 131, 1, 81, 97, - 79, - 0, + 80, + 64, 132, 1, 81, 9, 97, - 79, - 64, + 80, + 128, 131, 1, 82, 128, 97, - 79, - 32, + 80, + 96, 131, 1, 81, 97, - 78, - 96, + 79, + 160, 132, 1, 81, 8, 97, - 79, - 96, + 80, + 160, 131, 1, 82, 128, 97, - 54, - 96, + 55, + 160, 131, 1, 81, @@ -36528,21 +37299,21 @@ pub mod inclusion_verifier { 1, 9, 97, - 79, - 128, + 80, + 192, 131, 1, 82, 128, 97, - 50, - 128, + 51, + 192, 131, 1, 81, 97, 9, - 64, + 128, 132, 1, 81, @@ -36551,30 +37322,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 160, + 51, + 224, 134, 1, 81, 97, 9, - 96, + 160, 135, 1, 81, 9, 8, 97, - 79, - 160, + 80, + 224, 132, 1, 129, 144, 82, 97, - 56, - 128, + 57, + 192, 132, 1, 81, @@ -36584,8 +37355,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 79, - 192, + 81, + 0, 131, 1, 82, @@ -36593,8 +37364,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 79, - 192, + 81, + 0, 132, 1, 81, @@ -36602,8 +37373,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 79, - 224, + 81, + 32, 131, 1, 82, @@ -36611,28 +37382,28 @@ pub mod inclusion_verifier { 96, 1, 97, - 79, - 128, + 80, + 192, 132, 1, 81, 9, 97, - 80, - 0, + 81, + 64, 131, 1, 82, 128, 97, - 50, - 128, + 51, + 192, 131, 1, 81, 97, 9, - 128, + 192, 132, 1, 81, @@ -36641,30 +37412,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 160, + 51, + 224, 134, 1, 81, 97, 9, - 160, + 224, 135, 1, 81, 9, 8, 97, - 80, - 32, + 81, + 96, 132, 1, 129, 144, 82, 97, - 56, - 128, + 57, + 192, 132, 1, 81, @@ -36674,8 +37445,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 80, - 64, + 81, + 128, 131, 1, 129, @@ -36683,7 +37454,7 @@ pub mod inclusion_verifier { 82, 97, 10, - 64, + 128, 131, 1, 81, @@ -36693,56 +37464,56 @@ pub mod inclusion_verifier { 3, 9, 97, - 80, - 96, + 81, + 160, 131, 1, 82, 128, 97, 10, - 64, + 128, 131, 1, 81, 97, - 79, - 128, + 80, + 192, 132, 1, 81, 9, 97, - 80, - 128, + 81, + 192, 131, 1, 82, 128, 97, - 80, - 96, + 81, + 160, 131, 1, 81, 97, - 79, - 224, + 81, + 32, 132, 1, 81, 8, 97, - 80, - 160, + 81, + 224, 131, 1, 129, 144, 82, 97, - 59, - 96, + 60, + 160, 131, 1, 81, @@ -36750,75 +37521,75 @@ pub mod inclusion_verifier { 145, 9, 97, - 80, - 192, + 82, + 0, 131, 1, 82, 128, 97, - 59, - 96, + 60, + 160, 131, 1, 81, 97, - 80, - 0, + 81, + 64, 132, 1, 81, 9, 97, - 80, - 224, + 82, + 32, 131, 1, 82, 128, 97, - 59, - 96, + 60, + 160, 131, 1, 81, 97, - 80, - 128, + 81, + 192, 132, 1, 81, 9, 97, - 81, - 0, + 82, + 64, 131, 1, 82, 128, 97, - 80, - 192, + 82, + 0, 131, 1, 81, 97, - 79, - 96, + 80, + 160, 132, 1, 81, 8, 97, - 81, - 32, + 82, + 96, 131, 1, 82, 128, 97, - 54, - 160, + 55, + 224, 131, 1, 81, @@ -36826,21 +37597,21 @@ pub mod inclusion_verifier { 1, 9, 97, - 81, - 64, + 82, + 128, 131, 1, 82, 128, 97, - 50, - 192, + 52, + 0, 131, 1, 81, 97, - 9, - 192, + 10, + 0, 132, 1, 81, @@ -36849,30 +37620,30 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 224, + 52, + 32, 134, 1, 81, 97, - 9, - 224, + 10, + 32, 135, 1, 81, 9, 8, 97, - 81, - 96, + 82, + 160, 132, 1, 129, 144, 82, 97, - 56, - 160, + 57, + 224, 132, 1, 81, @@ -36882,8 +37653,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 81, - 128, + 82, + 192, 131, 1, 82, @@ -36891,8 +37662,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 81, - 128, + 82, + 192, 132, 1, 81, @@ -36900,8 +37671,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 81, - 160, + 82, + 224, 131, 1, 82, @@ -36909,82 +37680,82 @@ pub mod inclusion_verifier { 96, 1, 97, - 81, - 64, + 82, + 128, 132, 1, 81, 9, 97, - 81, - 192, + 83, + 0, 131, 1, 82, 128, 97, - 59, - 128, + 60, + 192, 131, 1, 81, 97, - 81, - 160, + 82, + 224, 132, 1, 81, 9, 97, - 81, - 224, + 83, + 32, 131, 1, 82, 128, 97, - 59, - 128, + 60, + 192, 131, 1, 81, 97, - 81, - 192, + 83, + 0, 132, 1, 81, 9, 97, - 82, - 0, + 83, + 64, 131, 1, 82, 128, 97, - 81, - 224, + 83, + 32, 131, 1, 81, 97, - 81, - 32, + 82, + 96, 132, 1, 81, 8, 97, - 82, - 32, + 83, + 96, 131, 1, 82, 128, 97, - 49, - 192, + 51, + 0, 131, 1, 81, @@ -36992,15 +37763,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 82, - 64, + 83, + 128, 131, 1, 82, 128, 97, 11, - 64, + 128, 131, 1, 81, @@ -37008,16 +37779,16 @@ pub mod inclusion_verifier { 1, 9, 97, - 82, - 96, + 83, + 160, 131, 1, 82, 96, 1, 97, - 82, - 128, + 83, + 192, 131, 1, 129, @@ -37026,20 +37797,20 @@ pub mod inclusion_verifier { 96, 2, 97, - 82, - 160, + 83, + 224, 133, 1, 82, 97, - 82, - 32, + 83, + 96, 132, 1, 81, 97, - 82, - 192, + 84, + 0, 133, 1, 82, @@ -37061,48 +37832,48 @@ pub mod inclusion_verifier { 146, 80, 97, - 82, - 128, + 83, + 192, 130, 1, 81, 97, - 82, - 224, + 84, + 32, 131, 1, 82, 97, - 82, - 160, + 83, + 224, 130, 1, 81, 97, - 83, - 0, + 84, + 64, 131, 1, 82, 96, - 96, + 160, 130, 1, 81, 97, - 83, - 32, + 84, + 96, 131, 1, 82, 96, - 128, + 192, 130, 1, 81, 97, - 83, - 64, + 84, + 128, 131, 1, 82, @@ -37112,15 +37883,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 82, - 224, + 84, + 32, 133, 1, 96, 128, 97, - 82, - 224, + 84, + 32, 135, 1, 96, @@ -37132,36 +37903,37 @@ pub mod inclusion_verifier { 146, 80, 96, - 160, + 224, 130, 1, 81, 97, - 83, - 96, + 84, + 160, 131, 1, 82, - 96, - 192, + 97, + 1, + 0, 130, 1, 81, 97, - 83, - 128, + 84, + 192, 131, 1, 82, 97, - 60, - 224, + 62, + 32, 130, 1, 81, 97, - 83, - 160, + 84, + 224, 131, 1, 82, @@ -37171,15 +37943,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 83, - 96, + 84, + 160, 133, 1, 96, 96, 97, - 83, - 96, + 84, + 160, 135, 1, 96, @@ -37191,50 +37963,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 82, - 224, + 84, + 32, 130, 1, 81, 97, - 83, - 192, + 85, + 0, 131, 1, 82, 97, - 83, - 0, + 84, + 64, 130, 1, 81, 97, - 83, - 224, + 85, + 32, 131, 1, 82, 97, - 83, - 96, + 84, + 160, 130, 1, 81, 97, - 84, - 0, + 85, + 64, 131, 1, 82, 97, - 83, - 128, + 84, + 192, 130, 1, 81, 97, - 84, - 32, + 85, + 96, 131, 1, 82, @@ -37244,15 +38016,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 83, - 192, + 85, + 0, 133, 1, 96, 128, 97, - 83, - 192, + 85, + 0, 135, 1, 96, @@ -37263,38 +38035,39 @@ pub mod inclusion_verifier { 22, 146, 80, - 96, - 224, + 97, + 1, + 32, 130, 1, 81, 97, - 84, - 64, + 85, + 128, 131, 1, 82, 97, 1, - 0, + 64, 130, 1, 81, 97, - 84, - 96, + 85, + 160, 131, 1, 82, 97, - 75, - 64, + 76, + 128, 130, 1, 81, 97, - 84, - 128, + 85, + 192, 131, 1, 82, @@ -37304,15 +38077,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 84, - 64, + 85, + 128, 133, 1, 96, 96, 97, - 84, - 64, + 85, + 128, 135, 1, 96, @@ -37324,50 +38097,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 83, - 192, + 85, + 0, 130, 1, 81, 97, - 84, - 160, + 85, + 224, 131, 1, 82, 97, - 83, - 224, + 85, + 32, 130, 1, 81, 97, - 84, - 192, + 86, + 0, 131, 1, 82, 97, - 84, - 64, + 85, + 128, 130, 1, 81, 97, - 84, - 224, + 86, + 32, 131, 1, 82, 97, - 84, - 96, + 85, + 160, 130, 1, 81, 97, - 85, - 0, + 86, + 64, 131, 1, 82, @@ -37377,15 +38150,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 84, - 160, + 85, + 224, 133, 1, 96, 128, 97, - 84, - 160, + 85, + 224, 135, 1, 96, @@ -37397,38 +38170,38 @@ pub mod inclusion_verifier { 146, 80, 97, - 1, - 192, + 2, + 0, 130, 1, 81, 97, - 85, - 32, + 86, + 96, 131, 1, 82, 97, - 1, - 224, + 2, + 32, 130, 1, 81, 97, - 85, - 64, + 86, + 128, 131, 1, 82, 97, - 75, - 96, + 76, + 160, 130, 1, 81, 97, - 85, - 96, + 86, + 160, 131, 1, 82, @@ -37438,15 +38211,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 85, - 32, + 86, + 96, 133, 1, 96, 96, 97, - 85, - 32, + 86, + 96, 135, 1, 96, @@ -37458,50 +38231,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 84, - 160, + 85, + 224, 130, 1, 81, 97, - 85, - 128, + 86, + 192, 131, 1, 82, 97, - 84, - 192, + 86, + 0, 130, 1, 81, 97, - 85, - 160, + 86, + 224, 131, 1, 82, 97, - 85, - 32, + 86, + 96, 130, 1, 81, 97, - 85, - 192, + 87, + 0, 131, 1, 82, 97, - 85, - 64, + 86, + 128, 130, 1, 81, 97, - 85, - 224, + 87, + 32, 131, 1, 82, @@ -37511,15 +38284,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 85, - 128, + 86, + 192, 133, 1, 96, 128, 97, - 85, - 128, + 86, + 192, 135, 1, 96, @@ -37564,8 +38337,8 @@ pub mod inclusion_verifier { 82, 144, 97, - 86, - 0, + 87, + 64, 131, 1, 82, @@ -37603,20 +38376,20 @@ pub mod inclusion_verifier { 148, 252, 97, - 86, - 32, + 87, + 96, 131, 1, 82, 97, - 75, - 128, + 76, + 192, 130, 1, 81, 97, - 86, - 64, + 87, + 128, 131, 1, 82, @@ -37626,15 +38399,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 86, - 0, + 87, + 64, 133, 1, 96, 96, 97, - 86, - 0, + 87, + 64, 135, 1, 96, @@ -37646,50 +38419,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 85, - 128, + 86, + 192, 130, 1, 81, 97, - 86, - 96, + 87, + 160, 131, 1, 82, 97, - 85, - 160, + 86, + 224, 130, 1, 81, 97, - 86, - 128, + 87, + 192, 131, 1, 82, 97, - 86, - 0, + 87, + 64, 130, 1, 81, 97, - 86, - 160, + 87, + 224, 131, 1, 82, 97, - 86, - 32, + 87, + 96, 130, 1, 81, 97, - 86, - 192, + 88, + 0, 131, 1, 82, @@ -37699,15 +38472,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 86, - 96, + 87, + 160, 133, 1, 96, 128, 97, - 86, - 96, + 87, + 160, 135, 1, 96, @@ -37752,8 +38525,8 @@ pub mod inclusion_verifier { 145, 157, 97, - 86, - 224, + 88, + 32, 131, 1, 82, @@ -37791,20 +38564,20 @@ pub mod inclusion_verifier { 156, 81, 97, - 87, - 0, + 88, + 64, 131, 1, 82, 97, - 75, - 160, + 76, + 224, 130, 1, 81, 97, - 87, - 32, + 88, + 96, 131, 1, 82, @@ -37814,15 +38587,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 86, - 224, + 88, + 32, 133, 1, 96, 96, 97, - 86, - 224, + 88, + 32, 135, 1, 96, @@ -37834,50 +38607,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 86, - 96, + 87, + 160, 130, 1, 81, 97, - 87, - 64, + 88, + 128, 131, 1, 82, 97, - 86, - 128, + 87, + 192, 130, 1, 81, 97, - 87, - 96, + 88, + 160, 131, 1, 82, 97, - 86, - 224, + 88, + 32, 130, 1, 81, 97, - 87, - 128, + 88, + 192, 131, 1, 82, 97, - 87, - 0, + 88, + 64, 130, 1, 81, 97, - 87, - 160, + 88, + 224, 131, 1, 82, @@ -37887,15 +38660,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 87, - 64, + 88, + 128, 133, 1, 96, 128, 97, - 87, - 64, + 88, + 128, 135, 1, 96, @@ -37940,8 +38713,8 @@ pub mod inclusion_verifier { 7, 89, 97, - 87, - 192, + 89, + 0, 131, 1, 82, @@ -37979,20 +38752,20 @@ pub mod inclusion_verifier { 234, 131, 97, - 87, - 224, + 89, + 32, 131, 1, 82, 97, - 75, - 192, + 77, + 0, 130, 1, 81, 97, - 88, - 0, + 89, + 64, 131, 1, 82, @@ -38002,15 +38775,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 87, - 192, + 89, + 0, 133, 1, 96, 96, 97, - 87, - 192, + 89, + 0, 135, 1, 96, @@ -38022,50 +38795,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 87, - 64, + 88, + 128, 130, 1, 81, 97, - 88, - 32, + 89, + 96, 131, 1, 82, 97, - 87, - 96, + 88, + 160, 130, 1, 81, 97, - 88, - 64, + 89, + 128, 131, 1, 82, 97, - 87, - 192, + 89, + 0, 130, 1, 81, 97, - 88, - 96, + 89, + 160, 131, 1, 82, 97, - 87, - 224, + 89, + 32, 130, 1, 81, 97, - 88, - 128, + 89, + 192, 131, 1, 82, @@ -38075,15 +38848,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 88, - 32, + 89, + 96, 133, 1, 96, 128, 97, - 88, - 32, + 89, + 96, 135, 1, 96, @@ -38128,8 +38901,8 @@ pub mod inclusion_verifier { 66, 175, 97, - 88, - 160, + 89, + 224, 131, 1, 82, @@ -38167,20 +38940,20 @@ pub mod inclusion_verifier { 156, 67, 97, - 88, - 192, + 90, + 0, 131, 1, 82, 97, - 75, - 224, + 77, + 32, 130, 1, 81, 97, - 88, - 224, + 90, + 32, 131, 1, 82, @@ -38190,15 +38963,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 88, - 160, + 89, + 224, 133, 1, 96, 96, 97, - 88, - 160, + 89, + 224, 135, 1, 96, @@ -38210,50 +38983,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 88, - 32, + 89, + 96, 130, 1, 81, 97, - 89, - 0, + 90, + 64, 131, 1, 82, 97, - 88, - 64, + 89, + 128, 130, 1, 81, 97, - 89, - 32, + 90, + 96, 131, 1, 82, 97, - 88, - 160, + 89, + 224, 130, 1, 81, 97, - 89, - 64, + 90, + 128, 131, 1, 82, 97, - 88, - 192, + 90, + 0, 130, 1, 81, 97, - 89, - 96, + 90, + 160, 131, 1, 82, @@ -38263,15 +39036,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 89, - 0, + 90, + 64, 133, 1, 96, 128, 97, - 89, - 0, + 90, + 64, 135, 1, 96, @@ -38316,8 +39089,8 @@ pub mod inclusion_verifier { 186, 164, 97, - 89, - 128, + 90, + 192, 131, 1, 82, @@ -38355,20 +39128,20 @@ pub mod inclusion_verifier { 39, 192, 97, - 89, - 160, + 90, + 224, 131, 1, 82, 97, - 76, - 0, + 77, + 64, 130, 1, 81, 97, - 89, - 192, + 91, + 0, 131, 1, 82, @@ -38378,15 +39151,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 89, - 128, + 90, + 192, 133, 1, 96, 96, 97, - 89, - 128, + 90, + 192, 135, 1, 96, @@ -38398,50 +39171,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 89, - 0, + 90, + 64, 130, 1, 81, 97, - 89, - 224, + 91, + 32, 131, 1, 82, 97, - 89, - 32, + 90, + 96, 130, 1, 81, 97, - 90, - 0, + 91, + 64, 131, 1, 82, 97, - 89, - 128, + 90, + 192, 130, 1, 81, 97, - 90, - 32, + 91, + 96, 131, 1, 82, 97, - 89, - 160, + 90, + 224, 130, 1, 81, 97, - 90, - 64, + 91, + 128, 131, 1, 82, @@ -38451,15 +39224,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 89, - 224, + 91, + 32, 133, 1, 96, 128, 97, - 89, - 224, + 91, + 32, 135, 1, 96, @@ -38504,8 +39277,8 @@ pub mod inclusion_verifier { 247, 237, 97, - 90, - 96, + 91, + 160, 131, 1, 82, @@ -38543,20 +39316,20 @@ pub mod inclusion_verifier { 54, 207, 97, - 90, - 128, + 91, + 192, 131, 1, 82, 97, - 76, - 32, + 77, + 96, 130, 1, 81, 97, - 90, - 160, + 91, + 224, 131, 1, 82, @@ -38566,15 +39339,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 90, - 96, + 91, + 160, 133, 1, 96, 96, 97, - 90, - 96, + 91, + 160, 135, 1, 96, @@ -38586,50 +39359,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 89, - 224, + 91, + 32, 130, 1, 81, 97, - 90, - 192, + 92, + 0, 131, 1, 82, 97, - 90, - 0, + 91, + 64, 130, 1, 81, 97, - 90, - 224, + 92, + 32, 131, 1, 82, 97, - 90, - 96, + 91, + 160, 130, 1, 81, 97, - 91, - 0, + 92, + 64, 131, 1, 82, 97, - 90, - 128, + 91, + 192, 130, 1, 81, 97, - 91, - 32, + 92, + 96, 131, 1, 82, @@ -38639,15 +39412,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 90, - 192, + 92, + 0, 133, 1, 96, 128, 97, - 90, - 192, + 92, + 0, 135, 1, 96, @@ -38692,8 +39465,8 @@ pub mod inclusion_verifier { 89, 229, 97, - 91, - 64, + 92, + 128, 131, 1, 82, @@ -38731,20 +39504,20 @@ pub mod inclusion_verifier { 153, 210, 97, - 91, - 96, + 92, + 160, 131, 1, 82, 97, - 76, - 64, + 77, + 128, 130, 1, 81, 97, - 91, - 128, + 92, + 192, 131, 1, 82, @@ -38754,15 +39527,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 91, - 64, + 92, + 128, 133, 1, 96, 96, 97, - 91, - 64, + 92, + 128, 135, 1, 96, @@ -38774,50 +39547,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 90, - 192, + 92, + 0, 130, 1, 81, 97, - 91, - 160, + 92, + 224, 131, 1, 82, 97, - 90, - 224, + 92, + 32, 130, 1, 81, 97, - 91, - 192, + 93, + 0, 131, 1, 82, 97, - 91, - 64, + 92, + 128, 130, 1, 81, 97, - 91, - 224, + 93, + 32, 131, 1, 82, 97, - 91, - 96, + 92, + 160, 130, 1, 81, 97, - 92, - 0, + 93, + 64, 131, 1, 82, @@ -38827,15 +39600,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 91, - 160, + 92, + 224, 133, 1, 96, 128, 97, - 91, - 160, + 92, + 224, 135, 1, 96, @@ -38880,8 +39653,8 @@ pub mod inclusion_verifier { 27, 54, 97, - 92, - 32, + 93, + 96, 131, 1, 82, @@ -38919,20 +39692,20 @@ pub mod inclusion_verifier { 72, 144, 97, - 92, - 64, + 93, + 128, 131, 1, 82, 97, - 76, - 96, + 77, + 160, 130, 1, 81, 97, - 92, - 96, + 93, + 160, 131, 1, 82, @@ -38942,15 +39715,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 92, - 32, + 93, + 96, 133, 1, 96, 96, 97, - 92, - 32, + 93, + 96, 135, 1, 96, @@ -38962,50 +39735,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 91, - 160, + 92, + 224, 130, 1, 81, 97, - 92, - 128, + 93, + 192, 131, 1, 82, 97, - 91, - 192, + 93, + 0, 130, 1, 81, 97, - 92, - 160, + 93, + 224, 131, 1, 82, 97, - 92, - 32, + 93, + 96, 130, 1, 81, 97, - 92, - 192, + 94, + 0, 131, 1, 82, 97, - 92, - 64, + 93, + 128, 130, 1, 81, 97, - 92, - 224, + 94, + 32, 131, 1, 82, @@ -39015,15 +39788,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 92, - 128, + 93, + 192, 133, 1, 96, 128, 97, - 92, - 128, + 93, + 192, 135, 1, 96, @@ -39068,8 +39841,8 @@ pub mod inclusion_verifier { 75, 159, 97, - 93, - 0, + 94, + 64, 131, 1, 82, @@ -39107,20 +39880,20 @@ pub mod inclusion_verifier { 195, 157, 97, - 93, - 32, + 94, + 96, 131, 1, 82, 97, - 76, - 128, + 77, + 192, 130, 1, 81, 97, - 93, - 64, + 94, + 128, 131, 1, 82, @@ -39130,15 +39903,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 93, - 0, + 94, + 64, 133, 1, 96, 96, 97, - 93, - 0, + 94, + 64, 135, 1, 96, @@ -39150,50 +39923,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 92, - 128, + 93, + 192, 130, 1, 81, 97, - 93, - 96, + 94, + 160, 131, 1, 82, 97, - 92, - 160, + 93, + 224, 130, 1, 81, 97, - 93, - 128, + 94, + 192, 131, 1, 82, 97, - 93, - 0, + 94, + 64, 130, 1, 81, 97, - 93, - 160, + 94, + 224, 131, 1, 82, 97, - 93, - 32, + 94, + 96, 130, 1, 81, 97, - 93, - 192, + 95, + 0, 131, 1, 82, @@ -39203,15 +39976,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 93, - 96, + 94, + 160, 133, 1, 96, 128, 97, - 93, - 96, + 94, + 160, 135, 1, 96, @@ -39256,8 +40029,8 @@ pub mod inclusion_verifier { 17, 108, 97, - 93, - 224, + 95, + 32, 131, 1, 82, @@ -39295,20 +40068,20 @@ pub mod inclusion_verifier { 123, 104, 97, - 94, - 0, + 95, + 64, 131, 1, 82, 97, - 76, - 160, + 77, + 224, 130, 1, 81, 97, - 94, - 32, + 95, + 96, 131, 1, 82, @@ -39318,15 +40091,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 93, - 224, + 95, + 32, 133, 1, 96, 96, 97, - 93, - 224, + 95, + 32, 135, 1, 96, @@ -39338,50 +40111,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 93, - 96, + 94, + 160, 130, 1, 81, 97, - 94, - 64, + 95, + 128, 131, 1, 82, 97, - 93, - 128, + 94, + 192, 130, 1, 81, 97, - 94, - 96, + 95, + 160, 131, 1, 82, 97, - 93, - 224, + 95, + 32, 130, 1, 81, 97, - 94, - 128, + 95, + 192, 131, 1, 82, 97, - 94, - 0, + 95, + 64, 130, 1, 81, 97, - 94, - 160, + 95, + 224, 131, 1, 82, @@ -39391,15 +40164,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 94, - 64, + 95, + 128, 133, 1, 96, 128, 97, - 94, - 64, + 95, + 128, 135, 1, 96, @@ -39444,8 +40217,8 @@ pub mod inclusion_verifier { 215, 1, 97, - 94, - 192, + 96, + 0, 131, 1, 82, @@ -39483,20 +40256,20 @@ pub mod inclusion_verifier { 158, 138, 97, - 94, - 224, + 96, + 32, 131, 1, 82, 97, - 76, - 192, + 78, + 0, 130, 1, 81, 97, - 95, - 0, + 96, + 64, 131, 1, 82, @@ -39506,15 +40279,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 94, - 192, + 96, + 0, 133, 1, 96, 96, 97, - 94, - 192, + 96, + 0, 135, 1, 96, @@ -39526,50 +40299,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 94, - 64, + 95, + 128, 130, 1, 81, 97, - 95, - 32, + 96, + 96, 131, 1, 82, 97, - 94, - 96, + 95, + 160, 130, 1, 81, 97, - 95, - 64, + 96, + 128, 131, 1, 82, 97, - 94, - 192, + 96, + 0, 130, 1, 81, 97, - 95, 96, + 160, 131, 1, 82, 97, - 94, - 224, + 96, + 32, 130, 1, 81, 97, - 95, - 128, + 96, + 192, 131, 1, 82, @@ -39579,15 +40352,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 95, - 32, + 96, + 96, 133, 1, 96, 128, 97, - 95, - 32, + 96, + 96, 135, 1, 96, @@ -39632,8 +40405,8 @@ pub mod inclusion_verifier { 104, 77, 97, - 95, - 160, + 96, + 224, 131, 1, 82, @@ -39671,20 +40444,20 @@ pub mod inclusion_verifier { 76, 166, 97, - 95, - 192, + 97, + 0, 131, 1, 82, 97, - 76, - 224, + 78, + 32, 130, 1, 81, 97, - 95, - 224, + 97, + 32, 131, 1, 82, @@ -39694,15 +40467,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 95, - 160, + 96, + 224, 133, 1, 96, 96, 97, - 95, - 160, + 96, + 224, 135, 1, 96, @@ -39714,50 +40487,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 95, - 32, + 96, + 96, 130, 1, 81, 97, - 96, - 0, + 97, + 64, 131, 1, 82, 97, - 95, - 64, + 96, + 128, 130, 1, 81, 97, + 97, 96, - 32, 131, 1, 82, 97, - 95, - 160, + 96, + 224, 130, 1, 81, 97, - 96, - 64, + 97, + 128, 131, 1, 82, 97, - 95, - 192, + 97, + 0, 130, 1, 81, 97, - 96, - 96, + 97, + 160, 131, 1, 82, @@ -39767,15 +40540,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 96, - 0, + 97, + 64, 133, 1, 96, 128, 97, - 96, - 0, + 97, + 64, 135, 1, 96, @@ -39787,92 +40560,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 36, - 2, - 219, - 75, - 28, - 119, - 70, - 220, - 217, - 254, - 126, - 171, - 130, - 171, - 63, - 167, - 235, - 177, - 189, - 53, - 42, - 154, - 249, - 78, + 45, + 236, + 57, + 41, + 224, + 123, + 66, + 118, + 33, + 82, + 151, + 245, 246, - 129, - 27, - 42, + 83, + 179, + 236, + 107, 249, + 185, + 16, + 0, + 102, + 120, + 171, + 60, + 61, + 103, + 101, + 64, + 1, + 214, + 218, + 97, + 97, + 192, + 131, + 1, + 82, + 127, + 32, + 185, + 199, + 233, + 166, + 194, + 158, + 49, + 233, + 22, + 73, + 98, + 222, + 154, + 4, + 120, + 170, + 151, + 110, + 114, + 162, + 226, + 208, + 233, + 201, 171, 111, - 142, - 97, - 96, - 128, - 131, - 1, - 82, - 127, - 42, - 0, - 71, - 236, - 8, - 162, - 84, - 117, - 60, - 70, - 102, - 72, - 240, - 220, - 110, - 7, - 126, - 136, - 229, + 171, + 187, + 32, + 186, 73, - 88, - 41, - 195, - 168, - 69, - 135, - 59, - 144, - 88, - 191, - 68, - 7, 97, - 96, - 160, + 97, + 224, 131, 1, 82, 97, - 77, - 0, + 78, + 64, 130, 1, 81, 97, - 96, - 192, + 98, + 0, 131, 1, 82, @@ -39882,15 +40655,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 96, - 128, + 97, + 192, 133, 1, 96, 96, 97, - 96, - 128, + 97, + 192, 135, 1, 96, @@ -39902,50 +40675,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 96, - 0, + 97, + 64, 130, 1, 81, 97, - 96, - 224, + 98, + 32, 131, 1, 82, 97, + 97, 96, - 32, 130, 1, 81, 97, - 97, - 0, + 98, + 64, 131, 1, 82, 97, - 96, - 128, + 97, + 192, 130, 1, 81, 97, - 97, - 32, + 98, + 96, 131, 1, 82, 97, - 96, - 160, + 97, + 224, 130, 1, 81, 97, - 97, - 64, + 98, + 128, 131, 1, 82, @@ -39955,15 +40728,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 96, - 224, + 98, + 32, 133, 1, 96, 128, 97, - 96, - 224, + 98, + 32, 135, 1, 96, @@ -40008,8 +40781,8 @@ pub mod inclusion_verifier { 26, 26, 97, - 97, - 96, + 98, + 160, 131, 1, 82, @@ -40047,20 +40820,20 @@ pub mod inclusion_verifier { 14, 40, 97, - 97, - 128, + 98, + 192, 131, 1, 82, 97, - 77, - 32, + 78, + 96, 130, 1, 81, 97, - 97, - 160, + 98, + 224, 131, 1, 82, @@ -40070,15 +40843,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 97, - 96, + 98, + 160, 133, 1, 96, 96, 97, - 97, - 96, + 98, + 160, 135, 1, 96, @@ -40090,50 +40863,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 96, - 224, + 98, + 32, 130, 1, 81, 97, - 97, - 192, + 99, + 0, 131, 1, 82, 97, - 97, - 0, + 98, + 64, 130, 1, 81, 97, - 97, - 224, + 99, + 32, 131, 1, 82, 97, - 97, - 96, + 98, + 160, 130, 1, 81, 97, - 98, - 0, + 99, + 64, 131, 1, 82, 97, - 97, - 128, + 98, + 192, 130, 1, 81, 97, - 98, - 32, + 99, + 96, 131, 1, 82, @@ -40143,15 +40916,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 97, - 192, + 99, + 0, 133, 1, 96, 128, 97, - 97, - 192, + 99, + 0, 135, 1, 96, @@ -40196,8 +40969,8 @@ pub mod inclusion_verifier { 41, 116, 97, - 98, - 64, + 99, + 128, 131, 1, 82, @@ -40235,20 +41008,20 @@ pub mod inclusion_verifier { 25, 227, 97, - 98, - 96, + 99, + 160, 131, 1, 82, 97, - 77, - 64, + 78, + 128, 130, 1, 81, 97, - 98, - 128, + 99, + 192, 131, 1, 82, @@ -40258,15 +41031,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 98, - 64, + 99, + 128, 133, 1, 96, 96, 97, - 98, - 64, + 99, + 128, 135, 1, 96, @@ -40278,50 +41051,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 97, - 192, + 99, + 0, 130, 1, 81, 97, - 98, - 160, + 99, + 224, 131, 1, 82, 97, - 97, - 224, + 99, + 32, 130, 1, 81, 97, - 98, - 192, + 100, + 0, 131, 1, 82, 97, - 98, - 64, + 99, + 128, 130, 1, 81, 97, - 98, - 224, + 100, + 32, 131, 1, 82, 97, - 98, - 96, + 99, + 160, 130, 1, 81, 97, - 99, - 0, + 100, + 64, 131, 1, 82, @@ -40331,15 +41104,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 98, - 160, + 99, + 224, 133, 1, 96, 128, 97, - 98, - 160, + 99, + 224, 135, 1, 96, @@ -40384,8 +41157,8 @@ pub mod inclusion_verifier { 10, 42, 97, - 99, - 32, + 100, + 96, 131, 1, 82, @@ -40422,208 +41195,20 @@ pub mod inclusion_verifier { 188, 86, 97, - 99, - 64, - 131, - 1, - 82, - 97, - 77, - 96, - 130, - 1, - 81, - 97, - 99, - 96, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 32, - 133, - 1, - 96, - 96, - 97, - 99, - 32, - 135, - 1, - 96, - 7, - 90, - 250, - 20, - 22, - 146, - 80, - 97, - 98, - 160, - 130, - 1, - 81, - 97, - 99, + 100, 128, 131, 1, 82, 97, - 98, - 192, - 130, - 1, - 81, - 97, - 99, + 78, 160, - 131, - 1, - 82, - 97, - 99, - 32, - 130, - 1, - 81, - 97, - 99, - 192, - 131, - 1, - 82, - 97, - 99, - 64, - 130, - 1, - 81, - 97, - 99, - 224, - 131, - 1, - 82, - 130, - 96, - 1, - 96, - 64, - 97, - 99, - 128, - 133, - 1, - 96, - 128, - 97, - 99, - 128, - 135, - 1, - 96, - 6, - 90, - 250, - 20, - 22, - 146, - 80, - 127, - 41, - 3, - 167, - 99, - 193, - 198, - 183, - 134, - 103, - 249, - 6, - 182, - 254, - 43, - 74, - 209, - 151, - 181, - 85, - 135, - 201, - 14, - 20, - 232, - 80, - 36, - 70, - 218, - 140, - 69, - 239, - 125, - 97, - 100, - 0, - 131, - 1, - 82, - 127, - 19, - 234, - 87, - 152, - 111, - 146, - 149, - 233, - 45, - 239, - 51, - 3, - 174, - 245, - 63, - 43, - 79, - 98, - 91, - 169, - 133, - 83, - 18, - 1, - 171, - 83, - 220, - 115, - 7, - 244, - 107, - 105, - 97, - 100, - 32, - 131, - 1, - 82, - 97, - 77, - 128, 130, 1, 81, 97, 100, - 64, + 160, 131, 1, 82, @@ -40634,14 +41219,14 @@ pub mod inclusion_verifier { 64, 97, 100, - 0, + 96, 133, 1, 96, 96, 97, 100, - 0, + 96, 135, 1, 96, @@ -40654,49 +41239,49 @@ pub mod inclusion_verifier { 80, 97, 99, - 128, + 224, 130, 1, 81, 97, 100, - 96, + 192, 131, 1, 82, 97, - 99, - 160, + 100, + 0, 130, 1, 81, 97, 100, - 128, + 224, 131, 1, 82, 97, 100, - 0, + 96, 130, 1, 81, 97, - 100, - 160, + 101, + 0, 131, 1, 82, 97, 100, - 32, + 128, 130, 1, 81, 97, - 100, - 192, + 101, + 32, 131, 1, 82, @@ -40707,14 +41292,14 @@ pub mod inclusion_verifier { 64, 97, 100, - 96, + 192, 133, 1, 96, 128, 97, 100, - 96, + 192, 135, 1, 96, @@ -40725,39 +41310,93 @@ pub mod inclusion_verifier { 22, 146, 80, - 97, - 4, + 127, 32, - 130, + 226, + 199, + 44, + 119, + 188, + 193, + 76, + 14, + 152, 1, - 81, - 97, - 100, + 212, + 125, + 58, + 180, + 38, + 116, + 2, + 122, + 130, + 205, 224, + 149, + 95, + 27, + 23, + 229, + 202, + 210, + 94, + 223, + 176, + 97, + 101, + 64, + 131, + 1, + 82, + 127, + 3, + 80, + 222, + 175, + 43, + 207, + 67, + 5, + 232, + 17, + 186, + 129, + 28, + 202, + 174, 131, - 1, - 82, + 214, + 103, 97, - 4, - 64, - 130, - 1, - 81, + 98, + 126, + 10, + 78, + 173, + 225, + 32, + 92, + 28, + 176, + 207, + 205, + 120, 97, 101, - 0, + 96, 131, 1, 82, 97, - 77, - 160, + 78, + 192, 130, 1, 81, 97, 101, - 32, + 128, 131, 1, 82, @@ -40767,15 +41406,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 100, - 224, + 101, + 64, 133, 1, 96, 96, 97, - 100, - 224, + 101, + 64, 135, 1, 96, @@ -40788,49 +41427,49 @@ pub mod inclusion_verifier { 80, 97, 100, - 96, + 192, 130, 1, 81, 97, 101, - 64, + 160, 131, 1, 82, 97, 100, - 128, + 224, 130, 1, 81, 97, 101, - 96, + 192, 131, 1, 82, 97, - 100, - 224, + 101, + 64, 130, 1, 81, 97, 101, - 128, + 224, 131, 1, 82, 97, 101, - 0, + 96, 130, 1, 81, 97, - 101, - 160, + 102, + 0, 131, 1, 82, @@ -40841,14 +41480,14 @@ pub mod inclusion_verifier { 64, 97, 101, - 64, + 160, 133, 1, 96, 128, 97, 101, - 64, + 160, 135, 1, 96, @@ -40866,8 +41505,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 101, - 192, + 102, + 32, 131, 1, 82, @@ -40878,20 +41517,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 101, - 224, + 102, + 64, 131, 1, 82, 97, - 77, - 192, + 78, + 224, 130, 1, 81, 97, 102, - 0, + 96, 131, 1, 82, @@ -40901,15 +41540,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 101, - 192, + 102, + 32, 133, 1, 96, 96, 97, - 101, - 192, + 102, + 32, 135, 1, 96, @@ -40922,49 +41561,49 @@ pub mod inclusion_verifier { 80, 97, 101, - 64, + 160, 130, 1, 81, 97, 102, - 32, + 128, 131, 1, 82, 97, 101, - 96, + 192, 130, 1, 81, 97, 102, - 64, + 160, 131, 1, 82, 97, - 101, - 192, + 102, + 32, 130, 1, 81, 97, 102, - 96, + 192, 131, 1, 82, 97, - 101, - 224, + 102, + 64, 130, 1, 81, 97, 102, - 128, + 224, 131, 1, 82, @@ -40975,14 +41614,14 @@ pub mod inclusion_verifier { 64, 97, 102, - 32, + 128, 133, 1, 96, 128, 97, 102, - 32, + 128, 135, 1, 96, @@ -41000,8 +41639,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 102, - 160, + 103, + 0, 131, 1, 82, @@ -41012,20 +41651,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 102, - 192, + 103, + 32, 131, 1, 82, 97, - 77, - 224, + 79, + 0, 130, 1, 81, 97, - 102, - 224, + 103, + 64, 131, 1, 82, @@ -41035,15 +41674,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 102, - 160, + 103, + 0, 133, 1, 96, 96, 97, - 102, - 160, + 103, + 0, 135, 1, 96, @@ -41056,49 +41695,49 @@ pub mod inclusion_verifier { 80, 97, 102, - 32, + 128, 130, 1, 81, 97, 103, - 0, + 96, 131, 1, 82, 97, 102, - 64, + 160, 130, 1, 81, 97, 103, - 32, + 128, 131, 1, 82, 97, - 102, - 160, + 103, + 0, 130, 1, 81, 97, 103, - 64, + 160, 131, 1, 82, 97, - 102, - 192, + 103, + 32, 130, 1, 81, 97, 103, - 96, + 192, 131, 1, 82, @@ -41109,14 +41748,14 @@ pub mod inclusion_verifier { 64, 97, 103, - 0, + 96, 133, 1, 96, 128, 97, 103, - 0, + 96, 135, 1, 96, @@ -41135,7 +41774,7 @@ pub mod inclusion_verifier { 81, 97, 103, - 128, + 224, 131, 1, 82, @@ -41146,20 +41785,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 103, - 160, + 104, + 0, 131, 1, 82, 97, - 78, - 0, + 79, + 32, 130, 1, 81, 97, - 103, - 192, + 104, + 32, 131, 1, 82, @@ -41170,14 +41809,14 @@ pub mod inclusion_verifier { 64, 97, 103, - 128, + 224, 133, 1, 96, 96, 97, 103, - 128, + 224, 135, 1, 96, @@ -41190,49 +41829,49 @@ pub mod inclusion_verifier { 80, 97, 103, - 0, + 96, 130, 1, 81, 97, - 103, - 224, + 104, + 64, 131, 1, 82, 97, 103, - 32, + 128, 130, 1, 81, 97, 104, - 0, + 96, 131, 1, 82, 97, 103, - 128, + 224, 130, 1, 81, 97, 104, - 32, + 128, 131, 1, 82, 97, - 103, - 160, + 104, + 0, 130, 1, 81, 97, 104, - 64, + 160, 131, 1, 82, @@ -41242,15 +41881,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 103, - 224, + 104, + 64, 133, 1, 96, 128, 97, - 103, - 224, + 104, + 64, 135, 1, 96, @@ -41269,7 +41908,7 @@ pub mod inclusion_verifier { 81, 97, 104, - 96, + 192, 131, 1, 82, @@ -41281,19 +41920,19 @@ pub mod inclusion_verifier { 81, 97, 104, - 128, + 224, 131, 1, 82, 97, - 78, - 32, + 79, + 64, 130, 1, 81, 97, - 104, - 160, + 105, + 0, 131, 1, 82, @@ -41304,14 +41943,14 @@ pub mod inclusion_verifier { 64, 97, 104, - 96, + 192, 133, 1, 96, 96, 97, 104, - 96, + 192, 135, 1, 96, @@ -41323,50 +41962,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 103, - 224, + 104, + 64, 130, 1, 81, 97, - 104, - 192, + 105, + 32, 131, 1, 82, 97, 104, - 0, + 96, 130, 1, 81, 97, - 104, - 224, + 105, + 64, 131, 1, 82, 97, 104, - 96, + 192, 130, 1, 81, 97, 105, - 0, + 96, 131, 1, 82, 97, 104, - 128, + 224, 130, 1, 81, 97, 105, - 32, + 128, 131, 1, 82, @@ -41376,15 +42015,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 104, - 192, + 105, + 32, 133, 1, 96, 128, 97, - 104, - 192, + 105, + 32, 135, 1, 96, @@ -41396,38 +42035,38 @@ pub mod inclusion_verifier { 146, 80, 97, - 3, - 128, + 5, + 96, 130, 1, 81, 97, 105, - 64, + 160, 131, 1, 82, 97, - 3, - 160, + 5, + 128, 130, 1, 81, 97, 105, - 96, + 192, 131, 1, 82, 97, - 78, - 64, + 79, + 96, 130, 1, 81, 97, 105, - 128, + 224, 131, 1, 82, @@ -41438,14 +42077,14 @@ pub mod inclusion_verifier { 64, 97, 105, - 64, + 160, 133, 1, 96, 96, 97, 105, - 64, + 160, 135, 1, 96, @@ -41457,50 +42096,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 104, - 192, + 105, + 32, 130, 1, 81, 97, - 105, - 160, + 106, + 0, 131, 1, 82, 97, - 104, - 224, + 105, + 64, 130, 1, 81, 97, - 105, - 192, + 106, + 32, 131, 1, 82, 97, 105, - 64, + 160, 130, 1, 81, 97, - 105, - 224, + 106, + 64, 131, 1, 82, 97, 105, - 96, + 192, 130, 1, 81, 97, 106, - 0, + 96, 131, 1, 82, @@ -41510,15 +42149,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 105, - 160, + 106, + 0, 133, 1, 96, 128, 97, - 105, - 160, + 106, + 0, 135, 1, 96, @@ -41530,38 +42169,38 @@ pub mod inclusion_verifier { 146, 80, 97, - 2, + 3, 192, 130, 1, 81, 97, 106, - 32, + 128, 131, 1, 82, 97, - 2, + 3, 224, 130, 1, 81, 97, 106, - 64, + 160, 131, 1, 82, 97, 79, - 64, + 128, 130, 1, 81, 97, 106, - 96, + 192, 131, 1, 82, @@ -41572,14 +42211,14 @@ pub mod inclusion_verifier { 64, 97, 106, - 32, + 128, 133, 1, 96, 96, 97, 106, - 32, + 128, 135, 1, 96, @@ -41591,50 +42230,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 105, - 160, + 106, + 0, 130, 1, 81, 97, 106, - 128, + 224, 131, 1, 82, 97, - 105, - 192, + 106, + 32, 130, 1, 81, 97, - 106, - 160, + 107, + 0, 131, 1, 82, 97, 106, - 32, + 128, 130, 1, 81, 97, - 106, - 192, + 107, + 32, 131, 1, 82, 97, 106, - 64, + 160, 130, 1, 81, 97, - 106, - 224, + 107, + 64, 131, 1, 82, @@ -41645,14 +42284,14 @@ pub mod inclusion_verifier { 64, 97, 106, - 128, + 224, 133, 1, 96, 128, 97, 106, - 128, + 224, 135, 1, 96, @@ -41671,7 +42310,7 @@ pub mod inclusion_verifier { 81, 97, 107, - 0, + 96, 131, 1, 82, @@ -41683,19 +42322,19 @@ pub mod inclusion_verifier { 81, 97, 107, - 32, + 128, 131, 1, 82, 97, 80, - 224, + 128, 130, 1, 81, 97, 107, - 64, + 160, 131, 1, 82, @@ -41706,14 +42345,14 @@ pub mod inclusion_verifier { 64, 97, 107, - 0, + 96, 133, 1, 96, 96, 97, 107, - 0, + 96, 135, 1, 96, @@ -41726,67 +42365,201 @@ pub mod inclusion_verifier { 80, 97, 106, - 128, + 224, 130, 1, 81, 97, 107, - 96, + 192, 131, 1, 82, 97, - 106, - 160, + 107, + 0, 130, 1, 81, 97, 107, - 128, + 224, 131, 1, 82, 97, 107, - 0, + 96, 130, 1, 81, 97, + 108, + 0, + 131, + 1, + 82, + 97, 107, - 160, + 128, + 130, + 1, + 81, + 97, + 108, + 32, 131, 1, 82, + 130, + 96, + 1, + 96, + 64, + 97, + 107, + 192, + 133, + 1, + 96, + 128, 97, 107, + 192, + 135, + 1, + 96, + 6, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 3, + 64, + 130, + 1, + 81, + 97, + 108, + 64, + 131, + 1, + 82, + 97, + 3, + 96, + 130, + 1, + 81, + 97, + 108, + 96, + 131, + 1, + 82, + 97, + 82, 32, 130, 1, 81, 97, + 108, + 128, + 131, + 1, + 82, + 130, + 96, + 1, + 96, + 64, + 97, + 108, + 64, + 133, + 1, + 96, + 96, + 97, + 108, + 64, + 135, + 1, + 96, + 7, + 90, + 250, + 20, + 22, + 146, + 80, + 97, + 107, + 192, + 130, + 1, + 81, + 97, + 108, + 160, + 131, + 1, + 82, + 97, 107, + 224, + 130, + 1, + 81, + 97, + 108, 192, 131, 1, 82, + 97, + 108, + 64, + 130, + 1, + 81, + 97, + 108, + 224, + 131, + 1, + 82, + 97, + 108, + 96, + 130, + 1, + 81, + 97, + 109, + 0, + 131, + 1, + 82, 130, 96, 1, 96, 64, 97, - 107, - 96, + 108, + 160, 133, 1, 96, 128, 97, - 107, - 96, + 108, + 160, 135, 1, 96, @@ -41799,37 +42572,37 @@ pub mod inclusion_verifier { 80, 97, 3, - 64, + 128, 130, 1, 81, 97, - 107, - 224, + 109, + 32, 131, 1, 82, 97, 3, - 96, + 160, 130, 1, 81, 97, - 108, - 0, + 109, + 64, 131, 1, 82, 97, - 81, - 0, + 82, + 64, 130, 1, 81, 97, - 108, - 32, + 109, + 96, 131, 1, 82, @@ -41839,15 +42612,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 107, - 224, + 109, + 32, 133, 1, 96, 96, 97, - 107, - 224, + 109, + 32, 135, 1, 96, @@ -41859,50 +42632,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 107, - 96, + 108, + 160, 130, 1, 81, 97, - 108, - 64, + 109, + 128, 131, 1, 82, 97, - 107, - 128, + 108, + 192, 130, 1, 81, 97, - 108, - 96, + 109, + 160, 131, 1, 82, 97, - 107, - 224, + 109, + 32, 130, 1, 81, 97, - 108, - 128, + 109, + 192, 131, 1, 82, 97, - 108, - 0, + 109, + 64, 130, 1, 81, 97, - 108, - 160, + 109, + 224, 131, 1, 82, @@ -41912,15 +42685,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 108, - 64, + 109, + 128, 133, 1, 96, 128, 97, - 108, - 64, + 109, + 128, 135, 1, 96, @@ -41933,37 +42706,37 @@ pub mod inclusion_verifier { 80, 97, 1, - 128, + 192, 130, 1, 81, 97, - 108, - 192, + 110, + 0, 131, 1, 82, 97, 1, - 160, + 224, 130, 1, 81, 97, - 108, - 224, + 110, + 32, 131, 1, 82, 97, - 82, - 0, + 83, + 64, 130, 1, 81, 97, - 109, - 0, + 110, + 64, 131, 1, 82, @@ -41973,15 +42746,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 108, - 192, + 110, + 0, 133, 1, 96, 96, 97, - 108, - 192, + 110, + 0, 135, 1, 96, @@ -41993,50 +42766,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 108, - 64, + 109, + 128, 130, 1, 81, 97, - 109, - 32, + 110, + 96, 131, 1, 82, 97, - 108, - 96, + 109, + 160, 130, 1, 81, 97, - 109, - 64, + 110, + 128, 131, 1, 82, 97, - 108, - 192, + 110, + 0, 130, 1, 81, 97, - 109, - 96, + 110, + 160, 131, 1, 82, 97, - 108, - 224, + 110, + 32, 130, 1, 81, 97, - 109, - 128, + 110, + 192, 131, 1, 82, @@ -42046,15 +42819,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 109, - 32, + 110, + 96, 133, 1, 96, 128, 97, - 109, - 32, + 110, + 96, 135, 1, 96, @@ -42066,40 +42839,40 @@ pub mod inclusion_verifier { 146, 80, 97, - 10, - 224, + 11, + 32, 130, 1, 81, 97, - 109, - 160, + 110, + 224, 131, 1, 82, 97, 11, - 0, + 64, 130, 1, 81, 97, - 109, - 192, + 111, + 0, 131, 1, 82, 97, - 82, - 64, + 83, + 128, 130, 1, 81, 129, 3, 97, - 109, - 224, + 111, + 32, 131, 1, 82, @@ -42110,15 +42883,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 109, - 160, + 110, + 224, 132, 1, 96, 96, 97, - 109, - 160, + 110, + 224, 134, 1, 96, @@ -42130,50 +42903,50 @@ pub mod inclusion_verifier { 145, 80, 97, - 109, - 32, + 110, + 96, 129, 1, 81, 97, - 110, - 0, + 111, + 64, 130, 1, 82, 97, - 109, - 64, + 110, + 128, 129, 1, 81, 97, - 110, - 32, + 111, + 96, 130, 1, 82, 97, - 109, - 160, + 110, + 224, 129, 1, 81, 97, - 110, - 64, + 111, + 128, 130, 1, 82, 97, - 109, - 192, + 111, + 0, 129, 1, 81, 97, - 110, - 96, + 111, + 160, 130, 1, 82, @@ -42183,15 +42956,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 0, + 111, + 64, 132, 1, 96, 128, 97, - 110, - 0, + 111, + 64, 134, 1, 96, @@ -42204,37 +42977,37 @@ pub mod inclusion_verifier { 80, 97, 11, - 128, + 192, 129, 1, 81, 97, - 110, - 128, + 111, + 192, 130, 1, 82, 97, 11, - 160, + 224, 129, 1, 81, 97, - 110, - 160, + 111, + 224, 130, 1, 82, 97, - 82, - 96, + 83, + 160, 129, 1, 81, 97, - 110, - 192, + 112, + 0, 130, 1, 82, @@ -42244,15 +43017,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 128, + 111, + 192, 132, 1, 96, 96, 97, - 110, - 128, + 111, + 192, 134, 1, 96, @@ -42264,50 +43037,50 @@ pub mod inclusion_verifier { 145, 80, 97, - 110, - 0, + 111, + 64, 129, 1, 81, 97, - 110, - 224, + 112, + 32, 130, 1, 82, 97, - 110, - 32, + 111, + 96, 129, 1, 81, 97, - 111, - 0, + 112, + 64, 130, 1, 82, 97, - 110, - 128, + 111, + 192, 129, 1, 81, 97, - 111, - 32, + 112, + 96, 130, 1, 82, 97, - 110, - 160, + 111, + 224, 129, 1, 81, 97, - 111, - 64, + 112, + 128, 130, 1, 82, @@ -42317,15 +43090,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 224, + 112, + 32, 132, 1, 96, 128, 97, - 110, - 224, + 112, + 32, 134, 1, 96, @@ -42337,26 +43110,26 @@ pub mod inclusion_verifier { 145, 80, 97, - 110, - 224, + 112, + 32, 129, 1, 81, 97, - 111, - 96, + 112, + 160, 130, 1, 82, 97, - 111, - 0, + 112, + 64, 129, 1, 81, 97, - 111, - 128, + 112, + 192, 130, 1, 82, @@ -42394,8 +43167,8 @@ pub mod inclusion_verifier { 18, 194, 97, - 111, - 160, + 112, + 224, 130, 1, 82, @@ -42433,8 +43206,8 @@ pub mod inclusion_verifier { 246, 237, 97, - 111, - 192, + 113, + 0, 130, 1, 82, @@ -42472,8 +43245,8 @@ pub mod inclusion_verifier { 151, 91, 97, - 111, - 224, + 113, + 32, 130, 1, 82, @@ -42511,32 +43284,32 @@ pub mod inclusion_verifier { 125, 170, 97, - 112, - 0, + 113, + 64, 130, 1, 82, 97, 11, - 128, + 192, 129, 1, 81, 97, - 112, - 32, + 113, + 96, 130, 1, 82, 97, 11, - 160, + 224, 129, 1, 81, 97, - 112, - 64, + 113, + 128, 130, 1, 82, @@ -42574,8 +43347,8 @@ pub mod inclusion_verifier { 226, 61, 97, - 112, - 96, + 113, + 160, 130, 1, 82, @@ -42613,8 +43386,8 @@ pub mod inclusion_verifier { 247, 158, 97, - 112, - 128, + 113, + 192, 130, 1, 82, @@ -42652,8 +43425,8 @@ pub mod inclusion_verifier { 193, 69, 97, - 112, - 160, + 113, + 224, 130, 1, 82, @@ -42691,8 +43464,8 @@ pub mod inclusion_verifier { 222, 255, 97, - 112, - 192, + 114, + 0, 130, 1, 82, @@ -42702,16 +43475,16 @@ pub mod inclusion_verifier { 96, 32, 97, - 111, - 96, + 112, + 160, 132, 1, 97, 1, 128, 97, - 111, - 96, + 112, + 160, 134, 1, 96, @@ -42719,8 +43492,8 @@ pub mod inclusion_verifier { 90, 250, 97, - 111, - 96, + 112, + 160, 147, 144, 147, @@ -42747,8 +43520,8 @@ pub mod inclusion_verifier { 81, 128, 97, - 112, - 192, + 114, + 0, 1, 96, 64, @@ -42756,7 +43529,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 134, + 144, 144, 96, 32, @@ -42826,15 +43599,15 @@ pub mod inclusion_verifier { 23, 21, 97, - 82, - 177, + 84, + 51, 87, 97, - 82, - 177, + 84, + 51, 97, - 82, - 114, + 83, + 244, 86, 91, 96, @@ -42854,8 +43627,8 @@ pub mod inclusion_verifier { 1, 18, 97, - 82, - 202, + 84, + 76, 87, 96, 0, @@ -42877,20 +43650,20 @@ pub mod inclusion_verifier { 17, 21, 97, - 82, - 228, + 84, + 102, 87, 97, - 82, - 228, + 84, + 102, 97, - 82, - 114, + 83, + 244, 86, 91, 97, - 82, - 247, + 84, + 121, 96, 31, 130, @@ -42903,8 +43676,8 @@ pub mod inclusion_verifier { 32, 1, 97, - 82, - 136, + 84, + 10, 86, 91, 129, @@ -42920,8 +43693,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 12, + 84, + 142, 87, 96, 0, @@ -42968,8 +43741,8 @@ pub mod inclusion_verifier { 18, 21, 97, - 83, - 60, + 84, + 190, 87, 96, 0, @@ -42992,8 +43765,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, 84, + 214, 87, 96, 0, @@ -43012,8 +43785,8 @@ pub mod inclusion_verifier { 1, 18, 97, - 83, - 104, + 84, + 234, 87, 96, 0, @@ -43029,15 +43802,15 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 124, + 84, + 254, 87, 97, - 83, - 124, + 84, + 254, 97, - 82, - 114, + 83, + 244, 86, 91, 129, @@ -43045,14 +43818,14 @@ pub mod inclusion_verifier { 5, 27, 97, - 83, - 139, + 85, + 13, 130, 130, 1, 97, - 82, - 136, + 84, + 10, 86, 91, 146, @@ -43073,8 +43846,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 165, + 85, + 39, 87, 96, 0, @@ -43091,8 +43864,8 @@ pub mod inclusion_verifier { 16, 21, 97, - 83, - 195, + 85, + 69, 87, 134, 53, @@ -43107,8 +43880,8 @@ pub mod inclusion_verifier { 1, 144, 97, - 83, - 170, + 85, + 44, 86, 91, 151, @@ -43126,8 +43899,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 83, - 218, + 85, + 92, 87, 96, 0, @@ -43136,15 +43909,15 @@ pub mod inclusion_verifier { 91, 80, 97, - 83, - 231, + 85, + 105, 133, 130, 134, 1, 97, - 82, - 185, + 84, + 59, 86, 91, 145, @@ -43231,38 +44004,38 @@ pub mod inclusion_verifier { 34, 18, 32, - 143, - 15, 8, - 193, - 19, - 215, - 30, - 154, - 255, - 208, - 74, - 147, - 10, + 135, + 187, + 127, + 183, + 1, + 26, + 66, + 77, 12, - 207, - 255, - 244, - 28, + 171, + 149, 199, + 18, + 128, + 93, + 15, + 59, + 181, + 90, + 144, + 235, + 120, + 23, + 161, + 84, + 32, 158, - 53, - 137, - 50, - 207, - 167, - 172, - 19, - 149, - 194, - 66, - 68, - 5, + 9, + 76, + 142, + 184, 100, 115, 111, diff --git a/backend/src/contracts/generated/summa_contract.rs b/backend/src/contracts/generated/summa_contract.rs index 85f9c82a..5de6f3f5 100644 --- a/backend/src/contracts/generated/summa_contract.rs +++ b/backend/src/contracts/generated/summa_contract.rs @@ -11,7 +11,7 @@ pub use summa::*; )] pub mod summa { #[rustfmt::skip] - const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_inclusionVerifier\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"AddressOwnershipProofSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"mstRoot\",\"type\":\"uint256\",\"components\":[],\"indexed\":false},{\"internalType\":\"uint256[]\",\"name\":\"rootSums\",\"type\":\"uint256[]\",\"components\":[],\"indexed\":false},{\"internalType\":\"struct Summa.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"assetName\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"LiabilitiesCommitmentSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"addressOwnershipProofs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mstRoot\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"addressHash\",\"type\":\"bytes32\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getAddressOwnershipProof\",\"outputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mstRoot\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"rootSums\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"struct Summa.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"assetName\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]}]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitCommitment\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"_addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitProofOfAddressOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"publicInputs\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifyInclusionProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]"; + const __ABI: &str = "[{\"inputs\":[{\"internalType\":\"contract IVerifier\",\"name\":\"_inclusionVerifier\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"AddressOwnershipProofSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[],\"indexed\":true},{\"internalType\":\"uint256\",\"name\":\"mstRoot\",\"type\":\"uint256\",\"components\":[],\"indexed\":false},{\"internalType\":\"uint256[]\",\"name\":\"rootBalances\",\"type\":\"uint256[]\",\"components\":[],\"indexed\":false},{\"internalType\":\"struct Summa.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"assetName\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]}],\"indexed\":false}],\"type\":\"event\",\"name\":\"LiabilitiesCommitmentSubmitted\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"previousOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true},{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[],\"indexed\":true}],\"type\":\"event\",\"name\":\"OwnershipTransferred\",\"outputs\":[],\"anonymous\":false},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"addressOwnershipProofs\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"commitments\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"mstRoot\",\"type\":\"uint256\",\"components\":[]}]},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"addressHash\",\"type\":\"bytes32\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"getAddressOwnershipProof\",\"outputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof\",\"name\":\"\",\"type\":\"tuple\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}]},{\"inputs\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\",\"components\":[]}]},{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"renounceOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"mstRoot\",\"type\":\"uint256\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"rootBalances\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"struct Summa.Asset[]\",\"name\":\"assets\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"assetName\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]}]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitCommitment\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"struct Summa.AddressOwnershipProof[]\",\"name\":\"_addressOwnershipProofs\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"cexAddress\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"string\",\"name\":\"chain\",\"type\":\"string\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"signature\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"bytes\",\"name\":\"message\",\"type\":\"bytes\",\"components\":[]}]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"submitProofOfAddressOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\",\"components\":[]}],\"stateMutability\":\"nonpayable\",\"type\":\"function\",\"name\":\"transferOwnership\",\"outputs\":[]},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"proof\",\"type\":\"bytes\",\"components\":[]},{\"internalType\":\"uint256[]\",\"name\":\"publicInputs\",\"type\":\"uint256[]\",\"components\":[]},{\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\",\"components\":[]}],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"verifyInclusionProof\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\",\"components\":[]}]}]"; ///The parsed JSON ABI of the contract. pub static SUMMA_ABI: ::ethers::contract::Lazy<::ethers::core::abi::Abi> = ::ethers::contract::Lazy::new(|| ::ethers::core::utils::__serde_json::from_str(__ABI).expect("ABI is always valid")); @@ -41,14 +41,14 @@ pub mod summa { 98, 0, 27, - 29, + 216, 56, 3, 128, 98, 0, 27, - 29, + 216, 131, 57, 129, @@ -226,7 +226,7 @@ pub mod summa { 81, 97, 26, - 54, + 241, 98, 0, 0, @@ -237,13 +237,13 @@ pub mod summa { 96, 0, 97, - 10, - 74, + 11, + 5, 1, 82, 97, 26, - 54, + 241, 96, 0, 243, @@ -411,8 +411,8 @@ pub mod summa { 96, 4, 97, - 16, - 173, + 17, + 104, 86, 91, 97, @@ -429,8 +429,8 @@ pub mod summa { 145, 144, 97, - 17, - 129, + 18, + 60, 86, 91, 96, @@ -452,8 +452,8 @@ pub mod summa { 96, 4, 97, - 16, - 173, + 17, + 104, 86, 91, 96, @@ -535,8 +535,8 @@ pub mod summa { 96, 4, 97, - 16, - 173, + 17, + 104, 86, 91, 97, @@ -556,8 +556,8 @@ pub mod summa { 145, 144, 97, - 17, - 155, + 18, + 86, 86, 91, 97, @@ -571,7 +571,7 @@ pub mod summa { 4, 97, 19, - 26, + 213, 86, 91, 97, @@ -589,8 +589,8 @@ pub mod summa { 96, 4, 97, - 20, - 223, + 21, + 154, 86, 91, 97, @@ -624,13 +624,13 @@ pub mod summa { 96, 4, 97, - 21, - 76, + 22, + 7, 86, 91, 97, - 10, - 202, + 11, + 133, 86, 91, 97, @@ -643,13 +643,13 @@ pub mod summa { 96, 4, 97, - 22, - 147, + 23, + 78, 86, 91, 97, - 14, - 129, + 15, + 60, 86, 91, 97, @@ -807,8 +807,8 @@ pub mod summa { 130, 144, 97, - 22, - 210, + 23, + 141, 86, 91, 129, @@ -823,8 +823,8 @@ pub mod summa { 2, 66, 97, - 22, - 235, + 23, + 166, 86, 91, 144, @@ -865,7 +865,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -909,7 +909,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1011,7 +1011,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1055,7 +1055,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1157,7 +1157,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1201,7 +1201,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1303,7 +1303,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1347,7 +1347,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1447,8 +1447,8 @@ pub mod summa { 4, 178, 97, - 14, - 250, + 15, + 181, 86, 91, 97, @@ -1457,8 +1457,8 @@ pub mod summa { 96, 0, 97, + 16, 15, - 84, 86, 91, 86, @@ -1511,7 +1511,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1555,7 +1555,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1653,7 +1653,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1697,7 +1697,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1795,7 +1795,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1839,7 +1839,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1937,7 +1937,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -1981,7 +1981,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -2075,8 +2075,8 @@ pub mod summa { 7, 38, 97, - 14, - 250, + 15, + 181, 86, 91, 96, @@ -2107,8 +2107,8 @@ pub mod summa { 7, 70, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -2136,7 +2136,7 @@ pub mod summa { 144, 97, 23, - 59, + 246, 86, 91, 96, @@ -2273,8 +2273,8 @@ pub mod summa { 7, 236, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -2323,8 +2323,8 @@ pub mod summa { 144, 130, 97, - 23, - 166, + 24, + 97, 86, 91, 80, @@ -2344,8 +2344,8 @@ pub mod summa { 144, 130, 97, - 23, - 166, + 24, + 97, 86, 91, 80, @@ -2365,8 +2365,8 @@ pub mod summa { 144, 130, 97, - 23, - 166, + 24, + 97, 86, 91, 80, @@ -2386,8 +2386,8 @@ pub mod summa { 144, 130, 97, - 23, - 166, + 24, + 97, 86, 91, 80, @@ -2427,8 +2427,8 @@ pub mod summa { 8, 134, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -2469,8 +2469,8 @@ pub mod summa { 8, 176, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -2512,8 +2512,8 @@ pub mod summa { 8, 219, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -2555,8 +2555,8 @@ pub mod summa { 9, 6, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -2673,8 +2673,8 @@ pub mod summa { 124, 144, 97, - 24, - 102, + 25, + 33, 86, 91, 145, @@ -2729,8 +2729,8 @@ pub mod summa { 145, 144, 97, - 24, - 127, + 25, + 58, 86, 91, 96, @@ -2761,8 +2761,8 @@ pub mod summa { 9, 212, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -2861,83 +2861,270 @@ pub mod summa { 86, 91, 96, - 64, + 2, + 91, + 131, 81, - 99, - 11, - 210, - 5, - 169, - 96, - 228, - 27, 129, - 82, + 16, + 21, + 97, + 10, + 237, + 87, + 131, + 129, + 129, + 81, + 129, + 16, + 97, + 10, + 81, + 87, + 97, + 10, + 81, + 97, + 23, + 166, + 86, + 91, 96, - 1, + 32, + 2, 96, + 32, 1, + 1, + 81, 96, - 160, - 27, 3, - 127, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + 96, 0, - 22, - 144, - 99, - 189, + 133, + 129, + 82, + 96, 32, - 90, - 144, + 1, 144, - 97, - 10, 129, - 144, - 134, - 144, - 136, - 144, + 82, 96, - 4, + 32, 1, - 97, - 25, - 28, - 86, - 91, + 96, + 0, + 32, + 96, + 1, + 1, + 96, + 2, + 131, + 97, + 10, + 124, + 145, + 144, + 97, + 23, + 141, + 86, + 91, + 129, + 84, + 129, + 16, + 97, + 10, + 140, + 87, + 97, + 10, + 140, + 97, + 23, + 166, + 86, + 91, + 144, + 96, + 0, + 82, + 96, + 32, + 96, + 0, + 32, + 1, + 84, + 20, + 97, + 10, + 219, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 20, + 96, + 36, + 130, + 1, + 82, + 115, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 114, + 111, + 111, + 116, + 32, + 98, + 97, + 108, + 97, + 110, + 99, + 101, + 96, + 96, + 27, + 96, + 68, + 130, + 1, + 82, + 96, + 100, + 1, + 97, + 2, + 12, + 86, + 91, + 128, + 97, + 10, + 229, + 129, + 97, + 25, + 33, + 86, + 91, + 145, + 80, + 80, + 97, + 10, + 54, + 86, + 91, + 80, + 96, + 64, + 81, + 99, + 11, + 210, + 5, + 169, + 96, + 228, + 27, + 129, + 82, + 96, + 1, + 96, + 1, + 96, + 160, + 27, + 3, + 127, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 22, + 144, + 99, + 189, + 32, + 90, + 144, + 144, + 97, + 11, + 60, + 144, + 134, + 144, + 136, + 144, + 96, + 4, + 1, + 97, + 25, + 215, + 86, + 91, 96, 32, 96, @@ -2954,8 +3141,8 @@ pub mod summa { 128, 21, 97, - 10, - 158, + 11, + 89, 87, 61, 96, @@ -2994,13 +3181,13 @@ pub mod summa { 1, 144, 97, - 10, - 194, + 11, + 125, 145, 144, 97, 25, - 65, + 252, 86, 91, 148, @@ -3012,11 +3199,11 @@ pub mod summa { 86, 91, 97, - 10, - 210, + 11, + 141, 97, - 14, - 250, + 15, + 181, 86, 91, 131, @@ -3025,7 +3212,7 @@ pub mod summa { 3, 97, 11, - 21, + 208, 87, 96, 64, @@ -3092,8 +3279,8 @@ pub mod summa { 81, 20, 97, - 11, - 120, + 12, + 51, 87, 96, 64, @@ -3202,15 +3389,15 @@ pub mod summa { 17, 21, 97, - 11, - 148, + 12, + 79, 87, 97, - 11, - 148, + 12, + 79, 97, - 17, - 243, + 18, + 174, 86, 91, 96, @@ -3235,8 +3422,8 @@ pub mod summa { 128, 21, 97, - 11, - 199, + 12, + 130, 87, 129, 96, @@ -3258,8 +3445,8 @@ pub mod summa { 144, 129, 97, - 11, - 178, + 12, + 109, 87, 144, 80, @@ -3284,15 +3471,15 @@ pub mod summa { 17, 21, 97, - 11, - 230, + 12, + 161, 87, 97, - 11, - 230, + 12, + 161, 97, - 17, - 243, + 18, + 174, 86, 91, 96, @@ -3318,7 +3505,7 @@ pub mod summa { 21, 97, 12, - 25, + 212, 87, 129, 96, @@ -3341,7 +3528,7 @@ pub mod summa { 129, 97, 12, - 4, + 191, 87, 144, 80, @@ -3358,8 +3545,8 @@ pub mod summa { 16, 21, 97, - 13, - 182, + 14, + 113, 87, 132, 129, @@ -3369,14 +3556,14 @@ pub mod summa { 16, 97, 12, - 58, + 245, 87, 97, 12, - 58, + 245, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -3398,9 +3585,9 @@ pub mod summa { 21, 128, 21, - 97, - 12, - 118, + 97, + 13, + 49, 87, 80, 132, @@ -3410,15 +3597,15 @@ pub mod summa { 129, 16, 97, - 12, - 100, + 13, + 31, 87, 97, - 12, - 100, + 13, + 31, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -3440,8 +3627,8 @@ pub mod summa { 21, 91, 97, - 12, - 178, + 13, + 109, 87, 96, 64, @@ -3506,15 +3693,15 @@ pub mod summa { 129, 16, 97, - 12, - 196, + 13, + 127, 87, 97, - 12, - 196, + 13, + 127, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -3530,7 +3717,7 @@ pub mod summa { 3, 97, 13, - 45, + 232, 87, 96, 64, @@ -3630,14 +3817,14 @@ pub mod summa { 16, 97, 13, - 63, + 250, 87, 97, 13, - 63, + 250, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -3659,15 +3846,15 @@ pub mod summa { 129, 16, 97, - 13, - 93, + 14, + 24, 87, 97, - 13, - 93, + 14, + 24, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -3688,15 +3875,15 @@ pub mod summa { 129, 16, 97, - 13, - 122, + 14, + 53, 87, 97, - 13, - 122, + 14, + 53, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -3718,15 +3905,15 @@ pub mod summa { 129, 16, 97, - 13, - 152, + 14, + 83, 87, 97, - 13, - 152, + 14, + 83, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -3743,12 +3930,12 @@ pub mod summa { 128, 128, 97, - 13, - 174, + 14, + 105, 144, 97, - 24, - 102, + 25, + 33, 86, 91, 145, @@ -3756,7 +3943,7 @@ pub mod summa { 80, 97, 12, - 31, + 218, 86, 91, 80, @@ -3820,7 +4007,7 @@ pub mod summa { 146, 97, 14, - 1, + 188, 146, 96, 1, @@ -3830,8 +4017,8 @@ pub mod summa { 1, 144, 97, - 15, - 164, + 16, + 95, 86, 91, 80, @@ -3844,7 +4031,7 @@ pub mod summa { 81, 97, 14, - 29, + 216, 145, 96, 2, @@ -3858,8 +4045,8 @@ pub mod summa { 1, 144, 97, - 15, - 239, + 16, + 170, 86, 91, 80, @@ -3872,7 +4059,7 @@ pub mod summa { 81, 97, 14, - 57, + 244, 145, 96, 3, @@ -3886,8 +4073,8 @@ pub mod summa { 1, 144, 97, - 15, - 239, + 16, + 170, 86, 91, 80, @@ -3935,15 +4122,15 @@ pub mod summa { 64, 81, 97, - 14, - 113, + 15, + 44, 147, 146, 145, 144, 97, - 25, - 99, + 26, + 30, 86, 91, 96, @@ -3963,11 +4150,11 @@ pub mod summa { 86, 91, 97, - 14, - 137, + 15, + 68, 97, - 14, - 250, + 15, + 181, 86, 91, 96, @@ -3981,8 +4168,8 @@ pub mod summa { 129, 22, 97, - 14, - 238, + 15, + 169, 87, 96, 64, @@ -4072,12 +4259,12 @@ pub mod summa { 86, 91, 97, - 14, - 247, + 15, + 178, 129, 97, + 16, 15, - 84, 86, 91, 80, @@ -4275,8 +4462,8 @@ pub mod summa { 130, 21, 97, - 15, - 223, + 16, + 154, 87, 145, 96, @@ -4290,8 +4477,8 @@ pub mod summa { 17, 21, 97, - 15, - 223, + 16, + 154, 87, 130, 81, @@ -4308,20 +4495,20 @@ pub mod summa { 1, 144, 97, - 15, - 196, + 16, + 127, 86, 91, 80, 97, - 15, - 235, + 16, + 166, 146, 145, 80, 97, 16, - 65, + 252, 86, 91, 80, @@ -4351,7 +4538,7 @@ pub mod summa { 21, 97, 16, - 53, + 240, 87, 145, 96, @@ -4366,7 +4553,7 @@ pub mod summa { 21, 97, 16, - 53, + 240, 87, 130, 81, @@ -4374,12 +4561,12 @@ pub mod summa { 144, 97, 16, - 37, + 224, 144, 130, 97, - 23, - 166, + 24, + 97, 86, 91, 80, @@ -4395,19 +4582,19 @@ pub mod summa { 144, 97, 16, - 15, + 202, 86, 91, 80, 97, - 15, - 235, + 16, + 166, 146, 145, 80, 97, - 16, - 86, + 17, + 17, 86, 91, 91, @@ -4416,8 +4603,8 @@ pub mod summa { 17, 21, 97, - 15, - 235, + 16, + 166, 87, 96, 0, @@ -4428,7 +4615,7 @@ pub mod summa { 1, 97, 16, - 66, + 253, 86, 91, 128, @@ -4436,19 +4623,19 @@ pub mod summa { 17, 21, 97, - 15, - 235, + 16, + 166, 87, 96, 0, 97, - 16, - 106, + 17, + 37, 130, 130, 97, - 16, - 115, + 17, + 46, 86, 91, 80, @@ -4456,20 +4643,20 @@ pub mod summa { 1, 1, 97, - 16, - 86, + 17, + 17, 86, 91, 80, 128, 84, 97, - 16, - 127, + 17, + 58, 144, 97, 23, - 1, + 188, 86, 91, 96, @@ -4481,8 +4668,8 @@ pub mod summa { 31, 16, 97, - 16, - 143, + 17, + 74, 87, 80, 80, @@ -4509,13 +4696,13 @@ pub mod summa { 1, 144, 97, - 14, - 247, + 15, + 178, 145, 144, 97, 16, - 65, + 252, 86, 91, 96, @@ -4528,8 +4715,8 @@ pub mod summa { 18, 21, 97, - 16, - 191, + 17, + 122, 87, 96, 0, @@ -4551,8 +4738,8 @@ pub mod summa { 16, 21, 97, - 16, - 225, + 17, + 156, 87, 129, 129, @@ -4566,8 +4753,8 @@ pub mod summa { 32, 1, 97, - 16, - 201, + 17, + 132, 86, 91, 80, @@ -4588,7 +4775,7 @@ pub mod summa { 82, 97, 17, - 2, + 189, 129, 96, 32, @@ -4599,8 +4786,8 @@ pub mod summa { 134, 1, 97, - 16, - 198, + 17, + 129, 86, 91, 96, @@ -4633,15 +4820,15 @@ pub mod summa { 82, 97, 17, - 43, + 230, 96, 128, 133, 1, 130, 97, - 16, - 234, + 17, + 165, 86, 91, 144, @@ -4661,12 +4848,12 @@ pub mod summa { 82, 97, 17, - 68, + 255, 130, 130, 97, - 16, - 234, + 17, + 165, 86, 91, 145, @@ -4686,13 +4873,13 @@ pub mod summa { 1, 82, 97, - 17, - 94, + 18, + 25, 130, 130, 97, - 16, - 234, + 17, + 165, 86, 91, 145, @@ -4712,13 +4899,13 @@ pub mod summa { 1, 82, 97, - 17, - 120, + 18, + 51, 130, 130, 97, - 16, - 234, + 17, + 165, 86, 91, 149, @@ -4737,8 +4924,8 @@ pub mod summa { 96, 0, 97, - 17, - 148, + 18, + 79, 96, 32, 131, @@ -4746,7 +4933,7 @@ pub mod summa { 132, 97, 17, - 22, + 209, 86, 91, 147, @@ -4763,16 +4950,16 @@ pub mod summa { 96, 0, 97, - 17, - 174, + 18, + 105, 96, 128, 131, 1, 135, - 97, - 16, - 234, + 97, + 17, + 165, 86, 91, 130, @@ -4784,13 +4971,13 @@ pub mod summa { 1, 82, 97, - 17, - 192, + 18, + 123, 129, 135, 97, - 16, - 234, + 17, + 165, 86, 91, 144, @@ -4804,13 +4991,13 @@ pub mod summa { 1, 82, 97, - 17, - 212, + 18, + 143, 129, 134, 97, - 16, - 234, + 17, + 165, 86, 91, 144, @@ -4824,13 +5011,13 @@ pub mod summa { 1, 82, 97, - 17, - 232, + 18, + 163, 129, 133, 97, - 16, - 234, + 17, + 165, 86, 91, 151, @@ -4891,14 +5078,14 @@ pub mod summa { 21, 97, 18, - 44, + 231, 87, 97, 18, - 44, + 231, 97, - 17, - 243, + 18, + 174, 86, 91, 96, @@ -4932,14 +5119,14 @@ pub mod summa { 21, 97, 18, - 44, + 231, 87, 97, 18, - 44, + 231, 97, - 17, - 243, + 18, + 174, 86, 91, 96, @@ -4972,15 +5159,15 @@ pub mod summa { 23, 21, 97, - 18, - 126, + 19, + 57, 87, 97, - 18, - 126, + 19, + 57, 97, - 17, - 243, + 18, + 174, 86, 91, 96, @@ -5006,15 +5193,15 @@ pub mod summa { 17, 21, 97, - 18, - 160, + 19, + 91, 87, 97, - 18, - 160, + 19, + 91, 97, - 17, - 243, + 18, + 174, 86, 91, 80, @@ -5036,8 +5223,8 @@ pub mod summa { 1, 18, 97, - 18, - 187, + 19, + 118, 87, 96, 0, @@ -5059,20 +5246,20 @@ pub mod summa { 17, 21, 97, - 18, - 213, + 19, + 144, 87, 97, - 18, - 213, + 19, + 144, 97, - 17, - 243, + 18, + 174, 86, 91, 97, - 18, - 232, + 19, + 163, 96, 31, 130, @@ -5085,8 +5272,8 @@ pub mod summa { 32, 1, 97, - 18, - 85, + 19, + 16, 86, 91, 129, @@ -5102,8 +5289,8 @@ pub mod summa { 17, 21, 97, - 18, - 253, + 19, + 184, 87, 96, 0, @@ -5151,7 +5338,7 @@ pub mod summa { 21, 97, 19, - 45, + 232, 87, 96, 0, @@ -5174,8 +5361,8 @@ pub mod summa { 17, 21, 97, - 19, - 69, + 20, + 0, 87, 96, 0, @@ -5194,8 +5381,8 @@ pub mod summa { 1, 18, 97, - 19, - 89, + 20, + 20, 87, 96, 0, @@ -5205,20 +5392,20 @@ pub mod summa { 129, 53, 97, - 19, - 108, + 20, + 39, 97, - 19, - 103, + 20, + 34, 130, 97, - 18, - 134, + 19, + 65, 86, 91, 97, - 18, - 85, + 19, + 16, 86, 91, 129, @@ -5244,8 +5431,8 @@ pub mod summa { 17, 21, 97, - 19, - 139, + 20, + 70, 87, 96, 0, @@ -5261,8 +5448,8 @@ pub mod summa { 16, 21, 97, - 20, - 108, + 21, + 39, 87, 128, 53, @@ -5271,8 +5458,8 @@ pub mod summa { 17, 21, 97, - 19, - 166, + 20, + 97, 87, 96, 0, @@ -5293,8 +5480,8 @@ pub mod summa { 18, 21, 97, - 19, - 189, + 20, + 120, 87, 96, 0, @@ -5303,11 +5490,11 @@ pub mod summa { 253, 91, 97, - 19, - 197, + 20, + 128, 97, 18, - 9, + 196, 86, 91, 136, @@ -5319,8 +5506,8 @@ pub mod summa { 17, 21, 97, - 19, - 215, + 20, + 146, 87, 96, 0, @@ -5329,8 +5516,8 @@ pub mod summa { 253, 91, 97, - 19, - 229, + 20, + 160, 141, 139, 131, @@ -5338,8 +5525,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 130, @@ -5356,8 +5543,8 @@ pub mod summa { 17, 21, 97, - 19, - 252, + 20, + 183, 87, 96, 0, @@ -5367,7 +5554,7 @@ pub mod summa { 91, 97, 20, - 10, + 197, 142, 140, 131, @@ -5375,8 +5562,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 139, @@ -5396,7 +5583,7 @@ pub mod summa { 21, 97, 20, - 35, + 222, 87, 96, 0, @@ -5406,7 +5593,7 @@ pub mod summa { 91, 97, 20, - 49, + 236, 143, 141, 131, @@ -5414,8 +5601,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 131, @@ -5435,8 +5622,8 @@ pub mod summa { 17, 21, 97, - 20, - 75, + 21, + 6, 87, 96, 0, @@ -5445,8 +5632,8 @@ pub mod summa { 253, 91, 97, + 21, 20, - 89, 142, 140, 132, @@ -5454,8 +5641,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 144, @@ -5473,8 +5660,8 @@ pub mod summa { 134, 1, 97, - 19, - 143, + 20, + 74, 86, 91, 80, @@ -5499,8 +5686,8 @@ pub mod summa { 1, 18, 97, - 20, - 138, + 21, + 69, 87, 96, 0, @@ -5512,15 +5699,15 @@ pub mod summa { 96, 32, 97, - 20, - 154, + 21, + 85, 97, - 19, - 103, + 20, + 34, 131, 97, - 18, - 134, + 19, + 65, 86, 91, 130, @@ -5546,8 +5733,8 @@ pub mod summa { 17, 21, 97, - 20, - 185, + 21, + 116, 87, 96, 0, @@ -5563,8 +5750,8 @@ pub mod summa { 16, 21, 97, - 20, - 212, + 21, + 143, 87, 128, 53, @@ -5577,8 +5764,8 @@ pub mod summa { 131, 1, 97, - 20, - 189, + 21, + 120, 86, 91, 80, @@ -5605,8 +5792,8 @@ pub mod summa { 18, 21, 97, - 20, - 244, + 21, + 175, 87, 96, 0, @@ -5630,7 +5817,7 @@ pub mod summa { 21, 97, 21, - 12, + 199, 87, 96, 0, @@ -5639,14 +5826,14 @@ pub mod summa { 91, 97, 21, - 24, + 211, 135, 131, 136, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 148, @@ -5664,7 +5851,7 @@ pub mod summa { 21, 97, 21, - 46, + 233, 87, 96, 0, @@ -5674,14 +5861,14 @@ pub mod summa { 80, 97, 21, - 59, + 246, 134, 130, 135, 1, 97, - 20, - 121, + 21, + 52, 86, 91, 146, @@ -5715,8 +5902,8 @@ pub mod summa { 18, 21, 97, - 21, - 98, + 22, + 29, 87, 96, 0, @@ -5746,8 +5933,8 @@ pub mod summa { 17, 21, 97, - 21, - 129, + 22, + 60, 87, 96, 0, @@ -5755,15 +5942,15 @@ pub mod summa { 253, 91, 97, - 21, - 141, + 22, + 72, 136, 131, 137, 1, 97, - 20, - 121, + 21, + 52, 86, 91, 148, @@ -5780,8 +5967,8 @@ pub mod summa { 17, 21, 97, - 21, - 163, + 22, + 94, 87, 96, 0, @@ -5800,8 +5987,8 @@ pub mod summa { 1, 18, 97, - 21, - 183, + 22, + 114, 87, 96, 0, @@ -5809,16 +5996,16 @@ pub mod summa { 253, 91, 97, - 21, - 196, - 97, - 19, - 103, + 22, + 127, + 97, + 20, + 34, 131, 53, 97, - 18, - 134, + 19, + 65, 86, 91, 130, @@ -5844,8 +6031,8 @@ pub mod summa { 17, 21, 97, - 21, - 227, + 22, + 158, 87, 96, 0, @@ -5862,8 +6049,8 @@ pub mod summa { 16, 21, 97, - 22, - 127, + 23, + 58, 87, 132, 129, @@ -5871,8 +6058,8 @@ pub mod summa { 17, 21, 97, - 21, - 254, + 22, + 185, 87, 96, 0, @@ -5896,7 +6083,7 @@ pub mod summa { 21, 97, 22, - 22, + 209, 87, 96, 0, @@ -5905,10 +6092,10 @@ pub mod summa { 91, 97, 22, - 30, + 217, 97, 18, - 50, + 237, 86, 91, 96, @@ -5922,7 +6109,7 @@ pub mod summa { 21, 97, 22, - 48, + 235, 87, 96, 0, @@ -5931,7 +6118,7 @@ pub mod summa { 91, 97, 22, - 63, + 250, 143, 96, 32, @@ -5940,8 +6127,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 130, @@ -5957,8 +6144,8 @@ pub mod summa { 17, 21, 97, - 22, - 84, + 23, + 15, 87, 96, 0, @@ -5966,8 +6153,8 @@ pub mod summa { 253, 91, 97, - 22, - 99, + 23, + 30, 143, 96, 32, @@ -5976,8 +6163,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 96, @@ -6004,8 +6191,8 @@ pub mod summa { 144, 80, 97, - 21, - 232, + 22, + 163, 86, 91, 80, @@ -6038,8 +6225,8 @@ pub mod summa { 18, 21, 97, - 22, - 165, + 23, + 96, 87, 96, 0, @@ -6061,8 +6248,8 @@ pub mod summa { 129, 20, 97, - 17, - 148, + 18, + 79, 87, 96, 0, @@ -6099,15 +6286,15 @@ pub mod summa { 17, 21, 97, - 22, - 229, + 23, + 160, 87, 97, - 22, - 229, + 23, + 160, 97, - 22, - 188, + 23, + 119, 86, 91, 146, @@ -6149,7 +6336,7 @@ pub mod summa { 128, 97, 23, - 21, + 208, 87, 96, 127, @@ -6166,7 +6353,7 @@ pub mod summa { 3, 97, 23, - 53, + 240, 87, 99, 78, @@ -6201,8 +6388,8 @@ pub mod summa { 130, 81, 97, - 23, - 77, + 24, + 8, 129, 132, 96, @@ -6210,8 +6397,8 @@ pub mod summa { 135, 1, 97, - 16, - 198, + 17, + 129, 86, 91, 145, @@ -6230,8 +6417,8 @@ pub mod summa { 17, 21, 97, - 23, - 161, + 24, + 92, 87, 96, 0, @@ -6257,8 +6444,8 @@ pub mod summa { 16, 21, 97, - 23, - 126, + 24, + 57, 87, 80, 128, @@ -6280,8 +6467,8 @@ pub mod summa { 16, 21, 97, - 23, - 157, + 24, + 88, 87, 130, 129, @@ -6290,8 +6477,8 @@ pub mod summa { 1, 1, 97, - 23, - 138, + 24, + 69, 86, 91, 80, @@ -6318,35 +6505,35 @@ pub mod summa { 17, 21, 97, - 23, - 192, + 24, + 123, 87, 97, - 23, - 192, + 24, + 123, 97, - 17, - 243, + 18, + 174, 86, 91, 97, - 23, - 212, + 24, + 143, 129, 97, - 23, - 206, + 24, + 137, 132, 84, 97, 23, - 1, + 188, 86, 91, 132, 97, - 23, - 87, + 24, + 18, 86, 91, 96, @@ -6362,15 +6549,15 @@ pub mod summa { 20, 97, 24, - 9, + 196, 87, 96, 0, 132, 21, 97, - 23, - 241, + 24, + 172, 87, 80, 133, @@ -6398,8 +6585,8 @@ pub mod summa { 133, 85, 97, - 23, - 157, + 24, + 88, 86, 91, 96, @@ -6424,7 +6611,7 @@ pub mod summa { 21, 97, 24, - 56, + 243, 87, 136, 134, @@ -6446,7 +6633,7 @@ pub mod summa { 1, 97, 24, - 25, + 212, 86, 91, 80, @@ -6455,8 +6642,8 @@ pub mod summa { 16, 21, 97, - 24, - 86, + 25, + 17, 87, 135, 133, @@ -6502,15 +6689,15 @@ pub mod summa { 130, 1, 97, - 24, - 120, + 25, + 51, 87, 97, - 24, - 120, + 25, + 51, 97, - 22, - 188, + 23, + 119, 86, 91, 80, @@ -6564,8 +6751,8 @@ pub mod summa { 16, 21, 97, - 24, - 212, + 25, + 143, 87, 96, 63, @@ -6577,14 +6764,14 @@ pub mod summa { 132, 82, 97, - 24, - 194, + 25, + 125, 133, 131, 81, 97, 17, - 22, + 209, 86, 91, 148, @@ -6601,8 +6788,8 @@ pub mod summa { 1, 1, 97, - 24, - 166, + 25, + 97, 86, 91, 80, @@ -6644,7 +6831,7 @@ pub mod summa { 21, 97, 25, - 17, + 204, 87, 129, 81, @@ -6662,8 +6849,8 @@ pub mod summa { 1, 1, 97, - 24, - 245, + 25, + 176, 86, 91, 80, @@ -6685,15 +6872,15 @@ pub mod summa { 0, 97, 25, - 47, + 234, 96, 64, 131, 1, 133, 97, - 24, - 225, + 25, + 156, 86, 91, 130, @@ -6705,13 +6892,13 @@ pub mod summa { 1, 82, 97, - 17, - 120, + 18, + 51, 129, 133, 97, - 16, - 234, + 17, + 165, 86, 91, 96, @@ -6724,8 +6911,8 @@ pub mod summa { 18, 21, 97, - 25, - 83, + 26, + 14, 87, 96, 0, @@ -6740,8 +6927,8 @@ pub mod summa { 129, 20, 97, - 17, - 148, + 18, + 79, 87, 96, 0, @@ -6762,16 +6949,16 @@ pub mod summa { 1, 82, 97, - 25, - 125, + 26, + 56, 96, 96, 132, 1, 134, 97, - 24, - 225, + 25, + 156, 86, 91, 96, @@ -6813,8 +7000,8 @@ pub mod summa { 16, 21, 97, - 25, - 239, + 26, + 170, 87, 134, 131, @@ -6833,15 +7020,15 @@ pub mod summa { 133, 82, 97, - 25, - 195, + 26, + 126, 136, 134, 1, 130, 97, - 16, - 234, + 17, + 165, 86, 91, 145, @@ -6859,13 +7046,13 @@ pub mod summa { 144, 80, 97, - 25, - 219, + 26, + 150, 129, 131, 97, - 16, - 234, + 17, + 165, 86, 91, 150, @@ -6884,8 +7071,8 @@ pub mod summa { 1, 1, 97, - 25, - 159, + 26, + 90, 86, 91, 80, @@ -6915,38 +7102,38 @@ pub mod summa { 34, 18, 32, - 79, - 132, - 172, - 119, - 194, - 64, - 202, - 64, - 220, - 19, - 17, - 245, 124, - 254, - 232, - 34, - 83, - 139, - 131, - 103, - 161, - 125, - 38, - 152, - 111, + 184, + 94, + 160, + 56, + 218, + 95, + 187, + 77, + 36, + 61, + 175, + 218, + 16, + 237, + 180, + 77, 86, - 48, - 109, - 121, - 95, - 255, - 188, + 171, + 111, + 22, + 173, + 168, + 123, + 120, + 25, + 149, + 151, + 253, + 225, + 28, + 224, 100, 115, 111, @@ -7128,8 +7315,8 @@ pub mod summa { 96, 4, 97, - 16, - 173, + 17, + 104, 86, 91, 97, @@ -7146,8 +7333,8 @@ pub mod summa { 145, 144, 97, - 17, - 129, + 18, + 60, 86, 91, 96, @@ -7169,8 +7356,8 @@ pub mod summa { 96, 4, 97, - 16, - 173, + 17, + 104, 86, 91, 96, @@ -7252,8 +7439,8 @@ pub mod summa { 96, 4, 97, - 16, - 173, + 17, + 104, 86, 91, 97, @@ -7273,8 +7460,8 @@ pub mod summa { 145, 144, 97, - 17, - 155, + 18, + 86, 86, 91, 97, @@ -7288,7 +7475,7 @@ pub mod summa { 4, 97, 19, - 26, + 213, 86, 91, 97, @@ -7306,8 +7493,8 @@ pub mod summa { 96, 4, 97, - 20, - 223, + 21, + 154, 86, 91, 97, @@ -7341,13 +7528,13 @@ pub mod summa { 96, 4, 97, - 21, - 76, + 22, + 7, 86, 91, 97, - 10, - 202, + 11, + 133, 86, 91, 97, @@ -7360,13 +7547,13 @@ pub mod summa { 96, 4, 97, - 22, - 147, + 23, + 78, 86, 91, 97, - 14, - 129, + 15, + 60, 86, 91, 97, @@ -7524,8 +7711,8 @@ pub mod summa { 130, 144, 97, - 22, - 210, + 23, + 141, 86, 91, 129, @@ -7540,8 +7727,8 @@ pub mod summa { 2, 66, 97, - 22, - 235, + 23, + 166, 86, 91, 144, @@ -7582,7 +7769,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -7626,7 +7813,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -7728,7 +7915,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -7772,7 +7959,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -7874,7 +8061,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -7918,7 +8105,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -8020,7 +8207,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -8064,7 +8251,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -8164,8 +8351,8 @@ pub mod summa { 4, 178, 97, - 14, - 250, + 15, + 181, 86, 91, 97, @@ -8174,8 +8361,8 @@ pub mod summa { 96, 0, 97, + 16, 15, - 84, 86, 91, 86, @@ -8228,7 +8415,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -8272,7 +8459,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -8370,7 +8557,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -8414,7 +8601,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -8512,7 +8699,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -8556,7 +8743,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -8654,7 +8841,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -8698,7 +8885,7 @@ pub mod summa { 144, 97, 23, - 1, + 188, 86, 91, 128, @@ -8792,8 +8979,8 @@ pub mod summa { 7, 38, 97, - 14, - 250, + 15, + 181, 86, 91, 96, @@ -8824,8 +9011,8 @@ pub mod summa { 7, 70, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -8853,7 +9040,7 @@ pub mod summa { 144, 97, 23, - 59, + 246, 86, 91, 96, @@ -8990,8 +9177,8 @@ pub mod summa { 7, 236, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -9040,8 +9227,8 @@ pub mod summa { 144, 130, 97, - 23, - 166, + 24, + 97, 86, 91, 80, @@ -9061,8 +9248,8 @@ pub mod summa { 144, 130, 97, - 23, - 166, + 24, + 97, 86, 91, 80, @@ -9082,8 +9269,8 @@ pub mod summa { 144, 130, 97, - 23, - 166, + 24, + 97, 86, 91, 80, @@ -9103,8 +9290,8 @@ pub mod summa { 144, 130, 97, - 23, - 166, + 24, + 97, 86, 91, 80, @@ -9144,8 +9331,8 @@ pub mod summa { 8, 134, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -9186,8 +9373,8 @@ pub mod summa { 8, 176, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -9229,8 +9416,8 @@ pub mod summa { 8, 219, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -9272,8 +9459,8 @@ pub mod summa { 9, 6, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -9390,8 +9577,8 @@ pub mod summa { 124, 144, 97, - 24, - 102, + 25, + 33, 86, 91, 145, @@ -9446,40 +9633,165 @@ pub mod summa { 145, 144, 97, - 24, - 127, + 25, + 58, + 86, + 91, + 96, + 64, + 81, + 128, + 145, + 3, + 144, + 161, + 80, + 86, + 91, + 96, + 0, + 130, + 96, + 1, + 129, + 81, + 129, + 16, + 97, + 9, + 212, + 87, + 97, + 9, + 212, + 97, + 23, + 166, 86, 91, 96, - 64, - 81, - 128, - 145, - 3, - 144, - 161, - 80, - 86, - 91, + 32, + 2, + 96, + 32, + 1, + 1, + 81, + 96, + 3, + 96, + 0, + 132, + 129, + 82, + 96, + 32, + 1, + 144, + 129, + 82, + 96, + 32, + 1, + 96, + 0, + 32, + 96, + 0, + 1, + 84, + 20, + 97, + 10, + 51, + 87, + 96, + 64, + 81, + 98, + 70, + 27, + 205, + 96, + 229, + 27, + 129, + 82, + 96, + 32, + 96, + 4, + 130, + 1, + 82, + 96, + 16, + 96, + 36, + 130, + 1, + 82, + 111, + 18, + 91, + 157, + 152, + 91, + 26, + 89, + 8, + 19, + 84, + 213, + 8, + 28, + 155, + 219, + 221, + 96, + 130, + 27, 96, - 0, + 68, 130, + 1, + 82, 96, + 100, 1, + 97, + 2, + 12, + 86, + 91, + 96, + 2, + 91, + 131, + 81, + 129, + 16, + 21, + 97, + 10, + 237, + 87, + 131, + 129, 129, 81, 129, 16, 97, - 9, - 212, + 10, + 81, 87, 97, - 9, - 212, + 10, + 81, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -9494,7 +9806,7 @@ pub mod summa { 3, 96, 0, - 132, + 133, 129, 82, 96, @@ -9510,13 +9822,52 @@ pub mod summa { 0, 32, 96, + 1, + 1, + 96, + 2, + 131, + 97, + 10, + 124, + 145, + 144, + 97, + 23, + 141, + 86, + 91, + 129, + 84, + 129, + 16, + 97, + 10, + 140, + 87, + 97, + 10, + 140, + 97, + 23, + 166, + 86, + 91, + 144, + 96, + 0, + 82, + 96, + 32, + 96, 0, + 32, 1, 84, 20, 97, 10, - 51, + 219, 87, 96, 64, @@ -9538,31 +9889,35 @@ pub mod summa { 1, 82, 96, - 16, + 20, 96, 36, 130, 1, 82, + 115, + 73, + 110, + 118, + 97, + 108, + 105, + 100, + 32, + 114, 111, - 18, - 91, - 157, - 152, - 91, - 26, - 89, - 8, - 19, - 84, - 213, - 8, - 28, - 155, - 219, - 221, + 111, + 116, + 32, + 98, + 97, + 108, + 97, + 110, + 99, + 101, + 96, 96, - 130, 27, 96, 68, @@ -9577,6 +9932,25 @@ pub mod summa { 12, 86, 91, + 128, + 97, + 10, + 229, + 129, + 97, + 25, + 33, + 86, + 91, + 145, + 80, + 80, + 97, + 10, + 54, + 86, + 91, + 80, 96, 64, 81, @@ -9640,8 +10014,8 @@ pub mod summa { 144, 144, 97, - 10, - 129, + 11, + 60, 144, 134, 144, @@ -9652,7 +10026,7 @@ pub mod summa { 1, 97, 25, - 28, + 215, 86, 91, 96, @@ -9671,8 +10045,8 @@ pub mod summa { 128, 21, 97, - 10, - 158, + 11, + 89, 87, 61, 96, @@ -9711,13 +10085,13 @@ pub mod summa { 1, 144, 97, - 10, - 194, + 11, + 125, 145, 144, 97, 25, - 65, + 252, 86, 91, 148, @@ -9729,11 +10103,11 @@ pub mod summa { 86, 91, 97, - 10, - 210, + 11, + 141, 97, - 14, - 250, + 15, + 181, 86, 91, 131, @@ -9742,7 +10116,7 @@ pub mod summa { 3, 97, 11, - 21, + 208, 87, 96, 64, @@ -9809,8 +10183,8 @@ pub mod summa { 81, 20, 97, - 11, - 120, + 12, + 51, 87, 96, 64, @@ -9919,15 +10293,15 @@ pub mod summa { 17, 21, 97, - 11, - 148, + 12, + 79, 87, 97, - 11, - 148, + 12, + 79, 97, - 17, - 243, + 18, + 174, 86, 91, 96, @@ -9952,8 +10326,8 @@ pub mod summa { 128, 21, 97, - 11, - 199, + 12, + 130, 87, 129, 96, @@ -9975,8 +10349,8 @@ pub mod summa { 144, 129, 97, - 11, - 178, + 12, + 109, 87, 144, 80, @@ -10001,15 +10375,15 @@ pub mod summa { 17, 21, 97, - 11, - 230, + 12, + 161, 87, 97, - 11, - 230, + 12, + 161, 97, - 17, - 243, + 18, + 174, 86, 91, 96, @@ -10035,7 +10409,7 @@ pub mod summa { 21, 97, 12, - 25, + 212, 87, 129, 96, @@ -10058,7 +10432,7 @@ pub mod summa { 129, 97, 12, - 4, + 191, 87, 144, 80, @@ -10075,8 +10449,8 @@ pub mod summa { 16, 21, 97, - 13, - 182, + 14, + 113, 87, 132, 129, @@ -10086,14 +10460,14 @@ pub mod summa { 16, 97, 12, - 58, + 245, 87, 97, 12, - 58, + 245, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -10116,8 +10490,8 @@ pub mod summa { 128, 21, 97, - 12, - 118, + 13, + 49, 87, 80, 132, @@ -10127,15 +10501,15 @@ pub mod summa { 129, 16, 97, - 12, - 100, + 13, + 31, 87, 97, - 12, - 100, + 13, + 31, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -10157,8 +10531,8 @@ pub mod summa { 21, 91, 97, - 12, - 178, + 13, + 109, 87, 96, 64, @@ -10223,15 +10597,15 @@ pub mod summa { 129, 16, 97, - 12, - 196, + 13, + 127, 87, 97, - 12, - 196, + 13, + 127, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -10247,7 +10621,7 @@ pub mod summa { 3, 97, 13, - 45, + 232, 87, 96, 64, @@ -10347,14 +10721,14 @@ pub mod summa { 16, 97, 13, - 63, + 250, 87, 97, 13, - 63, + 250, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -10376,15 +10750,15 @@ pub mod summa { 129, 16, 97, - 13, - 93, + 14, + 24, 87, 97, - 13, - 93, + 14, + 24, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -10405,15 +10779,15 @@ pub mod summa { 129, 16, 97, - 13, - 122, + 14, + 53, 87, 97, - 13, - 122, + 14, + 53, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -10435,15 +10809,15 @@ pub mod summa { 129, 16, 97, - 13, - 152, + 14, + 83, 87, 97, - 13, - 152, + 14, + 83, 97, - 22, - 235, + 23, + 166, 86, 91, 96, @@ -10460,12 +10834,12 @@ pub mod summa { 128, 128, 97, - 13, - 174, + 14, + 105, 144, 97, - 24, - 102, + 25, + 33, 86, 91, 145, @@ -10473,7 +10847,7 @@ pub mod summa { 80, 97, 12, - 31, + 218, 86, 91, 80, @@ -10537,7 +10911,7 @@ pub mod summa { 146, 97, 14, - 1, + 188, 146, 96, 1, @@ -10547,8 +10921,8 @@ pub mod summa { 1, 144, 97, - 15, - 164, + 16, + 95, 86, 91, 80, @@ -10561,7 +10935,7 @@ pub mod summa { 81, 97, 14, - 29, + 216, 145, 96, 2, @@ -10575,8 +10949,8 @@ pub mod summa { 1, 144, 97, - 15, - 239, + 16, + 170, 86, 91, 80, @@ -10589,7 +10963,7 @@ pub mod summa { 81, 97, 14, - 57, + 244, 145, 96, 3, @@ -10603,8 +10977,8 @@ pub mod summa { 1, 144, 97, - 15, - 239, + 16, + 170, 86, 91, 80, @@ -10652,15 +11026,15 @@ pub mod summa { 64, 81, 97, - 14, - 113, + 15, + 44, 147, 146, 145, 144, 97, - 25, - 99, + 26, + 30, 86, 91, 96, @@ -10680,11 +11054,11 @@ pub mod summa { 86, 91, 97, - 14, - 137, + 15, + 68, 97, - 14, - 250, + 15, + 181, 86, 91, 96, @@ -10698,8 +11072,8 @@ pub mod summa { 129, 22, 97, - 14, - 238, + 15, + 169, 87, 96, 64, @@ -10789,12 +11163,12 @@ pub mod summa { 86, 91, 97, - 14, - 247, + 15, + 178, 129, 97, + 16, 15, - 84, 86, 91, 80, @@ -10992,8 +11366,8 @@ pub mod summa { 130, 21, 97, - 15, - 223, + 16, + 154, 87, 145, 96, @@ -11007,8 +11381,8 @@ pub mod summa { 17, 21, 97, - 15, - 223, + 16, + 154, 87, 130, 81, @@ -11025,20 +11399,20 @@ pub mod summa { 1, 144, 97, - 15, - 196, + 16, + 127, 86, 91, 80, 97, - 15, - 235, + 16, + 166, 146, 145, 80, 97, 16, - 65, + 252, 86, 91, 80, @@ -11068,7 +11442,7 @@ pub mod summa { 21, 97, 16, - 53, + 240, 87, 145, 96, @@ -11083,7 +11457,7 @@ pub mod summa { 21, 97, 16, - 53, + 240, 87, 130, 81, @@ -11091,12 +11465,12 @@ pub mod summa { 144, 97, 16, - 37, + 224, 144, 130, 97, - 23, - 166, + 24, + 97, 86, 91, 80, @@ -11112,19 +11486,19 @@ pub mod summa { 144, 97, 16, - 15, + 202, 86, 91, 80, 97, - 15, - 235, + 16, + 166, 146, 145, 80, 97, - 16, - 86, + 17, + 17, 86, 91, 91, @@ -11133,8 +11507,8 @@ pub mod summa { 17, 21, 97, - 15, - 235, + 16, + 166, 87, 96, 0, @@ -11145,7 +11519,7 @@ pub mod summa { 1, 97, 16, - 66, + 253, 86, 91, 128, @@ -11153,19 +11527,19 @@ pub mod summa { 17, 21, 97, - 15, - 235, + 16, + 166, 87, 96, 0, 97, - 16, - 106, + 17, + 37, 130, 130, 97, - 16, - 115, + 17, + 46, 86, 91, 80, @@ -11173,20 +11547,20 @@ pub mod summa { 1, 1, 97, - 16, - 86, + 17, + 17, 86, 91, 80, 128, 84, 97, - 16, - 127, + 17, + 58, 144, 97, 23, - 1, + 188, 86, 91, 96, @@ -11198,8 +11572,8 @@ pub mod summa { 31, 16, 97, - 16, - 143, + 17, + 74, 87, 80, 80, @@ -11226,13 +11600,13 @@ pub mod summa { 1, 144, 97, - 14, - 247, + 15, + 178, 145, 144, 97, 16, - 65, + 252, 86, 91, 96, @@ -11245,8 +11619,8 @@ pub mod summa { 18, 21, 97, - 16, - 191, + 17, + 122, 87, 96, 0, @@ -11268,8 +11642,8 @@ pub mod summa { 16, 21, 97, - 16, - 225, + 17, + 156, 87, 129, 129, @@ -11283,8 +11657,8 @@ pub mod summa { 32, 1, 97, - 16, - 201, + 17, + 132, 86, 91, 80, @@ -11305,7 +11679,7 @@ pub mod summa { 82, 97, 17, - 2, + 189, 129, 96, 32, @@ -11316,8 +11690,8 @@ pub mod summa { 134, 1, 97, - 16, - 198, + 17, + 129, 86, 91, 96, @@ -11350,15 +11724,15 @@ pub mod summa { 82, 97, 17, - 43, + 230, 96, 128, 133, 1, 130, 97, - 16, - 234, + 17, + 165, 86, 91, 144, @@ -11378,12 +11752,12 @@ pub mod summa { 82, 97, 17, - 68, + 255, 130, 130, 97, - 16, - 234, + 17, + 165, 86, 91, 145, @@ -11403,13 +11777,13 @@ pub mod summa { 1, 82, 97, - 17, - 94, + 18, + 25, 130, 130, 97, - 16, - 234, + 17, + 165, 86, 91, 145, @@ -11429,13 +11803,13 @@ pub mod summa { 1, 82, 97, - 17, - 120, + 18, + 51, 130, 130, 97, - 16, - 234, + 17, + 165, 86, 91, 149, @@ -11454,8 +11828,8 @@ pub mod summa { 96, 0, 97, - 17, - 148, + 18, + 79, 96, 32, 131, @@ -11463,7 +11837,7 @@ pub mod summa { 132, 97, 17, - 22, + 209, 86, 91, 147, @@ -11480,16 +11854,16 @@ pub mod summa { 96, 0, 97, - 17, - 174, + 18, + 105, 96, 128, 131, 1, 135, 97, - 16, - 234, + 17, + 165, 86, 91, 130, @@ -11501,13 +11875,13 @@ pub mod summa { 1, 82, 97, - 17, - 192, + 18, + 123, 129, 135, 97, - 16, - 234, + 17, + 165, 86, 91, 144, @@ -11521,13 +11895,13 @@ pub mod summa { 1, 82, 97, - 17, - 212, + 18, + 143, 129, 134, 97, - 16, - 234, + 17, + 165, 86, 91, 144, @@ -11541,13 +11915,13 @@ pub mod summa { 1, 82, 97, - 17, - 232, + 18, + 163, 129, 133, 97, - 16, - 234, + 17, + 165, 86, 91, 151, @@ -11608,14 +11982,14 @@ pub mod summa { 21, 97, 18, - 44, + 231, 87, 97, 18, - 44, + 231, 97, - 17, - 243, + 18, + 174, 86, 91, 96, @@ -11649,14 +12023,14 @@ pub mod summa { 21, 97, 18, - 44, + 231, 87, 97, 18, - 44, + 231, 97, - 17, - 243, + 18, + 174, 86, 91, 96, @@ -11689,15 +12063,15 @@ pub mod summa { 23, 21, 97, - 18, - 126, + 19, + 57, 87, 97, - 18, - 126, + 19, + 57, 97, - 17, - 243, + 18, + 174, 86, 91, 96, @@ -11723,15 +12097,15 @@ pub mod summa { 17, 21, 97, - 18, - 160, + 19, + 91, 87, 97, - 18, - 160, + 19, + 91, 97, - 17, - 243, + 18, + 174, 86, 91, 80, @@ -11753,8 +12127,8 @@ pub mod summa { 1, 18, 97, - 18, - 187, + 19, + 118, 87, 96, 0, @@ -11776,20 +12150,20 @@ pub mod summa { 17, 21, 97, - 18, - 213, + 19, + 144, 87, 97, - 18, - 213, + 19, + 144, 97, - 17, - 243, + 18, + 174, 86, 91, 97, - 18, - 232, + 19, + 163, 96, 31, 130, @@ -11802,8 +12176,8 @@ pub mod summa { 32, 1, 97, - 18, - 85, + 19, + 16, 86, 91, 129, @@ -11819,8 +12193,8 @@ pub mod summa { 17, 21, 97, - 18, - 253, + 19, + 184, 87, 96, 0, @@ -11868,7 +12242,7 @@ pub mod summa { 21, 97, 19, - 45, + 232, 87, 96, 0, @@ -11891,8 +12265,8 @@ pub mod summa { 17, 21, 97, - 19, - 69, + 20, + 0, 87, 96, 0, @@ -11911,8 +12285,8 @@ pub mod summa { 1, 18, 97, - 19, - 89, + 20, + 20, 87, 96, 0, @@ -11922,20 +12296,20 @@ pub mod summa { 129, 53, 97, - 19, - 108, + 20, + 39, 97, - 19, - 103, + 20, + 34, 130, 97, - 18, - 134, + 19, + 65, 86, 91, 97, - 18, - 85, + 19, + 16, 86, 91, 129, @@ -11961,8 +12335,8 @@ pub mod summa { 17, 21, 97, - 19, - 139, + 20, + 70, 87, 96, 0, @@ -11978,8 +12352,8 @@ pub mod summa { 16, 21, 97, - 20, - 108, + 21, + 39, 87, 128, 53, @@ -11988,8 +12362,8 @@ pub mod summa { 17, 21, 97, - 19, - 166, + 20, + 97, 87, 96, 0, @@ -12010,8 +12384,8 @@ pub mod summa { 18, 21, 97, - 19, - 189, + 20, + 120, 87, 96, 0, @@ -12020,11 +12394,11 @@ pub mod summa { 253, 91, 97, - 19, - 197, + 20, + 128, 97, 18, - 9, + 196, 86, 91, 136, @@ -12036,8 +12410,8 @@ pub mod summa { 17, 21, 97, - 19, - 215, + 20, + 146, 87, 96, 0, @@ -12046,8 +12420,8 @@ pub mod summa { 253, 91, 97, - 19, - 229, + 20, + 160, 141, 139, 131, @@ -12055,8 +12429,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 130, @@ -12073,8 +12447,8 @@ pub mod summa { 17, 21, 97, - 19, - 252, + 20, + 183, 87, 96, 0, @@ -12084,7 +12458,7 @@ pub mod summa { 91, 97, 20, - 10, + 197, 142, 140, 131, @@ -12092,8 +12466,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 139, @@ -12113,7 +12487,7 @@ pub mod summa { 21, 97, 20, - 35, + 222, 87, 96, 0, @@ -12123,7 +12497,7 @@ pub mod summa { 91, 97, 20, - 49, + 236, 143, 141, 131, @@ -12131,8 +12505,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 131, @@ -12152,8 +12526,8 @@ pub mod summa { 17, 21, 97, - 20, - 75, + 21, + 6, 87, 96, 0, @@ -12162,8 +12536,8 @@ pub mod summa { 253, 91, 97, + 21, 20, - 89, 142, 140, 132, @@ -12171,8 +12545,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 144, @@ -12190,8 +12564,8 @@ pub mod summa { 134, 1, 97, - 19, - 143, + 20, + 74, 86, 91, 80, @@ -12216,8 +12590,8 @@ pub mod summa { 1, 18, 97, - 20, - 138, + 21, + 69, 87, 96, 0, @@ -12229,15 +12603,15 @@ pub mod summa { 96, 32, 97, - 20, - 154, + 21, + 85, 97, - 19, - 103, + 20, + 34, 131, 97, - 18, - 134, + 19, + 65, 86, 91, 130, @@ -12263,8 +12637,8 @@ pub mod summa { 17, 21, 97, - 20, - 185, + 21, + 116, 87, 96, 0, @@ -12280,8 +12654,8 @@ pub mod summa { 16, 21, 97, - 20, - 212, + 21, + 143, 87, 128, 53, @@ -12294,8 +12668,8 @@ pub mod summa { 131, 1, 97, - 20, - 189, + 21, + 120, 86, 91, 80, @@ -12322,8 +12696,8 @@ pub mod summa { 18, 21, 97, - 20, - 244, + 21, + 175, 87, 96, 0, @@ -12347,7 +12721,7 @@ pub mod summa { 21, 97, 21, - 12, + 199, 87, 96, 0, @@ -12356,14 +12730,14 @@ pub mod summa { 91, 97, 21, - 24, + 211, 135, 131, 136, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 148, @@ -12381,7 +12755,7 @@ pub mod summa { 21, 97, 21, - 46, + 233, 87, 96, 0, @@ -12391,14 +12765,14 @@ pub mod summa { 80, 97, 21, - 59, + 246, 134, 130, 135, 1, 97, - 20, - 121, + 21, + 52, 86, 91, 146, @@ -12432,8 +12806,8 @@ pub mod summa { 18, 21, 97, - 21, - 98, + 22, + 29, 87, 96, 0, @@ -12463,8 +12837,8 @@ pub mod summa { 17, 21, 97, - 21, - 129, + 22, + 60, 87, 96, 0, @@ -12472,15 +12846,15 @@ pub mod summa { 253, 91, 97, - 21, - 141, + 22, + 72, 136, 131, 137, 1, 97, - 20, - 121, + 21, + 52, 86, 91, 148, @@ -12497,8 +12871,8 @@ pub mod summa { 17, 21, 97, - 21, - 163, + 22, + 94, 87, 96, 0, @@ -12517,8 +12891,8 @@ pub mod summa { 1, 18, 97, - 21, - 183, + 22, + 114, 87, 96, 0, @@ -12526,16 +12900,16 @@ pub mod summa { 253, 91, 97, - 21, - 196, + 22, + 127, 97, - 19, - 103, + 20, + 34, 131, 53, 97, - 18, - 134, + 19, + 65, 86, 91, 130, @@ -12561,8 +12935,8 @@ pub mod summa { 17, 21, 97, - 21, - 227, + 22, + 158, 87, 96, 0, @@ -12579,8 +12953,8 @@ pub mod summa { 16, 21, 97, - 22, - 127, + 23, + 58, 87, 132, 129, @@ -12588,8 +12962,8 @@ pub mod summa { 17, 21, 97, - 21, - 254, + 22, + 185, 87, 96, 0, @@ -12613,7 +12987,7 @@ pub mod summa { 21, 97, 22, - 22, + 209, 87, 96, 0, @@ -12622,10 +12996,10 @@ pub mod summa { 91, 97, 22, - 30, + 217, 97, 18, - 50, + 237, 86, 91, 96, @@ -12639,7 +13013,7 @@ pub mod summa { 21, 97, 22, - 48, + 235, 87, 96, 0, @@ -12648,7 +13022,7 @@ pub mod summa { 91, 97, 22, - 63, + 250, 143, 96, 32, @@ -12657,8 +13031,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 130, @@ -12674,8 +13048,8 @@ pub mod summa { 17, 21, 97, - 22, - 84, + 23, + 15, 87, 96, 0, @@ -12683,8 +13057,8 @@ pub mod summa { 253, 91, 97, - 22, - 99, + 23, + 30, 143, 96, 32, @@ -12693,8 +13067,8 @@ pub mod summa { 1, 1, 97, - 18, - 170, + 19, + 101, 86, 91, 96, @@ -12721,8 +13095,8 @@ pub mod summa { 144, 80, 97, - 21, - 232, + 22, + 163, 86, 91, 80, @@ -12755,8 +13129,8 @@ pub mod summa { 18, 21, 97, - 22, - 165, + 23, + 96, 87, 96, 0, @@ -12778,8 +13152,8 @@ pub mod summa { 129, 20, 97, - 17, - 148, + 18, + 79, 87, 96, 0, @@ -12816,15 +13190,15 @@ pub mod summa { 17, 21, 97, - 22, - 229, + 23, + 160, 87, 97, - 22, - 229, + 23, + 160, 97, - 22, - 188, + 23, + 119, 86, 91, 146, @@ -12866,7 +13240,7 @@ pub mod summa { 128, 97, 23, - 21, + 208, 87, 96, 127, @@ -12883,7 +13257,7 @@ pub mod summa { 3, 97, 23, - 53, + 240, 87, 99, 78, @@ -12918,8 +13292,8 @@ pub mod summa { 130, 81, 97, - 23, - 77, + 24, + 8, 129, 132, 96, @@ -12927,8 +13301,8 @@ pub mod summa { 135, 1, 97, - 16, - 198, + 17, + 129, 86, 91, 145, @@ -12947,8 +13321,8 @@ pub mod summa { 17, 21, 97, - 23, - 161, + 24, + 92, 87, 96, 0, @@ -12974,8 +13348,8 @@ pub mod summa { 16, 21, 97, - 23, - 126, + 24, + 57, 87, 80, 128, @@ -12997,8 +13371,8 @@ pub mod summa { 16, 21, 97, - 23, - 157, + 24, + 88, 87, 130, 129, @@ -13007,8 +13381,8 @@ pub mod summa { 1, 1, 97, - 23, - 138, + 24, + 69, 86, 91, 80, @@ -13035,35 +13409,35 @@ pub mod summa { 17, 21, 97, - 23, - 192, + 24, + 123, 87, 97, - 23, - 192, + 24, + 123, 97, - 17, - 243, + 18, + 174, 86, 91, 97, - 23, - 212, + 24, + 143, 129, 97, - 23, - 206, + 24, + 137, 132, 84, 97, 23, - 1, + 188, 86, 91, 132, 97, - 23, - 87, + 24, + 18, 86, 91, 96, @@ -13079,15 +13453,15 @@ pub mod summa { 20, 97, 24, - 9, + 196, 87, 96, 0, 132, 21, 97, - 23, - 241, + 24, + 172, 87, 80, 133, @@ -13115,8 +13489,8 @@ pub mod summa { 133, 85, 97, - 23, - 157, + 24, + 88, 86, 91, 96, @@ -13141,7 +13515,7 @@ pub mod summa { 21, 97, 24, - 56, + 243, 87, 136, 134, @@ -13163,7 +13537,7 @@ pub mod summa { 1, 97, 24, - 25, + 212, 86, 91, 80, @@ -13172,8 +13546,8 @@ pub mod summa { 16, 21, 97, - 24, - 86, + 25, + 17, 87, 135, 133, @@ -13219,15 +13593,15 @@ pub mod summa { 130, 1, 97, - 24, - 120, + 25, + 51, 87, 97, - 24, - 120, + 25, + 51, 97, - 22, - 188, + 23, + 119, 86, 91, 80, @@ -13281,8 +13655,8 @@ pub mod summa { 16, 21, 97, - 24, - 212, + 25, + 143, 87, 96, 63, @@ -13294,14 +13668,14 @@ pub mod summa { 132, 82, 97, - 24, - 194, + 25, + 125, 133, 131, 81, 97, 17, - 22, + 209, 86, 91, 148, @@ -13318,8 +13692,8 @@ pub mod summa { 1, 1, 97, - 24, - 166, + 25, + 97, 86, 91, 80, @@ -13361,7 +13735,7 @@ pub mod summa { 21, 97, 25, - 17, + 204, 87, 129, 81, @@ -13379,8 +13753,8 @@ pub mod summa { 1, 1, 97, - 24, - 245, + 25, + 176, 86, 91, 80, @@ -13402,15 +13776,15 @@ pub mod summa { 0, 97, 25, - 47, + 234, 96, 64, 131, 1, 133, 97, - 24, - 225, + 25, + 156, 86, 91, 130, @@ -13422,13 +13796,13 @@ pub mod summa { 1, 82, 97, - 17, - 120, + 18, + 51, 129, 133, 97, - 16, - 234, + 17, + 165, 86, 91, 96, @@ -13441,8 +13815,8 @@ pub mod summa { 18, 21, 97, - 25, - 83, + 26, + 14, 87, 96, 0, @@ -13457,8 +13831,8 @@ pub mod summa { 129, 20, 97, - 17, - 148, + 18, + 79, 87, 96, 0, @@ -13479,16 +13853,16 @@ pub mod summa { 1, 82, 97, - 25, - 125, + 26, + 56, 96, 96, 132, 1, 134, 97, - 24, - 225, + 25, + 156, 86, 91, 96, @@ -13530,8 +13904,8 @@ pub mod summa { 16, 21, 97, - 25, - 239, + 26, + 170, 87, 134, 131, @@ -13550,15 +13924,15 @@ pub mod summa { 133, 82, 97, - 25, - 195, + 26, + 126, 136, 134, 1, 130, 97, - 16, - 234, + 17, + 165, 86, 91, 145, @@ -13576,13 +13950,13 @@ pub mod summa { 144, 80, 97, - 25, - 219, + 26, + 150, 129, 131, 97, - 16, - 234, + 17, + 165, 86, 91, 150, @@ -13601,8 +13975,8 @@ pub mod summa { 1, 1, 97, - 25, - 159, + 26, + 90, 86, 91, 80, @@ -13632,38 +14006,38 @@ pub mod summa { 34, 18, 32, - 79, - 132, - 172, - 119, - 194, - 64, - 202, - 64, - 220, - 19, - 17, - 245, 124, - 254, - 232, - 34, - 83, - 139, - 131, - 103, - 161, - 125, - 38, - 152, - 111, - 86, - 48, - 109, - 121, + 184, + 94, + 160, + 56, + 218, 95, - 255, - 188, + 187, + 77, + 36, + 61, + 175, + 218, + 16, + 237, + 180, + 77, + 86, + 171, + 111, + 22, + 173, + 168, + 123, + 120, + 25, + 149, + 151, + 253, + 225, + 28, + 224, 100, 115, 111, @@ -13814,14 +14188,14 @@ pub mod summa { pub fn submit_commitment( &self, mst_root: ::ethers::core::types::U256, - root_sums: ::std::vec::Vec<::ethers::core::types::U256>, + root_balances: ::std::vec::Vec<::ethers::core::types::U256>, assets: ::std::vec::Vec, timestamp: ::ethers::core::types::U256, ) -> ::ethers::contract::builders::ContractCall { self.0 .method_hash( [218, 100, 167, 80], - (mst_root, root_sums, assets, timestamp), + (mst_root, root_balances, assets, timestamp), ) .expect("method not found (this should never happen)") } @@ -13932,7 +14306,7 @@ pub mod summa { #[ethevent(indexed)] pub timestamp: ::ethers::core::types::U256, pub mst_root: ::ethers::core::types::U256, - pub root_sums: ::std::vec::Vec<::ethers::core::types::U256>, + pub root_balances: ::std::vec::Vec<::ethers::core::types::U256>, pub assets: ::std::vec::Vec, } #[derive( @@ -14095,7 +14469,7 @@ pub mod summa { )] pub struct SubmitCommitmentCall { pub mst_root: ::ethers::core::types::U256, - pub root_sums: ::std::vec::Vec<::ethers::core::types::U256>, + pub root_balances: ::std::vec::Vec<::ethers::core::types::U256>, pub assets: ::std::vec::Vec, pub timestamp: ::ethers::core::types::U256, } diff --git a/backend/src/tests.rs b/backend/src/tests.rs index ffbdae70..70acc69e 100644 --- a/backend/src/tests.rs +++ b/backend/src/tests.rs @@ -277,7 +277,7 @@ mod test { mst_root: "0x2E021D9BF99C5BD7267488B6A7A5CF5F7D00222A41B6A9B971899C44089E0C5" .parse() .unwrap(), - root_sums: vec![U256::from(556862), U256::from(556862)], + root_balances: vec![U256::from(556862), U256::from(556862)], assets: vec![ Asset { asset_name: "ETH".to_string(), diff --git a/contracts/src/InclusionVerifier.sol b/contracts/src/InclusionVerifier.sol index f6082fd5..43f06609 100644 --- a/contracts/src/InclusionVerifier.sol +++ b/contracts/src/InclusionVerifier.sol @@ -7,5 +7,5 @@ bytes memory proof ) public view returns (bool) { bool success = true; - bytes32[902] memory transcript; - assembly { let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 function validate_ec_point(x, y) -> valid { { let x_lt_p := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let y_lt_p := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) valid := and(x_lt_p, y_lt_p) } { let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let is_affine := eq(x_cube_plus_3, y_square) valid := and(valid, is_affine) } } mstore(add(transcript, 0x20), mod(mload(add(pubInputs, 0x20)), f_q))mstore(add(transcript, 0x40), mod(mload(add(pubInputs, 0x40)), f_q))mstore(add(transcript, 0x0), 20780565364750352931855234182745264522567546354850733883253409196481354617515) { let x := mload(add(proof, 0x20)) mstore(add(transcript, 0x60), x) let y := mload(add(proof, 0x40)) mstore(add(transcript, 0x80), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x60)) mstore(add(transcript, 0xa0), x) let y := mload(add(proof, 0x80)) mstore(add(transcript, 0xc0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0xa0)) mstore(add(transcript, 0xe0), x) let y := mload(add(proof, 0xc0)) mstore(add(transcript, 0x100), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x120), keccak256(add(transcript, 0x0), 288)){ let hash := mload(add(transcript, 0x120)) mstore(add(transcript, 0x140), mod(hash, f_q)) mstore(add(transcript, 0x160), hash) } { let x := mload(add(proof, 0xe0)) mstore(add(transcript, 0x180), x) let y := mload(add(proof, 0x100)) mstore(add(transcript, 0x1a0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x120)) mstore(add(transcript, 0x1c0), x) let y := mload(add(proof, 0x140)) mstore(add(transcript, 0x1e0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x200), keccak256(add(transcript, 0x160), 160)){ let hash := mload(add(transcript, 0x200)) mstore(add(transcript, 0x220), mod(hash, f_q)) mstore(add(transcript, 0x240), hash) }mstore8(add(transcript, 0x260), 1)mstore(add(transcript, 0x260), keccak256(add(transcript, 0x240), 33)){ let hash := mload(add(transcript, 0x260)) mstore(add(transcript, 0x280), mod(hash, f_q)) mstore(add(transcript, 0x2a0), hash) } { let x := mload(add(proof, 0x160)) mstore(add(transcript, 0x2c0), x) let y := mload(add(proof, 0x180)) mstore(add(transcript, 0x2e0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1a0)) mstore(add(transcript, 0x300), x) let y := mload(add(proof, 0x1c0)) mstore(add(transcript, 0x320), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1e0)) mstore(add(transcript, 0x340), x) let y := mload(add(proof, 0x200)) mstore(add(transcript, 0x360), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x220)) mstore(add(transcript, 0x380), x) let y := mload(add(proof, 0x240)) mstore(add(transcript, 0x3a0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x3c0), keccak256(add(transcript, 0x2a0), 288)){ let hash := mload(add(transcript, 0x3c0)) mstore(add(transcript, 0x3e0), mod(hash, f_q)) mstore(add(transcript, 0x400), hash) } { let x := mload(add(proof, 0x260)) mstore(add(transcript, 0x420), x) let y := mload(add(proof, 0x280)) mstore(add(transcript, 0x440), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2a0)) mstore(add(transcript, 0x460), x) let y := mload(add(proof, 0x2c0)) mstore(add(transcript, 0x480), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2e0)) mstore(add(transcript, 0x4a0), x) let y := mload(add(proof, 0x300)) mstore(add(transcript, 0x4c0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x320)) mstore(add(transcript, 0x4e0), x) let y := mload(add(proof, 0x340)) mstore(add(transcript, 0x500), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x360)) mstore(add(transcript, 0x520), x) let y := mload(add(proof, 0x380)) mstore(add(transcript, 0x540), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x560), keccak256(add(transcript, 0x400), 352)){ let hash := mload(add(transcript, 0x560)) mstore(add(transcript, 0x580), mod(hash, f_q)) mstore(add(transcript, 0x5a0), hash) }mstore(add(transcript, 0x5c0), mod(mload(add(proof, 0x3a0)), f_q))mstore(add(transcript, 0x5e0), mod(mload(add(proof, 0x3c0)), f_q))mstore(add(transcript, 0x600), mod(mload(add(proof, 0x3e0)), f_q))mstore(add(transcript, 0x620), mod(mload(add(proof, 0x400)), f_q))mstore(add(transcript, 0x640), mod(mload(add(proof, 0x420)), f_q))mstore(add(transcript, 0x660), mod(mload(add(proof, 0x440)), f_q))mstore(add(transcript, 0x680), mod(mload(add(proof, 0x460)), f_q))mstore(add(transcript, 0x6a0), mod(mload(add(proof, 0x480)), f_q))mstore(add(transcript, 0x6c0), mod(mload(add(proof, 0x4a0)), f_q))mstore(add(transcript, 0x6e0), mod(mload(add(proof, 0x4c0)), f_q))mstore(add(transcript, 0x700), mod(mload(add(proof, 0x4e0)), f_q))mstore(add(transcript, 0x720), mod(mload(add(proof, 0x500)), f_q))mstore(add(transcript, 0x740), mod(mload(add(proof, 0x520)), f_q))mstore(add(transcript, 0x760), mod(mload(add(proof, 0x540)), f_q))mstore(add(transcript, 0x780), mod(mload(add(proof, 0x560)), f_q))mstore(add(transcript, 0x7a0), mod(mload(add(proof, 0x580)), f_q))mstore(add(transcript, 0x7c0), mod(mload(add(proof, 0x5a0)), f_q))mstore(add(transcript, 0x7e0), mod(mload(add(proof, 0x5c0)), f_q))mstore(add(transcript, 0x800), mod(mload(add(proof, 0x5e0)), f_q))mstore(add(transcript, 0x820), mod(mload(add(proof, 0x600)), f_q))mstore(add(transcript, 0x840), mod(mload(add(proof, 0x620)), f_q))mstore(add(transcript, 0x860), mod(mload(add(proof, 0x640)), f_q))mstore(add(transcript, 0x880), mod(mload(add(proof, 0x660)), f_q))mstore(add(transcript, 0x8a0), mod(mload(add(proof, 0x680)), f_q))mstore(add(transcript, 0x8c0), mod(mload(add(proof, 0x6a0)), f_q))mstore(add(transcript, 0x8e0), mod(mload(add(proof, 0x6c0)), f_q))mstore(add(transcript, 0x900), mod(mload(add(proof, 0x6e0)), f_q))mstore(add(transcript, 0x920), mod(mload(add(proof, 0x700)), f_q))mstore(add(transcript, 0x940), mod(mload(add(proof, 0x720)), f_q))mstore(add(transcript, 0x960), mod(mload(add(proof, 0x740)), f_q))mstore(add(transcript, 0x980), mod(mload(add(proof, 0x760)), f_q))mstore(add(transcript, 0x9a0), mod(mload(add(proof, 0x780)), f_q))mstore(add(transcript, 0x9c0), mod(mload(add(proof, 0x7a0)), f_q))mstore(add(transcript, 0x9e0), mod(mload(add(proof, 0x7c0)), f_q))mstore(add(transcript, 0xa00), mod(mload(add(proof, 0x7e0)), f_q))mstore(add(transcript, 0xa20), keccak256(add(transcript, 0x5a0), 1152)){ let hash := mload(add(transcript, 0xa20)) mstore(add(transcript, 0xa40), mod(hash, f_q)) mstore(add(transcript, 0xa60), hash) }mstore8(add(transcript, 0xa80), 1)mstore(add(transcript, 0xa80), keccak256(add(transcript, 0xa60), 33)){ let hash := mload(add(transcript, 0xa80)) mstore(add(transcript, 0xaa0), mod(hash, f_q)) mstore(add(transcript, 0xac0), hash) } { let x := mload(add(proof, 0x800)) mstore(add(transcript, 0xae0), x) let y := mload(add(proof, 0x820)) mstore(add(transcript, 0xb00), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xb20), keccak256(add(transcript, 0xac0), 96)){ let hash := mload(add(transcript, 0xb20)) mstore(add(transcript, 0xb40), mod(hash, f_q)) mstore(add(transcript, 0xb60), hash) } { let x := mload(add(proof, 0x840)) mstore(add(transcript, 0xb80), x) let y := mload(add(proof, 0x860)) mstore(add(transcript, 0xba0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xbc0), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x580)), f_q))mstore(add(transcript, 0xbe0), mulmod(mload(add(transcript, 0xbc0)), mload(add(transcript, 0xbc0)), f_q))mstore(add(transcript, 0xc00), mulmod(mload(add(transcript, 0xbe0)), mload(add(transcript, 0xbe0)), f_q))mstore(add(transcript, 0xc20), mulmod(mload(add(transcript, 0xc00)), mload(add(transcript, 0xc00)), f_q))mstore(add(transcript, 0xc40), mulmod(mload(add(transcript, 0xc20)), mload(add(transcript, 0xc20)), f_q))mstore(add(transcript, 0xc60), mulmod(mload(add(transcript, 0xc40)), mload(add(transcript, 0xc40)), f_q))mstore(add(transcript, 0xc80), mulmod(mload(add(transcript, 0xc60)), mload(add(transcript, 0xc60)), f_q))mstore(add(transcript, 0xca0), mulmod(mload(add(transcript, 0xc80)), mload(add(transcript, 0xc80)), f_q))mstore(add(transcript, 0xcc0), mulmod(mload(add(transcript, 0xca0)), mload(add(transcript, 0xca0)), f_q))mstore(add(transcript, 0xce0), mulmod(mload(add(transcript, 0xcc0)), mload(add(transcript, 0xcc0)), f_q))mstore(add(transcript, 0xd00), mulmod(mload(add(transcript, 0xce0)), mload(add(transcript, 0xce0)), f_q))mstore(add(transcript, 0xd20), addmod(mload(add(transcript, 0xd00)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xd40), mulmod(mload(add(transcript, 0xd20)), 21877555253249509951141793242451973684696534144361143701928820297812832026625, f_q))mstore(add(transcript, 0xd60), mulmod(mload(add(transcript, 0xd40)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0xd80), addmod(mload(add(transcript, 0x580)), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q))mstore(add(transcript, 0xda0), mulmod(mload(add(transcript, 0xd40)), 16553167948716468074998850291160946772606011499093267774599468837293218566225, f_q))mstore(add(transcript, 0xdc0), addmod(mload(add(transcript, 0x580)), 5335074923122807147247555454096328315942352901322766569098735349282589929392, f_q))mstore(add(transcript, 0xde0), mulmod(mload(add(transcript, 0xd40)), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q))mstore(add(transcript, 0xe00), addmod(mload(add(transcript, 0x580)), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q))mstore(add(transcript, 0xe20), mulmod(mload(add(transcript, 0xd40)), 18302882236472339419631414285403968768409802182737928837767912484847322191909, f_q))mstore(add(transcript, 0xe40), addmod(mload(add(transcript, 0x580)), 3585360635366935802614991459853306320138562217678105505930291701728486303708, f_q))mstore(add(transcript, 0xe60), mulmod(mload(add(transcript, 0xd40)), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q))mstore(add(transcript, 0xe80), addmod(mload(add(transcript, 0x580)), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q))mstore(add(transcript, 0xea0), mulmod(mload(add(transcript, 0xd40)), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q))mstore(add(transcript, 0xec0), addmod(mload(add(transcript, 0x580)), 2443549375371310428912721262786463219152954447257270263406653762796473870823, f_q))mstore(add(transcript, 0xee0), mulmod(mload(add(transcript, 0xd40)), 1, f_q))mstore(add(transcript, 0xf00), addmod(mload(add(transcript, 0x580)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xf20), mulmod(mload(add(transcript, 0xd40)), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q))mstore(add(transcript, 0xf40), addmod(mload(add(transcript, 0x580)), 12492139669565018291300799122050748188086418716150538504685768693941615300514, f_q)){ let prod := mload(add(transcript, 0xd80)) prod := mulmod(mload(add(transcript, 0xdc0)), prod, f_q) mstore(add(transcript, 0xf60), prod) prod := mulmod(mload(add(transcript, 0xe00)), prod, f_q) mstore(add(transcript, 0xf80), prod) prod := mulmod(mload(add(transcript, 0xe40)), prod, f_q) mstore(add(transcript, 0xfa0), prod) prod := mulmod(mload(add(transcript, 0xe80)), prod, f_q) mstore(add(transcript, 0xfc0), prod) prod := mulmod(mload(add(transcript, 0xec0)), prod, f_q) mstore(add(transcript, 0xfe0), prod) prod := mulmod(mload(add(transcript, 0xf00)), prod, f_q) mstore(add(transcript, 0x1000), prod) prod := mulmod(mload(add(transcript, 0xf40)), prod, f_q) mstore(add(transcript, 0x1020), prod) prod := mulmod(mload(add(transcript, 0xd20)), prod, f_q) mstore(add(transcript, 0x1040), prod) }mstore(add(transcript, 0x1080), 32)mstore(add(transcript, 0x10a0), 32)mstore(add(transcript, 0x10c0), 32)mstore(add(transcript, 0x10e0), mload(add(transcript, 0x1040)))mstore(add(transcript, 0x1100), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x1120), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x1080), 0xc0, add(transcript, 0x1060), 0x20), 1), success){ let inv := mload(add(transcript, 0x1060)) let v v := mload(add(transcript, 0xd20)) mstore(add(transcript, 0xd20), mulmod(mload(add(transcript, 0x1020)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf40)) mstore(add(transcript, 0xf40), mulmod(mload(add(transcript, 0x1000)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf00)) mstore(add(transcript, 0xf00), mulmod(mload(add(transcript, 0xfe0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xec0)) mstore(add(transcript, 0xec0), mulmod(mload(add(transcript, 0xfc0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe80)) mstore(add(transcript, 0xe80), mulmod(mload(add(transcript, 0xfa0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe40)) mstore(add(transcript, 0xe40), mulmod(mload(add(transcript, 0xf80)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe00)) mstore(add(transcript, 0xe00), mulmod(mload(add(transcript, 0xf60)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xdc0)) mstore(add(transcript, 0xdc0), mulmod(mload(add(transcript, 0xd80)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0xd80), inv) }mstore(add(transcript, 0x1140), mulmod(mload(add(transcript, 0xd60)), mload(add(transcript, 0xd80)), f_q))mstore(add(transcript, 0x1160), mulmod(mload(add(transcript, 0xda0)), mload(add(transcript, 0xdc0)), f_q))mstore(add(transcript, 0x1180), mulmod(mload(add(transcript, 0xde0)), mload(add(transcript, 0xe00)), f_q))mstore(add(transcript, 0x11a0), mulmod(mload(add(transcript, 0xe20)), mload(add(transcript, 0xe40)), f_q))mstore(add(transcript, 0x11c0), mulmod(mload(add(transcript, 0xe60)), mload(add(transcript, 0xe80)), f_q))mstore(add(transcript, 0x11e0), mulmod(mload(add(transcript, 0xea0)), mload(add(transcript, 0xec0)), f_q))mstore(add(transcript, 0x1200), mulmod(mload(add(transcript, 0xee0)), mload(add(transcript, 0xf00)), f_q))mstore(add(transcript, 0x1220), mulmod(mload(add(transcript, 0xf20)), mload(add(transcript, 0xf40)), f_q)){ let result := mulmod(mload(add(transcript, 0x1200)), mload(add(transcript, 0x20)), f_q)result := addmod(mulmod(mload(add(transcript, 0x1220)), mload(add(transcript, 0x40)), f_q), result, f_q)mstore(add(transcript, 0x1240), result) }mstore(add(transcript, 0x1260), addmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x6e0)), f_q))mstore(add(transcript, 0x1280), mulmod(mload(add(transcript, 0x1260)), mload(add(transcript, 0x1260)), f_q))mstore(add(transcript, 0x12a0), mulmod(mload(add(transcript, 0x1280)), mload(add(transcript, 0x1280)), f_q))mstore(add(transcript, 0x12c0), mulmod(mload(add(transcript, 0x1260)), mload(add(transcript, 0x12a0)), f_q))mstore(add(transcript, 0x12e0), mulmod(mload(add(transcript, 0x12c0)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x1300), addmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x700)), f_q))mstore(add(transcript, 0x1320), mulmod(mload(add(transcript, 0x1300)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x1340), mulmod(mload(add(transcript, 0x1320)), mload(add(transcript, 0x1320)), f_q))mstore(add(transcript, 0x1360), mulmod(mload(add(transcript, 0x1300)), mload(add(transcript, 0x1340)), f_q))mstore(add(transcript, 0x1380), mulmod(mload(add(transcript, 0x1360)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x13a0), addmod(mload(add(transcript, 0x12e0)), mload(add(transcript, 0x1380)), f_q))mstore(add(transcript, 0x13c0), addmod(mload(add(transcript, 0x13a0)), sub(f_q, mload(add(transcript, 0x600))), f_q))mstore(add(transcript, 0x13e0), mulmod(mload(add(transcript, 0x13c0)), mload(add(transcript, 0x780)), f_q))mstore(add(transcript, 0x1400), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x13e0)), f_q))mstore(add(transcript, 0x1420), mulmod(mload(add(transcript, 0x12c0)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x1440), mulmod(mload(add(transcript, 0x1360)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x1460), addmod(mload(add(transcript, 0x1420)), mload(add(transcript, 0x1440)), f_q))mstore(add(transcript, 0x1480), addmod(mload(add(transcript, 0x1460)), sub(f_q, mload(add(transcript, 0x620))), f_q))mstore(add(transcript, 0x14a0), mulmod(mload(add(transcript, 0x1480)), mload(add(transcript, 0x780)), f_q))mstore(add(transcript, 0x14c0), addmod(mload(add(transcript, 0x1400)), mload(add(transcript, 0x14a0)), f_q))mstore(add(transcript, 0x14e0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x14c0)), f_q))mstore(add(transcript, 0x1500), addmod(mload(add(transcript, 0x12c0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1520), mulmod(mload(add(transcript, 0x1500)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1540), addmod(mload(add(transcript, 0x14e0)), mload(add(transcript, 0x1520)), f_q))mstore(add(transcript, 0x1560), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1540)), f_q))mstore(add(transcript, 0x1580), mulmod(mload(add(transcript, 0x640)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x15a0), mulmod(mload(add(transcript, 0x1300)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x15c0), addmod(mload(add(transcript, 0x1580)), mload(add(transcript, 0x15a0)), f_q))mstore(add(transcript, 0x15e0), addmod(mload(add(transcript, 0x15c0)), mload(add(transcript, 0x6a0)), f_q))mstore(add(transcript, 0x1600), mulmod(mload(add(transcript, 0x15e0)), mload(add(transcript, 0x15e0)), f_q))mstore(add(transcript, 0x1620), mulmod(mload(add(transcript, 0x1600)), mload(add(transcript, 0x1600)), f_q))mstore(add(transcript, 0x1640), mulmod(mload(add(transcript, 0x15e0)), mload(add(transcript, 0x1620)), f_q))mstore(add(transcript, 0x1660), mulmod(mload(add(transcript, 0x600)), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q))mstore(add(transcript, 0x1680), mulmod(mload(add(transcript, 0x620)), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q))mstore(add(transcript, 0x16a0), addmod(mload(add(transcript, 0x1660)), mload(add(transcript, 0x1680)), f_q))mstore(add(transcript, 0x16c0), addmod(mload(add(transcript, 0x1640)), sub(f_q, mload(add(transcript, 0x16a0))), f_q))mstore(add(transcript, 0x16e0), mulmod(mload(add(transcript, 0x16c0)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1700), addmod(mload(add(transcript, 0x1560)), mload(add(transcript, 0x16e0)), f_q))mstore(add(transcript, 0x1720), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1700)), f_q))mstore(add(transcript, 0x1740), mulmod(mload(add(transcript, 0x640)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x1760), mulmod(mload(add(transcript, 0x1300)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x1780), addmod(mload(add(transcript, 0x1740)), mload(add(transcript, 0x1760)), f_q))mstore(add(transcript, 0x17a0), addmod(mload(add(transcript, 0x1780)), mload(add(transcript, 0x6c0)), f_q))mstore(add(transcript, 0x17c0), mulmod(mload(add(transcript, 0x600)), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q))mstore(add(transcript, 0x17e0), mulmod(mload(add(transcript, 0x620)), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q))mstore(add(transcript, 0x1800), addmod(mload(add(transcript, 0x17c0)), mload(add(transcript, 0x17e0)), f_q))mstore(add(transcript, 0x1820), addmod(mload(add(transcript, 0x17a0)), sub(f_q, mload(add(transcript, 0x1800))), f_q))mstore(add(transcript, 0x1840), mulmod(mload(add(transcript, 0x1820)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1860), addmod(mload(add(transcript, 0x1720)), mload(add(transcript, 0x1840)), f_q))mstore(add(transcript, 0x1880), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1860)), f_q))mstore(add(transcript, 0x18a0), addmod(1, sub(f_q, mload(add(transcript, 0x760))), f_q))mstore(add(transcript, 0x18c0), mulmod(mload(add(transcript, 0x18a0)), mload(add(transcript, 0x760)), f_q))mstore(add(transcript, 0x18e0), addmod(2, sub(f_q, mload(add(transcript, 0x760))), f_q))mstore(add(transcript, 0x1900), mulmod(mload(add(transcript, 0x18e0)), mload(add(transcript, 0x18c0)), f_q))mstore(add(transcript, 0x1920), addmod(4, sub(f_q, mload(add(transcript, 0x760))), f_q))mstore(add(transcript, 0x1940), mulmod(mload(add(transcript, 0x1920)), mload(add(transcript, 0x1900)), f_q))mstore(add(transcript, 0x1960), addmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x5c0)), f_q))mstore(add(transcript, 0x1980), addmod(mload(add(transcript, 0x1960)), sub(f_q, mload(add(transcript, 0x600))), f_q))mstore(add(transcript, 0x19a0), mulmod(mload(add(transcript, 0x1980)), mload(add(transcript, 0x1940)), f_q))mstore(add(transcript, 0x19c0), addmod(mload(add(transcript, 0x1880)), mload(add(transcript, 0x19a0)), f_q))mstore(add(transcript, 0x19e0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x19c0)), f_q))mstore(add(transcript, 0x1a00), addmod(mload(add(transcript, 0x660)), sub(f_q, mload(add(transcript, 0x620))), f_q))mstore(add(transcript, 0x1a20), mulmod(mload(add(transcript, 0x1a00)), mload(add(transcript, 0x1940)), f_q))mstore(add(transcript, 0x1a40), addmod(mload(add(transcript, 0x19e0)), mload(add(transcript, 0x1a20)), f_q))mstore(add(transcript, 0x1a60), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1a40)), f_q))mstore(add(transcript, 0x1a80), mulmod(mload(add(transcript, 0x13c0)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1aa0), addmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x1a80)), f_q))mstore(add(transcript, 0x1ac0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1aa0)), f_q))mstore(add(transcript, 0x1ae0), mulmod(mload(add(transcript, 0x1480)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1b00), addmod(mload(add(transcript, 0x1ac0)), mload(add(transcript, 0x1ae0)), f_q))mstore(add(transcript, 0x1b20), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1b00)), f_q))mstore(add(transcript, 0x1b40), mulmod(mload(add(transcript, 0x1500)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1b60), addmod(mload(add(transcript, 0x1b20)), mload(add(transcript, 0x1b40)), f_q))mstore(add(transcript, 0x1b80), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1b60)), f_q))mstore(add(transcript, 0x1ba0), mulmod(mload(add(transcript, 0x16c0)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1bc0), addmod(mload(add(transcript, 0x1b80)), mload(add(transcript, 0x1ba0)), f_q))mstore(add(transcript, 0x1be0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1bc0)), f_q))mstore(add(transcript, 0x1c00), mulmod(mload(add(transcript, 0x1820)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1c20), addmod(mload(add(transcript, 0x1be0)), mload(add(transcript, 0x1c00)), f_q))mstore(add(transcript, 0x1c40), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1c20)), f_q))mstore(add(transcript, 0x1c60), addmod(3, sub(f_q, mload(add(transcript, 0x760))), f_q))mstore(add(transcript, 0x1c80), mulmod(mload(add(transcript, 0x1c60)), mload(add(transcript, 0x1900)), f_q))mstore(add(transcript, 0x1ca0), mulmod(mload(add(transcript, 0x1980)), mload(add(transcript, 0x1c80)), f_q))mstore(add(transcript, 0x1cc0), addmod(mload(add(transcript, 0x1c40)), mload(add(transcript, 0x1ca0)), f_q))mstore(add(transcript, 0x1ce0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1cc0)), f_q))mstore(add(transcript, 0x1d00), mulmod(mload(add(transcript, 0x1a00)), mload(add(transcript, 0x1c80)), f_q))mstore(add(transcript, 0x1d20), addmod(mload(add(transcript, 0x1ce0)), mload(add(transcript, 0x1d00)), f_q))mstore(add(transcript, 0x1d40), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1d20)), f_q))mstore(add(transcript, 0x1d60), mulmod(mload(add(transcript, 0x18e0)), mload(add(transcript, 0x760)), f_q))mstore(add(transcript, 0x1d80), mulmod(mload(add(transcript, 0x1c60)), mload(add(transcript, 0x1d60)), f_q))mstore(add(transcript, 0x1da0), mulmod(mload(add(transcript, 0x1920)), mload(add(transcript, 0x1d80)), f_q))mstore(add(transcript, 0x1dc0), mulmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x1da0)), f_q))mstore(add(transcript, 0x1de0), addmod(1, sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1e00), mulmod(mload(add(transcript, 0x1de0)), mload(add(transcript, 0x1dc0)), f_q))mstore(add(transcript, 0x1e20), addmod(mload(add(transcript, 0x1d40)), mload(add(transcript, 0x1e00)), f_q))mstore(add(transcript, 0x1e40), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1e20)), f_q))mstore(add(transcript, 0x1e60), mulmod(2, mload(add(transcript, 0x640)), f_q))mstore(add(transcript, 0x1e80), addmod(mload(add(transcript, 0x5e0)), sub(f_q, mload(add(transcript, 0x5c0))), f_q))mstore(add(transcript, 0x1ea0), mulmod(mload(add(transcript, 0x1e80)), mload(add(transcript, 0x1e60)), f_q))mstore(add(transcript, 0x1ec0), addmod(mload(add(transcript, 0x600)), sub(f_q, mload(add(transcript, 0x5c0))), f_q))mstore(add(transcript, 0x1ee0), addmod(mload(add(transcript, 0x1ea0)), sub(f_q, mload(add(transcript, 0x1ec0))), f_q))mstore(add(transcript, 0x1f00), addmod(mload(add(transcript, 0x5e0)), sub(f_q, mload(add(transcript, 0x620))), f_q))mstore(add(transcript, 0x1f20), addmod(mload(add(transcript, 0x1ee0)), sub(f_q, mload(add(transcript, 0x1f00))), f_q))mstore(add(transcript, 0x1f40), mulmod(mload(add(transcript, 0x1f20)), mload(add(transcript, 0x1da0)), f_q))mstore(add(transcript, 0x1f60), addmod(mload(add(transcript, 0x1e40)), mload(add(transcript, 0x1f40)), f_q))mstore(add(transcript, 0x1f80), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x1f60)), f_q))mstore(add(transcript, 0x1fa0), mulmod(mload(add(transcript, 0x1c60)), mload(add(transcript, 0x18c0)), f_q))mstore(add(transcript, 0x1fc0), mulmod(mload(add(transcript, 0x1920)), mload(add(transcript, 0x1fa0)), f_q))mstore(add(transcript, 0x1fe0), addmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x5e0)), f_q))mstore(add(transcript, 0x2000), addmod(mload(add(transcript, 0x1fe0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x2020), mulmod(mload(add(transcript, 0x2000)), mload(add(transcript, 0x1fc0)), f_q))mstore(add(transcript, 0x2040), addmod(mload(add(transcript, 0x1f80)), mload(add(transcript, 0x2020)), f_q))mstore(add(transcript, 0x2060), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2040)), f_q))mstore(add(transcript, 0x2080), addmod(mload(add(transcript, 0x2060)), mload(add(transcript, 0x2020)), f_q))mstore(add(transcript, 0x20a0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2080)), f_q))mstore(add(transcript, 0x20c0), addmod(1, sub(f_q, mload(add(transcript, 0x8e0))), f_q))mstore(add(transcript, 0x20e0), mulmod(mload(add(transcript, 0x20c0)), mload(add(transcript, 0x1200)), f_q))mstore(add(transcript, 0x2100), addmod(mload(add(transcript, 0x20a0)), mload(add(transcript, 0x20e0)), f_q))mstore(add(transcript, 0x2120), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2100)), f_q))mstore(add(transcript, 0x2140), mulmod(mload(add(transcript, 0x940)), mload(add(transcript, 0x940)), f_q))mstore(add(transcript, 0x2160), addmod(mload(add(transcript, 0x2140)), sub(f_q, mload(add(transcript, 0x940))), f_q))mstore(add(transcript, 0x2180), mulmod(mload(add(transcript, 0x2160)), mload(add(transcript, 0x1140)), f_q))mstore(add(transcript, 0x21a0), addmod(mload(add(transcript, 0x2120)), mload(add(transcript, 0x2180)), f_q))mstore(add(transcript, 0x21c0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x21a0)), f_q))mstore(add(transcript, 0x21e0), addmod(mload(add(transcript, 0x940)), sub(f_q, mload(add(transcript, 0x920))), f_q))mstore(add(transcript, 0x2200), mulmod(mload(add(transcript, 0x21e0)), mload(add(transcript, 0x1200)), f_q))mstore(add(transcript, 0x2220), addmod(mload(add(transcript, 0x21c0)), mload(add(transcript, 0x2200)), f_q))mstore(add(transcript, 0x2240), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2220)), f_q))mstore(add(transcript, 0x2260), addmod(1, sub(f_q, mload(add(transcript, 0x1140))), f_q))mstore(add(transcript, 0x2280), addmod(mload(add(transcript, 0x1160)), mload(add(transcript, 0x1180)), f_q))mstore(add(transcript, 0x22a0), addmod(mload(add(transcript, 0x2280)), mload(add(transcript, 0x11a0)), f_q))mstore(add(transcript, 0x22c0), addmod(mload(add(transcript, 0x22a0)), mload(add(transcript, 0x11c0)), f_q))mstore(add(transcript, 0x22e0), addmod(mload(add(transcript, 0x22c0)), mload(add(transcript, 0x11e0)), f_q))mstore(add(transcript, 0x2300), addmod(mload(add(transcript, 0x2260)), sub(f_q, mload(add(transcript, 0x22e0))), f_q))mstore(add(transcript, 0x2320), mulmod(mload(add(transcript, 0x820)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2340), addmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x2320)), f_q))mstore(add(transcript, 0x2360), addmod(mload(add(transcript, 0x2340)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2380), mulmod(mload(add(transcript, 0x840)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x23a0), addmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2380)), f_q))mstore(add(transcript, 0x23c0), addmod(mload(add(transcript, 0x23a0)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x23e0), mulmod(mload(add(transcript, 0x23c0)), mload(add(transcript, 0x2360)), f_q))mstore(add(transcript, 0x2400), mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2420), addmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x2400)), f_q))mstore(add(transcript, 0x2440), addmod(mload(add(transcript, 0x2420)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2460), mulmod(mload(add(transcript, 0x2440)), mload(add(transcript, 0x23e0)), f_q))mstore(add(transcript, 0x2480), mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x24a0), addmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x2480)), f_q))mstore(add(transcript, 0x24c0), addmod(mload(add(transcript, 0x24a0)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x24e0), mulmod(mload(add(transcript, 0x24c0)), mload(add(transcript, 0x2460)), f_q))mstore(add(transcript, 0x2500), mulmod(mload(add(transcript, 0x24e0)), mload(add(transcript, 0x900)), f_q))mstore(add(transcript, 0x2520), mulmod(1, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2540), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x2520)), f_q))mstore(add(transcript, 0x2560), addmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x2540)), f_q))mstore(add(transcript, 0x2580), addmod(mload(add(transcript, 0x2560)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x25a0), mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x25c0), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x25a0)), f_q))mstore(add(transcript, 0x25e0), addmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x25c0)), f_q))mstore(add(transcript, 0x2600), addmod(mload(add(transcript, 0x25e0)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2620), mulmod(mload(add(transcript, 0x2600)), mload(add(transcript, 0x2580)), f_q))mstore(add(transcript, 0x2640), mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2660), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x2640)), f_q))mstore(add(transcript, 0x2680), addmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x2660)), f_q))mstore(add(transcript, 0x26a0), addmod(mload(add(transcript, 0x2680)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x26c0), mulmod(mload(add(transcript, 0x26a0)), mload(add(transcript, 0x2620)), f_q))mstore(add(transcript, 0x26e0), mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2700), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x26e0)), f_q))mstore(add(transcript, 0x2720), addmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x2700)), f_q))mstore(add(transcript, 0x2740), addmod(mload(add(transcript, 0x2720)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2760), mulmod(mload(add(transcript, 0x2740)), mload(add(transcript, 0x26c0)), f_q))mstore(add(transcript, 0x2780), mulmod(mload(add(transcript, 0x2760)), mload(add(transcript, 0x8e0)), f_q))mstore(add(transcript, 0x27a0), addmod(mload(add(transcript, 0x2500)), sub(f_q, mload(add(transcript, 0x2780))), f_q))mstore(add(transcript, 0x27c0), mulmod(mload(add(transcript, 0x27a0)), mload(add(transcript, 0x2300)), f_q))mstore(add(transcript, 0x27e0), addmod(mload(add(transcript, 0x2240)), mload(add(transcript, 0x27c0)), f_q))mstore(add(transcript, 0x2800), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x27e0)), f_q))mstore(add(transcript, 0x2820), mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2840), addmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x2820)), f_q))mstore(add(transcript, 0x2860), addmod(mload(add(transcript, 0x2840)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2880), mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x28a0), addmod(mload(add(transcript, 0x1240)), mload(add(transcript, 0x2880)), f_q))mstore(add(transcript, 0x28c0), addmod(mload(add(transcript, 0x28a0)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x28e0), mulmod(mload(add(transcript, 0x28c0)), mload(add(transcript, 0x2860)), f_q))mstore(add(transcript, 0x2900), mulmod(mload(add(transcript, 0x28e0)), mload(add(transcript, 0x960)), f_q))mstore(add(transcript, 0x2920), mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2940), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x2920)), f_q))mstore(add(transcript, 0x2960), addmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x2940)), f_q))mstore(add(transcript, 0x2980), addmod(mload(add(transcript, 0x2960)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x29a0), mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x29c0), mulmod(mload(add(transcript, 0x580)), mload(add(transcript, 0x29a0)), f_q))mstore(add(transcript, 0x29e0), addmod(mload(add(transcript, 0x1240)), mload(add(transcript, 0x29c0)), f_q))mstore(add(transcript, 0x2a00), addmod(mload(add(transcript, 0x29e0)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2a20), mulmod(mload(add(transcript, 0x2a00)), mload(add(transcript, 0x2980)), f_q))mstore(add(transcript, 0x2a40), mulmod(mload(add(transcript, 0x2a20)), mload(add(transcript, 0x940)), f_q))mstore(add(transcript, 0x2a60), addmod(mload(add(transcript, 0x2900)), sub(f_q, mload(add(transcript, 0x2a40))), f_q))mstore(add(transcript, 0x2a80), mulmod(mload(add(transcript, 0x2a60)), mload(add(transcript, 0x2300)), f_q))mstore(add(transcript, 0x2aa0), addmod(mload(add(transcript, 0x2800)), mload(add(transcript, 0x2a80)), f_q))mstore(add(transcript, 0x2ac0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2aa0)), f_q))mstore(add(transcript, 0x2ae0), addmod(1, sub(f_q, mload(add(transcript, 0x980))), f_q))mstore(add(transcript, 0x2b00), mulmod(mload(add(transcript, 0x2ae0)), mload(add(transcript, 0x1200)), f_q))mstore(add(transcript, 0x2b20), addmod(mload(add(transcript, 0x2ac0)), mload(add(transcript, 0x2b00)), f_q))mstore(add(transcript, 0x2b40), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2b20)), f_q))mstore(add(transcript, 0x2b60), mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2b80), addmod(mload(add(transcript, 0x2b60)), sub(f_q, mload(add(transcript, 0x980))), f_q))mstore(add(transcript, 0x2ba0), mulmod(mload(add(transcript, 0x2b80)), mload(add(transcript, 0x1140)), f_q))mstore(add(transcript, 0x2bc0), addmod(mload(add(transcript, 0x2b40)), mload(add(transcript, 0x2ba0)), f_q))mstore(add(transcript, 0x2be0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2bc0)), f_q))mstore(add(transcript, 0x2c00), addmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2c20), mulmod(mload(add(transcript, 0x2c00)), mload(add(transcript, 0x9a0)), f_q))mstore(add(transcript, 0x2c40), addmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2c60), mulmod(mload(add(transcript, 0x2c40)), mload(add(transcript, 0x2c20)), f_q))mstore(add(transcript, 0x2c80), mulmod(256, mload(add(transcript, 0x600)), f_q))mstore(add(transcript, 0x2ca0), addmod(mload(add(transcript, 0x5c0)), sub(f_q, mload(add(transcript, 0x2c80))), f_q))mstore(add(transcript, 0x2cc0), mulmod(mload(add(transcript, 0x2ca0)), mload(add(transcript, 0x740)), f_q))mstore(add(transcript, 0x2ce0), addmod(mload(add(transcript, 0x2cc0)), mload(add(transcript, 0x220)), f_q))mstore(add(transcript, 0x2d00), mulmod(mload(add(transcript, 0x2ce0)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2d20), addmod(mload(add(transcript, 0x720)), mload(add(transcript, 0x280)), f_q))mstore(add(transcript, 0x2d40), mulmod(mload(add(transcript, 0x2d20)), mload(add(transcript, 0x2d00)), f_q))mstore(add(transcript, 0x2d60), addmod(mload(add(transcript, 0x2c60)), sub(f_q, mload(add(transcript, 0x2d40))), f_q))mstore(add(transcript, 0x2d80), mulmod(mload(add(transcript, 0x2d60)), mload(add(transcript, 0x2300)), f_q))mstore(add(transcript, 0x2da0), addmod(mload(add(transcript, 0x2be0)), mload(add(transcript, 0x2d80)), f_q))mstore(add(transcript, 0x2dc0), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2da0)), f_q))mstore(add(transcript, 0x2de0), addmod(mload(add(transcript, 0x9c0)), sub(f_q, mload(add(transcript, 0xa00))), f_q))mstore(add(transcript, 0x2e00), mulmod(mload(add(transcript, 0x2de0)), mload(add(transcript, 0x1200)), f_q))mstore(add(transcript, 0x2e20), addmod(mload(add(transcript, 0x2dc0)), mload(add(transcript, 0x2e00)), f_q))mstore(add(transcript, 0x2e40), mulmod(mload(add(transcript, 0x3e0)), mload(add(transcript, 0x2e20)), f_q))mstore(add(transcript, 0x2e60), mulmod(mload(add(transcript, 0x2de0)), mload(add(transcript, 0x2300)), f_q))mstore(add(transcript, 0x2e80), addmod(mload(add(transcript, 0x9c0)), sub(f_q, mload(add(transcript, 0x9e0))), f_q))mstore(add(transcript, 0x2ea0), mulmod(mload(add(transcript, 0x2e80)), mload(add(transcript, 0x2e60)), f_q))mstore(add(transcript, 0x2ec0), addmod(mload(add(transcript, 0x2e40)), mload(add(transcript, 0x2ea0)), f_q))mstore(add(transcript, 0x2ee0), mulmod(mload(add(transcript, 0xd00)), mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0x2f00), mulmod(mload(add(transcript, 0x2ee0)), mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0x2f20), mulmod(mload(add(transcript, 0x2f00)), mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0x2f40), mulmod(mload(add(transcript, 0x2f20)), mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0x2f60), mulmod(1, mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0x2f80), mulmod(1, mload(add(transcript, 0x2ee0)), f_q))mstore(add(transcript, 0x2fa0), mulmod(1, mload(add(transcript, 0x2f00)), f_q))mstore(add(transcript, 0x2fc0), mulmod(1, mload(add(transcript, 0x2f20)), f_q))mstore(add(transcript, 0x2fe0), mulmod(mload(add(transcript, 0x2ec0)), mload(add(transcript, 0xd20)), f_q))mstore(add(transcript, 0x3000), mulmod(mload(add(transcript, 0xbc0)), mload(add(transcript, 0x580)), f_q))mstore(add(transcript, 0x3020), mulmod(mload(add(transcript, 0x580)), 1, f_q))mstore(add(transcript, 0x3040), addmod(mload(add(transcript, 0xb40)), sub(f_q, mload(add(transcript, 0x3020))), f_q))mstore(add(transcript, 0x3060), mulmod(mload(add(transcript, 0x580)), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q))mstore(add(transcript, 0x3080), addmod(mload(add(transcript, 0xb40)), sub(f_q, mload(add(transcript, 0x3060))), f_q))mstore(add(transcript, 0x30a0), mulmod(mload(add(transcript, 0x580)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0x30c0), addmod(mload(add(transcript, 0xb40)), sub(f_q, mload(add(transcript, 0x30a0))), f_q))mstore(add(transcript, 0x30e0), mulmod(mload(add(transcript, 0x580)), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q))mstore(add(transcript, 0x3100), addmod(mload(add(transcript, 0xb40)), sub(f_q, mload(add(transcript, 0x30e0))), f_q)){ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 14935689044936328720213520384837211407239373163407808768092422456738089171339, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 6952553826902946502032885360420063681308991237008225575605781729837719324278, f_q), f_q), result, f_q)mstore(add(transcript, 0x3120), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 7540907510155698387256503820143330389809914548046512731972450943457626251574, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 17454089668527239794105182244994964593641145239866915085378986192780276655988, f_q), f_q), result, f_q)mstore(add(transcript, 0x3140), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 16765245179638222004592619476379737764479697804128512065226459610007790881832, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 6067403861988280018436561787453590745850405443026581205331008293509136248791, f_q), f_q), result, f_q)mstore(add(transcript, 0x3160), result) }mstore(add(transcript, 0x3180), mulmod(1, mload(add(transcript, 0x3040)), f_q))mstore(add(transcript, 0x31a0), mulmod(mload(add(transcript, 0x3180)), mload(add(transcript, 0x3080)), f_q))mstore(add(transcript, 0x31c0), mulmod(mload(add(transcript, 0x31a0)), mload(add(transcript, 0x3100)), f_q)){ let result := mulmod(mload(add(transcript, 0xb40)), 1, f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q)mstore(add(transcript, 0x31e0), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 13346277807347402051479003338644866680074640264080882830084838995653627694322, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 8541965064491873170767402406612408408473724136335151513613365190922180801295, f_q), f_q), result, f_q)mstore(add(transcript, 0x3200), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 9130318747744625055991020866335675116974647447373438669980034404542087728591, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 17654030801727560324741115319652541746559479525075366613702001578587072243451, f_q), f_q), result, f_q)mstore(add(transcript, 0x3220), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0xbc0)), 8968217942074169282201771672973351205073655055696863512223304343263448008755, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0xbc0)), 15489683287416706862113636648384499783884413315698913841173435408703605255719, f_q), f_q), result, f_q)mstore(add(transcript, 0x3240), result) }mstore(add(transcript, 0x3260), mulmod(mload(add(transcript, 0x31a0)), mload(add(transcript, 0x30c0)), f_q)){ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0x580)), 12492139669565018291300799122050748188086418716150538504685768693941615300515, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0x580)), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q), result, f_q)mstore(add(transcript, 0x3280), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0x580)), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0x580)), 11903785986312266406077180662327481479585495405112251348319099480321708373219, f_q), f_q), result, f_q)mstore(add(transcript, 0x32a0), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0x580)), 2443549375371310428912721262786463219152954447257270263406653762796473870824, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0x580)), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q), result, f_q)mstore(add(transcript, 0x32c0), result) }{ let result := mulmod(mload(add(transcript, 0xb40)), mulmod(mload(add(transcript, 0x580)), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x580)), mulmod(mload(add(transcript, 0x580)), 14519100894475310148599392892084064224530612280553018117484180069202210808887, f_q), f_q), result, f_q)mstore(add(transcript, 0x32e0), result) }mstore(add(transcript, 0x3300), mulmod(mload(add(transcript, 0x3180)), mload(add(transcript, 0x3100)), f_q)){ let prod := mload(add(transcript, 0x3120)) prod := mulmod(mload(add(transcript, 0x3140)), prod, f_q) mstore(add(transcript, 0x3320), prod) prod := mulmod(mload(add(transcript, 0x3160)), prod, f_q) mstore(add(transcript, 0x3340), prod) prod := mulmod(mload(add(transcript, 0x31e0)), prod, f_q) mstore(add(transcript, 0x3360), prod) prod := mulmod(mload(add(transcript, 0x3180)), prod, f_q) mstore(add(transcript, 0x3380), prod) prod := mulmod(mload(add(transcript, 0x3200)), prod, f_q) mstore(add(transcript, 0x33a0), prod) prod := mulmod(mload(add(transcript, 0x3220)), prod, f_q) mstore(add(transcript, 0x33c0), prod) prod := mulmod(mload(add(transcript, 0x3240)), prod, f_q) mstore(add(transcript, 0x33e0), prod) prod := mulmod(mload(add(transcript, 0x3260)), prod, f_q) mstore(add(transcript, 0x3400), prod) prod := mulmod(mload(add(transcript, 0x3280)), prod, f_q) mstore(add(transcript, 0x3420), prod) prod := mulmod(mload(add(transcript, 0x32a0)), prod, f_q) mstore(add(transcript, 0x3440), prod) prod := mulmod(mload(add(transcript, 0x31a0)), prod, f_q) mstore(add(transcript, 0x3460), prod) prod := mulmod(mload(add(transcript, 0x32c0)), prod, f_q) mstore(add(transcript, 0x3480), prod) prod := mulmod(mload(add(transcript, 0x32e0)), prod, f_q) mstore(add(transcript, 0x34a0), prod) prod := mulmod(mload(add(transcript, 0x3300)), prod, f_q) mstore(add(transcript, 0x34c0), prod) }mstore(add(transcript, 0x3500), 32)mstore(add(transcript, 0x3520), 32)mstore(add(transcript, 0x3540), 32)mstore(add(transcript, 0x3560), mload(add(transcript, 0x34c0)))mstore(add(transcript, 0x3580), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x35a0), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x3500), 0xc0, add(transcript, 0x34e0), 0x20), 1), success){ let inv := mload(add(transcript, 0x34e0)) let v v := mload(add(transcript, 0x3300)) mstore(add(transcript, 0x3300), mulmod(mload(add(transcript, 0x34a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x32e0)) mstore(add(transcript, 0x32e0), mulmod(mload(add(transcript, 0x3480)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x32c0)) mstore(add(transcript, 0x32c0), mulmod(mload(add(transcript, 0x3460)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x31a0)) mstore(add(transcript, 0x31a0), mulmod(mload(add(transcript, 0x3440)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x32a0)) mstore(add(transcript, 0x32a0), mulmod(mload(add(transcript, 0x3420)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3280)) mstore(add(transcript, 0x3280), mulmod(mload(add(transcript, 0x3400)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3260)) mstore(add(transcript, 0x3260), mulmod(mload(add(transcript, 0x33e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3240)) mstore(add(transcript, 0x3240), mulmod(mload(add(transcript, 0x33c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3220)) mstore(add(transcript, 0x3220), mulmod(mload(add(transcript, 0x33a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3200)) mstore(add(transcript, 0x3200), mulmod(mload(add(transcript, 0x3380)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3180)) mstore(add(transcript, 0x3180), mulmod(mload(add(transcript, 0x3360)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x31e0)) mstore(add(transcript, 0x31e0), mulmod(mload(add(transcript, 0x3340)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3160)) mstore(add(transcript, 0x3160), mulmod(mload(add(transcript, 0x3320)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3140)) mstore(add(transcript, 0x3140), mulmod(mload(add(transcript, 0x3120)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x3120), inv) }{ let result := mload(add(transcript, 0x3120))result := addmod(mload(add(transcript, 0x3140)), result, f_q)result := addmod(mload(add(transcript, 0x3160)), result, f_q)mstore(add(transcript, 0x35c0), result) }mstore(add(transcript, 0x35e0), mulmod(mload(add(transcript, 0x31c0)), mload(add(transcript, 0x3180)), f_q)){ let result := mload(add(transcript, 0x31e0))mstore(add(transcript, 0x3600), result) }mstore(add(transcript, 0x3620), mulmod(mload(add(transcript, 0x31c0)), mload(add(transcript, 0x3260)), f_q)){ let result := mload(add(transcript, 0x3200))result := addmod(mload(add(transcript, 0x3220)), result, f_q)result := addmod(mload(add(transcript, 0x3240)), result, f_q)mstore(add(transcript, 0x3640), result) }mstore(add(transcript, 0x3660), mulmod(mload(add(transcript, 0x31c0)), mload(add(transcript, 0x31a0)), f_q)){ let result := mload(add(transcript, 0x3280))result := addmod(mload(add(transcript, 0x32a0)), result, f_q)mstore(add(transcript, 0x3680), result) }mstore(add(transcript, 0x36a0), mulmod(mload(add(transcript, 0x31c0)), mload(add(transcript, 0x3300)), f_q)){ let result := mload(add(transcript, 0x32c0))result := addmod(mload(add(transcript, 0x32e0)), result, f_q)mstore(add(transcript, 0x36c0), result) }{ let prod := mload(add(transcript, 0x35c0)) prod := mulmod(mload(add(transcript, 0x3600)), prod, f_q) mstore(add(transcript, 0x36e0), prod) prod := mulmod(mload(add(transcript, 0x3640)), prod, f_q) mstore(add(transcript, 0x3700), prod) prod := mulmod(mload(add(transcript, 0x3680)), prod, f_q) mstore(add(transcript, 0x3720), prod) prod := mulmod(mload(add(transcript, 0x36c0)), prod, f_q) mstore(add(transcript, 0x3740), prod) }mstore(add(transcript, 0x3780), 32)mstore(add(transcript, 0x37a0), 32)mstore(add(transcript, 0x37c0), 32)mstore(add(transcript, 0x37e0), mload(add(transcript, 0x3740)))mstore(add(transcript, 0x3800), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x3820), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x3780), 0xc0, add(transcript, 0x3760), 0x20), 1), success){ let inv := mload(add(transcript, 0x3760)) let v v := mload(add(transcript, 0x36c0)) mstore(add(transcript, 0x36c0), mulmod(mload(add(transcript, 0x3720)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3680)) mstore(add(transcript, 0x3680), mulmod(mload(add(transcript, 0x3700)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3640)) mstore(add(transcript, 0x3640), mulmod(mload(add(transcript, 0x36e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3600)) mstore(add(transcript, 0x3600), mulmod(mload(add(transcript, 0x35c0)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x35c0), inv) }mstore(add(transcript, 0x3840), mulmod(mload(add(transcript, 0x35e0)), mload(add(transcript, 0x3600)), f_q))mstore(add(transcript, 0x3860), mulmod(mload(add(transcript, 0x3620)), mload(add(transcript, 0x3640)), f_q))mstore(add(transcript, 0x3880), mulmod(mload(add(transcript, 0x3660)), mload(add(transcript, 0x3680)), f_q))mstore(add(transcript, 0x38a0), mulmod(mload(add(transcript, 0x36a0)), mload(add(transcript, 0x36c0)), f_q))mstore(add(transcript, 0x38c0), mulmod(mload(add(transcript, 0xa40)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x38e0), mulmod(mload(add(transcript, 0x38c0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3900), mulmod(mload(add(transcript, 0x38e0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3920), mulmod(mload(add(transcript, 0x3900)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3940), mulmod(mload(add(transcript, 0x3920)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3960), mulmod(mload(add(transcript, 0x3940)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3980), mulmod(mload(add(transcript, 0x3960)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x39a0), mulmod(mload(add(transcript, 0x3980)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x39c0), mulmod(mload(add(transcript, 0x39a0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x39e0), mulmod(mload(add(transcript, 0x39c0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3a00), mulmod(mload(add(transcript, 0x39e0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3a20), mulmod(mload(add(transcript, 0x3a00)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3a40), mulmod(mload(add(transcript, 0x3a20)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3a60), mulmod(mload(add(transcript, 0x3a40)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3a80), mulmod(mload(add(transcript, 0x3a60)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3aa0), mulmod(mload(add(transcript, 0x3a80)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3ac0), mulmod(mload(add(transcript, 0x3aa0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3ae0), mulmod(mload(add(transcript, 0x3ac0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3b00), mulmod(mload(add(transcript, 0x3ae0)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3b20), mulmod(mload(add(transcript, 0x3b00)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3b40), mulmod(mload(add(transcript, 0xaa0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x3b60), mulmod(mload(add(transcript, 0x3b40)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x3b80), mulmod(mload(add(transcript, 0x3b60)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x3ba0), mulmod(mload(add(transcript, 0x3b80)), mload(add(transcript, 0xaa0)), f_q)){ let result := mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x3120)), f_q)result := addmod(mulmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x3140)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x3160)), f_q), result, f_q)mstore(add(transcript, 0x3bc0), result) }mstore(add(transcript, 0x3be0), mulmod(mload(add(transcript, 0x3bc0)), mload(add(transcript, 0x35c0)), f_q))mstore(add(transcript, 0x3c00), mulmod(sub(f_q, mload(add(transcript, 0x3be0))), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x5e0)), mload(add(transcript, 0x3120)), f_q)result := addmod(mulmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x3140)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x660)), mload(add(transcript, 0x3160)), f_q), result, f_q)mstore(add(transcript, 0x3c20), result) }mstore(add(transcript, 0x3c40), mulmod(mload(add(transcript, 0x3c20)), mload(add(transcript, 0x35c0)), f_q))mstore(add(transcript, 0x3c60), mulmod(sub(f_q, mload(add(transcript, 0x3c40))), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3c80), mulmod(1, mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3ca0), addmod(mload(add(transcript, 0x3c00)), mload(add(transcript, 0x3c60)), f_q))mstore(add(transcript, 0x3cc0), mulmod(mload(add(transcript, 0x3ca0)), 1, f_q))mstore(add(transcript, 0x3ce0), mulmod(mload(add(transcript, 0x3c80)), 1, f_q))mstore(add(transcript, 0x3d00), mulmod(1, mload(add(transcript, 0x35e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x3d20), result) }mstore(add(transcript, 0x3d40), mulmod(mload(add(transcript, 0x3d20)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3d60), mulmod(sub(f_q, mload(add(transcript, 0x3d40))), 1, f_q))mstore(add(transcript, 0x3d80), mulmod(mload(add(transcript, 0x3d00)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x3da0), result) }mstore(add(transcript, 0x3dc0), mulmod(mload(add(transcript, 0x3da0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3de0), mulmod(sub(f_q, mload(add(transcript, 0x3dc0))), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3e00), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x3e20), addmod(mload(add(transcript, 0x3d60)), mload(add(transcript, 0x3de0)), f_q)){ let result := mulmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x3e40), result) }mstore(add(transcript, 0x3e60), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3e80), mulmod(sub(f_q, mload(add(transcript, 0x3e60))), mload(add(transcript, 0x38c0)), f_q))mstore(add(transcript, 0x3ea0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x38c0)), f_q))mstore(add(transcript, 0x3ec0), addmod(mload(add(transcript, 0x3e20)), mload(add(transcript, 0x3e80)), f_q)){ let result := mulmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x3ee0), result) }mstore(add(transcript, 0x3f00), mulmod(mload(add(transcript, 0x3ee0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3f20), mulmod(sub(f_q, mload(add(transcript, 0x3f00))), mload(add(transcript, 0x38e0)), f_q))mstore(add(transcript, 0x3f40), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x38e0)), f_q))mstore(add(transcript, 0x3f60), addmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3f20)), f_q)){ let result := mulmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x3f80), result) }mstore(add(transcript, 0x3fa0), mulmod(mload(add(transcript, 0x3f80)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3fc0), mulmod(sub(f_q, mload(add(transcript, 0x3fa0))), mload(add(transcript, 0x3900)), f_q))mstore(add(transcript, 0x3fe0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3900)), f_q))mstore(add(transcript, 0x4000), addmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3fc0)), f_q)){ let result := mulmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4020), result) }mstore(add(transcript, 0x4040), mulmod(mload(add(transcript, 0x4020)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4060), mulmod(sub(f_q, mload(add(transcript, 0x4040))), mload(add(transcript, 0x3920)), f_q))mstore(add(transcript, 0x4080), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3920)), f_q))mstore(add(transcript, 0x40a0), addmod(mload(add(transcript, 0x4000)), mload(add(transcript, 0x4060)), f_q)){ let result := mulmod(mload(add(transcript, 0x720)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x40c0), result) }mstore(add(transcript, 0x40e0), mulmod(mload(add(transcript, 0x40c0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4100), mulmod(sub(f_q, mload(add(transcript, 0x40e0))), mload(add(transcript, 0x3940)), f_q))mstore(add(transcript, 0x4120), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3940)), f_q))mstore(add(transcript, 0x4140), addmod(mload(add(transcript, 0x40a0)), mload(add(transcript, 0x4100)), f_q)){ let result := mulmod(mload(add(transcript, 0x740)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4160), result) }mstore(add(transcript, 0x4180), mulmod(mload(add(transcript, 0x4160)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x41a0), mulmod(sub(f_q, mload(add(transcript, 0x4180))), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x41c0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3960)), f_q))mstore(add(transcript, 0x41e0), addmod(mload(add(transcript, 0x4140)), mload(add(transcript, 0x41a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x760)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4200), result) }mstore(add(transcript, 0x4220), mulmod(mload(add(transcript, 0x4200)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4240), mulmod(sub(f_q, mload(add(transcript, 0x4220))), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4260), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4280), addmod(mload(add(transcript, 0x41e0)), mload(add(transcript, 0x4240)), f_q)){ let result := mulmod(mload(add(transcript, 0x780)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x42a0), result) }mstore(add(transcript, 0x42c0), mulmod(mload(add(transcript, 0x42a0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x42e0), mulmod(sub(f_q, mload(add(transcript, 0x42c0))), mload(add(transcript, 0x39a0)), f_q))mstore(add(transcript, 0x4300), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x39a0)), f_q))mstore(add(transcript, 0x4320), addmod(mload(add(transcript, 0x4280)), mload(add(transcript, 0x42e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x7a0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4340), result) }mstore(add(transcript, 0x4360), mulmod(mload(add(transcript, 0x4340)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4380), mulmod(sub(f_q, mload(add(transcript, 0x4360))), mload(add(transcript, 0x39c0)), f_q))mstore(add(transcript, 0x43a0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x39c0)), f_q))mstore(add(transcript, 0x43c0), addmod(mload(add(transcript, 0x4320)), mload(add(transcript, 0x4380)), f_q)){ let result := mulmod(mload(add(transcript, 0x7c0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x43e0), result) }mstore(add(transcript, 0x4400), mulmod(mload(add(transcript, 0x43e0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4420), mulmod(sub(f_q, mload(add(transcript, 0x4400))), mload(add(transcript, 0x39e0)), f_q))mstore(add(transcript, 0x4440), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x39e0)), f_q))mstore(add(transcript, 0x4460), addmod(mload(add(transcript, 0x43c0)), mload(add(transcript, 0x4420)), f_q)){ let result := mulmod(mload(add(transcript, 0x7e0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4480), result) }mstore(add(transcript, 0x44a0), mulmod(mload(add(transcript, 0x4480)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x44c0), mulmod(sub(f_q, mload(add(transcript, 0x44a0))), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x44e0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4500), addmod(mload(add(transcript, 0x4460)), mload(add(transcript, 0x44c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x820)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4520), result) }mstore(add(transcript, 0x4540), mulmod(mload(add(transcript, 0x4520)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4560), mulmod(sub(f_q, mload(add(transcript, 0x4540))), mload(add(transcript, 0x3a20)), f_q))mstore(add(transcript, 0x4580), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3a20)), f_q))mstore(add(transcript, 0x45a0), addmod(mload(add(transcript, 0x4500)), mload(add(transcript, 0x4560)), f_q)){ let result := mulmod(mload(add(transcript, 0x840)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x45c0), result) }mstore(add(transcript, 0x45e0), mulmod(mload(add(transcript, 0x45c0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4600), mulmod(sub(f_q, mload(add(transcript, 0x45e0))), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x4620), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x4640), addmod(mload(add(transcript, 0x45a0)), mload(add(transcript, 0x4600)), f_q)){ let result := mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4660), result) }mstore(add(transcript, 0x4680), mulmod(mload(add(transcript, 0x4660)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x46a0), mulmod(sub(f_q, mload(add(transcript, 0x4680))), mload(add(transcript, 0x3a60)), f_q))mstore(add(transcript, 0x46c0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3a60)), f_q))mstore(add(transcript, 0x46e0), addmod(mload(add(transcript, 0x4640)), mload(add(transcript, 0x46a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4700), result) }mstore(add(transcript, 0x4720), mulmod(mload(add(transcript, 0x4700)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4740), mulmod(sub(f_q, mload(add(transcript, 0x4720))), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4760), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4780), addmod(mload(add(transcript, 0x46e0)), mload(add(transcript, 0x4740)), f_q)){ let result := mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x47a0), result) }mstore(add(transcript, 0x47c0), mulmod(mload(add(transcript, 0x47a0)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x47e0), mulmod(sub(f_q, mload(add(transcript, 0x47c0))), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4800), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4820), addmod(mload(add(transcript, 0x4780)), mload(add(transcript, 0x47e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4840), result) }mstore(add(transcript, 0x4860), mulmod(mload(add(transcript, 0x4840)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4880), mulmod(sub(f_q, mload(add(transcript, 0x4860))), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x48a0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x48c0), addmod(mload(add(transcript, 0x4820)), mload(add(transcript, 0x4880)), f_q))mstore(add(transcript, 0x48e0), mulmod(mload(add(transcript, 0x2f60)), mload(add(transcript, 0x35e0)), f_q))mstore(add(transcript, 0x4900), mulmod(mload(add(transcript, 0x2f80)), mload(add(transcript, 0x35e0)), f_q))mstore(add(transcript, 0x4920), mulmod(mload(add(transcript, 0x2fa0)), mload(add(transcript, 0x35e0)), f_q))mstore(add(transcript, 0x4940), mulmod(mload(add(transcript, 0x2fc0)), mload(add(transcript, 0x35e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x2fe0)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4960), result) }mstore(add(transcript, 0x4980), mulmod(mload(add(transcript, 0x4960)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x49a0), mulmod(sub(f_q, mload(add(transcript, 0x4980))), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x49c0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x49e0), mulmod(mload(add(transcript, 0x48e0)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4a00), mulmod(mload(add(transcript, 0x4900)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4a20), mulmod(mload(add(transcript, 0x4920)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4a40), mulmod(mload(add(transcript, 0x4940)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4a60), addmod(mload(add(transcript, 0x48c0)), mload(add(transcript, 0x49a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x800)), mload(add(transcript, 0x31e0)), f_q)mstore(add(transcript, 0x4a80), result) }mstore(add(transcript, 0x4aa0), mulmod(mload(add(transcript, 0x4a80)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x4ac0), mulmod(sub(f_q, mload(add(transcript, 0x4aa0))), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x4ae0), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x4b00), addmod(mload(add(transcript, 0x4a60)), mload(add(transcript, 0x4ac0)), f_q))mstore(add(transcript, 0x4b20), mulmod(mload(add(transcript, 0x4b00)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4b40), mulmod(mload(add(transcript, 0x3d80)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4b60), mulmod(mload(add(transcript, 0x3e00)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4b80), mulmod(mload(add(transcript, 0x3ea0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4ba0), mulmod(mload(add(transcript, 0x3f40)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4bc0), mulmod(mload(add(transcript, 0x3fe0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4be0), mulmod(mload(add(transcript, 0x4080)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4c00), mulmod(mload(add(transcript, 0x4120)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4c20), mulmod(mload(add(transcript, 0x41c0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4c40), mulmod(mload(add(transcript, 0x4260)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4c60), mulmod(mload(add(transcript, 0x4300)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4c80), mulmod(mload(add(transcript, 0x43a0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4ca0), mulmod(mload(add(transcript, 0x4440)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4cc0), mulmod(mload(add(transcript, 0x44e0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4ce0), mulmod(mload(add(transcript, 0x4580)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4d00), mulmod(mload(add(transcript, 0x4620)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4d20), mulmod(mload(add(transcript, 0x46c0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4d40), mulmod(mload(add(transcript, 0x4760)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4d60), mulmod(mload(add(transcript, 0x4800)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4d80), mulmod(mload(add(transcript, 0x48a0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4da0), mulmod(mload(add(transcript, 0x49c0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4dc0), mulmod(mload(add(transcript, 0x49e0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4de0), mulmod(mload(add(transcript, 0x4a00)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4e00), mulmod(mload(add(transcript, 0x4a20)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4e20), mulmod(mload(add(transcript, 0x4a40)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4e40), mulmod(mload(add(transcript, 0x4ae0)), mload(add(transcript, 0xaa0)), f_q))mstore(add(transcript, 0x4e60), addmod(mload(add(transcript, 0x3cc0)), mload(add(transcript, 0x4b20)), f_q))mstore(add(transcript, 0x4e80), mulmod(1, mload(add(transcript, 0x3620)), f_q)){ let result := mulmod(mload(add(transcript, 0x8e0)), mload(add(transcript, 0x3200)), f_q)result := addmod(mulmod(mload(add(transcript, 0x900)), mload(add(transcript, 0x3220)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x920)), mload(add(transcript, 0x3240)), f_q), result, f_q)mstore(add(transcript, 0x4ea0), result) }mstore(add(transcript, 0x4ec0), mulmod(mload(add(transcript, 0x4ea0)), mload(add(transcript, 0x3860)), f_q))mstore(add(transcript, 0x4ee0), mulmod(sub(f_q, mload(add(transcript, 0x4ec0))), 1, f_q))mstore(add(transcript, 0x4f00), mulmod(mload(add(transcript, 0x4e80)), 1, f_q))mstore(add(transcript, 0x4f20), mulmod(mload(add(transcript, 0x4ee0)), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4f40), mulmod(mload(add(transcript, 0x4f00)), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4f60), addmod(mload(add(transcript, 0x4e60)), mload(add(transcript, 0x4f20)), f_q))mstore(add(transcript, 0x4f80), mulmod(1, mload(add(transcript, 0x3660)), f_q)){ let result := mulmod(mload(add(transcript, 0x940)), mload(add(transcript, 0x3280)), f_q)result := addmod(mulmod(mload(add(transcript, 0x960)), mload(add(transcript, 0x32a0)), f_q), result, f_q)mstore(add(transcript, 0x4fa0), result) }mstore(add(transcript, 0x4fc0), mulmod(mload(add(transcript, 0x4fa0)), mload(add(transcript, 0x3880)), f_q))mstore(add(transcript, 0x4fe0), mulmod(sub(f_q, mload(add(transcript, 0x4fc0))), 1, f_q))mstore(add(transcript, 0x5000), mulmod(mload(add(transcript, 0x4f80)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x3280)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9a0)), mload(add(transcript, 0x32a0)), f_q), result, f_q)mstore(add(transcript, 0x5020), result) }mstore(add(transcript, 0x5040), mulmod(mload(add(transcript, 0x5020)), mload(add(transcript, 0x3880)), f_q))mstore(add(transcript, 0x5060), mulmod(sub(f_q, mload(add(transcript, 0x5040))), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x5080), mulmod(mload(add(transcript, 0x4f80)), mload(add(transcript, 0xa40)), f_q))mstore(add(transcript, 0x50a0), addmod(mload(add(transcript, 0x4fe0)), mload(add(transcript, 0x5060)), f_q))mstore(add(transcript, 0x50c0), mulmod(mload(add(transcript, 0x50a0)), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x50e0), mulmod(mload(add(transcript, 0x5000)), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x5100), mulmod(mload(add(transcript, 0x5080)), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x5120), addmod(mload(add(transcript, 0x4f60)), mload(add(transcript, 0x50c0)), f_q))mstore(add(transcript, 0x5140), mulmod(1, mload(add(transcript, 0x36a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x32c0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9e0)), mload(add(transcript, 0x32e0)), f_q), result, f_q)mstore(add(transcript, 0x5160), result) }mstore(add(transcript, 0x5180), mulmod(mload(add(transcript, 0x5160)), mload(add(transcript, 0x38a0)), f_q))mstore(add(transcript, 0x51a0), mulmod(sub(f_q, mload(add(transcript, 0x5180))), 1, f_q))mstore(add(transcript, 0x51c0), mulmod(mload(add(transcript, 0x5140)), 1, f_q))mstore(add(transcript, 0x51e0), mulmod(mload(add(transcript, 0x51a0)), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x5200), mulmod(mload(add(transcript, 0x51c0)), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x5220), addmod(mload(add(transcript, 0x5120)), mload(add(transcript, 0x51e0)), f_q))mstore(add(transcript, 0x5240), mulmod(1, mload(add(transcript, 0x31c0)), f_q))mstore(add(transcript, 0x5260), mulmod(1, mload(add(transcript, 0xb40)), f_q))mstore(add(transcript, 0x5280), 0x0000000000000000000000000000000000000000000000000000000000000001) mstore(add(transcript, 0x52a0), 0x0000000000000000000000000000000000000000000000000000000000000002)mstore(add(transcript, 0x52c0), mload(add(transcript, 0x5220)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5280), 0x60, add(transcript, 0x5280), 0x40), 1), success)mstore(add(transcript, 0x52e0), mload(add(transcript, 0x5280))) mstore(add(transcript, 0x5300), mload(add(transcript, 0x52a0)))mstore(add(transcript, 0x5320), mload(add(transcript, 0x60))) mstore(add(transcript, 0x5340), mload(add(transcript, 0x80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x52e0), 0x80, add(transcript, 0x52e0), 0x40), 1), success)mstore(add(transcript, 0x5360), mload(add(transcript, 0xa0))) mstore(add(transcript, 0x5380), mload(add(transcript, 0xc0)))mstore(add(transcript, 0x53a0), mload(add(transcript, 0x3ce0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5360), 0x60, add(transcript, 0x5360), 0x40), 1), success)mstore(add(transcript, 0x53c0), mload(add(transcript, 0x52e0))) mstore(add(transcript, 0x53e0), mload(add(transcript, 0x5300)))mstore(add(transcript, 0x5400), mload(add(transcript, 0x5360))) mstore(add(transcript, 0x5420), mload(add(transcript, 0x5380)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x53c0), 0x80, add(transcript, 0x53c0), 0x40), 1), success)mstore(add(transcript, 0x5440), mload(add(transcript, 0xe0))) mstore(add(transcript, 0x5460), mload(add(transcript, 0x100)))mstore(add(transcript, 0x5480), mload(add(transcript, 0x4b40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5440), 0x60, add(transcript, 0x5440), 0x40), 1), success)mstore(add(transcript, 0x54a0), mload(add(transcript, 0x53c0))) mstore(add(transcript, 0x54c0), mload(add(transcript, 0x53e0)))mstore(add(transcript, 0x54e0), mload(add(transcript, 0x5440))) mstore(add(transcript, 0x5500), mload(add(transcript, 0x5460)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x54a0), 0x80, add(transcript, 0x54a0), 0x40), 1), success)mstore(add(transcript, 0x5520), mload(add(transcript, 0x1c0))) mstore(add(transcript, 0x5540), mload(add(transcript, 0x1e0)))mstore(add(transcript, 0x5560), mload(add(transcript, 0x4b60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5520), 0x60, add(transcript, 0x5520), 0x40), 1), success)mstore(add(transcript, 0x5580), mload(add(transcript, 0x54a0))) mstore(add(transcript, 0x55a0), mload(add(transcript, 0x54c0)))mstore(add(transcript, 0x55c0), mload(add(transcript, 0x5520))) mstore(add(transcript, 0x55e0), mload(add(transcript, 0x5540)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5580), 0x80, add(transcript, 0x5580), 0x40), 1), success)mstore(add(transcript, 0x5600), 0x291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db425290) mstore(add(transcript, 0x5620), 0x154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc)mstore(add(transcript, 0x5640), mload(add(transcript, 0x4b80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5600), 0x60, add(transcript, 0x5600), 0x40), 1), success)mstore(add(transcript, 0x5660), mload(add(transcript, 0x5580))) mstore(add(transcript, 0x5680), mload(add(transcript, 0x55a0)))mstore(add(transcript, 0x56a0), mload(add(transcript, 0x5600))) mstore(add(transcript, 0x56c0), mload(add(transcript, 0x5620)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5660), 0x80, add(transcript, 0x5660), 0x40), 1), success)mstore(add(transcript, 0x56e0), 0x176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d) mstore(add(transcript, 0x5700), 0x1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51)mstore(add(transcript, 0x5720), mload(add(transcript, 0x4ba0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x56e0), 0x60, add(transcript, 0x56e0), 0x40), 1), success)mstore(add(transcript, 0x5740), mload(add(transcript, 0x5660))) mstore(add(transcript, 0x5760), mload(add(transcript, 0x5680)))mstore(add(transcript, 0x5780), mload(add(transcript, 0x56e0))) mstore(add(transcript, 0x57a0), mload(add(transcript, 0x5700)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5740), 0x80, add(transcript, 0x5740), 0x40), 1), success)mstore(add(transcript, 0x57c0), 0x019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e20250759) mstore(add(transcript, 0x57e0), 0x0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea83)mstore(add(transcript, 0x5800), mload(add(transcript, 0x4bc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x57c0), 0x60, add(transcript, 0x57c0), 0x40), 1), success)mstore(add(transcript, 0x5820), mload(add(transcript, 0x5740))) mstore(add(transcript, 0x5840), mload(add(transcript, 0x5760)))mstore(add(transcript, 0x5860), mload(add(transcript, 0x57c0))) mstore(add(transcript, 0x5880), mload(add(transcript, 0x57e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5820), 0x80, add(transcript, 0x5820), 0x40), 1), success)mstore(add(transcript, 0x58a0), 0x0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af) mstore(add(transcript, 0x58c0), 0x24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c43)mstore(add(transcript, 0x58e0), mload(add(transcript, 0x4be0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x58a0), 0x60, add(transcript, 0x58a0), 0x40), 1), success)mstore(add(transcript, 0x5900), mload(add(transcript, 0x5820))) mstore(add(transcript, 0x5920), mload(add(transcript, 0x5840)))mstore(add(transcript, 0x5940), mload(add(transcript, 0x58a0))) mstore(add(transcript, 0x5960), mload(add(transcript, 0x58c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5900), 0x80, add(transcript, 0x5900), 0x40), 1), success)mstore(add(transcript, 0x5980), 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) mstore(add(transcript, 0x59a0), 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0)mstore(add(transcript, 0x59c0), mload(add(transcript, 0x4c00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5980), 0x60, add(transcript, 0x5980), 0x40), 1), success)mstore(add(transcript, 0x59e0), mload(add(transcript, 0x5900))) mstore(add(transcript, 0x5a00), mload(add(transcript, 0x5920)))mstore(add(transcript, 0x5a20), mload(add(transcript, 0x5980))) mstore(add(transcript, 0x5a40), mload(add(transcript, 0x59a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x59e0), 0x80, add(transcript, 0x59e0), 0x40), 1), success)mstore(add(transcript, 0x5a60), 0x0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed) mstore(add(transcript, 0x5a80), 0x286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf)mstore(add(transcript, 0x5aa0), mload(add(transcript, 0x4c20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5a60), 0x60, add(transcript, 0x5a60), 0x40), 1), success)mstore(add(transcript, 0x5ac0), mload(add(transcript, 0x59e0))) mstore(add(transcript, 0x5ae0), mload(add(transcript, 0x5a00)))mstore(add(transcript, 0x5b00), mload(add(transcript, 0x5a60))) mstore(add(transcript, 0x5b20), mload(add(transcript, 0x5a80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ac0), 0x80, add(transcript, 0x5ac0), 0x40), 1), success)mstore(add(transcript, 0x5b40), 0x14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5) mstore(add(transcript, 0x5b60), 0x0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2)mstore(add(transcript, 0x5b80), mload(add(transcript, 0x4c40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5b40), 0x60, add(transcript, 0x5b40), 0x40), 1), success)mstore(add(transcript, 0x5ba0), mload(add(transcript, 0x5ac0))) mstore(add(transcript, 0x5bc0), mload(add(transcript, 0x5ae0)))mstore(add(transcript, 0x5be0), mload(add(transcript, 0x5b40))) mstore(add(transcript, 0x5c00), mload(add(transcript, 0x5b60)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ba0), 0x80, add(transcript, 0x5ba0), 0x40), 1), success)mstore(add(transcript, 0x5c20), 0x0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36) mstore(add(transcript, 0x5c40), 0x2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890)mstore(add(transcript, 0x5c60), mload(add(transcript, 0x4c60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5c20), 0x60, add(transcript, 0x5c20), 0x40), 1), success)mstore(add(transcript, 0x5c80), mload(add(transcript, 0x5ba0))) mstore(add(transcript, 0x5ca0), mload(add(transcript, 0x5bc0)))mstore(add(transcript, 0x5cc0), mload(add(transcript, 0x5c20))) mstore(add(transcript, 0x5ce0), mload(add(transcript, 0x5c40)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5c80), 0x80, add(transcript, 0x5c80), 0x40), 1), success)mstore(add(transcript, 0x5d00), 0x1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f) mstore(add(transcript, 0x5d20), 0x1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d)mstore(add(transcript, 0x5d40), mload(add(transcript, 0x4c80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5d00), 0x60, add(transcript, 0x5d00), 0x40), 1), success)mstore(add(transcript, 0x5d60), mload(add(transcript, 0x5c80))) mstore(add(transcript, 0x5d80), mload(add(transcript, 0x5ca0)))mstore(add(transcript, 0x5da0), mload(add(transcript, 0x5d00))) mstore(add(transcript, 0x5dc0), mload(add(transcript, 0x5d20)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5d60), 0x80, add(transcript, 0x5d60), 0x40), 1), success)mstore(add(transcript, 0x5de0), 0x07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c) mstore(add(transcript, 0x5e00), 0x1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68)mstore(add(transcript, 0x5e20), mload(add(transcript, 0x4ca0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5de0), 0x60, add(transcript, 0x5de0), 0x40), 1), success)mstore(add(transcript, 0x5e40), mload(add(transcript, 0x5d60))) mstore(add(transcript, 0x5e60), mload(add(transcript, 0x5d80)))mstore(add(transcript, 0x5e80), mload(add(transcript, 0x5de0))) mstore(add(transcript, 0x5ea0), mload(add(transcript, 0x5e00)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5e40), 0x80, add(transcript, 0x5e40), 0x40), 1), success)mstore(add(transcript, 0x5ec0), 0x0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd701) mstore(add(transcript, 0x5ee0), 0x07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a)mstore(add(transcript, 0x5f00), mload(add(transcript, 0x4cc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5ec0), 0x60, add(transcript, 0x5ec0), 0x40), 1), success)mstore(add(transcript, 0x5f20), mload(add(transcript, 0x5e40))) mstore(add(transcript, 0x5f40), mload(add(transcript, 0x5e60)))mstore(add(transcript, 0x5f60), mload(add(transcript, 0x5ec0))) mstore(add(transcript, 0x5f80), mload(add(transcript, 0x5ee0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5f20), 0x80, add(transcript, 0x5f20), 0x40), 1), success)mstore(add(transcript, 0x5fa0), 0x2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d) mstore(add(transcript, 0x5fc0), 0x154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6)mstore(add(transcript, 0x5fe0), mload(add(transcript, 0x4ce0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5fa0), 0x60, add(transcript, 0x5fa0), 0x40), 1), success)mstore(add(transcript, 0x6000), mload(add(transcript, 0x5f20))) mstore(add(transcript, 0x6020), mload(add(transcript, 0x5f40)))mstore(add(transcript, 0x6040), mload(add(transcript, 0x5fa0))) mstore(add(transcript, 0x6060), mload(add(transcript, 0x5fc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6000), 0x80, add(transcript, 0x6000), 0x40), 1), success)mstore(add(transcript, 0x6080), 0x2402db4b1c7746dcd9fe7eab82ab3fa7ebb1bd352a9af94ef6811b2af9ab6f8e) mstore(add(transcript, 0x60a0), 0x2a0047ec08a254753c466648f0dc6e077e88e5495829c3a845873b9058bf4407)mstore(add(transcript, 0x60c0), mload(add(transcript, 0x4d00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6080), 0x60, add(transcript, 0x6080), 0x40), 1), success)mstore(add(transcript, 0x60e0), mload(add(transcript, 0x6000))) mstore(add(transcript, 0x6100), mload(add(transcript, 0x6020)))mstore(add(transcript, 0x6120), mload(add(transcript, 0x6080))) mstore(add(transcript, 0x6140), mload(add(transcript, 0x60a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x60e0), 0x80, add(transcript, 0x60e0), 0x40), 1), success)mstore(add(transcript, 0x6160), 0x0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a) mstore(add(transcript, 0x6180), 0x27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e28)mstore(add(transcript, 0x61a0), mload(add(transcript, 0x4d20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6160), 0x60, add(transcript, 0x6160), 0x40), 1), success)mstore(add(transcript, 0x61c0), mload(add(transcript, 0x60e0))) mstore(add(transcript, 0x61e0), mload(add(transcript, 0x6100)))mstore(add(transcript, 0x6200), mload(add(transcript, 0x6160))) mstore(add(transcript, 0x6220), mload(add(transcript, 0x6180)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x61c0), 0x80, add(transcript, 0x61c0), 0x40), 1), success)mstore(add(transcript, 0x6240), 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) mstore(add(transcript, 0x6260), 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3)mstore(add(transcript, 0x6280), mload(add(transcript, 0x4d40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6240), 0x60, add(transcript, 0x6240), 0x40), 1), success)mstore(add(transcript, 0x62a0), mload(add(transcript, 0x61c0))) mstore(add(transcript, 0x62c0), mload(add(transcript, 0x61e0)))mstore(add(transcript, 0x62e0), mload(add(transcript, 0x6240))) mstore(add(transcript, 0x6300), mload(add(transcript, 0x6260)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x62a0), 0x80, add(transcript, 0x62a0), 0x40), 1), success)mstore(add(transcript, 0x6320), 0x1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a) mstore(add(transcript, 0x6340), 0x00b004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56)mstore(add(transcript, 0x6360), mload(add(transcript, 0x4d60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6320), 0x60, add(transcript, 0x6320), 0x40), 1), success)mstore(add(transcript, 0x6380), mload(add(transcript, 0x62a0))) mstore(add(transcript, 0x63a0), mload(add(transcript, 0x62c0)))mstore(add(transcript, 0x63c0), mload(add(transcript, 0x6320))) mstore(add(transcript, 0x63e0), mload(add(transcript, 0x6340)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6380), 0x80, add(transcript, 0x6380), 0x40), 1), success)mstore(add(transcript, 0x6400), 0x2903a763c1c6b78667f906b6fe2b4ad197b55587c90e14e8502446da8c45ef7d) mstore(add(transcript, 0x6420), 0x13ea57986f9295e92def3303aef53f2b4f625ba985531201ab53dc7307f46b69)mstore(add(transcript, 0x6440), mload(add(transcript, 0x4d80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6400), 0x60, add(transcript, 0x6400), 0x40), 1), success)mstore(add(transcript, 0x6460), mload(add(transcript, 0x6380))) mstore(add(transcript, 0x6480), mload(add(transcript, 0x63a0)))mstore(add(transcript, 0x64a0), mload(add(transcript, 0x6400))) mstore(add(transcript, 0x64c0), mload(add(transcript, 0x6420)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6460), 0x80, add(transcript, 0x6460), 0x40), 1), success)mstore(add(transcript, 0x64e0), mload(add(transcript, 0x420))) mstore(add(transcript, 0x6500), mload(add(transcript, 0x440)))mstore(add(transcript, 0x6520), mload(add(transcript, 0x4da0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x64e0), 0x60, add(transcript, 0x64e0), 0x40), 1), success)mstore(add(transcript, 0x6540), mload(add(transcript, 0x6460))) mstore(add(transcript, 0x6560), mload(add(transcript, 0x6480)))mstore(add(transcript, 0x6580), mload(add(transcript, 0x64e0))) mstore(add(transcript, 0x65a0), mload(add(transcript, 0x6500)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6540), 0x80, add(transcript, 0x6540), 0x40), 1), success)mstore(add(transcript, 0x65c0), mload(add(transcript, 0x460))) mstore(add(transcript, 0x65e0), mload(add(transcript, 0x480)))mstore(add(transcript, 0x6600), mload(add(transcript, 0x4dc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x65c0), 0x60, add(transcript, 0x65c0), 0x40), 1), success)mstore(add(transcript, 0x6620), mload(add(transcript, 0x6540))) mstore(add(transcript, 0x6640), mload(add(transcript, 0x6560)))mstore(add(transcript, 0x6660), mload(add(transcript, 0x65c0))) mstore(add(transcript, 0x6680), mload(add(transcript, 0x65e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6620), 0x80, add(transcript, 0x6620), 0x40), 1), success)mstore(add(transcript, 0x66a0), mload(add(transcript, 0x4a0))) mstore(add(transcript, 0x66c0), mload(add(transcript, 0x4c0)))mstore(add(transcript, 0x66e0), mload(add(transcript, 0x4de0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x66a0), 0x60, add(transcript, 0x66a0), 0x40), 1), success)mstore(add(transcript, 0x6700), mload(add(transcript, 0x6620))) mstore(add(transcript, 0x6720), mload(add(transcript, 0x6640)))mstore(add(transcript, 0x6740), mload(add(transcript, 0x66a0))) mstore(add(transcript, 0x6760), mload(add(transcript, 0x66c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6700), 0x80, add(transcript, 0x6700), 0x40), 1), success)mstore(add(transcript, 0x6780), mload(add(transcript, 0x4e0))) mstore(add(transcript, 0x67a0), mload(add(transcript, 0x500)))mstore(add(transcript, 0x67c0), mload(add(transcript, 0x4e00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6780), 0x60, add(transcript, 0x6780), 0x40), 1), success)mstore(add(transcript, 0x67e0), mload(add(transcript, 0x6700))) mstore(add(transcript, 0x6800), mload(add(transcript, 0x6720)))mstore(add(transcript, 0x6820), mload(add(transcript, 0x6780))) mstore(add(transcript, 0x6840), mload(add(transcript, 0x67a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x67e0), 0x80, add(transcript, 0x67e0), 0x40), 1), success)mstore(add(transcript, 0x6860), mload(add(transcript, 0x520))) mstore(add(transcript, 0x6880), mload(add(transcript, 0x540)))mstore(add(transcript, 0x68a0), mload(add(transcript, 0x4e20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6860), 0x60, add(transcript, 0x6860), 0x40), 1), success)mstore(add(transcript, 0x68c0), mload(add(transcript, 0x67e0))) mstore(add(transcript, 0x68e0), mload(add(transcript, 0x6800)))mstore(add(transcript, 0x6900), mload(add(transcript, 0x6860))) mstore(add(transcript, 0x6920), mload(add(transcript, 0x6880)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x68c0), 0x80, add(transcript, 0x68c0), 0x40), 1), success)mstore(add(transcript, 0x6940), mload(add(transcript, 0x380))) mstore(add(transcript, 0x6960), mload(add(transcript, 0x3a0)))mstore(add(transcript, 0x6980), mload(add(transcript, 0x4e40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6940), 0x60, add(transcript, 0x6940), 0x40), 1), success)mstore(add(transcript, 0x69a0), mload(add(transcript, 0x68c0))) mstore(add(transcript, 0x69c0), mload(add(transcript, 0x68e0)))mstore(add(transcript, 0x69e0), mload(add(transcript, 0x6940))) mstore(add(transcript, 0x6a00), mload(add(transcript, 0x6960)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x69a0), 0x80, add(transcript, 0x69a0), 0x40), 1), success)mstore(add(transcript, 0x6a20), mload(add(transcript, 0x2c0))) mstore(add(transcript, 0x6a40), mload(add(transcript, 0x2e0)))mstore(add(transcript, 0x6a60), mload(add(transcript, 0x4f40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6a20), 0x60, add(transcript, 0x6a20), 0x40), 1), success)mstore(add(transcript, 0x6a80), mload(add(transcript, 0x69a0))) mstore(add(transcript, 0x6aa0), mload(add(transcript, 0x69c0)))mstore(add(transcript, 0x6ac0), mload(add(transcript, 0x6a20))) mstore(add(transcript, 0x6ae0), mload(add(transcript, 0x6a40)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6a80), 0x80, add(transcript, 0x6a80), 0x40), 1), success)mstore(add(transcript, 0x6b00), mload(add(transcript, 0x300))) mstore(add(transcript, 0x6b20), mload(add(transcript, 0x320)))mstore(add(transcript, 0x6b40), mload(add(transcript, 0x50e0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6b00), 0x60, add(transcript, 0x6b00), 0x40), 1), success)mstore(add(transcript, 0x6b60), mload(add(transcript, 0x6a80))) mstore(add(transcript, 0x6b80), mload(add(transcript, 0x6aa0)))mstore(add(transcript, 0x6ba0), mload(add(transcript, 0x6b00))) mstore(add(transcript, 0x6bc0), mload(add(transcript, 0x6b20)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6b60), 0x80, add(transcript, 0x6b60), 0x40), 1), success)mstore(add(transcript, 0x6be0), mload(add(transcript, 0x340))) mstore(add(transcript, 0x6c00), mload(add(transcript, 0x360)))mstore(add(transcript, 0x6c20), mload(add(transcript, 0x5100)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6be0), 0x60, add(transcript, 0x6be0), 0x40), 1), success)mstore(add(transcript, 0x6c40), mload(add(transcript, 0x6b60))) mstore(add(transcript, 0x6c60), mload(add(transcript, 0x6b80)))mstore(add(transcript, 0x6c80), mload(add(transcript, 0x6be0))) mstore(add(transcript, 0x6ca0), mload(add(transcript, 0x6c00)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6c40), 0x80, add(transcript, 0x6c40), 0x40), 1), success)mstore(add(transcript, 0x6cc0), mload(add(transcript, 0x180))) mstore(add(transcript, 0x6ce0), mload(add(transcript, 0x1a0)))mstore(add(transcript, 0x6d00), mload(add(transcript, 0x5200)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6cc0), 0x60, add(transcript, 0x6cc0), 0x40), 1), success)mstore(add(transcript, 0x6d20), mload(add(transcript, 0x6c40))) mstore(add(transcript, 0x6d40), mload(add(transcript, 0x6c60)))mstore(add(transcript, 0x6d60), mload(add(transcript, 0x6cc0))) mstore(add(transcript, 0x6d80), mload(add(transcript, 0x6ce0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6d20), 0x80, add(transcript, 0x6d20), 0x40), 1), success)mstore(add(transcript, 0x6da0), mload(add(transcript, 0xae0))) mstore(add(transcript, 0x6dc0), mload(add(transcript, 0xb00)))mstore(add(transcript, 0x6de0), sub(f_q, mload(add(transcript, 0x5240))))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6da0), 0x60, add(transcript, 0x6da0), 0x40), 1), success)mstore(add(transcript, 0x6e00), mload(add(transcript, 0x6d20))) mstore(add(transcript, 0x6e20), mload(add(transcript, 0x6d40)))mstore(add(transcript, 0x6e40), mload(add(transcript, 0x6da0))) mstore(add(transcript, 0x6e60), mload(add(transcript, 0x6dc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6e00), 0x80, add(transcript, 0x6e00), 0x40), 1), success)mstore(add(transcript, 0x6e80), mload(add(transcript, 0xb80))) mstore(add(transcript, 0x6ea0), mload(add(transcript, 0xba0)))mstore(add(transcript, 0x6ec0), mload(add(transcript, 0x5260)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6e80), 0x60, add(transcript, 0x6e80), 0x40), 1), success)mstore(add(transcript, 0x6ee0), mload(add(transcript, 0x6e00))) mstore(add(transcript, 0x6f00), mload(add(transcript, 0x6e20)))mstore(add(transcript, 0x6f20), mload(add(transcript, 0x6e80))) mstore(add(transcript, 0x6f40), mload(add(transcript, 0x6ea0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6ee0), 0x80, add(transcript, 0x6ee0), 0x40), 1), success)mstore(add(transcript, 0x6f60), mload(add(transcript, 0x6ee0))) mstore(add(transcript, 0x6f80), mload(add(transcript, 0x6f00)))mstore(add(transcript, 0x6fa0), 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) mstore(add(transcript, 0x6fc0), 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) mstore(add(transcript, 0x6fe0), 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) mstore(add(transcript, 0x7000), 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa)mstore(add(transcript, 0x7020), mload(add(transcript, 0xb80))) mstore(add(transcript, 0x7040), mload(add(transcript, 0xba0)))mstore(add(transcript, 0x7060), 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) mstore(add(transcript, 0x7080), 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) mstore(add(transcript, 0x70a0), 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) mstore(add(transcript, 0x70c0), 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff)success := and(eq(staticcall(gas(), 0x8, add(transcript, 0x6f60), 0x180, add(transcript, 0x6f60), 0x20), 1), success)success := and(eq(mload(add(transcript, 0x6f60)), 1), success)} return success; } } + bytes32[912] memory transcript; + assembly { let f_p := 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47 let f_q := 0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001 function validate_ec_point(x, y) -> valid { { let x_lt_p := lt(x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let y_lt_p := lt(y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) valid := and(x_lt_p, y_lt_p) } { let y_square := mulmod(y, y, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_square := mulmod(x, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube := mulmod(x_square, x, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let x_cube_plus_3 := addmod(x_cube, 3, 0x30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd47) let is_affine := eq(x_cube_plus_3, y_square) valid := and(valid, is_affine) } } mstore(add(transcript, 0x20), mod(mload(add(pubInputs, 0x20)), f_q))mstore(add(transcript, 0x40), mod(mload(add(pubInputs, 0x40)), f_q))mstore(add(transcript, 0x60), mod(mload(add(pubInputs, 0x60)), f_q))mstore(add(transcript, 0x80), mod(mload(add(pubInputs, 0x80)), f_q))mstore(add(transcript, 0x0), 4807875969802051575329349424543462078160599761356767644666470846188645432252) { let x := mload(add(proof, 0x20)) mstore(add(transcript, 0xa0), x) let y := mload(add(proof, 0x40)) mstore(add(transcript, 0xc0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x60)) mstore(add(transcript, 0xe0), x) let y := mload(add(proof, 0x80)) mstore(add(transcript, 0x100), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0xa0)) mstore(add(transcript, 0x120), x) let y := mload(add(proof, 0xc0)) mstore(add(transcript, 0x140), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x160), keccak256(add(transcript, 0x0), 352)){ let hash := mload(add(transcript, 0x160)) mstore(add(transcript, 0x180), mod(hash, f_q)) mstore(add(transcript, 0x1a0), hash) } { let x := mload(add(proof, 0xe0)) mstore(add(transcript, 0x1c0), x) let y := mload(add(proof, 0x100)) mstore(add(transcript, 0x1e0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x120)) mstore(add(transcript, 0x200), x) let y := mload(add(proof, 0x140)) mstore(add(transcript, 0x220), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x240), keccak256(add(transcript, 0x1a0), 160)){ let hash := mload(add(transcript, 0x240)) mstore(add(transcript, 0x260), mod(hash, f_q)) mstore(add(transcript, 0x280), hash) }mstore8(add(transcript, 0x2a0), 1)mstore(add(transcript, 0x2a0), keccak256(add(transcript, 0x280), 33)){ let hash := mload(add(transcript, 0x2a0)) mstore(add(transcript, 0x2c0), mod(hash, f_q)) mstore(add(transcript, 0x2e0), hash) } { let x := mload(add(proof, 0x160)) mstore(add(transcript, 0x300), x) let y := mload(add(proof, 0x180)) mstore(add(transcript, 0x320), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1a0)) mstore(add(transcript, 0x340), x) let y := mload(add(proof, 0x1c0)) mstore(add(transcript, 0x360), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x1e0)) mstore(add(transcript, 0x380), x) let y := mload(add(proof, 0x200)) mstore(add(transcript, 0x3a0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x220)) mstore(add(transcript, 0x3c0), x) let y := mload(add(proof, 0x240)) mstore(add(transcript, 0x3e0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x400), keccak256(add(transcript, 0x2e0), 288)){ let hash := mload(add(transcript, 0x400)) mstore(add(transcript, 0x420), mod(hash, f_q)) mstore(add(transcript, 0x440), hash) } { let x := mload(add(proof, 0x260)) mstore(add(transcript, 0x460), x) let y := mload(add(proof, 0x280)) mstore(add(transcript, 0x480), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2a0)) mstore(add(transcript, 0x4a0), x) let y := mload(add(proof, 0x2c0)) mstore(add(transcript, 0x4c0), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x2e0)) mstore(add(transcript, 0x4e0), x) let y := mload(add(proof, 0x300)) mstore(add(transcript, 0x500), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x320)) mstore(add(transcript, 0x520), x) let y := mload(add(proof, 0x340)) mstore(add(transcript, 0x540), y) success := and(validate_ec_point(x, y), success) } { let x := mload(add(proof, 0x360)) mstore(add(transcript, 0x560), x) let y := mload(add(proof, 0x380)) mstore(add(transcript, 0x580), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0x5a0), keccak256(add(transcript, 0x440), 352)){ let hash := mload(add(transcript, 0x5a0)) mstore(add(transcript, 0x5c0), mod(hash, f_q)) mstore(add(transcript, 0x5e0), hash) }mstore(add(transcript, 0x600), mod(mload(add(proof, 0x3a0)), f_q))mstore(add(transcript, 0x620), mod(mload(add(proof, 0x3c0)), f_q))mstore(add(transcript, 0x640), mod(mload(add(proof, 0x3e0)), f_q))mstore(add(transcript, 0x660), mod(mload(add(proof, 0x400)), f_q))mstore(add(transcript, 0x680), mod(mload(add(proof, 0x420)), f_q))mstore(add(transcript, 0x6a0), mod(mload(add(proof, 0x440)), f_q))mstore(add(transcript, 0x6c0), mod(mload(add(proof, 0x460)), f_q))mstore(add(transcript, 0x6e0), mod(mload(add(proof, 0x480)), f_q))mstore(add(transcript, 0x700), mod(mload(add(proof, 0x4a0)), f_q))mstore(add(transcript, 0x720), mod(mload(add(proof, 0x4c0)), f_q))mstore(add(transcript, 0x740), mod(mload(add(proof, 0x4e0)), f_q))mstore(add(transcript, 0x760), mod(mload(add(proof, 0x500)), f_q))mstore(add(transcript, 0x780), mod(mload(add(proof, 0x520)), f_q))mstore(add(transcript, 0x7a0), mod(mload(add(proof, 0x540)), f_q))mstore(add(transcript, 0x7c0), mod(mload(add(proof, 0x560)), f_q))mstore(add(transcript, 0x7e0), mod(mload(add(proof, 0x580)), f_q))mstore(add(transcript, 0x800), mod(mload(add(proof, 0x5a0)), f_q))mstore(add(transcript, 0x820), mod(mload(add(proof, 0x5c0)), f_q))mstore(add(transcript, 0x840), mod(mload(add(proof, 0x5e0)), f_q))mstore(add(transcript, 0x860), mod(mload(add(proof, 0x600)), f_q))mstore(add(transcript, 0x880), mod(mload(add(proof, 0x620)), f_q))mstore(add(transcript, 0x8a0), mod(mload(add(proof, 0x640)), f_q))mstore(add(transcript, 0x8c0), mod(mload(add(proof, 0x660)), f_q))mstore(add(transcript, 0x8e0), mod(mload(add(proof, 0x680)), f_q))mstore(add(transcript, 0x900), mod(mload(add(proof, 0x6a0)), f_q))mstore(add(transcript, 0x920), mod(mload(add(proof, 0x6c0)), f_q))mstore(add(transcript, 0x940), mod(mload(add(proof, 0x6e0)), f_q))mstore(add(transcript, 0x960), mod(mload(add(proof, 0x700)), f_q))mstore(add(transcript, 0x980), mod(mload(add(proof, 0x720)), f_q))mstore(add(transcript, 0x9a0), mod(mload(add(proof, 0x740)), f_q))mstore(add(transcript, 0x9c0), mod(mload(add(proof, 0x760)), f_q))mstore(add(transcript, 0x9e0), mod(mload(add(proof, 0x780)), f_q))mstore(add(transcript, 0xa00), mod(mload(add(proof, 0x7a0)), f_q))mstore(add(transcript, 0xa20), mod(mload(add(proof, 0x7c0)), f_q))mstore(add(transcript, 0xa40), mod(mload(add(proof, 0x7e0)), f_q))mstore(add(transcript, 0xa60), keccak256(add(transcript, 0x5e0), 1152)){ let hash := mload(add(transcript, 0xa60)) mstore(add(transcript, 0xa80), mod(hash, f_q)) mstore(add(transcript, 0xaa0), hash) }mstore8(add(transcript, 0xac0), 1)mstore(add(transcript, 0xac0), keccak256(add(transcript, 0xaa0), 33)){ let hash := mload(add(transcript, 0xac0)) mstore(add(transcript, 0xae0), mod(hash, f_q)) mstore(add(transcript, 0xb00), hash) } { let x := mload(add(proof, 0x800)) mstore(add(transcript, 0xb20), x) let y := mload(add(proof, 0x820)) mstore(add(transcript, 0xb40), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xb60), keccak256(add(transcript, 0xb00), 96)){ let hash := mload(add(transcript, 0xb60)) mstore(add(transcript, 0xb80), mod(hash, f_q)) mstore(add(transcript, 0xba0), hash) } { let x := mload(add(proof, 0x840)) mstore(add(transcript, 0xbc0), x) let y := mload(add(proof, 0x860)) mstore(add(transcript, 0xbe0), y) success := and(validate_ec_point(x, y), success) }mstore(add(transcript, 0xc00), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x5c0)), f_q))mstore(add(transcript, 0xc20), mulmod(mload(add(transcript, 0xc00)), mload(add(transcript, 0xc00)), f_q))mstore(add(transcript, 0xc40), mulmod(mload(add(transcript, 0xc20)), mload(add(transcript, 0xc20)), f_q))mstore(add(transcript, 0xc60), mulmod(mload(add(transcript, 0xc40)), mload(add(transcript, 0xc40)), f_q))mstore(add(transcript, 0xc80), mulmod(mload(add(transcript, 0xc60)), mload(add(transcript, 0xc60)), f_q))mstore(add(transcript, 0xca0), mulmod(mload(add(transcript, 0xc80)), mload(add(transcript, 0xc80)), f_q))mstore(add(transcript, 0xcc0), mulmod(mload(add(transcript, 0xca0)), mload(add(transcript, 0xca0)), f_q))mstore(add(transcript, 0xce0), mulmod(mload(add(transcript, 0xcc0)), mload(add(transcript, 0xcc0)), f_q))mstore(add(transcript, 0xd00), mulmod(mload(add(transcript, 0xce0)), mload(add(transcript, 0xce0)), f_q))mstore(add(transcript, 0xd20), mulmod(mload(add(transcript, 0xd00)), mload(add(transcript, 0xd00)), f_q))mstore(add(transcript, 0xd40), mulmod(mload(add(transcript, 0xd20)), mload(add(transcript, 0xd20)), f_q))mstore(add(transcript, 0xd60), addmod(mload(add(transcript, 0xd40)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xd80), mulmod(mload(add(transcript, 0xd60)), 21877555253249509951141793242451973684696534144361143701928820297812832026625, f_q))mstore(add(transcript, 0xda0), mulmod(mload(add(transcript, 0xd80)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0xdc0), addmod(mload(add(transcript, 0x5c0)), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q))mstore(add(transcript, 0xde0), mulmod(mload(add(transcript, 0xd80)), 16553167948716468074998850291160946772606011499093267774599468837293218566225, f_q))mstore(add(transcript, 0xe00), addmod(mload(add(transcript, 0x5c0)), 5335074923122807147247555454096328315942352901322766569098735349282589929392, f_q))mstore(add(transcript, 0xe20), mulmod(mload(add(transcript, 0xd80)), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q))mstore(add(transcript, 0xe40), addmod(mload(add(transcript, 0x5c0)), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q))mstore(add(transcript, 0xe60), mulmod(mload(add(transcript, 0xd80)), 18302882236472339419631414285403968768409802182737928837767912484847322191909, f_q))mstore(add(transcript, 0xe80), addmod(mload(add(transcript, 0x5c0)), 3585360635366935802614991459853306320138562217678105505930291701728486303708, f_q))mstore(add(transcript, 0xea0), mulmod(mload(add(transcript, 0xd80)), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q))mstore(add(transcript, 0xec0), addmod(mload(add(transcript, 0x5c0)), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q))mstore(add(transcript, 0xee0), mulmod(mload(add(transcript, 0xd80)), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q))mstore(add(transcript, 0xf00), addmod(mload(add(transcript, 0x5c0)), 2443549375371310428912721262786463219152954447257270263406653762796473870823, f_q))mstore(add(transcript, 0xf20), mulmod(mload(add(transcript, 0xd80)), 1, f_q))mstore(add(transcript, 0xf40), addmod(mload(add(transcript, 0x5c0)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q))mstore(add(transcript, 0xf60), mulmod(mload(add(transcript, 0xd80)), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q))mstore(add(transcript, 0xf80), addmod(mload(add(transcript, 0x5c0)), 12492139669565018291300799122050748188086418716150538504685768693941615300514, f_q))mstore(add(transcript, 0xfa0), mulmod(mload(add(transcript, 0xd80)), 19380560087801265747114831706136320509424814679569278834391540198888293317501, f_q))mstore(add(transcript, 0xfc0), addmod(mload(add(transcript, 0x5c0)), 2507682784038009475131574039120954579123549720846755509306663987687515178116, f_q))mstore(add(transcript, 0xfe0), mulmod(mload(add(transcript, 0xd80)), 11322573621548282883955256084347882816245615123967859588024989498742209856615, f_q))mstore(add(transcript, 0x1000), addmod(mload(add(transcript, 0x5c0)), 10565669250290992338291149660909392272302749276448174755673214687833598639002, f_q)){ let prod := mload(add(transcript, 0xdc0)) prod := mulmod(mload(add(transcript, 0xe00)), prod, f_q) mstore(add(transcript, 0x1020), prod) prod := mulmod(mload(add(transcript, 0xe40)), prod, f_q) mstore(add(transcript, 0x1040), prod) prod := mulmod(mload(add(transcript, 0xe80)), prod, f_q) mstore(add(transcript, 0x1060), prod) prod := mulmod(mload(add(transcript, 0xec0)), prod, f_q) mstore(add(transcript, 0x1080), prod) prod := mulmod(mload(add(transcript, 0xf00)), prod, f_q) mstore(add(transcript, 0x10a0), prod) prod := mulmod(mload(add(transcript, 0xf40)), prod, f_q) mstore(add(transcript, 0x10c0), prod) prod := mulmod(mload(add(transcript, 0xf80)), prod, f_q) mstore(add(transcript, 0x10e0), prod) prod := mulmod(mload(add(transcript, 0xfc0)), prod, f_q) mstore(add(transcript, 0x1100), prod) prod := mulmod(mload(add(transcript, 0x1000)), prod, f_q) mstore(add(transcript, 0x1120), prod) prod := mulmod(mload(add(transcript, 0xd60)), prod, f_q) mstore(add(transcript, 0x1140), prod) }mstore(add(transcript, 0x1180), 32)mstore(add(transcript, 0x11a0), 32)mstore(add(transcript, 0x11c0), 32)mstore(add(transcript, 0x11e0), mload(add(transcript, 0x1140)))mstore(add(transcript, 0x1200), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x1220), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x1180), 0xc0, add(transcript, 0x1160), 0x20), 1), success){ let inv := mload(add(transcript, 0x1160)) let v v := mload(add(transcript, 0xd60)) mstore(add(transcript, 0xd60), mulmod(mload(add(transcript, 0x1120)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x1000)) mstore(add(transcript, 0x1000), mulmod(mload(add(transcript, 0x1100)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xfc0)) mstore(add(transcript, 0xfc0), mulmod(mload(add(transcript, 0x10e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf80)) mstore(add(transcript, 0xf80), mulmod(mload(add(transcript, 0x10c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf40)) mstore(add(transcript, 0xf40), mulmod(mload(add(transcript, 0x10a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xf00)) mstore(add(transcript, 0xf00), mulmod(mload(add(transcript, 0x1080)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xec0)) mstore(add(transcript, 0xec0), mulmod(mload(add(transcript, 0x1060)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe80)) mstore(add(transcript, 0xe80), mulmod(mload(add(transcript, 0x1040)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe40)) mstore(add(transcript, 0xe40), mulmod(mload(add(transcript, 0x1020)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0xe00)) mstore(add(transcript, 0xe00), mulmod(mload(add(transcript, 0xdc0)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0xdc0), inv) }mstore(add(transcript, 0x1240), mulmod(mload(add(transcript, 0xda0)), mload(add(transcript, 0xdc0)), f_q))mstore(add(transcript, 0x1260), mulmod(mload(add(transcript, 0xde0)), mload(add(transcript, 0xe00)), f_q))mstore(add(transcript, 0x1280), mulmod(mload(add(transcript, 0xe20)), mload(add(transcript, 0xe40)), f_q))mstore(add(transcript, 0x12a0), mulmod(mload(add(transcript, 0xe60)), mload(add(transcript, 0xe80)), f_q))mstore(add(transcript, 0x12c0), mulmod(mload(add(transcript, 0xea0)), mload(add(transcript, 0xec0)), f_q))mstore(add(transcript, 0x12e0), mulmod(mload(add(transcript, 0xee0)), mload(add(transcript, 0xf00)), f_q))mstore(add(transcript, 0x1300), mulmod(mload(add(transcript, 0xf20)), mload(add(transcript, 0xf40)), f_q))mstore(add(transcript, 0x1320), mulmod(mload(add(transcript, 0xf60)), mload(add(transcript, 0xf80)), f_q))mstore(add(transcript, 0x1340), mulmod(mload(add(transcript, 0xfa0)), mload(add(transcript, 0xfc0)), f_q))mstore(add(transcript, 0x1360), mulmod(mload(add(transcript, 0xfe0)), mload(add(transcript, 0x1000)), f_q)){ let result := mulmod(mload(add(transcript, 0x1300)), mload(add(transcript, 0x20)), f_q)result := addmod(mulmod(mload(add(transcript, 0x1320)), mload(add(transcript, 0x40)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x1340)), mload(add(transcript, 0x60)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x1360)), mload(add(transcript, 0x80)), f_q), result, f_q)mstore(add(transcript, 0x1380), result) }mstore(add(transcript, 0x13a0), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x720)), f_q))mstore(add(transcript, 0x13c0), mulmod(mload(add(transcript, 0x13a0)), mload(add(transcript, 0x13a0)), f_q))mstore(add(transcript, 0x13e0), mulmod(mload(add(transcript, 0x13c0)), mload(add(transcript, 0x13c0)), f_q))mstore(add(transcript, 0x1400), mulmod(mload(add(transcript, 0x13a0)), mload(add(transcript, 0x13e0)), f_q))mstore(add(transcript, 0x1420), mulmod(mload(add(transcript, 0x1400)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x1440), addmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x740)), f_q))mstore(add(transcript, 0x1460), mulmod(mload(add(transcript, 0x1440)), mload(add(transcript, 0x1440)), f_q))mstore(add(transcript, 0x1480), mulmod(mload(add(transcript, 0x1460)), mload(add(transcript, 0x1460)), f_q))mstore(add(transcript, 0x14a0), mulmod(mload(add(transcript, 0x1440)), mload(add(transcript, 0x1480)), f_q))mstore(add(transcript, 0x14c0), mulmod(mload(add(transcript, 0x14a0)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x14e0), addmod(mload(add(transcript, 0x1420)), mload(add(transcript, 0x14c0)), f_q))mstore(add(transcript, 0x1500), addmod(mload(add(transcript, 0x14e0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1520), mulmod(mload(add(transcript, 0x1500)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1540), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1520)), f_q))mstore(add(transcript, 0x1560), mulmod(mload(add(transcript, 0x1400)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x1580), mulmod(mload(add(transcript, 0x14a0)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x15a0), addmod(mload(add(transcript, 0x1560)), mload(add(transcript, 0x1580)), f_q))mstore(add(transcript, 0x15c0), addmod(mload(add(transcript, 0x15a0)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x15e0), mulmod(mload(add(transcript, 0x15c0)), mload(add(transcript, 0x7c0)), f_q))mstore(add(transcript, 0x1600), addmod(mload(add(transcript, 0x1540)), mload(add(transcript, 0x15e0)), f_q))mstore(add(transcript, 0x1620), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1600)), f_q))mstore(add(transcript, 0x1640), addmod(mload(add(transcript, 0x1400)), sub(f_q, mload(add(transcript, 0x680))), f_q))mstore(add(transcript, 0x1660), mulmod(mload(add(transcript, 0x1640)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1680), addmod(mload(add(transcript, 0x1620)), mload(add(transcript, 0x1660)), f_q))mstore(add(transcript, 0x16a0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1680)), f_q))mstore(add(transcript, 0x16c0), mulmod(mload(add(transcript, 0x680)), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q))mstore(add(transcript, 0x16e0), mulmod(mload(add(transcript, 0x1440)), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q))mstore(add(transcript, 0x1700), addmod(mload(add(transcript, 0x16c0)), mload(add(transcript, 0x16e0)), f_q))mstore(add(transcript, 0x1720), addmod(mload(add(transcript, 0x1700)), mload(add(transcript, 0x6e0)), f_q))mstore(add(transcript, 0x1740), mulmod(mload(add(transcript, 0x1720)), mload(add(transcript, 0x1720)), f_q))mstore(add(transcript, 0x1760), mulmod(mload(add(transcript, 0x1740)), mload(add(transcript, 0x1740)), f_q))mstore(add(transcript, 0x1780), mulmod(mload(add(transcript, 0x1720)), mload(add(transcript, 0x1760)), f_q))mstore(add(transcript, 0x17a0), mulmod(mload(add(transcript, 0x640)), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q))mstore(add(transcript, 0x17c0), mulmod(mload(add(transcript, 0x660)), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q))mstore(add(transcript, 0x17e0), addmod(mload(add(transcript, 0x17a0)), mload(add(transcript, 0x17c0)), f_q))mstore(add(transcript, 0x1800), addmod(mload(add(transcript, 0x1780)), sub(f_q, mload(add(transcript, 0x17e0))), f_q))mstore(add(transcript, 0x1820), mulmod(mload(add(transcript, 0x1800)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x1840), addmod(mload(add(transcript, 0x16a0)), mload(add(transcript, 0x1820)), f_q))mstore(add(transcript, 0x1860), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1840)), f_q))mstore(add(transcript, 0x1880), mulmod(mload(add(transcript, 0x680)), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q))mstore(add(transcript, 0x18a0), mulmod(mload(add(transcript, 0x1440)), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q))mstore(add(transcript, 0x18c0), addmod(mload(add(transcript, 0x1880)), mload(add(transcript, 0x18a0)), f_q))mstore(add(transcript, 0x18e0), addmod(mload(add(transcript, 0x18c0)), mload(add(transcript, 0x700)), f_q))mstore(add(transcript, 0x1900), mulmod(mload(add(transcript, 0x640)), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q))mstore(add(transcript, 0x1920), mulmod(mload(add(transcript, 0x660)), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q))mstore(add(transcript, 0x1940), addmod(mload(add(transcript, 0x1900)), mload(add(transcript, 0x1920)), f_q))mstore(add(transcript, 0x1960), addmod(mload(add(transcript, 0x18e0)), sub(f_q, mload(add(transcript, 0x1940))), f_q))mstore(add(transcript, 0x1980), mulmod(mload(add(transcript, 0x1960)), mload(add(transcript, 0x7e0)), f_q))mstore(add(transcript, 0x19a0), addmod(mload(add(transcript, 0x1860)), mload(add(transcript, 0x1980)), f_q))mstore(add(transcript, 0x19c0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x19a0)), f_q))mstore(add(transcript, 0x19e0), addmod(1, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1a00), mulmod(mload(add(transcript, 0x19e0)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1a20), addmod(2, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1a40), mulmod(mload(add(transcript, 0x1a20)), mload(add(transcript, 0x1a00)), f_q))mstore(add(transcript, 0x1a60), addmod(4, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1a80), mulmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x1a40)), f_q))mstore(add(transcript, 0x1aa0), addmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x600)), f_q))mstore(add(transcript, 0x1ac0), addmod(mload(add(transcript, 0x1aa0)), sub(f_q, mload(add(transcript, 0x640))), f_q))mstore(add(transcript, 0x1ae0), mulmod(mload(add(transcript, 0x1ac0)), mload(add(transcript, 0x1a80)), f_q))mstore(add(transcript, 0x1b00), addmod(mload(add(transcript, 0x19c0)), mload(add(transcript, 0x1ae0)), f_q))mstore(add(transcript, 0x1b20), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1b00)), f_q))mstore(add(transcript, 0x1b40), addmod(mload(add(transcript, 0x6a0)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x1b60), mulmod(mload(add(transcript, 0x1b40)), mload(add(transcript, 0x1a80)), f_q))mstore(add(transcript, 0x1b80), addmod(mload(add(transcript, 0x1b20)), mload(add(transcript, 0x1b60)), f_q))mstore(add(transcript, 0x1ba0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1b80)), f_q))mstore(add(transcript, 0x1bc0), mulmod(mload(add(transcript, 0x1500)), mload(add(transcript, 0x800)), f_q))mstore(add(transcript, 0x1be0), addmod(mload(add(transcript, 0x1ba0)), mload(add(transcript, 0x1bc0)), f_q))mstore(add(transcript, 0x1c00), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1be0)), f_q))mstore(add(transcript, 0x1c20), mulmod(mload(add(transcript, 0x15c0)), mload(add(transcript, 0x800)), f_q))mstore(add(transcript, 0x1c40), addmod(mload(add(transcript, 0x1c00)), mload(add(transcript, 0x1c20)), f_q))mstore(add(transcript, 0x1c60), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1c40)), f_q))mstore(add(transcript, 0x1c80), mulmod(mload(add(transcript, 0x1640)), mload(add(transcript, 0x820)), f_q))mstore(add(transcript, 0x1ca0), addmod(mload(add(transcript, 0x1c60)), mload(add(transcript, 0x1c80)), f_q))mstore(add(transcript, 0x1cc0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1ca0)), f_q))mstore(add(transcript, 0x1ce0), mulmod(mload(add(transcript, 0x1800)), mload(add(transcript, 0x820)), f_q))mstore(add(transcript, 0x1d00), addmod(mload(add(transcript, 0x1cc0)), mload(add(transcript, 0x1ce0)), f_q))mstore(add(transcript, 0x1d20), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1d00)), f_q))mstore(add(transcript, 0x1d40), mulmod(mload(add(transcript, 0x1960)), mload(add(transcript, 0x820)), f_q))mstore(add(transcript, 0x1d60), addmod(mload(add(transcript, 0x1d20)), mload(add(transcript, 0x1d40)), f_q))mstore(add(transcript, 0x1d80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1d60)), f_q))mstore(add(transcript, 0x1da0), addmod(3, sub(f_q, mload(add(transcript, 0x7a0))), f_q))mstore(add(transcript, 0x1dc0), mulmod(mload(add(transcript, 0x1da0)), mload(add(transcript, 0x1a40)), f_q))mstore(add(transcript, 0x1de0), mulmod(mload(add(transcript, 0x1ac0)), mload(add(transcript, 0x1dc0)), f_q))mstore(add(transcript, 0x1e00), addmod(mload(add(transcript, 0x1d80)), mload(add(transcript, 0x1de0)), f_q))mstore(add(transcript, 0x1e20), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1e00)), f_q))mstore(add(transcript, 0x1e40), mulmod(mload(add(transcript, 0x1b40)), mload(add(transcript, 0x1dc0)), f_q))mstore(add(transcript, 0x1e60), addmod(mload(add(transcript, 0x1e20)), mload(add(transcript, 0x1e40)), f_q))mstore(add(transcript, 0x1e80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1e60)), f_q))mstore(add(transcript, 0x1ea0), mulmod(mload(add(transcript, 0x1a20)), mload(add(transcript, 0x7a0)), f_q))mstore(add(transcript, 0x1ec0), mulmod(mload(add(transcript, 0x1da0)), mload(add(transcript, 0x1ea0)), f_q))mstore(add(transcript, 0x1ee0), mulmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x1ec0)), f_q))mstore(add(transcript, 0x1f00), mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x1ee0)), f_q))mstore(add(transcript, 0x1f20), addmod(1, sub(f_q, mload(add(transcript, 0x680))), f_q))mstore(add(transcript, 0x1f40), mulmod(mload(add(transcript, 0x1f20)), mload(add(transcript, 0x1f00)), f_q))mstore(add(transcript, 0x1f60), addmod(mload(add(transcript, 0x1e80)), mload(add(transcript, 0x1f40)), f_q))mstore(add(transcript, 0x1f80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x1f60)), f_q))mstore(add(transcript, 0x1fa0), mulmod(2, mload(add(transcript, 0x680)), f_q))mstore(add(transcript, 0x1fc0), addmod(mload(add(transcript, 0x620)), sub(f_q, mload(add(transcript, 0x600))), f_q))mstore(add(transcript, 0x1fe0), mulmod(mload(add(transcript, 0x1fc0)), mload(add(transcript, 0x1fa0)), f_q))mstore(add(transcript, 0x2000), addmod(mload(add(transcript, 0x640)), sub(f_q, mload(add(transcript, 0x600))), f_q))mstore(add(transcript, 0x2020), addmod(mload(add(transcript, 0x1fe0)), sub(f_q, mload(add(transcript, 0x2000))), f_q))mstore(add(transcript, 0x2040), addmod(mload(add(transcript, 0x620)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x2060), addmod(mload(add(transcript, 0x2020)), sub(f_q, mload(add(transcript, 0x2040))), f_q))mstore(add(transcript, 0x2080), mulmod(mload(add(transcript, 0x2060)), mload(add(transcript, 0x1ee0)), f_q))mstore(add(transcript, 0x20a0), addmod(mload(add(transcript, 0x1f80)), mload(add(transcript, 0x2080)), f_q))mstore(add(transcript, 0x20c0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x20a0)), f_q))mstore(add(transcript, 0x20e0), mulmod(mload(add(transcript, 0x1da0)), mload(add(transcript, 0x1a00)), f_q))mstore(add(transcript, 0x2100), mulmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x20e0)), f_q))mstore(add(transcript, 0x2120), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x620)), f_q))mstore(add(transcript, 0x2140), addmod(mload(add(transcript, 0x2120)), sub(f_q, mload(add(transcript, 0x680))), f_q))mstore(add(transcript, 0x2160), mulmod(mload(add(transcript, 0x2140)), mload(add(transcript, 0x2100)), f_q))mstore(add(transcript, 0x2180), addmod(mload(add(transcript, 0x20c0)), mload(add(transcript, 0x2160)), f_q))mstore(add(transcript, 0x21a0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2180)), f_q))mstore(add(transcript, 0x21c0), addmod(mload(add(transcript, 0x21a0)), mload(add(transcript, 0x2160)), f_q))mstore(add(transcript, 0x21e0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x21c0)), f_q))mstore(add(transcript, 0x2200), addmod(1, sub(f_q, mload(add(transcript, 0x920))), f_q))mstore(add(transcript, 0x2220), mulmod(mload(add(transcript, 0x2200)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x2240), addmod(mload(add(transcript, 0x21e0)), mload(add(transcript, 0x2220)), f_q))mstore(add(transcript, 0x2260), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2240)), f_q))mstore(add(transcript, 0x2280), mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x22a0), addmod(mload(add(transcript, 0x2280)), sub(f_q, mload(add(transcript, 0x980))), f_q))mstore(add(transcript, 0x22c0), mulmod(mload(add(transcript, 0x22a0)), mload(add(transcript, 0x1240)), f_q))mstore(add(transcript, 0x22e0), addmod(mload(add(transcript, 0x2260)), mload(add(transcript, 0x22c0)), f_q))mstore(add(transcript, 0x2300), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x22e0)), f_q))mstore(add(transcript, 0x2320), addmod(mload(add(transcript, 0x980)), sub(f_q, mload(add(transcript, 0x960))), f_q))mstore(add(transcript, 0x2340), mulmod(mload(add(transcript, 0x2320)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x2360), addmod(mload(add(transcript, 0x2300)), mload(add(transcript, 0x2340)), f_q))mstore(add(transcript, 0x2380), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2360)), f_q))mstore(add(transcript, 0x23a0), addmod(1, sub(f_q, mload(add(transcript, 0x1240))), f_q))mstore(add(transcript, 0x23c0), addmod(mload(add(transcript, 0x1260)), mload(add(transcript, 0x1280)), f_q))mstore(add(transcript, 0x23e0), addmod(mload(add(transcript, 0x23c0)), mload(add(transcript, 0x12a0)), f_q))mstore(add(transcript, 0x2400), addmod(mload(add(transcript, 0x23e0)), mload(add(transcript, 0x12c0)), f_q))mstore(add(transcript, 0x2420), addmod(mload(add(transcript, 0x2400)), mload(add(transcript, 0x12e0)), f_q))mstore(add(transcript, 0x2440), addmod(mload(add(transcript, 0x23a0)), sub(f_q, mload(add(transcript, 0x2420))), f_q))mstore(add(transcript, 0x2460), mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2480), addmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x2460)), f_q))mstore(add(transcript, 0x24a0), addmod(mload(add(transcript, 0x2480)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x24c0), mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x24e0), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x2500), addmod(mload(add(transcript, 0x24e0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2520), mulmod(mload(add(transcript, 0x2500)), mload(add(transcript, 0x24a0)), f_q))mstore(add(transcript, 0x2540), mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2560), addmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x2540)), f_q))mstore(add(transcript, 0x2580), addmod(mload(add(transcript, 0x2560)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x25a0), mulmod(mload(add(transcript, 0x2580)), mload(add(transcript, 0x2520)), f_q))mstore(add(transcript, 0x25c0), mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x25e0), addmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x25c0)), f_q))mstore(add(transcript, 0x2600), addmod(mload(add(transcript, 0x25e0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2620), mulmod(mload(add(transcript, 0x2600)), mload(add(transcript, 0x25a0)), f_q))mstore(add(transcript, 0x2640), mulmod(mload(add(transcript, 0x2620)), mload(add(transcript, 0x940)), f_q))mstore(add(transcript, 0x2660), mulmod(1, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2680), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2660)), f_q))mstore(add(transcript, 0x26a0), addmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x2680)), f_q))mstore(add(transcript, 0x26c0), addmod(mload(add(transcript, 0x26a0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x26e0), mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2700), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x26e0)), f_q))mstore(add(transcript, 0x2720), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x2700)), f_q))mstore(add(transcript, 0x2740), addmod(mload(add(transcript, 0x2720)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2760), mulmod(mload(add(transcript, 0x2740)), mload(add(transcript, 0x26c0)), f_q))mstore(add(transcript, 0x2780), mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x27a0), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2780)), f_q))mstore(add(transcript, 0x27c0), addmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x27a0)), f_q))mstore(add(transcript, 0x27e0), addmod(mload(add(transcript, 0x27c0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2800), mulmod(mload(add(transcript, 0x27e0)), mload(add(transcript, 0x2760)), f_q))mstore(add(transcript, 0x2820), mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2840), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2820)), f_q))mstore(add(transcript, 0x2860), addmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x2840)), f_q))mstore(add(transcript, 0x2880), addmod(mload(add(transcript, 0x2860)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x28a0), mulmod(mload(add(transcript, 0x2880)), mload(add(transcript, 0x2800)), f_q))mstore(add(transcript, 0x28c0), mulmod(mload(add(transcript, 0x28a0)), mload(add(transcript, 0x920)), f_q))mstore(add(transcript, 0x28e0), addmod(mload(add(transcript, 0x2640)), sub(f_q, mload(add(transcript, 0x28c0))), f_q))mstore(add(transcript, 0x2900), mulmod(mload(add(transcript, 0x28e0)), mload(add(transcript, 0x2440)), f_q))mstore(add(transcript, 0x2920), addmod(mload(add(transcript, 0x2380)), mload(add(transcript, 0x2900)), f_q))mstore(add(transcript, 0x2940), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2920)), f_q))mstore(add(transcript, 0x2960), mulmod(mload(add(transcript, 0x8e0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2980), addmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x2960)), f_q))mstore(add(transcript, 0x29a0), addmod(mload(add(transcript, 0x2980)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x29c0), mulmod(mload(add(transcript, 0x900)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x29e0), addmod(mload(add(transcript, 0x1380)), mload(add(transcript, 0x29c0)), f_q))mstore(add(transcript, 0x2a00), addmod(mload(add(transcript, 0x29e0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2a20), mulmod(mload(add(transcript, 0x2a00)), mload(add(transcript, 0x29a0)), f_q))mstore(add(transcript, 0x2a40), mulmod(mload(add(transcript, 0x2a20)), mload(add(transcript, 0x9a0)), f_q))mstore(add(transcript, 0x2a60), mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2a80), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2a60)), f_q))mstore(add(transcript, 0x2aa0), addmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x2a80)), f_q))mstore(add(transcript, 0x2ac0), addmod(mload(add(transcript, 0x2aa0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2ae0), mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2b00), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2ae0)), f_q))mstore(add(transcript, 0x2b20), addmod(mload(add(transcript, 0x1380)), mload(add(transcript, 0x2b00)), f_q))mstore(add(transcript, 0x2b40), addmod(mload(add(transcript, 0x2b20)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2b60), mulmod(mload(add(transcript, 0x2b40)), mload(add(transcript, 0x2ac0)), f_q))mstore(add(transcript, 0x2b80), mulmod(mload(add(transcript, 0x2b60)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2ba0), addmod(mload(add(transcript, 0x2a40)), sub(f_q, mload(add(transcript, 0x2b80))), f_q))mstore(add(transcript, 0x2bc0), mulmod(mload(add(transcript, 0x2ba0)), mload(add(transcript, 0x2440)), f_q))mstore(add(transcript, 0x2be0), addmod(mload(add(transcript, 0x2940)), mload(add(transcript, 0x2bc0)), f_q))mstore(add(transcript, 0x2c00), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2be0)), f_q))mstore(add(transcript, 0x2c20), addmod(1, sub(f_q, mload(add(transcript, 0x9c0))), f_q))mstore(add(transcript, 0x2c40), mulmod(mload(add(transcript, 0x2c20)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x2c60), addmod(mload(add(transcript, 0x2c00)), mload(add(transcript, 0x2c40)), f_q))mstore(add(transcript, 0x2c80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2c60)), f_q))mstore(add(transcript, 0x2ca0), mulmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x9c0)), f_q))mstore(add(transcript, 0x2cc0), addmod(mload(add(transcript, 0x2ca0)), sub(f_q, mload(add(transcript, 0x9c0))), f_q))mstore(add(transcript, 0x2ce0), mulmod(mload(add(transcript, 0x2cc0)), mload(add(transcript, 0x1240)), f_q))mstore(add(transcript, 0x2d00), addmod(mload(add(transcript, 0x2c80)), mload(add(transcript, 0x2ce0)), f_q))mstore(add(transcript, 0x2d20), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2d00)), f_q))mstore(add(transcript, 0x2d40), addmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2d60), mulmod(mload(add(transcript, 0x2d40)), mload(add(transcript, 0x9e0)), f_q))mstore(add(transcript, 0x2d80), addmod(mload(add(transcript, 0xa40)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2da0), mulmod(mload(add(transcript, 0x2d80)), mload(add(transcript, 0x2d60)), f_q))mstore(add(transcript, 0x2dc0), mulmod(256, mload(add(transcript, 0x640)), f_q))mstore(add(transcript, 0x2de0), addmod(mload(add(transcript, 0x600)), sub(f_q, mload(add(transcript, 0x2dc0))), f_q))mstore(add(transcript, 0x2e00), mulmod(mload(add(transcript, 0x2de0)), mload(add(transcript, 0x780)), f_q))mstore(add(transcript, 0x2e20), addmod(mload(add(transcript, 0x2e00)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2e40), mulmod(mload(add(transcript, 0x2e20)), mload(add(transcript, 0x9c0)), f_q))mstore(add(transcript, 0x2e60), addmod(mload(add(transcript, 0x760)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2e80), mulmod(mload(add(transcript, 0x2e60)), mload(add(transcript, 0x2e40)), f_q))mstore(add(transcript, 0x2ea0), addmod(mload(add(transcript, 0x2da0)), sub(f_q, mload(add(transcript, 0x2e80))), f_q))mstore(add(transcript, 0x2ec0), mulmod(mload(add(transcript, 0x2ea0)), mload(add(transcript, 0x2440)), f_q))mstore(add(transcript, 0x2ee0), addmod(mload(add(transcript, 0x2d20)), mload(add(transcript, 0x2ec0)), f_q))mstore(add(transcript, 0x2f00), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2ee0)), f_q))mstore(add(transcript, 0x2f20), addmod(mload(add(transcript, 0xa00)), sub(f_q, mload(add(transcript, 0xa40))), f_q))mstore(add(transcript, 0x2f40), mulmod(mload(add(transcript, 0x2f20)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x2f60), addmod(mload(add(transcript, 0x2f00)), mload(add(transcript, 0x2f40)), f_q))mstore(add(transcript, 0x2f80), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2f60)), f_q))mstore(add(transcript, 0x2fa0), mulmod(mload(add(transcript, 0x2f20)), mload(add(transcript, 0x2440)), f_q))mstore(add(transcript, 0x2fc0), addmod(mload(add(transcript, 0xa00)), sub(f_q, mload(add(transcript, 0xa20))), f_q))mstore(add(transcript, 0x2fe0), mulmod(mload(add(transcript, 0x2fc0)), mload(add(transcript, 0x2fa0)), f_q))mstore(add(transcript, 0x3000), addmod(mload(add(transcript, 0x2f80)), mload(add(transcript, 0x2fe0)), f_q))mstore(add(transcript, 0x3020), mulmod(mload(add(transcript, 0xd40)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3040), mulmod(mload(add(transcript, 0x3020)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3060), mulmod(mload(add(transcript, 0x3040)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3080), mulmod(mload(add(transcript, 0x3060)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x30a0), mulmod(1, mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x30c0), mulmod(1, mload(add(transcript, 0x3020)), f_q))mstore(add(transcript, 0x30e0), mulmod(1, mload(add(transcript, 0x3040)), f_q))mstore(add(transcript, 0x3100), mulmod(1, mload(add(transcript, 0x3060)), f_q))mstore(add(transcript, 0x3120), mulmod(mload(add(transcript, 0x3000)), mload(add(transcript, 0xd60)), f_q))mstore(add(transcript, 0x3140), mulmod(mload(add(transcript, 0xc00)), mload(add(transcript, 0x5c0)), f_q))mstore(add(transcript, 0x3160), mulmod(mload(add(transcript, 0x5c0)), 1, f_q))mstore(add(transcript, 0x3180), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x3160))), f_q))mstore(add(transcript, 0x31a0), mulmod(mload(add(transcript, 0x5c0)), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q))mstore(add(transcript, 0x31c0), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x31a0))), f_q))mstore(add(transcript, 0x31e0), mulmod(mload(add(transcript, 0x5c0)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0x3200), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x31e0))), f_q))mstore(add(transcript, 0x3220), mulmod(mload(add(transcript, 0x5c0)), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q))mstore(add(transcript, 0x3240), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x3220))), f_q)){ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 14935689044936328720213520384837211407239373163407808768092422456738089171339, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 6952553826902946502032885360420063681308991237008225575605781729837719324278, f_q), f_q), result, f_q)mstore(add(transcript, 0x3260), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 7540907510155698387256503820143330389809914548046512731972450943457626251574, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 17454089668527239794105182244994964593641145239866915085378986192780276655988, f_q), f_q), result, f_q)mstore(add(transcript, 0x3280), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 16765245179638222004592619476379737764479697804128512065226459610007790881832, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 6067403861988280018436561787453590745850405443026581205331008293509136248791, f_q), f_q), result, f_q)mstore(add(transcript, 0x32a0), result) }mstore(add(transcript, 0x32c0), mulmod(1, mload(add(transcript, 0x3180)), f_q))mstore(add(transcript, 0x32e0), mulmod(mload(add(transcript, 0x32c0)), mload(add(transcript, 0x31c0)), f_q))mstore(add(transcript, 0x3300), mulmod(mload(add(transcript, 0x32e0)), mload(add(transcript, 0x3240)), f_q)){ let result := mulmod(mload(add(transcript, 0xb80)), 1, f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q)mstore(add(transcript, 0x3320), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 13346277807347402051479003338644866680074640264080882830084838995653627694322, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 8541965064491873170767402406612408408473724136335151513613365190922180801295, f_q), f_q), result, f_q)mstore(add(transcript, 0x3340), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 9130318747744625055991020866335675116974647447373438669980034404542087728591, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 17654030801727560324741115319652541746559479525075366613702001578587072243451, f_q), f_q), result, f_q)mstore(add(transcript, 0x3360), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0xc00)), 8968217942074169282201771672973351205073655055696863512223304343263448008755, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0xc00)), 15489683287416706862113636648384499783884413315698913841173435408703605255719, f_q), f_q), result, f_q)mstore(add(transcript, 0x3380), result) }mstore(add(transcript, 0x33a0), mulmod(mload(add(transcript, 0x32e0)), mload(add(transcript, 0x3200)), f_q)){ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 12492139669565018291300799122050748188086418716150538504685768693941615300515, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q), result, f_q)mstore(add(transcript, 0x33c0), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 11903785986312266406077180662327481479585495405112251348319099480321708373219, f_q), f_q), result, f_q)mstore(add(transcript, 0x33e0), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 2443549375371310428912721262786463219152954447257270263406653762796473870824, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q), result, f_q)mstore(add(transcript, 0x3400), result) }{ let result := mulmod(mload(add(transcript, 0xb80)), mulmod(mload(add(transcript, 0x5c0)), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q)result := addmod(mulmod(mload(add(transcript, 0x5c0)), mulmod(mload(add(transcript, 0x5c0)), 14519100894475310148599392892084064224530612280553018117484180069202210808887, f_q), f_q), result, f_q)mstore(add(transcript, 0x3420), result) }mstore(add(transcript, 0x3440), mulmod(mload(add(transcript, 0x32c0)), mload(add(transcript, 0x3240)), f_q)){ let prod := mload(add(transcript, 0x3260)) prod := mulmod(mload(add(transcript, 0x3280)), prod, f_q) mstore(add(transcript, 0x3460), prod) prod := mulmod(mload(add(transcript, 0x32a0)), prod, f_q) mstore(add(transcript, 0x3480), prod) prod := mulmod(mload(add(transcript, 0x3320)), prod, f_q) mstore(add(transcript, 0x34a0), prod) prod := mulmod(mload(add(transcript, 0x32c0)), prod, f_q) mstore(add(transcript, 0x34c0), prod) prod := mulmod(mload(add(transcript, 0x3340)), prod, f_q) mstore(add(transcript, 0x34e0), prod) prod := mulmod(mload(add(transcript, 0x3360)), prod, f_q) mstore(add(transcript, 0x3500), prod) prod := mulmod(mload(add(transcript, 0x3380)), prod, f_q) mstore(add(transcript, 0x3520), prod) prod := mulmod(mload(add(transcript, 0x33a0)), prod, f_q) mstore(add(transcript, 0x3540), prod) prod := mulmod(mload(add(transcript, 0x33c0)), prod, f_q) mstore(add(transcript, 0x3560), prod) prod := mulmod(mload(add(transcript, 0x33e0)), prod, f_q) mstore(add(transcript, 0x3580), prod) prod := mulmod(mload(add(transcript, 0x32e0)), prod, f_q) mstore(add(transcript, 0x35a0), prod) prod := mulmod(mload(add(transcript, 0x3400)), prod, f_q) mstore(add(transcript, 0x35c0), prod) prod := mulmod(mload(add(transcript, 0x3420)), prod, f_q) mstore(add(transcript, 0x35e0), prod) prod := mulmod(mload(add(transcript, 0x3440)), prod, f_q) mstore(add(transcript, 0x3600), prod) }mstore(add(transcript, 0x3640), 32)mstore(add(transcript, 0x3660), 32)mstore(add(transcript, 0x3680), 32)mstore(add(transcript, 0x36a0), mload(add(transcript, 0x3600)))mstore(add(transcript, 0x36c0), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x36e0), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x3640), 0xc0, add(transcript, 0x3620), 0x20), 1), success){ let inv := mload(add(transcript, 0x3620)) let v v := mload(add(transcript, 0x3440)) mstore(add(transcript, 0x3440), mulmod(mload(add(transcript, 0x35e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3420)) mstore(add(transcript, 0x3420), mulmod(mload(add(transcript, 0x35c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3400)) mstore(add(transcript, 0x3400), mulmod(mload(add(transcript, 0x35a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x32e0)) mstore(add(transcript, 0x32e0), mulmod(mload(add(transcript, 0x3580)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x33e0)) mstore(add(transcript, 0x33e0), mulmod(mload(add(transcript, 0x3560)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x33c0)) mstore(add(transcript, 0x33c0), mulmod(mload(add(transcript, 0x3540)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x33a0)) mstore(add(transcript, 0x33a0), mulmod(mload(add(transcript, 0x3520)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3380)) mstore(add(transcript, 0x3380), mulmod(mload(add(transcript, 0x3500)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3360)) mstore(add(transcript, 0x3360), mulmod(mload(add(transcript, 0x34e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3340)) mstore(add(transcript, 0x3340), mulmod(mload(add(transcript, 0x34c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x32c0)) mstore(add(transcript, 0x32c0), mulmod(mload(add(transcript, 0x34a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3320)) mstore(add(transcript, 0x3320), mulmod(mload(add(transcript, 0x3480)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x32a0)) mstore(add(transcript, 0x32a0), mulmod(mload(add(transcript, 0x3460)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3280)) mstore(add(transcript, 0x3280), mulmod(mload(add(transcript, 0x3260)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x3260), inv) }{ let result := mload(add(transcript, 0x3260))result := addmod(mload(add(transcript, 0x3280)), result, f_q)result := addmod(mload(add(transcript, 0x32a0)), result, f_q)mstore(add(transcript, 0x3700), result) }mstore(add(transcript, 0x3720), mulmod(mload(add(transcript, 0x3300)), mload(add(transcript, 0x32c0)), f_q)){ let result := mload(add(transcript, 0x3320))mstore(add(transcript, 0x3740), result) }mstore(add(transcript, 0x3760), mulmod(mload(add(transcript, 0x3300)), mload(add(transcript, 0x33a0)), f_q)){ let result := mload(add(transcript, 0x3340))result := addmod(mload(add(transcript, 0x3360)), result, f_q)result := addmod(mload(add(transcript, 0x3380)), result, f_q)mstore(add(transcript, 0x3780), result) }mstore(add(transcript, 0x37a0), mulmod(mload(add(transcript, 0x3300)), mload(add(transcript, 0x32e0)), f_q)){ let result := mload(add(transcript, 0x33c0))result := addmod(mload(add(transcript, 0x33e0)), result, f_q)mstore(add(transcript, 0x37c0), result) }mstore(add(transcript, 0x37e0), mulmod(mload(add(transcript, 0x3300)), mload(add(transcript, 0x3440)), f_q)){ let result := mload(add(transcript, 0x3400))result := addmod(mload(add(transcript, 0x3420)), result, f_q)mstore(add(transcript, 0x3800), result) }{ let prod := mload(add(transcript, 0x3700)) prod := mulmod(mload(add(transcript, 0x3740)), prod, f_q) mstore(add(transcript, 0x3820), prod) prod := mulmod(mload(add(transcript, 0x3780)), prod, f_q) mstore(add(transcript, 0x3840), prod) prod := mulmod(mload(add(transcript, 0x37c0)), prod, f_q) mstore(add(transcript, 0x3860), prod) prod := mulmod(mload(add(transcript, 0x3800)), prod, f_q) mstore(add(transcript, 0x3880), prod) }mstore(add(transcript, 0x38c0), 32)mstore(add(transcript, 0x38e0), 32)mstore(add(transcript, 0x3900), 32)mstore(add(transcript, 0x3920), mload(add(transcript, 0x3880)))mstore(add(transcript, 0x3940), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x3960), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x38c0), 0xc0, add(transcript, 0x38a0), 0x20), 1), success){ let inv := mload(add(transcript, 0x38a0)) let v v := mload(add(transcript, 0x3800)) mstore(add(transcript, 0x3800), mulmod(mload(add(transcript, 0x3860)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x37c0)) mstore(add(transcript, 0x37c0), mulmod(mload(add(transcript, 0x3840)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3780)) mstore(add(transcript, 0x3780), mulmod(mload(add(transcript, 0x3820)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3740)) mstore(add(transcript, 0x3740), mulmod(mload(add(transcript, 0x3700)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x3700), inv) }mstore(add(transcript, 0x3980), mulmod(mload(add(transcript, 0x3720)), mload(add(transcript, 0x3740)), f_q))mstore(add(transcript, 0x39a0), mulmod(mload(add(transcript, 0x3760)), mload(add(transcript, 0x3780)), f_q))mstore(add(transcript, 0x39c0), mulmod(mload(add(transcript, 0x37a0)), mload(add(transcript, 0x37c0)), f_q))mstore(add(transcript, 0x39e0), mulmod(mload(add(transcript, 0x37e0)), mload(add(transcript, 0x3800)), f_q))mstore(add(transcript, 0x3a00), mulmod(mload(add(transcript, 0xa80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3a20), mulmod(mload(add(transcript, 0x3a00)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3a40), mulmod(mload(add(transcript, 0x3a20)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3a60), mulmod(mload(add(transcript, 0x3a40)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3a80), mulmod(mload(add(transcript, 0x3a60)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3aa0), mulmod(mload(add(transcript, 0x3a80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ac0), mulmod(mload(add(transcript, 0x3aa0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ae0), mulmod(mload(add(transcript, 0x3ac0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b00), mulmod(mload(add(transcript, 0x3ae0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b20), mulmod(mload(add(transcript, 0x3b00)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b40), mulmod(mload(add(transcript, 0x3b20)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b60), mulmod(mload(add(transcript, 0x3b40)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3b80), mulmod(mload(add(transcript, 0x3b60)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ba0), mulmod(mload(add(transcript, 0x3b80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3bc0), mulmod(mload(add(transcript, 0x3ba0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3be0), mulmod(mload(add(transcript, 0x3bc0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c00), mulmod(mload(add(transcript, 0x3be0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c20), mulmod(mload(add(transcript, 0x3c00)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c40), mulmod(mload(add(transcript, 0x3c20)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c60), mulmod(mload(add(transcript, 0x3c40)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3c80), mulmod(mload(add(transcript, 0xae0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3ca0), mulmod(mload(add(transcript, 0x3c80)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3cc0), mulmod(mload(add(transcript, 0x3ca0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3ce0), mulmod(mload(add(transcript, 0x3cc0)), mload(add(transcript, 0xae0)), f_q)){ let result := mulmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x3260)), f_q)result := addmod(mulmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x3280)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x32a0)), f_q), result, f_q)mstore(add(transcript, 0x3d00), result) }mstore(add(transcript, 0x3d20), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x3d40), mulmod(sub(f_q, mload(add(transcript, 0x3d20))), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x3260)), f_q)result := addmod(mulmod(mload(add(transcript, 0x660)), mload(add(transcript, 0x3280)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x32a0)), f_q), result, f_q)mstore(add(transcript, 0x3d60), result) }mstore(add(transcript, 0x3d80), mulmod(mload(add(transcript, 0x3d60)), mload(add(transcript, 0x3700)), f_q))mstore(add(transcript, 0x3da0), mulmod(sub(f_q, mload(add(transcript, 0x3d80))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3dc0), mulmod(1, mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3de0), addmod(mload(add(transcript, 0x3d40)), mload(add(transcript, 0x3da0)), f_q))mstore(add(transcript, 0x3e00), mulmod(mload(add(transcript, 0x3de0)), 1, f_q))mstore(add(transcript, 0x3e20), mulmod(mload(add(transcript, 0x3dc0)), 1, f_q))mstore(add(transcript, 0x3e40), mulmod(1, mload(add(transcript, 0x3720)), f_q)){ let result := mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x3e60), result) }mstore(add(transcript, 0x3e80), mulmod(mload(add(transcript, 0x3e60)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x3ea0), mulmod(sub(f_q, mload(add(transcript, 0x3e80))), 1, f_q))mstore(add(transcript, 0x3ec0), mulmod(mload(add(transcript, 0x3e40)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0xa40)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x3ee0), result) }mstore(add(transcript, 0x3f00), mulmod(mload(add(transcript, 0x3ee0)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x3f20), mulmod(sub(f_q, mload(add(transcript, 0x3f00))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3f40), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3f60), addmod(mload(add(transcript, 0x3ea0)), mload(add(transcript, 0x3f20)), f_q)){ let result := mulmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x3f80), result) }mstore(add(transcript, 0x3fa0), mulmod(mload(add(transcript, 0x3f80)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x3fc0), mulmod(sub(f_q, mload(add(transcript, 0x3fa0))), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x3fe0), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4000), addmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3fc0)), f_q)){ let result := mulmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4020), result) }mstore(add(transcript, 0x4040), mulmod(mload(add(transcript, 0x4020)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4060), mulmod(sub(f_q, mload(add(transcript, 0x4040))), mload(add(transcript, 0x3a20)), f_q))mstore(add(transcript, 0x4080), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3a20)), f_q))mstore(add(transcript, 0x40a0), addmod(mload(add(transcript, 0x4000)), mload(add(transcript, 0x4060)), f_q)){ let result := mulmod(mload(add(transcript, 0x720)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x40c0), result) }mstore(add(transcript, 0x40e0), mulmod(mload(add(transcript, 0x40c0)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4100), mulmod(sub(f_q, mload(add(transcript, 0x40e0))), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x4120), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x4140), addmod(mload(add(transcript, 0x40a0)), mload(add(transcript, 0x4100)), f_q)){ let result := mulmod(mload(add(transcript, 0x740)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4160), result) }mstore(add(transcript, 0x4180), mulmod(mload(add(transcript, 0x4160)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x41a0), mulmod(sub(f_q, mload(add(transcript, 0x4180))), mload(add(transcript, 0x3a60)), f_q))mstore(add(transcript, 0x41c0), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3a60)), f_q))mstore(add(transcript, 0x41e0), addmod(mload(add(transcript, 0x4140)), mload(add(transcript, 0x41a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x760)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4200), result) }mstore(add(transcript, 0x4220), mulmod(mload(add(transcript, 0x4200)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4240), mulmod(sub(f_q, mload(add(transcript, 0x4220))), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4260), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4280), addmod(mload(add(transcript, 0x41e0)), mload(add(transcript, 0x4240)), f_q)){ let result := mulmod(mload(add(transcript, 0x780)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x42a0), result) }mstore(add(transcript, 0x42c0), mulmod(mload(add(transcript, 0x42a0)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x42e0), mulmod(sub(f_q, mload(add(transcript, 0x42c0))), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4300), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4320), addmod(mload(add(transcript, 0x4280)), mload(add(transcript, 0x42e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x7a0)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4340), result) }mstore(add(transcript, 0x4360), mulmod(mload(add(transcript, 0x4340)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4380), mulmod(sub(f_q, mload(add(transcript, 0x4360))), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x43a0), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x43c0), addmod(mload(add(transcript, 0x4320)), mload(add(transcript, 0x4380)), f_q)){ let result := mulmod(mload(add(transcript, 0x7c0)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x43e0), result) }mstore(add(transcript, 0x4400), mulmod(mload(add(transcript, 0x43e0)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4420), mulmod(sub(f_q, mload(add(transcript, 0x4400))), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4440), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4460), addmod(mload(add(transcript, 0x43c0)), mload(add(transcript, 0x4420)), f_q)){ let result := mulmod(mload(add(transcript, 0x7e0)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4480), result) }mstore(add(transcript, 0x44a0), mulmod(mload(add(transcript, 0x4480)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x44c0), mulmod(sub(f_q, mload(add(transcript, 0x44a0))), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x44e0), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x4500), addmod(mload(add(transcript, 0x4460)), mload(add(transcript, 0x44c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x800)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4520), result) }mstore(add(transcript, 0x4540), mulmod(mload(add(transcript, 0x4520)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4560), mulmod(sub(f_q, mload(add(transcript, 0x4540))), mload(add(transcript, 0x3b20)), f_q))mstore(add(transcript, 0x4580), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3b20)), f_q))mstore(add(transcript, 0x45a0), addmod(mload(add(transcript, 0x4500)), mload(add(transcript, 0x4560)), f_q)){ let result := mulmod(mload(add(transcript, 0x820)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x45c0), result) }mstore(add(transcript, 0x45e0), mulmod(mload(add(transcript, 0x45c0)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4600), mulmod(sub(f_q, mload(add(transcript, 0x45e0))), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4620), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4640), addmod(mload(add(transcript, 0x45a0)), mload(add(transcript, 0x4600)), f_q)){ let result := mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4660), result) }mstore(add(transcript, 0x4680), mulmod(mload(add(transcript, 0x4660)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x46a0), mulmod(sub(f_q, mload(add(transcript, 0x4680))), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x46c0), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x46e0), addmod(mload(add(transcript, 0x4640)), mload(add(transcript, 0x46a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4700), result) }mstore(add(transcript, 0x4720), mulmod(mload(add(transcript, 0x4700)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4740), mulmod(sub(f_q, mload(add(transcript, 0x4720))), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x4760), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x4780), addmod(mload(add(transcript, 0x46e0)), mload(add(transcript, 0x4740)), f_q)){ let result := mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x47a0), result) }mstore(add(transcript, 0x47c0), mulmod(mload(add(transcript, 0x47a0)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x47e0), mulmod(sub(f_q, mload(add(transcript, 0x47c0))), mload(add(transcript, 0x3ba0)), f_q))mstore(add(transcript, 0x4800), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3ba0)), f_q))mstore(add(transcript, 0x4820), addmod(mload(add(transcript, 0x4780)), mload(add(transcript, 0x47e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4840), result) }mstore(add(transcript, 0x4860), mulmod(mload(add(transcript, 0x4840)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4880), mulmod(sub(f_q, mload(add(transcript, 0x4860))), mload(add(transcript, 0x3bc0)), f_q))mstore(add(transcript, 0x48a0), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3bc0)), f_q))mstore(add(transcript, 0x48c0), addmod(mload(add(transcript, 0x4820)), mload(add(transcript, 0x4880)), f_q)){ let result := mulmod(mload(add(transcript, 0x8e0)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x48e0), result) }mstore(add(transcript, 0x4900), mulmod(mload(add(transcript, 0x48e0)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4920), mulmod(sub(f_q, mload(add(transcript, 0x4900))), mload(add(transcript, 0x3be0)), f_q))mstore(add(transcript, 0x4940), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3be0)), f_q))mstore(add(transcript, 0x4960), addmod(mload(add(transcript, 0x48c0)), mload(add(transcript, 0x4920)), f_q)){ let result := mulmod(mload(add(transcript, 0x900)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4980), result) }mstore(add(transcript, 0x49a0), mulmod(mload(add(transcript, 0x4980)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x49c0), mulmod(sub(f_q, mload(add(transcript, 0x49a0))), mload(add(transcript, 0x3c00)), f_q))mstore(add(transcript, 0x49e0), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3c00)), f_q))mstore(add(transcript, 0x4a00), addmod(mload(add(transcript, 0x4960)), mload(add(transcript, 0x49c0)), f_q))mstore(add(transcript, 0x4a20), mulmod(mload(add(transcript, 0x30a0)), mload(add(transcript, 0x3720)), f_q))mstore(add(transcript, 0x4a40), mulmod(mload(add(transcript, 0x30c0)), mload(add(transcript, 0x3720)), f_q))mstore(add(transcript, 0x4a60), mulmod(mload(add(transcript, 0x30e0)), mload(add(transcript, 0x3720)), f_q))mstore(add(transcript, 0x4a80), mulmod(mload(add(transcript, 0x3100)), mload(add(transcript, 0x3720)), f_q)){ let result := mulmod(mload(add(transcript, 0x3120)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4aa0), result) }mstore(add(transcript, 0x4ac0), mulmod(mload(add(transcript, 0x4aa0)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4ae0), mulmod(sub(f_q, mload(add(transcript, 0x4ac0))), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x4b00), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x4b20), mulmod(mload(add(transcript, 0x4a20)), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x4b40), mulmod(mload(add(transcript, 0x4a40)), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x4b60), mulmod(mload(add(transcript, 0x4a60)), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x4b80), mulmod(mload(add(transcript, 0x4a80)), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x4ba0), addmod(mload(add(transcript, 0x4a00)), mload(add(transcript, 0x4ae0)), f_q)){ let result := mulmod(mload(add(transcript, 0x840)), mload(add(transcript, 0x3320)), f_q)mstore(add(transcript, 0x4bc0), result) }mstore(add(transcript, 0x4be0), mulmod(mload(add(transcript, 0x4bc0)), mload(add(transcript, 0x3980)), f_q))mstore(add(transcript, 0x4c00), mulmod(sub(f_q, mload(add(transcript, 0x4be0))), mload(add(transcript, 0x3c40)), f_q))mstore(add(transcript, 0x4c20), mulmod(mload(add(transcript, 0x3e40)), mload(add(transcript, 0x3c40)), f_q))mstore(add(transcript, 0x4c40), addmod(mload(add(transcript, 0x4ba0)), mload(add(transcript, 0x4c00)), f_q))mstore(add(transcript, 0x4c60), mulmod(mload(add(transcript, 0x4c40)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4c80), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ca0), mulmod(mload(add(transcript, 0x3f40)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4cc0), mulmod(mload(add(transcript, 0x3fe0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ce0), mulmod(mload(add(transcript, 0x4080)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d00), mulmod(mload(add(transcript, 0x4120)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d20), mulmod(mload(add(transcript, 0x41c0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d40), mulmod(mload(add(transcript, 0x4260)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d60), mulmod(mload(add(transcript, 0x4300)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d80), mulmod(mload(add(transcript, 0x43a0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4da0), mulmod(mload(add(transcript, 0x4440)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4dc0), mulmod(mload(add(transcript, 0x44e0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4de0), mulmod(mload(add(transcript, 0x4580)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e00), mulmod(mload(add(transcript, 0x4620)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e20), mulmod(mload(add(transcript, 0x46c0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e40), mulmod(mload(add(transcript, 0x4760)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e60), mulmod(mload(add(transcript, 0x4800)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e80), mulmod(mload(add(transcript, 0x48a0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ea0), mulmod(mload(add(transcript, 0x4940)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ec0), mulmod(mload(add(transcript, 0x49e0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ee0), mulmod(mload(add(transcript, 0x4b00)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f00), mulmod(mload(add(transcript, 0x4b20)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f20), mulmod(mload(add(transcript, 0x4b40)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f40), mulmod(mload(add(transcript, 0x4b60)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f60), mulmod(mload(add(transcript, 0x4b80)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f80), mulmod(mload(add(transcript, 0x4c20)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4fa0), addmod(mload(add(transcript, 0x3e00)), mload(add(transcript, 0x4c60)), f_q))mstore(add(transcript, 0x4fc0), mulmod(1, mload(add(transcript, 0x3760)), f_q)){ let result := mulmod(mload(add(transcript, 0x920)), mload(add(transcript, 0x3340)), f_q)result := addmod(mulmod(mload(add(transcript, 0x940)), mload(add(transcript, 0x3360)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x960)), mload(add(transcript, 0x3380)), f_q), result, f_q)mstore(add(transcript, 0x4fe0), result) }mstore(add(transcript, 0x5000), mulmod(mload(add(transcript, 0x4fe0)), mload(add(transcript, 0x39a0)), f_q))mstore(add(transcript, 0x5020), mulmod(sub(f_q, mload(add(transcript, 0x5000))), 1, f_q))mstore(add(transcript, 0x5040), mulmod(mload(add(transcript, 0x4fc0)), 1, f_q))mstore(add(transcript, 0x5060), mulmod(mload(add(transcript, 0x5020)), mload(add(transcript, 0x3c80)), f_q))mstore(add(transcript, 0x5080), mulmod(mload(add(transcript, 0x5040)), mload(add(transcript, 0x3c80)), f_q))mstore(add(transcript, 0x50a0), addmod(mload(add(transcript, 0x4fa0)), mload(add(transcript, 0x5060)), f_q))mstore(add(transcript, 0x50c0), mulmod(1, mload(add(transcript, 0x37a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x33c0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9a0)), mload(add(transcript, 0x33e0)), f_q), result, f_q)mstore(add(transcript, 0x50e0), result) }mstore(add(transcript, 0x5100), mulmod(mload(add(transcript, 0x50e0)), mload(add(transcript, 0x39c0)), f_q))mstore(add(transcript, 0x5120), mulmod(sub(f_q, mload(add(transcript, 0x5100))), 1, f_q))mstore(add(transcript, 0x5140), mulmod(mload(add(transcript, 0x50c0)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x33c0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9e0)), mload(add(transcript, 0x33e0)), f_q), result, f_q)mstore(add(transcript, 0x5160), result) }mstore(add(transcript, 0x5180), mulmod(mload(add(transcript, 0x5160)), mload(add(transcript, 0x39c0)), f_q))mstore(add(transcript, 0x51a0), mulmod(sub(f_q, mload(add(transcript, 0x5180))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x51c0), mulmod(mload(add(transcript, 0x50c0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x51e0), addmod(mload(add(transcript, 0x5120)), mload(add(transcript, 0x51a0)), f_q))mstore(add(transcript, 0x5200), mulmod(mload(add(transcript, 0x51e0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x5220), mulmod(mload(add(transcript, 0x5140)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x5240), mulmod(mload(add(transcript, 0x51c0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x5260), addmod(mload(add(transcript, 0x50a0)), mload(add(transcript, 0x5200)), f_q))mstore(add(transcript, 0x5280), mulmod(1, mload(add(transcript, 0x37e0)), f_q)){ let result := mulmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x3400)), f_q)result := addmod(mulmod(mload(add(transcript, 0xa20)), mload(add(transcript, 0x3420)), f_q), result, f_q)mstore(add(transcript, 0x52a0), result) }mstore(add(transcript, 0x52c0), mulmod(mload(add(transcript, 0x52a0)), mload(add(transcript, 0x39e0)), f_q))mstore(add(transcript, 0x52e0), mulmod(sub(f_q, mload(add(transcript, 0x52c0))), 1, f_q))mstore(add(transcript, 0x5300), mulmod(mload(add(transcript, 0x5280)), 1, f_q))mstore(add(transcript, 0x5320), mulmod(mload(add(transcript, 0x52e0)), mload(add(transcript, 0x3cc0)), f_q))mstore(add(transcript, 0x5340), mulmod(mload(add(transcript, 0x5300)), mload(add(transcript, 0x3cc0)), f_q))mstore(add(transcript, 0x5360), addmod(mload(add(transcript, 0x5260)), mload(add(transcript, 0x5320)), f_q))mstore(add(transcript, 0x5380), mulmod(1, mload(add(transcript, 0x3300)), f_q))mstore(add(transcript, 0x53a0), mulmod(1, mload(add(transcript, 0xb80)), f_q))mstore(add(transcript, 0x53c0), 0x0000000000000000000000000000000000000000000000000000000000000001) mstore(add(transcript, 0x53e0), 0x0000000000000000000000000000000000000000000000000000000000000002)mstore(add(transcript, 0x5400), mload(add(transcript, 0x5360)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x53c0), 0x60, add(transcript, 0x53c0), 0x40), 1), success)mstore(add(transcript, 0x5420), mload(add(transcript, 0x53c0))) mstore(add(transcript, 0x5440), mload(add(transcript, 0x53e0)))mstore(add(transcript, 0x5460), mload(add(transcript, 0xa0))) mstore(add(transcript, 0x5480), mload(add(transcript, 0xc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5420), 0x80, add(transcript, 0x5420), 0x40), 1), success)mstore(add(transcript, 0x54a0), mload(add(transcript, 0xe0))) mstore(add(transcript, 0x54c0), mload(add(transcript, 0x100)))mstore(add(transcript, 0x54e0), mload(add(transcript, 0x3e20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x54a0), 0x60, add(transcript, 0x54a0), 0x40), 1), success)mstore(add(transcript, 0x5500), mload(add(transcript, 0x5420))) mstore(add(transcript, 0x5520), mload(add(transcript, 0x5440)))mstore(add(transcript, 0x5540), mload(add(transcript, 0x54a0))) mstore(add(transcript, 0x5560), mload(add(transcript, 0x54c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5500), 0x80, add(transcript, 0x5500), 0x40), 1), success)mstore(add(transcript, 0x5580), mload(add(transcript, 0x120))) mstore(add(transcript, 0x55a0), mload(add(transcript, 0x140)))mstore(add(transcript, 0x55c0), mload(add(transcript, 0x4c80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5580), 0x60, add(transcript, 0x5580), 0x40), 1), success)mstore(add(transcript, 0x55e0), mload(add(transcript, 0x5500))) mstore(add(transcript, 0x5600), mload(add(transcript, 0x5520)))mstore(add(transcript, 0x5620), mload(add(transcript, 0x5580))) mstore(add(transcript, 0x5640), mload(add(transcript, 0x55a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x55e0), 0x80, add(transcript, 0x55e0), 0x40), 1), success)mstore(add(transcript, 0x5660), mload(add(transcript, 0x200))) mstore(add(transcript, 0x5680), mload(add(transcript, 0x220)))mstore(add(transcript, 0x56a0), mload(add(transcript, 0x4ca0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5660), 0x60, add(transcript, 0x5660), 0x40), 1), success)mstore(add(transcript, 0x56c0), mload(add(transcript, 0x55e0))) mstore(add(transcript, 0x56e0), mload(add(transcript, 0x5600)))mstore(add(transcript, 0x5700), mload(add(transcript, 0x5660))) mstore(add(transcript, 0x5720), mload(add(transcript, 0x5680)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x56c0), 0x80, add(transcript, 0x56c0), 0x40), 1), success)mstore(add(transcript, 0x5740), 0x291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db425290) mstore(add(transcript, 0x5760), 0x154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc)mstore(add(transcript, 0x5780), mload(add(transcript, 0x4cc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5740), 0x60, add(transcript, 0x5740), 0x40), 1), success)mstore(add(transcript, 0x57a0), mload(add(transcript, 0x56c0))) mstore(add(transcript, 0x57c0), mload(add(transcript, 0x56e0)))mstore(add(transcript, 0x57e0), mload(add(transcript, 0x5740))) mstore(add(transcript, 0x5800), mload(add(transcript, 0x5760)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x57a0), 0x80, add(transcript, 0x57a0), 0x40), 1), success)mstore(add(transcript, 0x5820), 0x176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d) mstore(add(transcript, 0x5840), 0x1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51)mstore(add(transcript, 0x5860), mload(add(transcript, 0x4ce0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5820), 0x60, add(transcript, 0x5820), 0x40), 1), success)mstore(add(transcript, 0x5880), mload(add(transcript, 0x57a0))) mstore(add(transcript, 0x58a0), mload(add(transcript, 0x57c0)))mstore(add(transcript, 0x58c0), mload(add(transcript, 0x5820))) mstore(add(transcript, 0x58e0), mload(add(transcript, 0x5840)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5880), 0x80, add(transcript, 0x5880), 0x40), 1), success)mstore(add(transcript, 0x5900), 0x019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e20250759) mstore(add(transcript, 0x5920), 0x0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea83)mstore(add(transcript, 0x5940), mload(add(transcript, 0x4d00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5900), 0x60, add(transcript, 0x5900), 0x40), 1), success)mstore(add(transcript, 0x5960), mload(add(transcript, 0x5880))) mstore(add(transcript, 0x5980), mload(add(transcript, 0x58a0)))mstore(add(transcript, 0x59a0), mload(add(transcript, 0x5900))) mstore(add(transcript, 0x59c0), mload(add(transcript, 0x5920)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5960), 0x80, add(transcript, 0x5960), 0x40), 1), success)mstore(add(transcript, 0x59e0), 0x0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af) mstore(add(transcript, 0x5a00), 0x24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c43)mstore(add(transcript, 0x5a20), mload(add(transcript, 0x4d20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x59e0), 0x60, add(transcript, 0x59e0), 0x40), 1), success)mstore(add(transcript, 0x5a40), mload(add(transcript, 0x5960))) mstore(add(transcript, 0x5a60), mload(add(transcript, 0x5980)))mstore(add(transcript, 0x5a80), mload(add(transcript, 0x59e0))) mstore(add(transcript, 0x5aa0), mload(add(transcript, 0x5a00)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5a40), 0x80, add(transcript, 0x5a40), 0x40), 1), success)mstore(add(transcript, 0x5ac0), 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) mstore(add(transcript, 0x5ae0), 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0)mstore(add(transcript, 0x5b00), mload(add(transcript, 0x4d40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5ac0), 0x60, add(transcript, 0x5ac0), 0x40), 1), success)mstore(add(transcript, 0x5b20), mload(add(transcript, 0x5a40))) mstore(add(transcript, 0x5b40), mload(add(transcript, 0x5a60)))mstore(add(transcript, 0x5b60), mload(add(transcript, 0x5ac0))) mstore(add(transcript, 0x5b80), mload(add(transcript, 0x5ae0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5b20), 0x80, add(transcript, 0x5b20), 0x40), 1), success)mstore(add(transcript, 0x5ba0), 0x0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed) mstore(add(transcript, 0x5bc0), 0x286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf)mstore(add(transcript, 0x5be0), mload(add(transcript, 0x4d60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5ba0), 0x60, add(transcript, 0x5ba0), 0x40), 1), success)mstore(add(transcript, 0x5c00), mload(add(transcript, 0x5b20))) mstore(add(transcript, 0x5c20), mload(add(transcript, 0x5b40)))mstore(add(transcript, 0x5c40), mload(add(transcript, 0x5ba0))) mstore(add(transcript, 0x5c60), mload(add(transcript, 0x5bc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5c00), 0x80, add(transcript, 0x5c00), 0x40), 1), success)mstore(add(transcript, 0x5c80), 0x14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5) mstore(add(transcript, 0x5ca0), 0x0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2)mstore(add(transcript, 0x5cc0), mload(add(transcript, 0x4d80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5c80), 0x60, add(transcript, 0x5c80), 0x40), 1), success)mstore(add(transcript, 0x5ce0), mload(add(transcript, 0x5c00))) mstore(add(transcript, 0x5d00), mload(add(transcript, 0x5c20)))mstore(add(transcript, 0x5d20), mload(add(transcript, 0x5c80))) mstore(add(transcript, 0x5d40), mload(add(transcript, 0x5ca0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ce0), 0x80, add(transcript, 0x5ce0), 0x40), 1), success)mstore(add(transcript, 0x5d60), 0x0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36) mstore(add(transcript, 0x5d80), 0x2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890)mstore(add(transcript, 0x5da0), mload(add(transcript, 0x4da0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5d60), 0x60, add(transcript, 0x5d60), 0x40), 1), success)mstore(add(transcript, 0x5dc0), mload(add(transcript, 0x5ce0))) mstore(add(transcript, 0x5de0), mload(add(transcript, 0x5d00)))mstore(add(transcript, 0x5e00), mload(add(transcript, 0x5d60))) mstore(add(transcript, 0x5e20), mload(add(transcript, 0x5d80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5dc0), 0x80, add(transcript, 0x5dc0), 0x40), 1), success)mstore(add(transcript, 0x5e40), 0x1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f) mstore(add(transcript, 0x5e60), 0x1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d)mstore(add(transcript, 0x5e80), mload(add(transcript, 0x4dc0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5e40), 0x60, add(transcript, 0x5e40), 0x40), 1), success)mstore(add(transcript, 0x5ea0), mload(add(transcript, 0x5dc0))) mstore(add(transcript, 0x5ec0), mload(add(transcript, 0x5de0)))mstore(add(transcript, 0x5ee0), mload(add(transcript, 0x5e40))) mstore(add(transcript, 0x5f00), mload(add(transcript, 0x5e60)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5ea0), 0x80, add(transcript, 0x5ea0), 0x40), 1), success)mstore(add(transcript, 0x5f20), 0x07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c) mstore(add(transcript, 0x5f40), 0x1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68)mstore(add(transcript, 0x5f60), mload(add(transcript, 0x4de0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5f20), 0x60, add(transcript, 0x5f20), 0x40), 1), success)mstore(add(transcript, 0x5f80), mload(add(transcript, 0x5ea0))) mstore(add(transcript, 0x5fa0), mload(add(transcript, 0x5ec0)))mstore(add(transcript, 0x5fc0), mload(add(transcript, 0x5f20))) mstore(add(transcript, 0x5fe0), mload(add(transcript, 0x5f40)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x5f80), 0x80, add(transcript, 0x5f80), 0x40), 1), success)mstore(add(transcript, 0x6000), 0x0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd701) mstore(add(transcript, 0x6020), 0x07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a)mstore(add(transcript, 0x6040), mload(add(transcript, 0x4e00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6000), 0x60, add(transcript, 0x6000), 0x40), 1), success)mstore(add(transcript, 0x6060), mload(add(transcript, 0x5f80))) mstore(add(transcript, 0x6080), mload(add(transcript, 0x5fa0)))mstore(add(transcript, 0x60a0), mload(add(transcript, 0x6000))) mstore(add(transcript, 0x60c0), mload(add(transcript, 0x6020)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6060), 0x80, add(transcript, 0x6060), 0x40), 1), success)mstore(add(transcript, 0x60e0), 0x2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d) mstore(add(transcript, 0x6100), 0x154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6)mstore(add(transcript, 0x6120), mload(add(transcript, 0x4e20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x60e0), 0x60, add(transcript, 0x60e0), 0x40), 1), success)mstore(add(transcript, 0x6140), mload(add(transcript, 0x6060))) mstore(add(transcript, 0x6160), mload(add(transcript, 0x6080)))mstore(add(transcript, 0x6180), mload(add(transcript, 0x60e0))) mstore(add(transcript, 0x61a0), mload(add(transcript, 0x6100)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6140), 0x80, add(transcript, 0x6140), 0x40), 1), success)mstore(add(transcript, 0x61c0), 0x2dec3929e07b4276215297f5f653b3ec6bf9b910006678ab3c3d67654001d6da) mstore(add(transcript, 0x61e0), 0x20b9c7e9a6c29e31e9164962de9a0478aa976e72a2e2d0e9c9ab6fabbb20ba49)mstore(add(transcript, 0x6200), mload(add(transcript, 0x4e40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x61c0), 0x60, add(transcript, 0x61c0), 0x40), 1), success)mstore(add(transcript, 0x6220), mload(add(transcript, 0x6140))) mstore(add(transcript, 0x6240), mload(add(transcript, 0x6160)))mstore(add(transcript, 0x6260), mload(add(transcript, 0x61c0))) mstore(add(transcript, 0x6280), mload(add(transcript, 0x61e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6220), 0x80, add(transcript, 0x6220), 0x40), 1), success)mstore(add(transcript, 0x62a0), 0x0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a) mstore(add(transcript, 0x62c0), 0x27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e28)mstore(add(transcript, 0x62e0), mload(add(transcript, 0x4e60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x62a0), 0x60, add(transcript, 0x62a0), 0x40), 1), success)mstore(add(transcript, 0x6300), mload(add(transcript, 0x6220))) mstore(add(transcript, 0x6320), mload(add(transcript, 0x6240)))mstore(add(transcript, 0x6340), mload(add(transcript, 0x62a0))) mstore(add(transcript, 0x6360), mload(add(transcript, 0x62c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6300), 0x80, add(transcript, 0x6300), 0x40), 1), success)mstore(add(transcript, 0x6380), 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) mstore(add(transcript, 0x63a0), 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3)mstore(add(transcript, 0x63c0), mload(add(transcript, 0x4e80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6380), 0x60, add(transcript, 0x6380), 0x40), 1), success)mstore(add(transcript, 0x63e0), mload(add(transcript, 0x6300))) mstore(add(transcript, 0x6400), mload(add(transcript, 0x6320)))mstore(add(transcript, 0x6420), mload(add(transcript, 0x6380))) mstore(add(transcript, 0x6440), mload(add(transcript, 0x63a0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x63e0), 0x80, add(transcript, 0x63e0), 0x40), 1), success)mstore(add(transcript, 0x6460), 0x1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a) mstore(add(transcript, 0x6480), 0x00b004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56)mstore(add(transcript, 0x64a0), mload(add(transcript, 0x4ea0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6460), 0x60, add(transcript, 0x6460), 0x40), 1), success)mstore(add(transcript, 0x64c0), mload(add(transcript, 0x63e0))) mstore(add(transcript, 0x64e0), mload(add(transcript, 0x6400)))mstore(add(transcript, 0x6500), mload(add(transcript, 0x6460))) mstore(add(transcript, 0x6520), mload(add(transcript, 0x6480)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x64c0), 0x80, add(transcript, 0x64c0), 0x40), 1), success)mstore(add(transcript, 0x6540), 0x20e2c72c77bcc14c0e9801d47d3ab42674027a82cde0955f1b17e5cad25edfb0) mstore(add(transcript, 0x6560), 0x0350deaf2bcf4305e811ba811ccaae83d66761627e0a4eade1205c1cb0cfcd78)mstore(add(transcript, 0x6580), mload(add(transcript, 0x4ec0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6540), 0x60, add(transcript, 0x6540), 0x40), 1), success)mstore(add(transcript, 0x65a0), mload(add(transcript, 0x64c0))) mstore(add(transcript, 0x65c0), mload(add(transcript, 0x64e0)))mstore(add(transcript, 0x65e0), mload(add(transcript, 0x6540))) mstore(add(transcript, 0x6600), mload(add(transcript, 0x6560)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x65a0), 0x80, add(transcript, 0x65a0), 0x40), 1), success)mstore(add(transcript, 0x6620), mload(add(transcript, 0x460))) mstore(add(transcript, 0x6640), mload(add(transcript, 0x480)))mstore(add(transcript, 0x6660), mload(add(transcript, 0x4ee0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6620), 0x60, add(transcript, 0x6620), 0x40), 1), success)mstore(add(transcript, 0x6680), mload(add(transcript, 0x65a0))) mstore(add(transcript, 0x66a0), mload(add(transcript, 0x65c0)))mstore(add(transcript, 0x66c0), mload(add(transcript, 0x6620))) mstore(add(transcript, 0x66e0), mload(add(transcript, 0x6640)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6680), 0x80, add(transcript, 0x6680), 0x40), 1), success)mstore(add(transcript, 0x6700), mload(add(transcript, 0x4a0))) mstore(add(transcript, 0x6720), mload(add(transcript, 0x4c0)))mstore(add(transcript, 0x6740), mload(add(transcript, 0x4f00)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6700), 0x60, add(transcript, 0x6700), 0x40), 1), success)mstore(add(transcript, 0x6760), mload(add(transcript, 0x6680))) mstore(add(transcript, 0x6780), mload(add(transcript, 0x66a0)))mstore(add(transcript, 0x67a0), mload(add(transcript, 0x6700))) mstore(add(transcript, 0x67c0), mload(add(transcript, 0x6720)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6760), 0x80, add(transcript, 0x6760), 0x40), 1), success)mstore(add(transcript, 0x67e0), mload(add(transcript, 0x4e0))) mstore(add(transcript, 0x6800), mload(add(transcript, 0x500)))mstore(add(transcript, 0x6820), mload(add(transcript, 0x4f20)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x67e0), 0x60, add(transcript, 0x67e0), 0x40), 1), success)mstore(add(transcript, 0x6840), mload(add(transcript, 0x6760))) mstore(add(transcript, 0x6860), mload(add(transcript, 0x6780)))mstore(add(transcript, 0x6880), mload(add(transcript, 0x67e0))) mstore(add(transcript, 0x68a0), mload(add(transcript, 0x6800)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6840), 0x80, add(transcript, 0x6840), 0x40), 1), success)mstore(add(transcript, 0x68c0), mload(add(transcript, 0x520))) mstore(add(transcript, 0x68e0), mload(add(transcript, 0x540)))mstore(add(transcript, 0x6900), mload(add(transcript, 0x4f40)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x68c0), 0x60, add(transcript, 0x68c0), 0x40), 1), success)mstore(add(transcript, 0x6920), mload(add(transcript, 0x6840))) mstore(add(transcript, 0x6940), mload(add(transcript, 0x6860)))mstore(add(transcript, 0x6960), mload(add(transcript, 0x68c0))) mstore(add(transcript, 0x6980), mload(add(transcript, 0x68e0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6920), 0x80, add(transcript, 0x6920), 0x40), 1), success)mstore(add(transcript, 0x69a0), mload(add(transcript, 0x560))) mstore(add(transcript, 0x69c0), mload(add(transcript, 0x580)))mstore(add(transcript, 0x69e0), mload(add(transcript, 0x4f60)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x69a0), 0x60, add(transcript, 0x69a0), 0x40), 1), success)mstore(add(transcript, 0x6a00), mload(add(transcript, 0x6920))) mstore(add(transcript, 0x6a20), mload(add(transcript, 0x6940)))mstore(add(transcript, 0x6a40), mload(add(transcript, 0x69a0))) mstore(add(transcript, 0x6a60), mload(add(transcript, 0x69c0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6a00), 0x80, add(transcript, 0x6a00), 0x40), 1), success)mstore(add(transcript, 0x6a80), mload(add(transcript, 0x3c0))) mstore(add(transcript, 0x6aa0), mload(add(transcript, 0x3e0)))mstore(add(transcript, 0x6ac0), mload(add(transcript, 0x4f80)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6a80), 0x60, add(transcript, 0x6a80), 0x40), 1), success)mstore(add(transcript, 0x6ae0), mload(add(transcript, 0x6a00))) mstore(add(transcript, 0x6b00), mload(add(transcript, 0x6a20)))mstore(add(transcript, 0x6b20), mload(add(transcript, 0x6a80))) mstore(add(transcript, 0x6b40), mload(add(transcript, 0x6aa0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6ae0), 0x80, add(transcript, 0x6ae0), 0x40), 1), success)mstore(add(transcript, 0x6b60), mload(add(transcript, 0x300))) mstore(add(transcript, 0x6b80), mload(add(transcript, 0x320)))mstore(add(transcript, 0x6ba0), mload(add(transcript, 0x5080)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6b60), 0x60, add(transcript, 0x6b60), 0x40), 1), success)mstore(add(transcript, 0x6bc0), mload(add(transcript, 0x6ae0))) mstore(add(transcript, 0x6be0), mload(add(transcript, 0x6b00)))mstore(add(transcript, 0x6c00), mload(add(transcript, 0x6b60))) mstore(add(transcript, 0x6c20), mload(add(transcript, 0x6b80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6bc0), 0x80, add(transcript, 0x6bc0), 0x40), 1), success)mstore(add(transcript, 0x6c40), mload(add(transcript, 0x340))) mstore(add(transcript, 0x6c60), mload(add(transcript, 0x360)))mstore(add(transcript, 0x6c80), mload(add(transcript, 0x5220)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6c40), 0x60, add(transcript, 0x6c40), 0x40), 1), success)mstore(add(transcript, 0x6ca0), mload(add(transcript, 0x6bc0))) mstore(add(transcript, 0x6cc0), mload(add(transcript, 0x6be0)))mstore(add(transcript, 0x6ce0), mload(add(transcript, 0x6c40))) mstore(add(transcript, 0x6d00), mload(add(transcript, 0x6c60)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6ca0), 0x80, add(transcript, 0x6ca0), 0x40), 1), success)mstore(add(transcript, 0x6d20), mload(add(transcript, 0x380))) mstore(add(transcript, 0x6d40), mload(add(transcript, 0x3a0)))mstore(add(transcript, 0x6d60), mload(add(transcript, 0x5240)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6d20), 0x60, add(transcript, 0x6d20), 0x40), 1), success)mstore(add(transcript, 0x6d80), mload(add(transcript, 0x6ca0))) mstore(add(transcript, 0x6da0), mload(add(transcript, 0x6cc0)))mstore(add(transcript, 0x6dc0), mload(add(transcript, 0x6d20))) mstore(add(transcript, 0x6de0), mload(add(transcript, 0x6d40)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6d80), 0x80, add(transcript, 0x6d80), 0x40), 1), success)mstore(add(transcript, 0x6e00), mload(add(transcript, 0x1c0))) mstore(add(transcript, 0x6e20), mload(add(transcript, 0x1e0)))mstore(add(transcript, 0x6e40), mload(add(transcript, 0x5340)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6e00), 0x60, add(transcript, 0x6e00), 0x40), 1), success)mstore(add(transcript, 0x6e60), mload(add(transcript, 0x6d80))) mstore(add(transcript, 0x6e80), mload(add(transcript, 0x6da0)))mstore(add(transcript, 0x6ea0), mload(add(transcript, 0x6e00))) mstore(add(transcript, 0x6ec0), mload(add(transcript, 0x6e20)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6e60), 0x80, add(transcript, 0x6e60), 0x40), 1), success)mstore(add(transcript, 0x6ee0), mload(add(transcript, 0xb20))) mstore(add(transcript, 0x6f00), mload(add(transcript, 0xb40)))mstore(add(transcript, 0x6f20), sub(f_q, mload(add(transcript, 0x5380))))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6ee0), 0x60, add(transcript, 0x6ee0), 0x40), 1), success)mstore(add(transcript, 0x6f40), mload(add(transcript, 0x6e60))) mstore(add(transcript, 0x6f60), mload(add(transcript, 0x6e80)))mstore(add(transcript, 0x6f80), mload(add(transcript, 0x6ee0))) mstore(add(transcript, 0x6fa0), mload(add(transcript, 0x6f00)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6f40), 0x80, add(transcript, 0x6f40), 0x40), 1), success)mstore(add(transcript, 0x6fc0), mload(add(transcript, 0xbc0))) mstore(add(transcript, 0x6fe0), mload(add(transcript, 0xbe0)))mstore(add(transcript, 0x7000), mload(add(transcript, 0x53a0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6fc0), 0x60, add(transcript, 0x6fc0), 0x40), 1), success)mstore(add(transcript, 0x7020), mload(add(transcript, 0x6f40))) mstore(add(transcript, 0x7040), mload(add(transcript, 0x6f60)))mstore(add(transcript, 0x7060), mload(add(transcript, 0x6fc0))) mstore(add(transcript, 0x7080), mload(add(transcript, 0x6fe0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x7020), 0x80, add(transcript, 0x7020), 0x40), 1), success)mstore(add(transcript, 0x70a0), mload(add(transcript, 0x7020))) mstore(add(transcript, 0x70c0), mload(add(transcript, 0x7040)))mstore(add(transcript, 0x70e0), 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) mstore(add(transcript, 0x7100), 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) mstore(add(transcript, 0x7120), 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) mstore(add(transcript, 0x7140), 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa)mstore(add(transcript, 0x7160), mload(add(transcript, 0xbc0))) mstore(add(transcript, 0x7180), mload(add(transcript, 0xbe0)))mstore(add(transcript, 0x71a0), 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) mstore(add(transcript, 0x71c0), 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) mstore(add(transcript, 0x71e0), 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) mstore(add(transcript, 0x7200), 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff)success := and(eq(staticcall(gas(), 0x8, add(transcript, 0x70a0), 0x180, add(transcript, 0x70a0), 0x20), 1), success)success := and(eq(mload(add(transcript, 0x70a0)), 1), success)} return success; } } diff --git a/contracts/src/InclusionVerifier.yul b/contracts/src/InclusionVerifier.yul index 67bdfaf5..100166c5 100644 --- a/contracts/src/InclusionVerifier.yul +++ b/contracts/src/InclusionVerifier.yul @@ -33,15 +33,9 @@ } mstore(0x20, mod(calldataload(0x0), f_q)) mstore(0x40, mod(calldataload(0x20), f_q)) -mstore(0x0, 20780565364750352931855234182745264522567546354850733883253409196481354617515) - - { - let x := calldataload(0x40) - mstore(0x60, x) - let y := calldataload(0x60) - mstore(0x80, y) - success := and(validate_ec_point(x, y), success) - } +mstore(0x60, mod(calldataload(0x40), f_q)) +mstore(0x80, mod(calldataload(0x60), f_q)) +mstore(0x0, 4807875969802051575329349424543462078160599761356767644666470846188645432252) { let x := calldataload(0x80) @@ -58,20 +52,20 @@ mstore(0x0, 20780565364750352931855234182745264522567546354850733883253409196481 mstore(0x100, y) success := and(validate_ec_point(x, y), success) } -mstore(0x120, keccak256(0x0, 288)) -{ - let hash := mload(0x120) - mstore(0x140, mod(hash, f_q)) - mstore(0x160, hash) - } { let x := calldataload(0x100) - mstore(0x180, x) + mstore(0x120, x) let y := calldataload(0x120) - mstore(0x1a0, y) + mstore(0x140, y) success := and(validate_ec_point(x, y), success) } +mstore(0x160, keccak256(0x0, 352)) +{ + let hash := mload(0x160) + mstore(0x180, mod(hash, f_q)) + mstore(0x1a0, hash) + } { let x := calldataload(0x140) @@ -80,27 +74,27 @@ mstore(0x120, keccak256(0x0, 288)) mstore(0x1e0, y) success := and(validate_ec_point(x, y), success) } -mstore(0x200, keccak256(0x160, 160)) -{ - let hash := mload(0x200) - mstore(0x220, mod(hash, f_q)) - mstore(0x240, hash) - } -mstore8(608, 1) -mstore(0x260, keccak256(0x240, 33)) -{ - let hash := mload(0x260) - mstore(0x280, mod(hash, f_q)) - mstore(0x2a0, hash) - } { let x := calldataload(0x180) - mstore(0x2c0, x) + mstore(0x200, x) let y := calldataload(0x1a0) - mstore(0x2e0, y) + mstore(0x220, y) success := and(validate_ec_point(x, y), success) } +mstore(0x240, keccak256(0x1a0, 160)) +{ + let hash := mload(0x240) + mstore(0x260, mod(hash, f_q)) + mstore(0x280, hash) + } +mstore8(672, 1) +mstore(0x2a0, keccak256(0x280, 33)) +{ + let hash := mload(0x2a0) + mstore(0x2c0, mod(hash, f_q)) + mstore(0x2e0, hash) + } { let x := calldataload(0x1c0) @@ -125,20 +119,20 @@ mstore(0x260, keccak256(0x240, 33)) mstore(0x3a0, y) success := and(validate_ec_point(x, y), success) } -mstore(0x3c0, keccak256(0x2a0, 288)) -{ - let hash := mload(0x3c0) - mstore(0x3e0, mod(hash, f_q)) - mstore(0x400, hash) - } { let x := calldataload(0x280) - mstore(0x420, x) + mstore(0x3c0, x) let y := calldataload(0x2a0) - mstore(0x440, y) + mstore(0x3e0, y) success := and(validate_ec_point(x, y), success) } +mstore(0x400, keccak256(0x2e0, 288)) +{ + let hash := mload(0x400) + mstore(0x420, mod(hash, f_q)) + mstore(0x440, hash) + } { let x := calldataload(0x2c0) @@ -171,14 +165,20 @@ mstore(0x3c0, keccak256(0x2a0, 288)) mstore(0x540, y) success := and(validate_ec_point(x, y), success) } -mstore(0x560, keccak256(0x400, 352)) + + { + let x := calldataload(0x3c0) + mstore(0x560, x) + let y := calldataload(0x3e0) + mstore(0x580, y) + success := and(validate_ec_point(x, y), success) + } +mstore(0x5a0, keccak256(0x440, 352)) { - let hash := mload(0x560) - mstore(0x580, mod(hash, f_q)) - mstore(0x5a0, hash) + let hash := mload(0x5a0) + mstore(0x5c0, mod(hash, f_q)) + mstore(0x5e0, hash) } -mstore(0x5c0, mod(calldataload(0x3c0), f_q)) -mstore(0x5e0, mod(calldataload(0x3e0), f_q)) mstore(0x600, mod(calldataload(0x400), f_q)) mstore(0x620, mod(calldataload(0x420), f_q)) mstore(0x640, mod(calldataload(0x440), f_q)) @@ -212,44 +212,44 @@ mstore(0x9a0, mod(calldataload(0x7a0), f_q)) mstore(0x9c0, mod(calldataload(0x7c0), f_q)) mstore(0x9e0, mod(calldataload(0x7e0), f_q)) mstore(0xa00, mod(calldataload(0x800), f_q)) -mstore(0xa20, keccak256(0x5a0, 1152)) +mstore(0xa20, mod(calldataload(0x820), f_q)) +mstore(0xa40, mod(calldataload(0x840), f_q)) +mstore(0xa60, keccak256(0x5e0, 1152)) { - let hash := mload(0xa20) - mstore(0xa40, mod(hash, f_q)) - mstore(0xa60, hash) + let hash := mload(0xa60) + mstore(0xa80, mod(hash, f_q)) + mstore(0xaa0, hash) } -mstore8(2688, 1) -mstore(0xa80, keccak256(0xa60, 33)) +mstore8(2752, 1) +mstore(0xac0, keccak256(0xaa0, 33)) { - let hash := mload(0xa80) - mstore(0xaa0, mod(hash, f_q)) - mstore(0xac0, hash) + let hash := mload(0xac0) + mstore(0xae0, mod(hash, f_q)) + mstore(0xb00, hash) } { - let x := calldataload(0x820) - mstore(0xae0, x) - let y := calldataload(0x840) - mstore(0xb00, y) + let x := calldataload(0x860) + mstore(0xb20, x) + let y := calldataload(0x880) + mstore(0xb40, y) success := and(validate_ec_point(x, y), success) } -mstore(0xb20, keccak256(0xac0, 96)) +mstore(0xb60, keccak256(0xb00, 96)) { - let hash := mload(0xb20) - mstore(0xb40, mod(hash, f_q)) - mstore(0xb60, hash) + let hash := mload(0xb60) + mstore(0xb80, mod(hash, f_q)) + mstore(0xba0, hash) } { - let x := calldataload(0x860) - mstore(0xb80, x) - let y := calldataload(0x880) - mstore(0xba0, y) + let x := calldataload(0x8a0) + mstore(0xbc0, x) + let y := calldataload(0x8c0) + mstore(0xbe0, y) success := and(validate_ec_point(x, y), success) } -mstore(0xbc0, mulmod(mload(0x580), mload(0x580), f_q)) -mstore(0xbe0, mulmod(mload(0xbc0), mload(0xbc0), f_q)) -mstore(0xc00, mulmod(mload(0xbe0), mload(0xbe0), f_q)) +mstore(0xc00, mulmod(mload(0x5c0), mload(0x5c0), f_q)) mstore(0xc20, mulmod(mload(0xc00), mload(0xc00), f_q)) mstore(0xc40, mulmod(mload(0xc20), mload(0xc20), f_q)) mstore(0xc60, mulmod(mload(0xc40), mload(0xc40), f_q)) @@ -258,1220 +258,1244 @@ mstore(0xca0, mulmod(mload(0xc80), mload(0xc80), f_q)) mstore(0xcc0, mulmod(mload(0xca0), mload(0xca0), f_q)) mstore(0xce0, mulmod(mload(0xcc0), mload(0xcc0), f_q)) mstore(0xd00, mulmod(mload(0xce0), mload(0xce0), f_q)) -mstore(0xd20, addmod(mload(0xd00), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -mstore(0xd40, mulmod(mload(0xd20), 21877555253249509951141793242451973684696534144361143701928820297812832026625, f_q)) -mstore(0xd60, mulmod(mload(0xd40), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) -mstore(0xd80, addmod(mload(0x580), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q)) -mstore(0xda0, mulmod(mload(0xd40), 16553167948716468074998850291160946772606011499093267774599468837293218566225, f_q)) -mstore(0xdc0, addmod(mload(0x580), 5335074923122807147247555454096328315942352901322766569098735349282589929392, f_q)) -mstore(0xde0, mulmod(mload(0xd40), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q)) -mstore(0xe00, addmod(mload(0x580), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q)) -mstore(0xe20, mulmod(mload(0xd40), 18302882236472339419631414285403968768409802182737928837767912484847322191909, f_q)) -mstore(0xe40, addmod(mload(0x580), 3585360635366935802614991459853306320138562217678105505930291701728486303708, f_q)) -mstore(0xe60, mulmod(mload(0xd40), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q)) -mstore(0xe80, addmod(mload(0x580), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q)) -mstore(0xea0, mulmod(mload(0xd40), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) -mstore(0xec0, addmod(mload(0x580), 2443549375371310428912721262786463219152954447257270263406653762796473870823, f_q)) -mstore(0xee0, mulmod(mload(0xd40), 1, f_q)) -mstore(0xf00, addmod(mload(0x580), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) -mstore(0xf20, mulmod(mload(0xd40), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q)) -mstore(0xf40, addmod(mload(0x580), 12492139669565018291300799122050748188086418716150538504685768693941615300514, f_q)) +mstore(0xd20, mulmod(mload(0xd00), mload(0xd00), f_q)) +mstore(0xd40, mulmod(mload(0xd20), mload(0xd20), f_q)) +mstore(0xd60, addmod(mload(0xd40), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) +mstore(0xd80, mulmod(mload(0xd60), 21877555253249509951141793242451973684696534144361143701928820297812832026625, f_q)) +mstore(0xda0, mulmod(mload(0xd80), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) +mstore(0xdc0, addmod(mload(0x5c0), 6189213060905190907425759670690446807930574449253110894497805650994602323199, f_q)) +mstore(0xde0, mulmod(mload(0xd80), 16553167948716468074998850291160946772606011499093267774599468837293218566225, f_q)) +mstore(0xe00, addmod(mload(0x5c0), 5335074923122807147247555454096328315942352901322766569098735349282589929392, f_q)) +mstore(0xe20, mulmod(mload(0xd80), 4260969412351770314333984243767775737437927068151180798236715529158398853173, f_q)) +mstore(0xe40, addmod(mload(0x5c0), 17627273459487504907912421501489499351110437332264853545461488657417409642444, f_q)) +mstore(0xe60, mulmod(mload(0xd80), 18302882236472339419631414285403968768409802182737928837767912484847322191909, f_q)) +mstore(0xe80, addmod(mload(0x5c0), 3585360635366935802614991459853306320138562217678105505930291701728486303708, f_q)) +mstore(0xea0, mulmod(mload(0xd80), 4925592601992654644734291590386747644864797672605745962807370354577123815907, f_q)) +mstore(0xec0, addmod(mload(0x5c0), 16962650269846620577512114154870527443683566727810288380890833831998684679710, f_q)) +mstore(0xee0, mulmod(mload(0xd80), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) +mstore(0xf00, addmod(mload(0x5c0), 2443549375371310428912721262786463219152954447257270263406653762796473870823, f_q)) +mstore(0xf20, mulmod(mload(0xd80), 1, f_q)) +mstore(0xf40, addmod(mload(0x5c0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q)) +mstore(0xf60, mulmod(mload(0xd80), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q)) +mstore(0xf80, addmod(mload(0x5c0), 12492139669565018291300799122050748188086418716150538504685768693941615300514, f_q)) +mstore(0xfa0, mulmod(mload(0xd80), 19380560087801265747114831706136320509424814679569278834391540198888293317501, f_q)) +mstore(0xfc0, addmod(mload(0x5c0), 2507682784038009475131574039120954579123549720846755509306663987687515178116, f_q)) +mstore(0xfe0, mulmod(mload(0xd80), 11322573621548282883955256084347882816245615123967859588024989498742209856615, f_q)) +mstore(0x1000, addmod(mload(0x5c0), 10565669250290992338291149660909392272302749276448174755673214687833598639002, f_q)) { - let prod := mload(0xd80) + let prod := mload(0xdc0) - prod := mulmod(mload(0xdc0), prod, f_q) - mstore(0xf60, prod) - prod := mulmod(mload(0xe00), prod, f_q) - mstore(0xf80, prod) + mstore(0x1020, prod) prod := mulmod(mload(0xe40), prod, f_q) - mstore(0xfa0, prod) + mstore(0x1040, prod) prod := mulmod(mload(0xe80), prod, f_q) - mstore(0xfc0, prod) + mstore(0x1060, prod) prod := mulmod(mload(0xec0), prod, f_q) - mstore(0xfe0, prod) + mstore(0x1080, prod) prod := mulmod(mload(0xf00), prod, f_q) - mstore(0x1000, prod) + mstore(0x10a0, prod) prod := mulmod(mload(0xf40), prod, f_q) - mstore(0x1020, prod) + mstore(0x10c0, prod) - prod := mulmod(mload(0xd20), prod, f_q) - mstore(0x1040, prod) + prod := mulmod(mload(0xf80), prod, f_q) + mstore(0x10e0, prod) + + prod := mulmod(mload(0xfc0), prod, f_q) + mstore(0x1100, prod) + + prod := mulmod(mload(0x1000), prod, f_q) + mstore(0x1120, prod) + + prod := mulmod(mload(0xd60), prod, f_q) + mstore(0x1140, prod) } -mstore(0x1080, 32) -mstore(0x10a0, 32) -mstore(0x10c0, 32) -mstore(0x10e0, mload(0x1040)) -mstore(0x1100, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x1120, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x1080, 0xc0, 0x1060, 0x20), 1), success) +mstore(0x1180, 32) +mstore(0x11a0, 32) +mstore(0x11c0, 32) +mstore(0x11e0, mload(0x1140)) +mstore(0x1200, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x1220, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x1180, 0xc0, 0x1160, 0x20), 1), success) { - let inv := mload(0x1060) + let inv := mload(0x1160) let v - v := mload(0xd20) - mstore(3360, mulmod(mload(0x1020), inv, f_q)) + v := mload(0xd60) + mstore(3424, mulmod(mload(0x1120), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0x1000) + mstore(4096, mulmod(mload(0x1100), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0xfc0) + mstore(4032, mulmod(mload(0x10e0), inv, f_q)) + inv := mulmod(v, inv, f_q) + + v := mload(0xf80) + mstore(3968, mulmod(mload(0x10c0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xf40) - mstore(3904, mulmod(mload(0x1000), inv, f_q)) + mstore(3904, mulmod(mload(0x10a0), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xf00) - mstore(3840, mulmod(mload(0xfe0), inv, f_q)) + mstore(3840, mulmod(mload(0x1080), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xec0) - mstore(3776, mulmod(mload(0xfc0), inv, f_q)) + mstore(3776, mulmod(mload(0x1060), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xe80) - mstore(3712, mulmod(mload(0xfa0), inv, f_q)) + mstore(3712, mulmod(mload(0x1040), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xe40) - mstore(3648, mulmod(mload(0xf80), inv, f_q)) + mstore(3648, mulmod(mload(0x1020), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(0xe00) - mstore(3584, mulmod(mload(0xf60), inv, f_q)) + mstore(3584, mulmod(mload(0xdc0), inv, f_q)) inv := mulmod(v, inv, f_q) - - v := mload(0xdc0) - mstore(3520, mulmod(mload(0xd80), inv, f_q)) - inv := mulmod(v, inv, f_q) - mstore(0xd80, inv) + mstore(0xdc0, inv) } -mstore(0x1140, mulmod(mload(0xd60), mload(0xd80), f_q)) -mstore(0x1160, mulmod(mload(0xda0), mload(0xdc0), f_q)) -mstore(0x1180, mulmod(mload(0xde0), mload(0xe00), f_q)) -mstore(0x11a0, mulmod(mload(0xe20), mload(0xe40), f_q)) -mstore(0x11c0, mulmod(mload(0xe60), mload(0xe80), f_q)) -mstore(0x11e0, mulmod(mload(0xea0), mload(0xec0), f_q)) -mstore(0x1200, mulmod(mload(0xee0), mload(0xf00), f_q)) -mstore(0x1220, mulmod(mload(0xf20), mload(0xf40), f_q)) +mstore(0x1240, mulmod(mload(0xda0), mload(0xdc0), f_q)) +mstore(0x1260, mulmod(mload(0xde0), mload(0xe00), f_q)) +mstore(0x1280, mulmod(mload(0xe20), mload(0xe40), f_q)) +mstore(0x12a0, mulmod(mload(0xe60), mload(0xe80), f_q)) +mstore(0x12c0, mulmod(mload(0xea0), mload(0xec0), f_q)) +mstore(0x12e0, mulmod(mload(0xee0), mload(0xf00), f_q)) +mstore(0x1300, mulmod(mload(0xf20), mload(0xf40), f_q)) +mstore(0x1320, mulmod(mload(0xf60), mload(0xf80), f_q)) +mstore(0x1340, mulmod(mload(0xfa0), mload(0xfc0), f_q)) +mstore(0x1360, mulmod(mload(0xfe0), mload(0x1000), f_q)) { - let result := mulmod(mload(0x1200), mload(0x20), f_q) -result := addmod(mulmod(mload(0x1220), mload(0x40), f_q), result, f_q) -mstore(4672, result) - } -mstore(0x1260, addmod(mload(0x5c0), mload(0x6e0), f_q)) -mstore(0x1280, mulmod(mload(0x1260), mload(0x1260), f_q)) -mstore(0x12a0, mulmod(mload(0x1280), mload(0x1280), f_q)) -mstore(0x12c0, mulmod(mload(0x1260), mload(0x12a0), f_q)) -mstore(0x12e0, mulmod(mload(0x12c0), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) -mstore(0x1300, addmod(mload(0x5e0), mload(0x700), f_q)) -mstore(0x1320, mulmod(mload(0x1300), mload(0x1300), f_q)) -mstore(0x1340, mulmod(mload(0x1320), mload(0x1320), f_q)) -mstore(0x1360, mulmod(mload(0x1300), mload(0x1340), f_q)) -mstore(0x1380, mulmod(mload(0x1360), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) -mstore(0x13a0, addmod(mload(0x12e0), mload(0x1380), f_q)) -mstore(0x13c0, addmod(mload(0x13a0), sub(f_q, mload(0x600)), f_q)) -mstore(0x13e0, mulmod(mload(0x13c0), mload(0x780), f_q)) -mstore(0x1400, mulmod(mload(0x3e0), mload(0x13e0), f_q)) -mstore(0x1420, mulmod(mload(0x12c0), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) -mstore(0x1440, mulmod(mload(0x1360), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) -mstore(0x1460, addmod(mload(0x1420), mload(0x1440), f_q)) -mstore(0x1480, addmod(mload(0x1460), sub(f_q, mload(0x620)), f_q)) -mstore(0x14a0, mulmod(mload(0x1480), mload(0x780), f_q)) -mstore(0x14c0, addmod(mload(0x1400), mload(0x14a0), f_q)) -mstore(0x14e0, mulmod(mload(0x3e0), mload(0x14c0), f_q)) -mstore(0x1500, addmod(mload(0x12c0), sub(f_q, mload(0x640)), f_q)) -mstore(0x1520, mulmod(mload(0x1500), mload(0x7a0), f_q)) -mstore(0x1540, addmod(mload(0x14e0), mload(0x1520), f_q)) -mstore(0x1560, mulmod(mload(0x3e0), mload(0x1540), f_q)) -mstore(0x1580, mulmod(mload(0x640), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) -mstore(0x15a0, mulmod(mload(0x1300), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) -mstore(0x15c0, addmod(mload(0x1580), mload(0x15a0), f_q)) -mstore(0x15e0, addmod(mload(0x15c0), mload(0x6a0), f_q)) -mstore(0x1600, mulmod(mload(0x15e0), mload(0x15e0), f_q)) -mstore(0x1620, mulmod(mload(0x1600), mload(0x1600), f_q)) -mstore(0x1640, mulmod(mload(0x15e0), mload(0x1620), f_q)) -mstore(0x1660, mulmod(mload(0x600), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q)) -mstore(0x1680, mulmod(mload(0x620), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q)) -mstore(0x16a0, addmod(mload(0x1660), mload(0x1680), f_q)) -mstore(0x16c0, addmod(mload(0x1640), sub(f_q, mload(0x16a0)), f_q)) -mstore(0x16e0, mulmod(mload(0x16c0), mload(0x7a0), f_q)) -mstore(0x1700, addmod(mload(0x1560), mload(0x16e0), f_q)) -mstore(0x1720, mulmod(mload(0x3e0), mload(0x1700), f_q)) -mstore(0x1740, mulmod(mload(0x640), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) -mstore(0x1760, mulmod(mload(0x1300), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) -mstore(0x1780, addmod(mload(0x1740), mload(0x1760), f_q)) -mstore(0x17a0, addmod(mload(0x1780), mload(0x6c0), f_q)) -mstore(0x17c0, mulmod(mload(0x600), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q)) -mstore(0x17e0, mulmod(mload(0x620), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q)) -mstore(0x1800, addmod(mload(0x17c0), mload(0x17e0), f_q)) -mstore(0x1820, addmod(mload(0x17a0), sub(f_q, mload(0x1800)), f_q)) -mstore(0x1840, mulmod(mload(0x1820), mload(0x7a0), f_q)) -mstore(0x1860, addmod(mload(0x1720), mload(0x1840), f_q)) -mstore(0x1880, mulmod(mload(0x3e0), mload(0x1860), f_q)) -mstore(0x18a0, addmod(1, sub(f_q, mload(0x760)), f_q)) -mstore(0x18c0, mulmod(mload(0x18a0), mload(0x760), f_q)) -mstore(0x18e0, addmod(2, sub(f_q, mload(0x760)), f_q)) -mstore(0x1900, mulmod(mload(0x18e0), mload(0x18c0), f_q)) -mstore(0x1920, addmod(4, sub(f_q, mload(0x760)), f_q)) -mstore(0x1940, mulmod(mload(0x1920), mload(0x1900), f_q)) -mstore(0x1960, addmod(mload(0x680), mload(0x5c0), f_q)) -mstore(0x1980, addmod(mload(0x1960), sub(f_q, mload(0x600)), f_q)) -mstore(0x19a0, mulmod(mload(0x1980), mload(0x1940), f_q)) -mstore(0x19c0, addmod(mload(0x1880), mload(0x19a0), f_q)) -mstore(0x19e0, mulmod(mload(0x3e0), mload(0x19c0), f_q)) -mstore(0x1a00, addmod(mload(0x660), sub(f_q, mload(0x620)), f_q)) -mstore(0x1a20, mulmod(mload(0x1a00), mload(0x1940), f_q)) -mstore(0x1a40, addmod(mload(0x19e0), mload(0x1a20), f_q)) -mstore(0x1a60, mulmod(mload(0x3e0), mload(0x1a40), f_q)) -mstore(0x1a80, mulmod(mload(0x13c0), mload(0x7c0), f_q)) -mstore(0x1aa0, addmod(mload(0x1a60), mload(0x1a80), f_q)) -mstore(0x1ac0, mulmod(mload(0x3e0), mload(0x1aa0), f_q)) -mstore(0x1ae0, mulmod(mload(0x1480), mload(0x7c0), f_q)) -mstore(0x1b00, addmod(mload(0x1ac0), mload(0x1ae0), f_q)) -mstore(0x1b20, mulmod(mload(0x3e0), mload(0x1b00), f_q)) -mstore(0x1b40, mulmod(mload(0x1500), mload(0x7e0), f_q)) -mstore(0x1b60, addmod(mload(0x1b20), mload(0x1b40), f_q)) -mstore(0x1b80, mulmod(mload(0x3e0), mload(0x1b60), f_q)) -mstore(0x1ba0, mulmod(mload(0x16c0), mload(0x7e0), f_q)) -mstore(0x1bc0, addmod(mload(0x1b80), mload(0x1ba0), f_q)) -mstore(0x1be0, mulmod(mload(0x3e0), mload(0x1bc0), f_q)) -mstore(0x1c00, mulmod(mload(0x1820), mload(0x7e0), f_q)) -mstore(0x1c20, addmod(mload(0x1be0), mload(0x1c00), f_q)) -mstore(0x1c40, mulmod(mload(0x3e0), mload(0x1c20), f_q)) -mstore(0x1c60, addmod(3, sub(f_q, mload(0x760)), f_q)) -mstore(0x1c80, mulmod(mload(0x1c60), mload(0x1900), f_q)) -mstore(0x1ca0, mulmod(mload(0x1980), mload(0x1c80), f_q)) -mstore(0x1cc0, addmod(mload(0x1c40), mload(0x1ca0), f_q)) -mstore(0x1ce0, mulmod(mload(0x3e0), mload(0x1cc0), f_q)) -mstore(0x1d00, mulmod(mload(0x1a00), mload(0x1c80), f_q)) -mstore(0x1d20, addmod(mload(0x1ce0), mload(0x1d00), f_q)) -mstore(0x1d40, mulmod(mload(0x3e0), mload(0x1d20), f_q)) -mstore(0x1d60, mulmod(mload(0x18e0), mload(0x760), f_q)) -mstore(0x1d80, mulmod(mload(0x1c60), mload(0x1d60), f_q)) -mstore(0x1da0, mulmod(mload(0x1920), mload(0x1d80), f_q)) -mstore(0x1dc0, mulmod(mload(0x640), mload(0x1da0), f_q)) -mstore(0x1de0, addmod(1, sub(f_q, mload(0x640)), f_q)) -mstore(0x1e00, mulmod(mload(0x1de0), mload(0x1dc0), f_q)) -mstore(0x1e20, addmod(mload(0x1d40), mload(0x1e00), f_q)) -mstore(0x1e40, mulmod(mload(0x3e0), mload(0x1e20), f_q)) -mstore(0x1e60, mulmod(2, mload(0x640), f_q)) -mstore(0x1e80, addmod(mload(0x5e0), sub(f_q, mload(0x5c0)), f_q)) -mstore(0x1ea0, mulmod(mload(0x1e80), mload(0x1e60), f_q)) -mstore(0x1ec0, addmod(mload(0x600), sub(f_q, mload(0x5c0)), f_q)) -mstore(0x1ee0, addmod(mload(0x1ea0), sub(f_q, mload(0x1ec0)), f_q)) -mstore(0x1f00, addmod(mload(0x5e0), sub(f_q, mload(0x620)), f_q)) -mstore(0x1f20, addmod(mload(0x1ee0), sub(f_q, mload(0x1f00)), f_q)) -mstore(0x1f40, mulmod(mload(0x1f20), mload(0x1da0), f_q)) -mstore(0x1f60, addmod(mload(0x1e40), mload(0x1f40), f_q)) -mstore(0x1f80, mulmod(mload(0x3e0), mload(0x1f60), f_q)) -mstore(0x1fa0, mulmod(mload(0x1c60), mload(0x18c0), f_q)) -mstore(0x1fc0, mulmod(mload(0x1920), mload(0x1fa0), f_q)) -mstore(0x1fe0, addmod(mload(0x5c0), mload(0x5e0), f_q)) -mstore(0x2000, addmod(mload(0x1fe0), sub(f_q, mload(0x640)), f_q)) -mstore(0x2020, mulmod(mload(0x2000), mload(0x1fc0), f_q)) -mstore(0x2040, addmod(mload(0x1f80), mload(0x2020), f_q)) -mstore(0x2060, mulmod(mload(0x3e0), mload(0x2040), f_q)) -mstore(0x2080, addmod(mload(0x2060), mload(0x2020), f_q)) -mstore(0x20a0, mulmod(mload(0x3e0), mload(0x2080), f_q)) -mstore(0x20c0, addmod(1, sub(f_q, mload(0x8e0)), f_q)) -mstore(0x20e0, mulmod(mload(0x20c0), mload(0x1200), f_q)) -mstore(0x2100, addmod(mload(0x20a0), mload(0x20e0), f_q)) -mstore(0x2120, mulmod(mload(0x3e0), mload(0x2100), f_q)) -mstore(0x2140, mulmod(mload(0x940), mload(0x940), f_q)) -mstore(0x2160, addmod(mload(0x2140), sub(f_q, mload(0x940)), f_q)) -mstore(0x2180, mulmod(mload(0x2160), mload(0x1140), f_q)) -mstore(0x21a0, addmod(mload(0x2120), mload(0x2180), f_q)) -mstore(0x21c0, mulmod(mload(0x3e0), mload(0x21a0), f_q)) -mstore(0x21e0, addmod(mload(0x940), sub(f_q, mload(0x920)), f_q)) -mstore(0x2200, mulmod(mload(0x21e0), mload(0x1200), f_q)) -mstore(0x2220, addmod(mload(0x21c0), mload(0x2200), f_q)) -mstore(0x2240, mulmod(mload(0x3e0), mload(0x2220), f_q)) -mstore(0x2260, addmod(1, sub(f_q, mload(0x1140)), f_q)) -mstore(0x2280, addmod(mload(0x1160), mload(0x1180), f_q)) -mstore(0x22a0, addmod(mload(0x2280), mload(0x11a0), f_q)) -mstore(0x22c0, addmod(mload(0x22a0), mload(0x11c0), f_q)) -mstore(0x22e0, addmod(mload(0x22c0), mload(0x11e0), f_q)) -mstore(0x2300, addmod(mload(0x2260), sub(f_q, mload(0x22e0)), f_q)) -mstore(0x2320, mulmod(mload(0x820), mload(0x220), f_q)) -mstore(0x2340, addmod(mload(0x6a0), mload(0x2320), f_q)) -mstore(0x2360, addmod(mload(0x2340), mload(0x280), f_q)) -mstore(0x2380, mulmod(mload(0x840), mload(0x220), f_q)) -mstore(0x23a0, addmod(mload(0x5c0), mload(0x2380), f_q)) -mstore(0x23c0, addmod(mload(0x23a0), mload(0x280), f_q)) -mstore(0x23e0, mulmod(mload(0x23c0), mload(0x2360), f_q)) -mstore(0x2400, mulmod(mload(0x860), mload(0x220), f_q)) -mstore(0x2420, addmod(mload(0x5e0), mload(0x2400), f_q)) -mstore(0x2440, addmod(mload(0x2420), mload(0x280), f_q)) -mstore(0x2460, mulmod(mload(0x2440), mload(0x23e0), f_q)) -mstore(0x2480, mulmod(mload(0x880), mload(0x220), f_q)) -mstore(0x24a0, addmod(mload(0x6c0), mload(0x2480), f_q)) -mstore(0x24c0, addmod(mload(0x24a0), mload(0x280), f_q)) -mstore(0x24e0, mulmod(mload(0x24c0), mload(0x2460), f_q)) -mstore(0x2500, mulmod(mload(0x24e0), mload(0x900), f_q)) -mstore(0x2520, mulmod(1, mload(0x220), f_q)) -mstore(0x2540, mulmod(mload(0x580), mload(0x2520), f_q)) -mstore(0x2560, addmod(mload(0x6a0), mload(0x2540), f_q)) -mstore(0x2580, addmod(mload(0x2560), mload(0x280), f_q)) -mstore(0x25a0, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x220), f_q)) -mstore(0x25c0, mulmod(mload(0x580), mload(0x25a0), f_q)) -mstore(0x25e0, addmod(mload(0x5c0), mload(0x25c0), f_q)) -mstore(0x2600, addmod(mload(0x25e0), mload(0x280), f_q)) -mstore(0x2620, mulmod(mload(0x2600), mload(0x2580), f_q)) -mstore(0x2640, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x220), f_q)) -mstore(0x2660, mulmod(mload(0x580), mload(0x2640), f_q)) -mstore(0x2680, addmod(mload(0x5e0), mload(0x2660), f_q)) -mstore(0x26a0, addmod(mload(0x2680), mload(0x280), f_q)) -mstore(0x26c0, mulmod(mload(0x26a0), mload(0x2620), f_q)) -mstore(0x26e0, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x220), f_q)) -mstore(0x2700, mulmod(mload(0x580), mload(0x26e0), f_q)) -mstore(0x2720, addmod(mload(0x6c0), mload(0x2700), f_q)) -mstore(0x2740, addmod(mload(0x2720), mload(0x280), f_q)) + let result := mulmod(mload(0x1300), mload(0x20), f_q) +result := addmod(mulmod(mload(0x1320), mload(0x40), f_q), result, f_q) +result := addmod(mulmod(mload(0x1340), mload(0x60), f_q), result, f_q) +result := addmod(mulmod(mload(0x1360), mload(0x80), f_q), result, f_q) +mstore(4992, result) + } +mstore(0x13a0, addmod(mload(0x600), mload(0x720), f_q)) +mstore(0x13c0, mulmod(mload(0x13a0), mload(0x13a0), f_q)) +mstore(0x13e0, mulmod(mload(0x13c0), mload(0x13c0), f_q)) +mstore(0x1400, mulmod(mload(0x13a0), mload(0x13e0), f_q)) +mstore(0x1420, mulmod(mload(0x1400), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) +mstore(0x1440, addmod(mload(0x620), mload(0x740), f_q)) +mstore(0x1460, mulmod(mload(0x1440), mload(0x1440), f_q)) +mstore(0x1480, mulmod(mload(0x1460), mload(0x1460), f_q)) +mstore(0x14a0, mulmod(mload(0x1440), mload(0x1480), f_q)) +mstore(0x14c0, mulmod(mload(0x14a0), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) +mstore(0x14e0, addmod(mload(0x1420), mload(0x14c0), f_q)) +mstore(0x1500, addmod(mload(0x14e0), sub(f_q, mload(0x640)), f_q)) +mstore(0x1520, mulmod(mload(0x1500), mload(0x7c0), f_q)) +mstore(0x1540, mulmod(mload(0x420), mload(0x1520), f_q)) +mstore(0x1560, mulmod(mload(0x1400), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) +mstore(0x1580, mulmod(mload(0x14a0), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) +mstore(0x15a0, addmod(mload(0x1560), mload(0x1580), f_q)) +mstore(0x15c0, addmod(mload(0x15a0), sub(f_q, mload(0x660)), f_q)) +mstore(0x15e0, mulmod(mload(0x15c0), mload(0x7c0), f_q)) +mstore(0x1600, addmod(mload(0x1540), mload(0x15e0), f_q)) +mstore(0x1620, mulmod(mload(0x420), mload(0x1600), f_q)) +mstore(0x1640, addmod(mload(0x1400), sub(f_q, mload(0x680)), f_q)) +mstore(0x1660, mulmod(mload(0x1640), mload(0x7e0), f_q)) +mstore(0x1680, addmod(mload(0x1620), mload(0x1660), f_q)) +mstore(0x16a0, mulmod(mload(0x420), mload(0x1680), f_q)) +mstore(0x16c0, mulmod(mload(0x680), 2910766817845651019878574839501801340070030115151021261302834310722729507541, f_q)) +mstore(0x16e0, mulmod(mload(0x1440), 19727366863391167538122140361473584127147630672623100827934084310230022599144, f_q)) +mstore(0x1700, addmod(mload(0x16c0), mload(0x16e0), f_q)) +mstore(0x1720, addmod(mload(0x1700), mload(0x6e0), f_q)) +mstore(0x1740, mulmod(mload(0x1720), mload(0x1720), f_q)) +mstore(0x1760, mulmod(mload(0x1740), mload(0x1740), f_q)) +mstore(0x1780, mulmod(mload(0x1720), mload(0x1760), f_q)) +mstore(0x17a0, mulmod(mload(0x640), 8897705321156975119607866206188469715432233408805434913352778521345836531302, f_q)) +mstore(0x17c0, mulmod(mload(0x660), 13897810991298242824030978581179475767377101082166056046492926701399149797630, f_q)) +mstore(0x17e0, addmod(mload(0x17a0), mload(0x17c0), f_q)) +mstore(0x1800, addmod(mload(0x1780), sub(f_q, mload(0x17e0)), f_q)) +mstore(0x1820, mulmod(mload(0x1800), mload(0x7e0), f_q)) +mstore(0x1840, addmod(mload(0x16a0), mload(0x1820), f_q)) +mstore(0x1860, mulmod(mload(0x420), mload(0x1840), f_q)) +mstore(0x1880, mulmod(mload(0x680), 5776684794125549462448597414050232243778680302179439492664047328281728356345, f_q)) +mstore(0x18a0, mulmod(mload(0x1440), 8348174920934122550483593999453880006756108121341067172388445916328941978568, f_q)) +mstore(0x18c0, addmod(mload(0x1880), mload(0x18a0), f_q)) +mstore(0x18e0, addmod(mload(0x18c0), mload(0x700), f_q)) +mstore(0x1900, mulmod(mload(0x640), 7127083008168878795310303301757642617203533252990949589494537404444738046722, f_q)) +mstore(0x1920, mulmod(mload(0x660), 10251091711782631878897995303436082826711938358699127319815611151510940403902, f_q)) +mstore(0x1940, addmod(mload(0x1900), mload(0x1920), f_q)) +mstore(0x1960, addmod(mload(0x18e0), sub(f_q, mload(0x1940)), f_q)) +mstore(0x1980, mulmod(mload(0x1960), mload(0x7e0), f_q)) +mstore(0x19a0, addmod(mload(0x1860), mload(0x1980), f_q)) +mstore(0x19c0, mulmod(mload(0x420), mload(0x19a0), f_q)) +mstore(0x19e0, addmod(1, sub(f_q, mload(0x7a0)), f_q)) +mstore(0x1a00, mulmod(mload(0x19e0), mload(0x7a0), f_q)) +mstore(0x1a20, addmod(2, sub(f_q, mload(0x7a0)), f_q)) +mstore(0x1a40, mulmod(mload(0x1a20), mload(0x1a00), f_q)) +mstore(0x1a60, addmod(4, sub(f_q, mload(0x7a0)), f_q)) +mstore(0x1a80, mulmod(mload(0x1a60), mload(0x1a40), f_q)) +mstore(0x1aa0, addmod(mload(0x6c0), mload(0x600), f_q)) +mstore(0x1ac0, addmod(mload(0x1aa0), sub(f_q, mload(0x640)), f_q)) +mstore(0x1ae0, mulmod(mload(0x1ac0), mload(0x1a80), f_q)) +mstore(0x1b00, addmod(mload(0x19c0), mload(0x1ae0), f_q)) +mstore(0x1b20, mulmod(mload(0x420), mload(0x1b00), f_q)) +mstore(0x1b40, addmod(mload(0x6a0), sub(f_q, mload(0x660)), f_q)) +mstore(0x1b60, mulmod(mload(0x1b40), mload(0x1a80), f_q)) +mstore(0x1b80, addmod(mload(0x1b20), mload(0x1b60), f_q)) +mstore(0x1ba0, mulmod(mload(0x420), mload(0x1b80), f_q)) +mstore(0x1bc0, mulmod(mload(0x1500), mload(0x800), f_q)) +mstore(0x1be0, addmod(mload(0x1ba0), mload(0x1bc0), f_q)) +mstore(0x1c00, mulmod(mload(0x420), mload(0x1be0), f_q)) +mstore(0x1c20, mulmod(mload(0x15c0), mload(0x800), f_q)) +mstore(0x1c40, addmod(mload(0x1c00), mload(0x1c20), f_q)) +mstore(0x1c60, mulmod(mload(0x420), mload(0x1c40), f_q)) +mstore(0x1c80, mulmod(mload(0x1640), mload(0x820), f_q)) +mstore(0x1ca0, addmod(mload(0x1c60), mload(0x1c80), f_q)) +mstore(0x1cc0, mulmod(mload(0x420), mload(0x1ca0), f_q)) +mstore(0x1ce0, mulmod(mload(0x1800), mload(0x820), f_q)) +mstore(0x1d00, addmod(mload(0x1cc0), mload(0x1ce0), f_q)) +mstore(0x1d20, mulmod(mload(0x420), mload(0x1d00), f_q)) +mstore(0x1d40, mulmod(mload(0x1960), mload(0x820), f_q)) +mstore(0x1d60, addmod(mload(0x1d20), mload(0x1d40), f_q)) +mstore(0x1d80, mulmod(mload(0x420), mload(0x1d60), f_q)) +mstore(0x1da0, addmod(3, sub(f_q, mload(0x7a0)), f_q)) +mstore(0x1dc0, mulmod(mload(0x1da0), mload(0x1a40), f_q)) +mstore(0x1de0, mulmod(mload(0x1ac0), mload(0x1dc0), f_q)) +mstore(0x1e00, addmod(mload(0x1d80), mload(0x1de0), f_q)) +mstore(0x1e20, mulmod(mload(0x420), mload(0x1e00), f_q)) +mstore(0x1e40, mulmod(mload(0x1b40), mload(0x1dc0), f_q)) +mstore(0x1e60, addmod(mload(0x1e20), mload(0x1e40), f_q)) +mstore(0x1e80, mulmod(mload(0x420), mload(0x1e60), f_q)) +mstore(0x1ea0, mulmod(mload(0x1a20), mload(0x7a0), f_q)) +mstore(0x1ec0, mulmod(mload(0x1da0), mload(0x1ea0), f_q)) +mstore(0x1ee0, mulmod(mload(0x1a60), mload(0x1ec0), f_q)) +mstore(0x1f00, mulmod(mload(0x680), mload(0x1ee0), f_q)) +mstore(0x1f20, addmod(1, sub(f_q, mload(0x680)), f_q)) +mstore(0x1f40, mulmod(mload(0x1f20), mload(0x1f00), f_q)) +mstore(0x1f60, addmod(mload(0x1e80), mload(0x1f40), f_q)) +mstore(0x1f80, mulmod(mload(0x420), mload(0x1f60), f_q)) +mstore(0x1fa0, mulmod(2, mload(0x680), f_q)) +mstore(0x1fc0, addmod(mload(0x620), sub(f_q, mload(0x600)), f_q)) +mstore(0x1fe0, mulmod(mload(0x1fc0), mload(0x1fa0), f_q)) +mstore(0x2000, addmod(mload(0x640), sub(f_q, mload(0x600)), f_q)) +mstore(0x2020, addmod(mload(0x1fe0), sub(f_q, mload(0x2000)), f_q)) +mstore(0x2040, addmod(mload(0x620), sub(f_q, mload(0x660)), f_q)) +mstore(0x2060, addmod(mload(0x2020), sub(f_q, mload(0x2040)), f_q)) +mstore(0x2080, mulmod(mload(0x2060), mload(0x1ee0), f_q)) +mstore(0x20a0, addmod(mload(0x1f80), mload(0x2080), f_q)) +mstore(0x20c0, mulmod(mload(0x420), mload(0x20a0), f_q)) +mstore(0x20e0, mulmod(mload(0x1da0), mload(0x1a00), f_q)) +mstore(0x2100, mulmod(mload(0x1a60), mload(0x20e0), f_q)) +mstore(0x2120, addmod(mload(0x600), mload(0x620), f_q)) +mstore(0x2140, addmod(mload(0x2120), sub(f_q, mload(0x680)), f_q)) +mstore(0x2160, mulmod(mload(0x2140), mload(0x2100), f_q)) +mstore(0x2180, addmod(mload(0x20c0), mload(0x2160), f_q)) +mstore(0x21a0, mulmod(mload(0x420), mload(0x2180), f_q)) +mstore(0x21c0, addmod(mload(0x21a0), mload(0x2160), f_q)) +mstore(0x21e0, mulmod(mload(0x420), mload(0x21c0), f_q)) +mstore(0x2200, addmod(1, sub(f_q, mload(0x920)), f_q)) +mstore(0x2220, mulmod(mload(0x2200), mload(0x1300), f_q)) +mstore(0x2240, addmod(mload(0x21e0), mload(0x2220), f_q)) +mstore(0x2260, mulmod(mload(0x420), mload(0x2240), f_q)) +mstore(0x2280, mulmod(mload(0x980), mload(0x980), f_q)) +mstore(0x22a0, addmod(mload(0x2280), sub(f_q, mload(0x980)), f_q)) +mstore(0x22c0, mulmod(mload(0x22a0), mload(0x1240), f_q)) +mstore(0x22e0, addmod(mload(0x2260), mload(0x22c0), f_q)) +mstore(0x2300, mulmod(mload(0x420), mload(0x22e0), f_q)) +mstore(0x2320, addmod(mload(0x980), sub(f_q, mload(0x960)), f_q)) +mstore(0x2340, mulmod(mload(0x2320), mload(0x1300), f_q)) +mstore(0x2360, addmod(mload(0x2300), mload(0x2340), f_q)) +mstore(0x2380, mulmod(mload(0x420), mload(0x2360), f_q)) +mstore(0x23a0, addmod(1, sub(f_q, mload(0x1240)), f_q)) +mstore(0x23c0, addmod(mload(0x1260), mload(0x1280), f_q)) +mstore(0x23e0, addmod(mload(0x23c0), mload(0x12a0), f_q)) +mstore(0x2400, addmod(mload(0x23e0), mload(0x12c0), f_q)) +mstore(0x2420, addmod(mload(0x2400), mload(0x12e0), f_q)) +mstore(0x2440, addmod(mload(0x23a0), sub(f_q, mload(0x2420)), f_q)) +mstore(0x2460, mulmod(mload(0x860), mload(0x260), f_q)) +mstore(0x2480, addmod(mload(0x6e0), mload(0x2460), f_q)) +mstore(0x24a0, addmod(mload(0x2480), mload(0x2c0), f_q)) +mstore(0x24c0, mulmod(mload(0x880), mload(0x260), f_q)) +mstore(0x24e0, addmod(mload(0x600), mload(0x24c0), f_q)) +mstore(0x2500, addmod(mload(0x24e0), mload(0x2c0), f_q)) +mstore(0x2520, mulmod(mload(0x2500), mload(0x24a0), f_q)) +mstore(0x2540, mulmod(mload(0x8a0), mload(0x260), f_q)) +mstore(0x2560, addmod(mload(0x620), mload(0x2540), f_q)) +mstore(0x2580, addmod(mload(0x2560), mload(0x2c0), f_q)) +mstore(0x25a0, mulmod(mload(0x2580), mload(0x2520), f_q)) +mstore(0x25c0, mulmod(mload(0x8c0), mload(0x260), f_q)) +mstore(0x25e0, addmod(mload(0x700), mload(0x25c0), f_q)) +mstore(0x2600, addmod(mload(0x25e0), mload(0x2c0), f_q)) +mstore(0x2620, mulmod(mload(0x2600), mload(0x25a0), f_q)) +mstore(0x2640, mulmod(mload(0x2620), mload(0x940), f_q)) +mstore(0x2660, mulmod(1, mload(0x260), f_q)) +mstore(0x2680, mulmod(mload(0x5c0), mload(0x2660), f_q)) +mstore(0x26a0, addmod(mload(0x6e0), mload(0x2680), f_q)) +mstore(0x26c0, addmod(mload(0x26a0), mload(0x2c0), f_q)) +mstore(0x26e0, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x260), f_q)) +mstore(0x2700, mulmod(mload(0x5c0), mload(0x26e0), f_q)) +mstore(0x2720, addmod(mload(0x600), mload(0x2700), f_q)) +mstore(0x2740, addmod(mload(0x2720), mload(0x2c0), f_q)) mstore(0x2760, mulmod(mload(0x2740), mload(0x26c0), f_q)) -mstore(0x2780, mulmod(mload(0x2760), mload(0x8e0), f_q)) -mstore(0x27a0, addmod(mload(0x2500), sub(f_q, mload(0x2780)), f_q)) -mstore(0x27c0, mulmod(mload(0x27a0), mload(0x2300), f_q)) -mstore(0x27e0, addmod(mload(0x2240), mload(0x27c0), f_q)) -mstore(0x2800, mulmod(mload(0x3e0), mload(0x27e0), f_q)) -mstore(0x2820, mulmod(mload(0x8a0), mload(0x220), f_q)) -mstore(0x2840, addmod(mload(0x640), mload(0x2820), f_q)) -mstore(0x2860, addmod(mload(0x2840), mload(0x280), f_q)) -mstore(0x2880, mulmod(mload(0x8c0), mload(0x220), f_q)) -mstore(0x28a0, addmod(mload(0x1240), mload(0x2880), f_q)) -mstore(0x28c0, addmod(mload(0x28a0), mload(0x280), f_q)) -mstore(0x28e0, mulmod(mload(0x28c0), mload(0x2860), f_q)) -mstore(0x2900, mulmod(mload(0x28e0), mload(0x960), f_q)) -mstore(0x2920, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x220), f_q)) -mstore(0x2940, mulmod(mload(0x580), mload(0x2920), f_q)) -mstore(0x2960, addmod(mload(0x640), mload(0x2940), f_q)) -mstore(0x2980, addmod(mload(0x2960), mload(0x280), f_q)) -mstore(0x29a0, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x220), f_q)) -mstore(0x29c0, mulmod(mload(0x580), mload(0x29a0), f_q)) -mstore(0x29e0, addmod(mload(0x1240), mload(0x29c0), f_q)) -mstore(0x2a00, addmod(mload(0x29e0), mload(0x280), f_q)) -mstore(0x2a20, mulmod(mload(0x2a00), mload(0x2980), f_q)) -mstore(0x2a40, mulmod(mload(0x2a20), mload(0x940), f_q)) -mstore(0x2a60, addmod(mload(0x2900), sub(f_q, mload(0x2a40)), f_q)) -mstore(0x2a80, mulmod(mload(0x2a60), mload(0x2300), f_q)) -mstore(0x2aa0, addmod(mload(0x2800), mload(0x2a80), f_q)) -mstore(0x2ac0, mulmod(mload(0x3e0), mload(0x2aa0), f_q)) -mstore(0x2ae0, addmod(1, sub(f_q, mload(0x980)), f_q)) -mstore(0x2b00, mulmod(mload(0x2ae0), mload(0x1200), f_q)) -mstore(0x2b20, addmod(mload(0x2ac0), mload(0x2b00), f_q)) -mstore(0x2b40, mulmod(mload(0x3e0), mload(0x2b20), f_q)) -mstore(0x2b60, mulmod(mload(0x980), mload(0x980), f_q)) -mstore(0x2b80, addmod(mload(0x2b60), sub(f_q, mload(0x980)), f_q)) -mstore(0x2ba0, mulmod(mload(0x2b80), mload(0x1140), f_q)) -mstore(0x2bc0, addmod(mload(0x2b40), mload(0x2ba0), f_q)) -mstore(0x2be0, mulmod(mload(0x3e0), mload(0x2bc0), f_q)) -mstore(0x2c00, addmod(mload(0x9c0), mload(0x220), f_q)) -mstore(0x2c20, mulmod(mload(0x2c00), mload(0x9a0), f_q)) -mstore(0x2c40, addmod(mload(0xa00), mload(0x280), f_q)) -mstore(0x2c60, mulmod(mload(0x2c40), mload(0x2c20), f_q)) -mstore(0x2c80, mulmod(256, mload(0x600), f_q)) -mstore(0x2ca0, addmod(mload(0x5c0), sub(f_q, mload(0x2c80)), f_q)) -mstore(0x2cc0, mulmod(mload(0x2ca0), mload(0x740), f_q)) -mstore(0x2ce0, addmod(mload(0x2cc0), mload(0x220), f_q)) -mstore(0x2d00, mulmod(mload(0x2ce0), mload(0x980), f_q)) -mstore(0x2d20, addmod(mload(0x720), mload(0x280), f_q)) -mstore(0x2d40, mulmod(mload(0x2d20), mload(0x2d00), f_q)) -mstore(0x2d60, addmod(mload(0x2c60), sub(f_q, mload(0x2d40)), f_q)) -mstore(0x2d80, mulmod(mload(0x2d60), mload(0x2300), f_q)) -mstore(0x2da0, addmod(mload(0x2be0), mload(0x2d80), f_q)) -mstore(0x2dc0, mulmod(mload(0x3e0), mload(0x2da0), f_q)) -mstore(0x2de0, addmod(mload(0x9c0), sub(f_q, mload(0xa00)), f_q)) -mstore(0x2e00, mulmod(mload(0x2de0), mload(0x1200), f_q)) -mstore(0x2e20, addmod(mload(0x2dc0), mload(0x2e00), f_q)) -mstore(0x2e40, mulmod(mload(0x3e0), mload(0x2e20), f_q)) -mstore(0x2e60, mulmod(mload(0x2de0), mload(0x2300), f_q)) -mstore(0x2e80, addmod(mload(0x9c0), sub(f_q, mload(0x9e0)), f_q)) -mstore(0x2ea0, mulmod(mload(0x2e80), mload(0x2e60), f_q)) -mstore(0x2ec0, addmod(mload(0x2e40), mload(0x2ea0), f_q)) -mstore(0x2ee0, mulmod(mload(0xd00), mload(0xd00), f_q)) -mstore(0x2f00, mulmod(mload(0x2ee0), mload(0xd00), f_q)) -mstore(0x2f20, mulmod(mload(0x2f00), mload(0xd00), f_q)) -mstore(0x2f40, mulmod(mload(0x2f20), mload(0xd00), f_q)) -mstore(0x2f60, mulmod(1, mload(0xd00), f_q)) -mstore(0x2f80, mulmod(1, mload(0x2ee0), f_q)) -mstore(0x2fa0, mulmod(1, mload(0x2f00), f_q)) -mstore(0x2fc0, mulmod(1, mload(0x2f20), f_q)) -mstore(0x2fe0, mulmod(mload(0x2ec0), mload(0xd20), f_q)) -mstore(0x3000, mulmod(mload(0xbc0), mload(0x580), f_q)) -mstore(0x3020, mulmod(mload(0x580), 1, f_q)) -mstore(0x3040, addmod(mload(0xb40), sub(f_q, mload(0x3020)), f_q)) -mstore(0x3060, mulmod(mload(0x580), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q)) -mstore(0x3080, addmod(mload(0xb40), sub(f_q, mload(0x3060)), f_q)) -mstore(0x30a0, mulmod(mload(0x580), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) -mstore(0x30c0, addmod(mload(0xb40), sub(f_q, mload(0x30a0)), f_q)) -mstore(0x30e0, mulmod(mload(0x580), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) -mstore(0x3100, addmod(mload(0xb40), sub(f_q, mload(0x30e0)), f_q)) +mstore(0x2780, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x260), f_q)) +mstore(0x27a0, mulmod(mload(0x5c0), mload(0x2780), f_q)) +mstore(0x27c0, addmod(mload(0x620), mload(0x27a0), f_q)) +mstore(0x27e0, addmod(mload(0x27c0), mload(0x2c0), f_q)) +mstore(0x2800, mulmod(mload(0x27e0), mload(0x2760), f_q)) +mstore(0x2820, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x260), f_q)) +mstore(0x2840, mulmod(mload(0x5c0), mload(0x2820), f_q)) +mstore(0x2860, addmod(mload(0x700), mload(0x2840), f_q)) +mstore(0x2880, addmod(mload(0x2860), mload(0x2c0), f_q)) +mstore(0x28a0, mulmod(mload(0x2880), mload(0x2800), f_q)) +mstore(0x28c0, mulmod(mload(0x28a0), mload(0x920), f_q)) +mstore(0x28e0, addmod(mload(0x2640), sub(f_q, mload(0x28c0)), f_q)) +mstore(0x2900, mulmod(mload(0x28e0), mload(0x2440), f_q)) +mstore(0x2920, addmod(mload(0x2380), mload(0x2900), f_q)) +mstore(0x2940, mulmod(mload(0x420), mload(0x2920), f_q)) +mstore(0x2960, mulmod(mload(0x8e0), mload(0x260), f_q)) +mstore(0x2980, addmod(mload(0x680), mload(0x2960), f_q)) +mstore(0x29a0, addmod(mload(0x2980), mload(0x2c0), f_q)) +mstore(0x29c0, mulmod(mload(0x900), mload(0x260), f_q)) +mstore(0x29e0, addmod(mload(0x1380), mload(0x29c0), f_q)) +mstore(0x2a00, addmod(mload(0x29e0), mload(0x2c0), f_q)) +mstore(0x2a20, mulmod(mload(0x2a00), mload(0x29a0), f_q)) +mstore(0x2a40, mulmod(mload(0x2a20), mload(0x9a0), f_q)) +mstore(0x2a60, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x260), f_q)) +mstore(0x2a80, mulmod(mload(0x5c0), mload(0x2a60), f_q)) +mstore(0x2aa0, addmod(mload(0x680), mload(0x2a80), f_q)) +mstore(0x2ac0, addmod(mload(0x2aa0), mload(0x2c0), f_q)) +mstore(0x2ae0, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x260), f_q)) +mstore(0x2b00, mulmod(mload(0x5c0), mload(0x2ae0), f_q)) +mstore(0x2b20, addmod(mload(0x1380), mload(0x2b00), f_q)) +mstore(0x2b40, addmod(mload(0x2b20), mload(0x2c0), f_q)) +mstore(0x2b60, mulmod(mload(0x2b40), mload(0x2ac0), f_q)) +mstore(0x2b80, mulmod(mload(0x2b60), mload(0x980), f_q)) +mstore(0x2ba0, addmod(mload(0x2a40), sub(f_q, mload(0x2b80)), f_q)) +mstore(0x2bc0, mulmod(mload(0x2ba0), mload(0x2440), f_q)) +mstore(0x2be0, addmod(mload(0x2940), mload(0x2bc0), f_q)) +mstore(0x2c00, mulmod(mload(0x420), mload(0x2be0), f_q)) +mstore(0x2c20, addmod(1, sub(f_q, mload(0x9c0)), f_q)) +mstore(0x2c40, mulmod(mload(0x2c20), mload(0x1300), f_q)) +mstore(0x2c60, addmod(mload(0x2c00), mload(0x2c40), f_q)) +mstore(0x2c80, mulmod(mload(0x420), mload(0x2c60), f_q)) +mstore(0x2ca0, mulmod(mload(0x9c0), mload(0x9c0), f_q)) +mstore(0x2cc0, addmod(mload(0x2ca0), sub(f_q, mload(0x9c0)), f_q)) +mstore(0x2ce0, mulmod(mload(0x2cc0), mload(0x1240), f_q)) +mstore(0x2d00, addmod(mload(0x2c80), mload(0x2ce0), f_q)) +mstore(0x2d20, mulmod(mload(0x420), mload(0x2d00), f_q)) +mstore(0x2d40, addmod(mload(0xa00), mload(0x260), f_q)) +mstore(0x2d60, mulmod(mload(0x2d40), mload(0x9e0), f_q)) +mstore(0x2d80, addmod(mload(0xa40), mload(0x2c0), f_q)) +mstore(0x2da0, mulmod(mload(0x2d80), mload(0x2d60), f_q)) +mstore(0x2dc0, mulmod(256, mload(0x640), f_q)) +mstore(0x2de0, addmod(mload(0x600), sub(f_q, mload(0x2dc0)), f_q)) +mstore(0x2e00, mulmod(mload(0x2de0), mload(0x780), f_q)) +mstore(0x2e20, addmod(mload(0x2e00), mload(0x260), f_q)) +mstore(0x2e40, mulmod(mload(0x2e20), mload(0x9c0), f_q)) +mstore(0x2e60, addmod(mload(0x760), mload(0x2c0), f_q)) +mstore(0x2e80, mulmod(mload(0x2e60), mload(0x2e40), f_q)) +mstore(0x2ea0, addmod(mload(0x2da0), sub(f_q, mload(0x2e80)), f_q)) +mstore(0x2ec0, mulmod(mload(0x2ea0), mload(0x2440), f_q)) +mstore(0x2ee0, addmod(mload(0x2d20), mload(0x2ec0), f_q)) +mstore(0x2f00, mulmod(mload(0x420), mload(0x2ee0), f_q)) +mstore(0x2f20, addmod(mload(0xa00), sub(f_q, mload(0xa40)), f_q)) +mstore(0x2f40, mulmod(mload(0x2f20), mload(0x1300), f_q)) +mstore(0x2f60, addmod(mload(0x2f00), mload(0x2f40), f_q)) +mstore(0x2f80, mulmod(mload(0x420), mload(0x2f60), f_q)) +mstore(0x2fa0, mulmod(mload(0x2f20), mload(0x2440), f_q)) +mstore(0x2fc0, addmod(mload(0xa00), sub(f_q, mload(0xa20)), f_q)) +mstore(0x2fe0, mulmod(mload(0x2fc0), mload(0x2fa0), f_q)) +mstore(0x3000, addmod(mload(0x2f80), mload(0x2fe0), f_q)) +mstore(0x3020, mulmod(mload(0xd40), mload(0xd40), f_q)) +mstore(0x3040, mulmod(mload(0x3020), mload(0xd40), f_q)) +mstore(0x3060, mulmod(mload(0x3040), mload(0xd40), f_q)) +mstore(0x3080, mulmod(mload(0x3060), mload(0xd40), f_q)) +mstore(0x30a0, mulmod(1, mload(0xd40), f_q)) +mstore(0x30c0, mulmod(1, mload(0x3020), f_q)) +mstore(0x30e0, mulmod(1, mload(0x3040), f_q)) +mstore(0x3100, mulmod(1, mload(0x3060), f_q)) +mstore(0x3120, mulmod(mload(0x3000), mload(0xd60), f_q)) +mstore(0x3140, mulmod(mload(0xc00), mload(0x5c0), f_q)) +mstore(0x3160, mulmod(mload(0x5c0), 1, f_q)) +mstore(0x3180, addmod(mload(0xb80), sub(f_q, mload(0x3160)), f_q)) +mstore(0x31a0, mulmod(mload(0x5c0), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q)) +mstore(0x31c0, addmod(mload(0xb80), sub(f_q, mload(0x31a0)), f_q)) +mstore(0x31e0, mulmod(mload(0x5c0), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) +mstore(0x3200, addmod(mload(0xb80), sub(f_q, mload(0x31e0)), f_q)) +mstore(0x3220, mulmod(mload(0x5c0), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) +mstore(0x3240, addmod(mload(0xb80), sub(f_q, mload(0x3220)), f_q)) { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 14935689044936328720213520384837211407239373163407808768092422456738089171339, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 6952553826902946502032885360420063681308991237008225575605781729837719324278, f_q), f_q), result, f_q) -mstore(12576, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 14935689044936328720213520384837211407239373163407808768092422456738089171339, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 6952553826902946502032885360420063681308991237008225575605781729837719324278, f_q), f_q), result, f_q) +mstore(12896, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 7540907510155698387256503820143330389809914548046512731972450943457626251574, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 17454089668527239794105182244994964593641145239866915085378986192780276655988, f_q), f_q), result, f_q) -mstore(12608, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 7540907510155698387256503820143330389809914548046512731972450943457626251574, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 17454089668527239794105182244994964593641145239866915085378986192780276655988, f_q), f_q), result, f_q) +mstore(12928, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 16765245179638222004592619476379737764479697804128512065226459610007790881832, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 6067403861988280018436561787453590745850405443026581205331008293509136248791, f_q), f_q), result, f_q) -mstore(12640, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 16765245179638222004592619476379737764479697804128512065226459610007790881832, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 6067403861988280018436561787453590745850405443026581205331008293509136248791, f_q), f_q), result, f_q) +mstore(12960, result) } -mstore(0x3180, mulmod(1, mload(0x3040), f_q)) -mstore(0x31a0, mulmod(mload(0x3180), mload(0x3080), f_q)) -mstore(0x31c0, mulmod(mload(0x31a0), mload(0x3100), f_q)) +mstore(0x32c0, mulmod(1, mload(0x3180), f_q)) +mstore(0x32e0, mulmod(mload(0x32c0), mload(0x31c0), f_q)) +mstore(0x3300, mulmod(mload(0x32e0), mload(0x3240), f_q)) { - let result := mulmod(mload(0xb40), 1, f_q) -result := addmod(mulmod(mload(0x580), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) -mstore(12768, result) + let result := mulmod(mload(0xb80), 1, f_q) +result := addmod(mulmod(mload(0x5c0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) +mstore(13088, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 13346277807347402051479003338644866680074640264080882830084838995653627694322, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 8541965064491873170767402406612408408473724136335151513613365190922180801295, f_q), f_q), result, f_q) -mstore(12800, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 13346277807347402051479003338644866680074640264080882830084838995653627694322, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 8541965064491873170767402406612408408473724136335151513613365190922180801295, f_q), f_q), result, f_q) +mstore(13120, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 9130318747744625055991020866335675116974647447373438669980034404542087728591, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 17654030801727560324741115319652541746559479525075366613702001578587072243451, f_q), f_q), result, f_q) -mstore(12832, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 9130318747744625055991020866335675116974647447373438669980034404542087728591, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 17654030801727560324741115319652541746559479525075366613702001578587072243451, f_q), f_q), result, f_q) +mstore(13152, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0xbc0), 8968217942074169282201771672973351205073655055696863512223304343263448008755, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0xbc0), 15489683287416706862113636648384499783884413315698913841173435408703605255719, f_q), f_q), result, f_q) -mstore(12864, result) + let result := mulmod(mload(0xb80), mulmod(mload(0xc00), 8968217942074169282201771672973351205073655055696863512223304343263448008755, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0xc00), 15489683287416706862113636648384499783884413315698913841173435408703605255719, f_q), f_q), result, f_q) +mstore(13184, result) } -mstore(0x3260, mulmod(mload(0x31a0), mload(0x30c0), f_q)) +mstore(0x33a0, mulmod(mload(0x32e0), mload(0x3200), f_q)) { - let result := mulmod(mload(0xb40), mulmod(mload(0x580), 12492139669565018291300799122050748188086418716150538504685768693941615300515, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0x580), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q), result, f_q) -mstore(12928, result) + let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 12492139669565018291300799122050748188086418716150538504685768693941615300515, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q), result, f_q) +mstore(13248, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0x580), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0x580), 11903785986312266406077180662327481479585495405112251348319099480321708373219, f_q), f_q), result, f_q) -mstore(12960, result) + let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 9396103202274256930945606623206526900461945684265495839012435492634193195102, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 11903785986312266406077180662327481479585495405112251348319099480321708373219, f_q), f_q), result, f_q) +mstore(13280, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0x580), 2443549375371310428912721262786463219152954447257270263406653762796473870824, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0x580), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q), result, f_q) -mstore(12992, result) + let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 2443549375371310428912721262786463219152954447257270263406653762796473870824, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q), result, f_q) +mstore(13312, result) } { - let result := mulmod(mload(0xb40), mulmod(mload(0x580), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q) -result := addmod(mulmod(mload(0x580), mulmod(mload(0x580), 14519100894475310148599392892084064224530612280553018117484180069202210808887, f_q), f_q), result, f_q) -mstore(13024, result) + let result := mulmod(mload(0xb80), mulmod(mload(0x5c0), 19444693496467964793333684482470811869395409953158764080291550423779334624793, f_q), f_q) +result := addmod(mulmod(mload(0x5c0), mulmod(mload(0x5c0), 14519100894475310148599392892084064224530612280553018117484180069202210808887, f_q), f_q), result, f_q) +mstore(13344, result) } -mstore(0x3300, mulmod(mload(0x3180), mload(0x3100), f_q)) +mstore(0x3440, mulmod(mload(0x32c0), mload(0x3240), f_q)) { - let prod := mload(0x3120) + let prod := mload(0x3260) - prod := mulmod(mload(0x3140), prod, f_q) - mstore(0x3320, prod) + prod := mulmod(mload(0x3280), prod, f_q) + mstore(0x3460, prod) - prod := mulmod(mload(0x3160), prod, f_q) - mstore(0x3340, prod) + prod := mulmod(mload(0x32a0), prod, f_q) + mstore(0x3480, prod) - prod := mulmod(mload(0x31e0), prod, f_q) - mstore(0x3360, prod) + prod := mulmod(mload(0x3320), prod, f_q) + mstore(0x34a0, prod) - prod := mulmod(mload(0x3180), prod, f_q) - mstore(0x3380, prod) + prod := mulmod(mload(0x32c0), prod, f_q) + mstore(0x34c0, prod) - prod := mulmod(mload(0x3200), prod, f_q) - mstore(0x33a0, prod) + prod := mulmod(mload(0x3340), prod, f_q) + mstore(0x34e0, prod) - prod := mulmod(mload(0x3220), prod, f_q) - mstore(0x33c0, prod) + prod := mulmod(mload(0x3360), prod, f_q) + mstore(0x3500, prod) - prod := mulmod(mload(0x3240), prod, f_q) - mstore(0x33e0, prod) + prod := mulmod(mload(0x3380), prod, f_q) + mstore(0x3520, prod) - prod := mulmod(mload(0x3260), prod, f_q) - mstore(0x3400, prod) + prod := mulmod(mload(0x33a0), prod, f_q) + mstore(0x3540, prod) - prod := mulmod(mload(0x3280), prod, f_q) - mstore(0x3420, prod) + prod := mulmod(mload(0x33c0), prod, f_q) + mstore(0x3560, prod) - prod := mulmod(mload(0x32a0), prod, f_q) - mstore(0x3440, prod) + prod := mulmod(mload(0x33e0), prod, f_q) + mstore(0x3580, prod) - prod := mulmod(mload(0x31a0), prod, f_q) - mstore(0x3460, prod) + prod := mulmod(mload(0x32e0), prod, f_q) + mstore(0x35a0, prod) - prod := mulmod(mload(0x32c0), prod, f_q) - mstore(0x3480, prod) + prod := mulmod(mload(0x3400), prod, f_q) + mstore(0x35c0, prod) - prod := mulmod(mload(0x32e0), prod, f_q) - mstore(0x34a0, prod) + prod := mulmod(mload(0x3420), prod, f_q) + mstore(0x35e0, prod) - prod := mulmod(mload(0x3300), prod, f_q) - mstore(0x34c0, prod) + prod := mulmod(mload(0x3440), prod, f_q) + mstore(0x3600, prod) } -mstore(0x3500, 32) -mstore(0x3520, 32) -mstore(0x3540, 32) -mstore(0x3560, mload(0x34c0)) -mstore(0x3580, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x35a0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x3500, 0xc0, 0x34e0, 0x20), 1), success) +mstore(0x3640, 32) +mstore(0x3660, 32) +mstore(0x3680, 32) +mstore(0x36a0, mload(0x3600)) +mstore(0x36c0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x36e0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x3640, 0xc0, 0x3620, 0x20), 1), success) { - let inv := mload(0x34e0) + let inv := mload(0x3620) let v - v := mload(0x3300) - mstore(13056, mulmod(mload(0x34a0), inv, f_q)) + v := mload(0x3440) + mstore(13376, mulmod(mload(0x35e0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x32e0) - mstore(13024, mulmod(mload(0x3480), inv, f_q)) + v := mload(0x3420) + mstore(13344, mulmod(mload(0x35c0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x32c0) - mstore(12992, mulmod(mload(0x3460), inv, f_q)) + v := mload(0x3400) + mstore(13312, mulmod(mload(0x35a0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x31a0) - mstore(12704, mulmod(mload(0x3440), inv, f_q)) + v := mload(0x32e0) + mstore(13024, mulmod(mload(0x3580), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x32a0) - mstore(12960, mulmod(mload(0x3420), inv, f_q)) + v := mload(0x33e0) + mstore(13280, mulmod(mload(0x3560), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3280) - mstore(12928, mulmod(mload(0x3400), inv, f_q)) + v := mload(0x33c0) + mstore(13248, mulmod(mload(0x3540), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3260) - mstore(12896, mulmod(mload(0x33e0), inv, f_q)) + v := mload(0x33a0) + mstore(13216, mulmod(mload(0x3520), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3240) - mstore(12864, mulmod(mload(0x33c0), inv, f_q)) + v := mload(0x3380) + mstore(13184, mulmod(mload(0x3500), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3220) - mstore(12832, mulmod(mload(0x33a0), inv, f_q)) + v := mload(0x3360) + mstore(13152, mulmod(mload(0x34e0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3200) - mstore(12800, mulmod(mload(0x3380), inv, f_q)) + v := mload(0x3340) + mstore(13120, mulmod(mload(0x34c0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3180) - mstore(12672, mulmod(mload(0x3360), inv, f_q)) + v := mload(0x32c0) + mstore(12992, mulmod(mload(0x34a0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x31e0) - mstore(12768, mulmod(mload(0x3340), inv, f_q)) + v := mload(0x3320) + mstore(13088, mulmod(mload(0x3480), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3160) - mstore(12640, mulmod(mload(0x3320), inv, f_q)) + v := mload(0x32a0) + mstore(12960, mulmod(mload(0x3460), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3140) - mstore(12608, mulmod(mload(0x3120), inv, f_q)) + v := mload(0x3280) + mstore(12928, mulmod(mload(0x3260), inv, f_q)) inv := mulmod(v, inv, f_q) - mstore(0x3120, inv) + mstore(0x3260, inv) } { - let result := mload(0x3120) -result := addmod(mload(0x3140), result, f_q) -result := addmod(mload(0x3160), result, f_q) -mstore(13760, result) + let result := mload(0x3260) +result := addmod(mload(0x3280), result, f_q) +result := addmod(mload(0x32a0), result, f_q) +mstore(14080, result) } -mstore(0x35e0, mulmod(mload(0x31c0), mload(0x3180), f_q)) +mstore(0x3720, mulmod(mload(0x3300), mload(0x32c0), f_q)) { - let result := mload(0x31e0) -mstore(13824, result) + let result := mload(0x3320) +mstore(14144, result) } -mstore(0x3620, mulmod(mload(0x31c0), mload(0x3260), f_q)) +mstore(0x3760, mulmod(mload(0x3300), mload(0x33a0), f_q)) { - let result := mload(0x3200) -result := addmod(mload(0x3220), result, f_q) -result := addmod(mload(0x3240), result, f_q) -mstore(13888, result) + let result := mload(0x3340) +result := addmod(mload(0x3360), result, f_q) +result := addmod(mload(0x3380), result, f_q) +mstore(14208, result) } -mstore(0x3660, mulmod(mload(0x31c0), mload(0x31a0), f_q)) +mstore(0x37a0, mulmod(mload(0x3300), mload(0x32e0), f_q)) { - let result := mload(0x3280) -result := addmod(mload(0x32a0), result, f_q) -mstore(13952, result) + let result := mload(0x33c0) +result := addmod(mload(0x33e0), result, f_q) +mstore(14272, result) } -mstore(0x36a0, mulmod(mload(0x31c0), mload(0x3300), f_q)) +mstore(0x37e0, mulmod(mload(0x3300), mload(0x3440), f_q)) { - let result := mload(0x32c0) -result := addmod(mload(0x32e0), result, f_q) -mstore(14016, result) + let result := mload(0x3400) +result := addmod(mload(0x3420), result, f_q) +mstore(14336, result) } { - let prod := mload(0x35c0) + let prod := mload(0x3700) - prod := mulmod(mload(0x3600), prod, f_q) - mstore(0x36e0, prod) + prod := mulmod(mload(0x3740), prod, f_q) + mstore(0x3820, prod) - prod := mulmod(mload(0x3640), prod, f_q) - mstore(0x3700, prod) + prod := mulmod(mload(0x3780), prod, f_q) + mstore(0x3840, prod) - prod := mulmod(mload(0x3680), prod, f_q) - mstore(0x3720, prod) + prod := mulmod(mload(0x37c0), prod, f_q) + mstore(0x3860, prod) - prod := mulmod(mload(0x36c0), prod, f_q) - mstore(0x3740, prod) + prod := mulmod(mload(0x3800), prod, f_q) + mstore(0x3880, prod) } -mstore(0x3780, 32) -mstore(0x37a0, 32) -mstore(0x37c0, 32) -mstore(0x37e0, mload(0x3740)) -mstore(0x3800, 21888242871839275222246405745257275088548364400416034343698204186575808495615) -mstore(0x3820, 21888242871839275222246405745257275088548364400416034343698204186575808495617) -success := and(eq(staticcall(gas(), 0x5, 0x3780, 0xc0, 0x3760, 0x20), 1), success) +mstore(0x38c0, 32) +mstore(0x38e0, 32) +mstore(0x3900, 32) +mstore(0x3920, mload(0x3880)) +mstore(0x3940, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x3960, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x38c0, 0xc0, 0x38a0, 0x20), 1), success) { - let inv := mload(0x3760) + let inv := mload(0x38a0) let v - v := mload(0x36c0) - mstore(14016, mulmod(mload(0x3720), inv, f_q)) + v := mload(0x3800) + mstore(14336, mulmod(mload(0x3860), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3680) - mstore(13952, mulmod(mload(0x3700), inv, f_q)) + v := mload(0x37c0) + mstore(14272, mulmod(mload(0x3840), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3640) - mstore(13888, mulmod(mload(0x36e0), inv, f_q)) + v := mload(0x3780) + mstore(14208, mulmod(mload(0x3820), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3600) - mstore(13824, mulmod(mload(0x35c0), inv, f_q)) + v := mload(0x3740) + mstore(14144, mulmod(mload(0x3700), inv, f_q)) inv := mulmod(v, inv, f_q) - mstore(0x35c0, inv) + mstore(0x3700, inv) } -mstore(0x3840, mulmod(mload(0x35e0), mload(0x3600), f_q)) -mstore(0x3860, mulmod(mload(0x3620), mload(0x3640), f_q)) -mstore(0x3880, mulmod(mload(0x3660), mload(0x3680), f_q)) -mstore(0x38a0, mulmod(mload(0x36a0), mload(0x36c0), f_q)) -mstore(0x38c0, mulmod(mload(0xa40), mload(0xa40), f_q)) -mstore(0x38e0, mulmod(mload(0x38c0), mload(0xa40), f_q)) -mstore(0x3900, mulmod(mload(0x38e0), mload(0xa40), f_q)) -mstore(0x3920, mulmod(mload(0x3900), mload(0xa40), f_q)) -mstore(0x3940, mulmod(mload(0x3920), mload(0xa40), f_q)) -mstore(0x3960, mulmod(mload(0x3940), mload(0xa40), f_q)) -mstore(0x3980, mulmod(mload(0x3960), mload(0xa40), f_q)) -mstore(0x39a0, mulmod(mload(0x3980), mload(0xa40), f_q)) -mstore(0x39c0, mulmod(mload(0x39a0), mload(0xa40), f_q)) -mstore(0x39e0, mulmod(mload(0x39c0), mload(0xa40), f_q)) -mstore(0x3a00, mulmod(mload(0x39e0), mload(0xa40), f_q)) -mstore(0x3a20, mulmod(mload(0x3a00), mload(0xa40), f_q)) -mstore(0x3a40, mulmod(mload(0x3a20), mload(0xa40), f_q)) -mstore(0x3a60, mulmod(mload(0x3a40), mload(0xa40), f_q)) -mstore(0x3a80, mulmod(mload(0x3a60), mload(0xa40), f_q)) -mstore(0x3aa0, mulmod(mload(0x3a80), mload(0xa40), f_q)) -mstore(0x3ac0, mulmod(mload(0x3aa0), mload(0xa40), f_q)) -mstore(0x3ae0, mulmod(mload(0x3ac0), mload(0xa40), f_q)) -mstore(0x3b00, mulmod(mload(0x3ae0), mload(0xa40), f_q)) -mstore(0x3b20, mulmod(mload(0x3b00), mload(0xa40), f_q)) -mstore(0x3b40, mulmod(mload(0xaa0), mload(0xaa0), f_q)) -mstore(0x3b60, mulmod(mload(0x3b40), mload(0xaa0), f_q)) -mstore(0x3b80, mulmod(mload(0x3b60), mload(0xaa0), f_q)) -mstore(0x3ba0, mulmod(mload(0x3b80), mload(0xaa0), f_q)) +mstore(0x3980, mulmod(mload(0x3720), mload(0x3740), f_q)) +mstore(0x39a0, mulmod(mload(0x3760), mload(0x3780), f_q)) +mstore(0x39c0, mulmod(mload(0x37a0), mload(0x37c0), f_q)) +mstore(0x39e0, mulmod(mload(0x37e0), mload(0x3800), f_q)) +mstore(0x3a00, mulmod(mload(0xa80), mload(0xa80), f_q)) +mstore(0x3a20, mulmod(mload(0x3a00), mload(0xa80), f_q)) +mstore(0x3a40, mulmod(mload(0x3a20), mload(0xa80), f_q)) +mstore(0x3a60, mulmod(mload(0x3a40), mload(0xa80), f_q)) +mstore(0x3a80, mulmod(mload(0x3a60), mload(0xa80), f_q)) +mstore(0x3aa0, mulmod(mload(0x3a80), mload(0xa80), f_q)) +mstore(0x3ac0, mulmod(mload(0x3aa0), mload(0xa80), f_q)) +mstore(0x3ae0, mulmod(mload(0x3ac0), mload(0xa80), f_q)) +mstore(0x3b00, mulmod(mload(0x3ae0), mload(0xa80), f_q)) +mstore(0x3b20, mulmod(mload(0x3b00), mload(0xa80), f_q)) +mstore(0x3b40, mulmod(mload(0x3b20), mload(0xa80), f_q)) +mstore(0x3b60, mulmod(mload(0x3b40), mload(0xa80), f_q)) +mstore(0x3b80, mulmod(mload(0x3b60), mload(0xa80), f_q)) +mstore(0x3ba0, mulmod(mload(0x3b80), mload(0xa80), f_q)) +mstore(0x3bc0, mulmod(mload(0x3ba0), mload(0xa80), f_q)) +mstore(0x3be0, mulmod(mload(0x3bc0), mload(0xa80), f_q)) +mstore(0x3c00, mulmod(mload(0x3be0), mload(0xa80), f_q)) +mstore(0x3c20, mulmod(mload(0x3c00), mload(0xa80), f_q)) +mstore(0x3c40, mulmod(mload(0x3c20), mload(0xa80), f_q)) +mstore(0x3c60, mulmod(mload(0x3c40), mload(0xa80), f_q)) +mstore(0x3c80, mulmod(mload(0xae0), mload(0xae0), f_q)) +mstore(0x3ca0, mulmod(mload(0x3c80), mload(0xae0), f_q)) +mstore(0x3cc0, mulmod(mload(0x3ca0), mload(0xae0), f_q)) +mstore(0x3ce0, mulmod(mload(0x3cc0), mload(0xae0), f_q)) { - let result := mulmod(mload(0x5c0), mload(0x3120), f_q) -result := addmod(mulmod(mload(0x600), mload(0x3140), f_q), result, f_q) -result := addmod(mulmod(mload(0x680), mload(0x3160), f_q), result, f_q) -mstore(15296, result) + let result := mulmod(mload(0x600), mload(0x3260), f_q) +result := addmod(mulmod(mload(0x640), mload(0x3280), f_q), result, f_q) +result := addmod(mulmod(mload(0x6c0), mload(0x32a0), f_q), result, f_q) +mstore(15616, result) } -mstore(0x3be0, mulmod(mload(0x3bc0), mload(0x35c0), f_q)) -mstore(0x3c00, mulmod(sub(f_q, mload(0x3be0)), 1, f_q)) -{ - let result := mulmod(mload(0x5e0), mload(0x3120), f_q) -result := addmod(mulmod(mload(0x620), mload(0x3140), f_q), result, f_q) -result := addmod(mulmod(mload(0x660), mload(0x3160), f_q), result, f_q) -mstore(15392, result) - } -mstore(0x3c40, mulmod(mload(0x3c20), mload(0x35c0), f_q)) -mstore(0x3c60, mulmod(sub(f_q, mload(0x3c40)), mload(0xa40), f_q)) -mstore(0x3c80, mulmod(1, mload(0xa40), f_q)) -mstore(0x3ca0, addmod(mload(0x3c00), mload(0x3c60), f_q)) -mstore(0x3cc0, mulmod(mload(0x3ca0), 1, f_q)) -mstore(0x3ce0, mulmod(mload(0x3c80), 1, f_q)) -mstore(0x3d00, mulmod(1, mload(0x35e0), f_q)) +mstore(0x3d20, mulmod(mload(0x3d00), mload(0x3700), f_q)) +mstore(0x3d40, mulmod(sub(f_q, mload(0x3d20)), 1, f_q)) { - let result := mulmod(mload(0x640), mload(0x31e0), f_q) -mstore(15648, result) - } -mstore(0x3d40, mulmod(mload(0x3d20), mload(0x3840), f_q)) -mstore(0x3d60, mulmod(sub(f_q, mload(0x3d40)), 1, f_q)) -mstore(0x3d80, mulmod(mload(0x3d00), 1, f_q)) -{ - let result := mulmod(mload(0xa00), mload(0x31e0), f_q) -mstore(15776, result) - } -mstore(0x3dc0, mulmod(mload(0x3da0), mload(0x3840), f_q)) -mstore(0x3de0, mulmod(sub(f_q, mload(0x3dc0)), mload(0xa40), f_q)) -mstore(0x3e00, mulmod(mload(0x3d00), mload(0xa40), f_q)) -mstore(0x3e20, addmod(mload(0x3d60), mload(0x3de0), f_q)) + let result := mulmod(mload(0x620), mload(0x3260), f_q) +result := addmod(mulmod(mload(0x660), mload(0x3280), f_q), result, f_q) +result := addmod(mulmod(mload(0x6a0), mload(0x32a0), f_q), result, f_q) +mstore(15712, result) + } +mstore(0x3d80, mulmod(mload(0x3d60), mload(0x3700), f_q)) +mstore(0x3da0, mulmod(sub(f_q, mload(0x3d80)), mload(0xa80), f_q)) +mstore(0x3dc0, mulmod(1, mload(0xa80), f_q)) +mstore(0x3de0, addmod(mload(0x3d40), mload(0x3da0), f_q)) +mstore(0x3e00, mulmod(mload(0x3de0), 1, f_q)) +mstore(0x3e20, mulmod(mload(0x3dc0), 1, f_q)) +mstore(0x3e40, mulmod(1, mload(0x3720), f_q)) { - let result := mulmod(mload(0x6a0), mload(0x31e0), f_q) -mstore(15936, result) + let result := mulmod(mload(0x680), mload(0x3320), f_q) +mstore(15968, result) } -mstore(0x3e60, mulmod(mload(0x3e40), mload(0x3840), f_q)) -mstore(0x3e80, mulmod(sub(f_q, mload(0x3e60)), mload(0x38c0), f_q)) -mstore(0x3ea0, mulmod(mload(0x3d00), mload(0x38c0), f_q)) -mstore(0x3ec0, addmod(mload(0x3e20), mload(0x3e80), f_q)) +mstore(0x3e80, mulmod(mload(0x3e60), mload(0x3980), f_q)) +mstore(0x3ea0, mulmod(sub(f_q, mload(0x3e80)), 1, f_q)) +mstore(0x3ec0, mulmod(mload(0x3e40), 1, f_q)) { - let result := mulmod(mload(0x6c0), mload(0x31e0), f_q) + let result := mulmod(mload(0xa40), mload(0x3320), f_q) mstore(16096, result) } -mstore(0x3f00, mulmod(mload(0x3ee0), mload(0x3840), f_q)) -mstore(0x3f20, mulmod(sub(f_q, mload(0x3f00)), mload(0x38e0), f_q)) -mstore(0x3f40, mulmod(mload(0x3d00), mload(0x38e0), f_q)) -mstore(0x3f60, addmod(mload(0x3ec0), mload(0x3f20), f_q)) +mstore(0x3f00, mulmod(mload(0x3ee0), mload(0x3980), f_q)) +mstore(0x3f20, mulmod(sub(f_q, mload(0x3f00)), mload(0xa80), f_q)) +mstore(0x3f40, mulmod(mload(0x3e40), mload(0xa80), f_q)) +mstore(0x3f60, addmod(mload(0x3ea0), mload(0x3f20), f_q)) { - let result := mulmod(mload(0x6e0), mload(0x31e0), f_q) + let result := mulmod(mload(0x6e0), mload(0x3320), f_q) mstore(16256, result) } -mstore(0x3fa0, mulmod(mload(0x3f80), mload(0x3840), f_q)) -mstore(0x3fc0, mulmod(sub(f_q, mload(0x3fa0)), mload(0x3900), f_q)) -mstore(0x3fe0, mulmod(mload(0x3d00), mload(0x3900), f_q)) +mstore(0x3fa0, mulmod(mload(0x3f80), mload(0x3980), f_q)) +mstore(0x3fc0, mulmod(sub(f_q, mload(0x3fa0)), mload(0x3a00), f_q)) +mstore(0x3fe0, mulmod(mload(0x3e40), mload(0x3a00), f_q)) mstore(0x4000, addmod(mload(0x3f60), mload(0x3fc0), f_q)) { - let result := mulmod(mload(0x700), mload(0x31e0), f_q) + let result := mulmod(mload(0x700), mload(0x3320), f_q) mstore(16416, result) } -mstore(0x4040, mulmod(mload(0x4020), mload(0x3840), f_q)) -mstore(0x4060, mulmod(sub(f_q, mload(0x4040)), mload(0x3920), f_q)) -mstore(0x4080, mulmod(mload(0x3d00), mload(0x3920), f_q)) +mstore(0x4040, mulmod(mload(0x4020), mload(0x3980), f_q)) +mstore(0x4060, mulmod(sub(f_q, mload(0x4040)), mload(0x3a20), f_q)) +mstore(0x4080, mulmod(mload(0x3e40), mload(0x3a20), f_q)) mstore(0x40a0, addmod(mload(0x4000), mload(0x4060), f_q)) { - let result := mulmod(mload(0x720), mload(0x31e0), f_q) + let result := mulmod(mload(0x720), mload(0x3320), f_q) mstore(16576, result) } -mstore(0x40e0, mulmod(mload(0x40c0), mload(0x3840), f_q)) -mstore(0x4100, mulmod(sub(f_q, mload(0x40e0)), mload(0x3940), f_q)) -mstore(0x4120, mulmod(mload(0x3d00), mload(0x3940), f_q)) +mstore(0x40e0, mulmod(mload(0x40c0), mload(0x3980), f_q)) +mstore(0x4100, mulmod(sub(f_q, mload(0x40e0)), mload(0x3a40), f_q)) +mstore(0x4120, mulmod(mload(0x3e40), mload(0x3a40), f_q)) mstore(0x4140, addmod(mload(0x40a0), mload(0x4100), f_q)) { - let result := mulmod(mload(0x740), mload(0x31e0), f_q) + let result := mulmod(mload(0x740), mload(0x3320), f_q) mstore(16736, result) } -mstore(0x4180, mulmod(mload(0x4160), mload(0x3840), f_q)) -mstore(0x41a0, mulmod(sub(f_q, mload(0x4180)), mload(0x3960), f_q)) -mstore(0x41c0, mulmod(mload(0x3d00), mload(0x3960), f_q)) +mstore(0x4180, mulmod(mload(0x4160), mload(0x3980), f_q)) +mstore(0x41a0, mulmod(sub(f_q, mload(0x4180)), mload(0x3a60), f_q)) +mstore(0x41c0, mulmod(mload(0x3e40), mload(0x3a60), f_q)) mstore(0x41e0, addmod(mload(0x4140), mload(0x41a0), f_q)) { - let result := mulmod(mload(0x760), mload(0x31e0), f_q) + let result := mulmod(mload(0x760), mload(0x3320), f_q) mstore(16896, result) } -mstore(0x4220, mulmod(mload(0x4200), mload(0x3840), f_q)) -mstore(0x4240, mulmod(sub(f_q, mload(0x4220)), mload(0x3980), f_q)) -mstore(0x4260, mulmod(mload(0x3d00), mload(0x3980), f_q)) +mstore(0x4220, mulmod(mload(0x4200), mload(0x3980), f_q)) +mstore(0x4240, mulmod(sub(f_q, mload(0x4220)), mload(0x3a80), f_q)) +mstore(0x4260, mulmod(mload(0x3e40), mload(0x3a80), f_q)) mstore(0x4280, addmod(mload(0x41e0), mload(0x4240), f_q)) { - let result := mulmod(mload(0x780), mload(0x31e0), f_q) + let result := mulmod(mload(0x780), mload(0x3320), f_q) mstore(17056, result) } -mstore(0x42c0, mulmod(mload(0x42a0), mload(0x3840), f_q)) -mstore(0x42e0, mulmod(sub(f_q, mload(0x42c0)), mload(0x39a0), f_q)) -mstore(0x4300, mulmod(mload(0x3d00), mload(0x39a0), f_q)) +mstore(0x42c0, mulmod(mload(0x42a0), mload(0x3980), f_q)) +mstore(0x42e0, mulmod(sub(f_q, mload(0x42c0)), mload(0x3aa0), f_q)) +mstore(0x4300, mulmod(mload(0x3e40), mload(0x3aa0), f_q)) mstore(0x4320, addmod(mload(0x4280), mload(0x42e0), f_q)) { - let result := mulmod(mload(0x7a0), mload(0x31e0), f_q) + let result := mulmod(mload(0x7a0), mload(0x3320), f_q) mstore(17216, result) } -mstore(0x4360, mulmod(mload(0x4340), mload(0x3840), f_q)) -mstore(0x4380, mulmod(sub(f_q, mload(0x4360)), mload(0x39c0), f_q)) -mstore(0x43a0, mulmod(mload(0x3d00), mload(0x39c0), f_q)) +mstore(0x4360, mulmod(mload(0x4340), mload(0x3980), f_q)) +mstore(0x4380, mulmod(sub(f_q, mload(0x4360)), mload(0x3ac0), f_q)) +mstore(0x43a0, mulmod(mload(0x3e40), mload(0x3ac0), f_q)) mstore(0x43c0, addmod(mload(0x4320), mload(0x4380), f_q)) { - let result := mulmod(mload(0x7c0), mload(0x31e0), f_q) + let result := mulmod(mload(0x7c0), mload(0x3320), f_q) mstore(17376, result) } -mstore(0x4400, mulmod(mload(0x43e0), mload(0x3840), f_q)) -mstore(0x4420, mulmod(sub(f_q, mload(0x4400)), mload(0x39e0), f_q)) -mstore(0x4440, mulmod(mload(0x3d00), mload(0x39e0), f_q)) +mstore(0x4400, mulmod(mload(0x43e0), mload(0x3980), f_q)) +mstore(0x4420, mulmod(sub(f_q, mload(0x4400)), mload(0x3ae0), f_q)) +mstore(0x4440, mulmod(mload(0x3e40), mload(0x3ae0), f_q)) mstore(0x4460, addmod(mload(0x43c0), mload(0x4420), f_q)) { - let result := mulmod(mload(0x7e0), mload(0x31e0), f_q) + let result := mulmod(mload(0x7e0), mload(0x3320), f_q) mstore(17536, result) } -mstore(0x44a0, mulmod(mload(0x4480), mload(0x3840), f_q)) -mstore(0x44c0, mulmod(sub(f_q, mload(0x44a0)), mload(0x3a00), f_q)) -mstore(0x44e0, mulmod(mload(0x3d00), mload(0x3a00), f_q)) +mstore(0x44a0, mulmod(mload(0x4480), mload(0x3980), f_q)) +mstore(0x44c0, mulmod(sub(f_q, mload(0x44a0)), mload(0x3b00), f_q)) +mstore(0x44e0, mulmod(mload(0x3e40), mload(0x3b00), f_q)) mstore(0x4500, addmod(mload(0x4460), mload(0x44c0), f_q)) { - let result := mulmod(mload(0x820), mload(0x31e0), f_q) + let result := mulmod(mload(0x800), mload(0x3320), f_q) mstore(17696, result) } -mstore(0x4540, mulmod(mload(0x4520), mload(0x3840), f_q)) -mstore(0x4560, mulmod(sub(f_q, mload(0x4540)), mload(0x3a20), f_q)) -mstore(0x4580, mulmod(mload(0x3d00), mload(0x3a20), f_q)) +mstore(0x4540, mulmod(mload(0x4520), mload(0x3980), f_q)) +mstore(0x4560, mulmod(sub(f_q, mload(0x4540)), mload(0x3b20), f_q)) +mstore(0x4580, mulmod(mload(0x3e40), mload(0x3b20), f_q)) mstore(0x45a0, addmod(mload(0x4500), mload(0x4560), f_q)) { - let result := mulmod(mload(0x840), mload(0x31e0), f_q) + let result := mulmod(mload(0x820), mload(0x3320), f_q) mstore(17856, result) } -mstore(0x45e0, mulmod(mload(0x45c0), mload(0x3840), f_q)) -mstore(0x4600, mulmod(sub(f_q, mload(0x45e0)), mload(0x3a40), f_q)) -mstore(0x4620, mulmod(mload(0x3d00), mload(0x3a40), f_q)) +mstore(0x45e0, mulmod(mload(0x45c0), mload(0x3980), f_q)) +mstore(0x4600, mulmod(sub(f_q, mload(0x45e0)), mload(0x3b40), f_q)) +mstore(0x4620, mulmod(mload(0x3e40), mload(0x3b40), f_q)) mstore(0x4640, addmod(mload(0x45a0), mload(0x4600), f_q)) { - let result := mulmod(mload(0x860), mload(0x31e0), f_q) + let result := mulmod(mload(0x860), mload(0x3320), f_q) mstore(18016, result) } -mstore(0x4680, mulmod(mload(0x4660), mload(0x3840), f_q)) -mstore(0x46a0, mulmod(sub(f_q, mload(0x4680)), mload(0x3a60), f_q)) -mstore(0x46c0, mulmod(mload(0x3d00), mload(0x3a60), f_q)) +mstore(0x4680, mulmod(mload(0x4660), mload(0x3980), f_q)) +mstore(0x46a0, mulmod(sub(f_q, mload(0x4680)), mload(0x3b60), f_q)) +mstore(0x46c0, mulmod(mload(0x3e40), mload(0x3b60), f_q)) mstore(0x46e0, addmod(mload(0x4640), mload(0x46a0), f_q)) { - let result := mulmod(mload(0x880), mload(0x31e0), f_q) + let result := mulmod(mload(0x880), mload(0x3320), f_q) mstore(18176, result) } -mstore(0x4720, mulmod(mload(0x4700), mload(0x3840), f_q)) -mstore(0x4740, mulmod(sub(f_q, mload(0x4720)), mload(0x3a80), f_q)) -mstore(0x4760, mulmod(mload(0x3d00), mload(0x3a80), f_q)) +mstore(0x4720, mulmod(mload(0x4700), mload(0x3980), f_q)) +mstore(0x4740, mulmod(sub(f_q, mload(0x4720)), mload(0x3b80), f_q)) +mstore(0x4760, mulmod(mload(0x3e40), mload(0x3b80), f_q)) mstore(0x4780, addmod(mload(0x46e0), mload(0x4740), f_q)) { - let result := mulmod(mload(0x8a0), mload(0x31e0), f_q) + let result := mulmod(mload(0x8a0), mload(0x3320), f_q) mstore(18336, result) } -mstore(0x47c0, mulmod(mload(0x47a0), mload(0x3840), f_q)) -mstore(0x47e0, mulmod(sub(f_q, mload(0x47c0)), mload(0x3aa0), f_q)) -mstore(0x4800, mulmod(mload(0x3d00), mload(0x3aa0), f_q)) +mstore(0x47c0, mulmod(mload(0x47a0), mload(0x3980), f_q)) +mstore(0x47e0, mulmod(sub(f_q, mload(0x47c0)), mload(0x3ba0), f_q)) +mstore(0x4800, mulmod(mload(0x3e40), mload(0x3ba0), f_q)) mstore(0x4820, addmod(mload(0x4780), mload(0x47e0), f_q)) { - let result := mulmod(mload(0x8c0), mload(0x31e0), f_q) + let result := mulmod(mload(0x8c0), mload(0x3320), f_q) mstore(18496, result) } -mstore(0x4860, mulmod(mload(0x4840), mload(0x3840), f_q)) -mstore(0x4880, mulmod(sub(f_q, mload(0x4860)), mload(0x3ac0), f_q)) -mstore(0x48a0, mulmod(mload(0x3d00), mload(0x3ac0), f_q)) +mstore(0x4860, mulmod(mload(0x4840), mload(0x3980), f_q)) +mstore(0x4880, mulmod(sub(f_q, mload(0x4860)), mload(0x3bc0), f_q)) +mstore(0x48a0, mulmod(mload(0x3e40), mload(0x3bc0), f_q)) mstore(0x48c0, addmod(mload(0x4820), mload(0x4880), f_q)) -mstore(0x48e0, mulmod(mload(0x2f60), mload(0x35e0), f_q)) -mstore(0x4900, mulmod(mload(0x2f80), mload(0x35e0), f_q)) -mstore(0x4920, mulmod(mload(0x2fa0), mload(0x35e0), f_q)) -mstore(0x4940, mulmod(mload(0x2fc0), mload(0x35e0), f_q)) { - let result := mulmod(mload(0x2fe0), mload(0x31e0), f_q) -mstore(18784, result) - } -mstore(0x4980, mulmod(mload(0x4960), mload(0x3840), f_q)) -mstore(0x49a0, mulmod(sub(f_q, mload(0x4980)), mload(0x3ae0), f_q)) -mstore(0x49c0, mulmod(mload(0x3d00), mload(0x3ae0), f_q)) -mstore(0x49e0, mulmod(mload(0x48e0), mload(0x3ae0), f_q)) -mstore(0x4a00, mulmod(mload(0x4900), mload(0x3ae0), f_q)) -mstore(0x4a20, mulmod(mload(0x4920), mload(0x3ae0), f_q)) -mstore(0x4a40, mulmod(mload(0x4940), mload(0x3ae0), f_q)) -mstore(0x4a60, addmod(mload(0x48c0), mload(0x49a0), f_q)) + let result := mulmod(mload(0x8e0), mload(0x3320), f_q) +mstore(18656, result) + } +mstore(0x4900, mulmod(mload(0x48e0), mload(0x3980), f_q)) +mstore(0x4920, mulmod(sub(f_q, mload(0x4900)), mload(0x3be0), f_q)) +mstore(0x4940, mulmod(mload(0x3e40), mload(0x3be0), f_q)) +mstore(0x4960, addmod(mload(0x48c0), mload(0x4920), f_q)) { - let result := mulmod(mload(0x800), mload(0x31e0), f_q) -mstore(19072, result) - } -mstore(0x4aa0, mulmod(mload(0x4a80), mload(0x3840), f_q)) -mstore(0x4ac0, mulmod(sub(f_q, mload(0x4aa0)), mload(0x3b00), f_q)) -mstore(0x4ae0, mulmod(mload(0x3d00), mload(0x3b00), f_q)) -mstore(0x4b00, addmod(mload(0x4a60), mload(0x4ac0), f_q)) -mstore(0x4b20, mulmod(mload(0x4b00), mload(0xaa0), f_q)) -mstore(0x4b40, mulmod(mload(0x3d80), mload(0xaa0), f_q)) -mstore(0x4b60, mulmod(mload(0x3e00), mload(0xaa0), f_q)) -mstore(0x4b80, mulmod(mload(0x3ea0), mload(0xaa0), f_q)) -mstore(0x4ba0, mulmod(mload(0x3f40), mload(0xaa0), f_q)) -mstore(0x4bc0, mulmod(mload(0x3fe0), mload(0xaa0), f_q)) -mstore(0x4be0, mulmod(mload(0x4080), mload(0xaa0), f_q)) -mstore(0x4c00, mulmod(mload(0x4120), mload(0xaa0), f_q)) -mstore(0x4c20, mulmod(mload(0x41c0), mload(0xaa0), f_q)) -mstore(0x4c40, mulmod(mload(0x4260), mload(0xaa0), f_q)) -mstore(0x4c60, mulmod(mload(0x4300), mload(0xaa0), f_q)) -mstore(0x4c80, mulmod(mload(0x43a0), mload(0xaa0), f_q)) -mstore(0x4ca0, mulmod(mload(0x4440), mload(0xaa0), f_q)) -mstore(0x4cc0, mulmod(mload(0x44e0), mload(0xaa0), f_q)) -mstore(0x4ce0, mulmod(mload(0x4580), mload(0xaa0), f_q)) -mstore(0x4d00, mulmod(mload(0x4620), mload(0xaa0), f_q)) -mstore(0x4d20, mulmod(mload(0x46c0), mload(0xaa0), f_q)) -mstore(0x4d40, mulmod(mload(0x4760), mload(0xaa0), f_q)) -mstore(0x4d60, mulmod(mload(0x4800), mload(0xaa0), f_q)) -mstore(0x4d80, mulmod(mload(0x48a0), mload(0xaa0), f_q)) -mstore(0x4da0, mulmod(mload(0x49c0), mload(0xaa0), f_q)) -mstore(0x4dc0, mulmod(mload(0x49e0), mload(0xaa0), f_q)) -mstore(0x4de0, mulmod(mload(0x4a00), mload(0xaa0), f_q)) -mstore(0x4e00, mulmod(mload(0x4a20), mload(0xaa0), f_q)) -mstore(0x4e20, mulmod(mload(0x4a40), mload(0xaa0), f_q)) -mstore(0x4e40, mulmod(mload(0x4ae0), mload(0xaa0), f_q)) -mstore(0x4e60, addmod(mload(0x3cc0), mload(0x4b20), f_q)) -mstore(0x4e80, mulmod(1, mload(0x3620), f_q)) + let result := mulmod(mload(0x900), mload(0x3320), f_q) +mstore(18816, result) + } +mstore(0x49a0, mulmod(mload(0x4980), mload(0x3980), f_q)) +mstore(0x49c0, mulmod(sub(f_q, mload(0x49a0)), mload(0x3c00), f_q)) +mstore(0x49e0, mulmod(mload(0x3e40), mload(0x3c00), f_q)) +mstore(0x4a00, addmod(mload(0x4960), mload(0x49c0), f_q)) +mstore(0x4a20, mulmod(mload(0x30a0), mload(0x3720), f_q)) +mstore(0x4a40, mulmod(mload(0x30c0), mload(0x3720), f_q)) +mstore(0x4a60, mulmod(mload(0x30e0), mload(0x3720), f_q)) +mstore(0x4a80, mulmod(mload(0x3100), mload(0x3720), f_q)) { - let result := mulmod(mload(0x8e0), mload(0x3200), f_q) -result := addmod(mulmod(mload(0x900), mload(0x3220), f_q), result, f_q) -result := addmod(mulmod(mload(0x920), mload(0x3240), f_q), result, f_q) -mstore(20128, result) - } -mstore(0x4ec0, mulmod(mload(0x4ea0), mload(0x3860), f_q)) -mstore(0x4ee0, mulmod(sub(f_q, mload(0x4ec0)), 1, f_q)) -mstore(0x4f00, mulmod(mload(0x4e80), 1, f_q)) -mstore(0x4f20, mulmod(mload(0x4ee0), mload(0x3b40), f_q)) -mstore(0x4f40, mulmod(mload(0x4f00), mload(0x3b40), f_q)) -mstore(0x4f60, addmod(mload(0x4e60), mload(0x4f20), f_q)) -mstore(0x4f80, mulmod(1, mload(0x3660), f_q)) + let result := mulmod(mload(0x3120), mload(0x3320), f_q) +mstore(19104, result) + } +mstore(0x4ac0, mulmod(mload(0x4aa0), mload(0x3980), f_q)) +mstore(0x4ae0, mulmod(sub(f_q, mload(0x4ac0)), mload(0x3c20), f_q)) +mstore(0x4b00, mulmod(mload(0x3e40), mload(0x3c20), f_q)) +mstore(0x4b20, mulmod(mload(0x4a20), mload(0x3c20), f_q)) +mstore(0x4b40, mulmod(mload(0x4a40), mload(0x3c20), f_q)) +mstore(0x4b60, mulmod(mload(0x4a60), mload(0x3c20), f_q)) +mstore(0x4b80, mulmod(mload(0x4a80), mload(0x3c20), f_q)) +mstore(0x4ba0, addmod(mload(0x4a00), mload(0x4ae0), f_q)) { - let result := mulmod(mload(0x940), mload(0x3280), f_q) -result := addmod(mulmod(mload(0x960), mload(0x32a0), f_q), result, f_q) -mstore(20384, result) - } -mstore(0x4fc0, mulmod(mload(0x4fa0), mload(0x3880), f_q)) -mstore(0x4fe0, mulmod(sub(f_q, mload(0x4fc0)), 1, f_q)) -mstore(0x5000, mulmod(mload(0x4f80), 1, f_q)) + let result := mulmod(mload(0x840), mload(0x3320), f_q) +mstore(19392, result) + } +mstore(0x4be0, mulmod(mload(0x4bc0), mload(0x3980), f_q)) +mstore(0x4c00, mulmod(sub(f_q, mload(0x4be0)), mload(0x3c40), f_q)) +mstore(0x4c20, mulmod(mload(0x3e40), mload(0x3c40), f_q)) +mstore(0x4c40, addmod(mload(0x4ba0), mload(0x4c00), f_q)) +mstore(0x4c60, mulmod(mload(0x4c40), mload(0xae0), f_q)) +mstore(0x4c80, mulmod(mload(0x3ec0), mload(0xae0), f_q)) +mstore(0x4ca0, mulmod(mload(0x3f40), mload(0xae0), f_q)) +mstore(0x4cc0, mulmod(mload(0x3fe0), mload(0xae0), f_q)) +mstore(0x4ce0, mulmod(mload(0x4080), mload(0xae0), f_q)) +mstore(0x4d00, mulmod(mload(0x4120), mload(0xae0), f_q)) +mstore(0x4d20, mulmod(mload(0x41c0), mload(0xae0), f_q)) +mstore(0x4d40, mulmod(mload(0x4260), mload(0xae0), f_q)) +mstore(0x4d60, mulmod(mload(0x4300), mload(0xae0), f_q)) +mstore(0x4d80, mulmod(mload(0x43a0), mload(0xae0), f_q)) +mstore(0x4da0, mulmod(mload(0x4440), mload(0xae0), f_q)) +mstore(0x4dc0, mulmod(mload(0x44e0), mload(0xae0), f_q)) +mstore(0x4de0, mulmod(mload(0x4580), mload(0xae0), f_q)) +mstore(0x4e00, mulmod(mload(0x4620), mload(0xae0), f_q)) +mstore(0x4e20, mulmod(mload(0x46c0), mload(0xae0), f_q)) +mstore(0x4e40, mulmod(mload(0x4760), mload(0xae0), f_q)) +mstore(0x4e60, mulmod(mload(0x4800), mload(0xae0), f_q)) +mstore(0x4e80, mulmod(mload(0x48a0), mload(0xae0), f_q)) +mstore(0x4ea0, mulmod(mload(0x4940), mload(0xae0), f_q)) +mstore(0x4ec0, mulmod(mload(0x49e0), mload(0xae0), f_q)) +mstore(0x4ee0, mulmod(mload(0x4b00), mload(0xae0), f_q)) +mstore(0x4f00, mulmod(mload(0x4b20), mload(0xae0), f_q)) +mstore(0x4f20, mulmod(mload(0x4b40), mload(0xae0), f_q)) +mstore(0x4f40, mulmod(mload(0x4b60), mload(0xae0), f_q)) +mstore(0x4f60, mulmod(mload(0x4b80), mload(0xae0), f_q)) +mstore(0x4f80, mulmod(mload(0x4c20), mload(0xae0), f_q)) +mstore(0x4fa0, addmod(mload(0x3e00), mload(0x4c60), f_q)) +mstore(0x4fc0, mulmod(1, mload(0x3760), f_q)) { - let result := mulmod(mload(0x980), mload(0x3280), f_q) -result := addmod(mulmod(mload(0x9a0), mload(0x32a0), f_q), result, f_q) -mstore(20512, result) - } -mstore(0x5040, mulmod(mload(0x5020), mload(0x3880), f_q)) -mstore(0x5060, mulmod(sub(f_q, mload(0x5040)), mload(0xa40), f_q)) -mstore(0x5080, mulmod(mload(0x4f80), mload(0xa40), f_q)) -mstore(0x50a0, addmod(mload(0x4fe0), mload(0x5060), f_q)) -mstore(0x50c0, mulmod(mload(0x50a0), mload(0x3b60), f_q)) -mstore(0x50e0, mulmod(mload(0x5000), mload(0x3b60), f_q)) -mstore(0x5100, mulmod(mload(0x5080), mload(0x3b60), f_q)) -mstore(0x5120, addmod(mload(0x4f60), mload(0x50c0), f_q)) -mstore(0x5140, mulmod(1, mload(0x36a0), f_q)) + let result := mulmod(mload(0x920), mload(0x3340), f_q) +result := addmod(mulmod(mload(0x940), mload(0x3360), f_q), result, f_q) +result := addmod(mulmod(mload(0x960), mload(0x3380), f_q), result, f_q) +mstore(20448, result) + } +mstore(0x5000, mulmod(mload(0x4fe0), mload(0x39a0), f_q)) +mstore(0x5020, mulmod(sub(f_q, mload(0x5000)), 1, f_q)) +mstore(0x5040, mulmod(mload(0x4fc0), 1, f_q)) +mstore(0x5060, mulmod(mload(0x5020), mload(0x3c80), f_q)) +mstore(0x5080, mulmod(mload(0x5040), mload(0x3c80), f_q)) +mstore(0x50a0, addmod(mload(0x4fa0), mload(0x5060), f_q)) +mstore(0x50c0, mulmod(1, mload(0x37a0), f_q)) { - let result := mulmod(mload(0x9c0), mload(0x32c0), f_q) -result := addmod(mulmod(mload(0x9e0), mload(0x32e0), f_q), result, f_q) + let result := mulmod(mload(0x980), mload(0x33c0), f_q) +result := addmod(mulmod(mload(0x9a0), mload(0x33e0), f_q), result, f_q) +mstore(20704, result) + } +mstore(0x5100, mulmod(mload(0x50e0), mload(0x39c0), f_q)) +mstore(0x5120, mulmod(sub(f_q, mload(0x5100)), 1, f_q)) +mstore(0x5140, mulmod(mload(0x50c0), 1, f_q)) +{ + let result := mulmod(mload(0x9c0), mload(0x33c0), f_q) +result := addmod(mulmod(mload(0x9e0), mload(0x33e0), f_q), result, f_q) mstore(20832, result) } -mstore(0x5180, mulmod(mload(0x5160), mload(0x38a0), f_q)) -mstore(0x51a0, mulmod(sub(f_q, mload(0x5180)), 1, f_q)) -mstore(0x51c0, mulmod(mload(0x5140), 1, f_q)) -mstore(0x51e0, mulmod(mload(0x51a0), mload(0x3b80), f_q)) -mstore(0x5200, mulmod(mload(0x51c0), mload(0x3b80), f_q)) -mstore(0x5220, addmod(mload(0x5120), mload(0x51e0), f_q)) -mstore(0x5240, mulmod(1, mload(0x31c0), f_q)) -mstore(0x5260, mulmod(1, mload(0xb40), f_q)) -mstore(0x5280, 0x0000000000000000000000000000000000000000000000000000000000000001) - mstore(0x52a0, 0x0000000000000000000000000000000000000000000000000000000000000002) -mstore(0x52c0, mload(0x5220)) -success := and(eq(staticcall(gas(), 0x7, 0x5280, 0x60, 0x5280, 0x40), 1), success) -mstore(0x52e0, mload(0x5280)) - mstore(0x5300, mload(0x52a0)) -mstore(0x5320, mload(0x60)) - mstore(0x5340, mload(0x80)) -success := and(eq(staticcall(gas(), 0x6, 0x52e0, 0x80, 0x52e0, 0x40), 1), success) -mstore(0x5360, mload(0xa0)) - mstore(0x5380, mload(0xc0)) -mstore(0x53a0, mload(0x3ce0)) -success := and(eq(staticcall(gas(), 0x7, 0x5360, 0x60, 0x5360, 0x40), 1), success) -mstore(0x53c0, mload(0x52e0)) - mstore(0x53e0, mload(0x5300)) +mstore(0x5180, mulmod(mload(0x5160), mload(0x39c0), f_q)) +mstore(0x51a0, mulmod(sub(f_q, mload(0x5180)), mload(0xa80), f_q)) +mstore(0x51c0, mulmod(mload(0x50c0), mload(0xa80), f_q)) +mstore(0x51e0, addmod(mload(0x5120), mload(0x51a0), f_q)) +mstore(0x5200, mulmod(mload(0x51e0), mload(0x3ca0), f_q)) +mstore(0x5220, mulmod(mload(0x5140), mload(0x3ca0), f_q)) +mstore(0x5240, mulmod(mload(0x51c0), mload(0x3ca0), f_q)) +mstore(0x5260, addmod(mload(0x50a0), mload(0x5200), f_q)) +mstore(0x5280, mulmod(1, mload(0x37e0), f_q)) +{ + let result := mulmod(mload(0xa00), mload(0x3400), f_q) +result := addmod(mulmod(mload(0xa20), mload(0x3420), f_q), result, f_q) +mstore(21152, result) + } +mstore(0x52c0, mulmod(mload(0x52a0), mload(0x39e0), f_q)) +mstore(0x52e0, mulmod(sub(f_q, mload(0x52c0)), 1, f_q)) +mstore(0x5300, mulmod(mload(0x5280), 1, f_q)) +mstore(0x5320, mulmod(mload(0x52e0), mload(0x3cc0), f_q)) +mstore(0x5340, mulmod(mload(0x5300), mload(0x3cc0), f_q)) +mstore(0x5360, addmod(mload(0x5260), mload(0x5320), f_q)) +mstore(0x5380, mulmod(1, mload(0x3300), f_q)) +mstore(0x53a0, mulmod(1, mload(0xb80), f_q)) +mstore(0x53c0, 0x0000000000000000000000000000000000000000000000000000000000000001) + mstore(0x53e0, 0x0000000000000000000000000000000000000000000000000000000000000002) mstore(0x5400, mload(0x5360)) - mstore(0x5420, mload(0x5380)) -success := and(eq(staticcall(gas(), 0x6, 0x53c0, 0x80, 0x53c0, 0x40), 1), success) -mstore(0x5440, mload(0xe0)) - mstore(0x5460, mload(0x100)) -mstore(0x5480, mload(0x4b40)) -success := and(eq(staticcall(gas(), 0x7, 0x5440, 0x60, 0x5440, 0x40), 1), success) -mstore(0x54a0, mload(0x53c0)) - mstore(0x54c0, mload(0x53e0)) -mstore(0x54e0, mload(0x5440)) - mstore(0x5500, mload(0x5460)) -success := and(eq(staticcall(gas(), 0x6, 0x54a0, 0x80, 0x54a0, 0x40), 1), success) -mstore(0x5520, mload(0x1c0)) - mstore(0x5540, mload(0x1e0)) -mstore(0x5560, mload(0x4b60)) -success := and(eq(staticcall(gas(), 0x7, 0x5520, 0x60, 0x5520, 0x40), 1), success) -mstore(0x5580, mload(0x54a0)) - mstore(0x55a0, mload(0x54c0)) -mstore(0x55c0, mload(0x5520)) - mstore(0x55e0, mload(0x5540)) -success := and(eq(staticcall(gas(), 0x6, 0x5580, 0x80, 0x5580, 0x40), 1), success) -mstore(0x5600, 0x291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db425290) - mstore(0x5620, 0x154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc) -mstore(0x5640, mload(0x4b80)) -success := and(eq(staticcall(gas(), 0x7, 0x5600, 0x60, 0x5600, 0x40), 1), success) -mstore(0x5660, mload(0x5580)) - mstore(0x5680, mload(0x55a0)) -mstore(0x56a0, mload(0x5600)) - mstore(0x56c0, mload(0x5620)) -success := and(eq(staticcall(gas(), 0x6, 0x5660, 0x80, 0x5660, 0x40), 1), success) -mstore(0x56e0, 0x176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d) - mstore(0x5700, 0x1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51) -mstore(0x5720, mload(0x4ba0)) -success := and(eq(staticcall(gas(), 0x7, 0x56e0, 0x60, 0x56e0, 0x40), 1), success) -mstore(0x5740, mload(0x5660)) - mstore(0x5760, mload(0x5680)) -mstore(0x5780, mload(0x56e0)) - mstore(0x57a0, mload(0x5700)) -success := and(eq(staticcall(gas(), 0x6, 0x5740, 0x80, 0x5740, 0x40), 1), success) -mstore(0x57c0, 0x019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e20250759) - mstore(0x57e0, 0x0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea83) -mstore(0x5800, mload(0x4bc0)) -success := and(eq(staticcall(gas(), 0x7, 0x57c0, 0x60, 0x57c0, 0x40), 1), success) -mstore(0x5820, mload(0x5740)) - mstore(0x5840, mload(0x5760)) -mstore(0x5860, mload(0x57c0)) - mstore(0x5880, mload(0x57e0)) -success := and(eq(staticcall(gas(), 0x6, 0x5820, 0x80, 0x5820, 0x40), 1), success) -mstore(0x58a0, 0x0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af) - mstore(0x58c0, 0x24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c43) -mstore(0x58e0, mload(0x4be0)) -success := and(eq(staticcall(gas(), 0x7, 0x58a0, 0x60, 0x58a0, 0x40), 1), success) -mstore(0x5900, mload(0x5820)) - mstore(0x5920, mload(0x5840)) -mstore(0x5940, mload(0x58a0)) - mstore(0x5960, mload(0x58c0)) -success := and(eq(staticcall(gas(), 0x6, 0x5900, 0x80, 0x5900, 0x40), 1), success) -mstore(0x5980, 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) - mstore(0x59a0, 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0) -mstore(0x59c0, mload(0x4c00)) -success := and(eq(staticcall(gas(), 0x7, 0x5980, 0x60, 0x5980, 0x40), 1), success) -mstore(0x59e0, mload(0x5900)) - mstore(0x5a00, mload(0x5920)) -mstore(0x5a20, mload(0x5980)) - mstore(0x5a40, mload(0x59a0)) -success := and(eq(staticcall(gas(), 0x6, 0x59e0, 0x80, 0x59e0, 0x40), 1), success) -mstore(0x5a60, 0x0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed) - mstore(0x5a80, 0x286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf) -mstore(0x5aa0, mload(0x4c20)) -success := and(eq(staticcall(gas(), 0x7, 0x5a60, 0x60, 0x5a60, 0x40), 1), success) -mstore(0x5ac0, mload(0x59e0)) - mstore(0x5ae0, mload(0x5a00)) -mstore(0x5b00, mload(0x5a60)) - mstore(0x5b20, mload(0x5a80)) -success := and(eq(staticcall(gas(), 0x6, 0x5ac0, 0x80, 0x5ac0, 0x40), 1), success) -mstore(0x5b40, 0x14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5) - mstore(0x5b60, 0x0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2) -mstore(0x5b80, mload(0x4c40)) -success := and(eq(staticcall(gas(), 0x7, 0x5b40, 0x60, 0x5b40, 0x40), 1), success) -mstore(0x5ba0, mload(0x5ac0)) - mstore(0x5bc0, mload(0x5ae0)) -mstore(0x5be0, mload(0x5b40)) - mstore(0x5c00, mload(0x5b60)) -success := and(eq(staticcall(gas(), 0x6, 0x5ba0, 0x80, 0x5ba0, 0x40), 1), success) -mstore(0x5c20, 0x0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36) - mstore(0x5c40, 0x2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890) -mstore(0x5c60, mload(0x4c60)) -success := and(eq(staticcall(gas(), 0x7, 0x5c20, 0x60, 0x5c20, 0x40), 1), success) -mstore(0x5c80, mload(0x5ba0)) - mstore(0x5ca0, mload(0x5bc0)) -mstore(0x5cc0, mload(0x5c20)) - mstore(0x5ce0, mload(0x5c40)) -success := and(eq(staticcall(gas(), 0x6, 0x5c80, 0x80, 0x5c80, 0x40), 1), success) -mstore(0x5d00, 0x1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f) - mstore(0x5d20, 0x1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d) -mstore(0x5d40, mload(0x4c80)) -success := and(eq(staticcall(gas(), 0x7, 0x5d00, 0x60, 0x5d00, 0x40), 1), success) -mstore(0x5d60, mload(0x5c80)) - mstore(0x5d80, mload(0x5ca0)) -mstore(0x5da0, mload(0x5d00)) - mstore(0x5dc0, mload(0x5d20)) -success := and(eq(staticcall(gas(), 0x6, 0x5d60, 0x80, 0x5d60, 0x40), 1), success) -mstore(0x5de0, 0x07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c) - mstore(0x5e00, 0x1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68) -mstore(0x5e20, mload(0x4ca0)) -success := and(eq(staticcall(gas(), 0x7, 0x5de0, 0x60, 0x5de0, 0x40), 1), success) -mstore(0x5e40, mload(0x5d60)) - mstore(0x5e60, mload(0x5d80)) -mstore(0x5e80, mload(0x5de0)) - mstore(0x5ea0, mload(0x5e00)) -success := and(eq(staticcall(gas(), 0x6, 0x5e40, 0x80, 0x5e40, 0x40), 1), success) -mstore(0x5ec0, 0x0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd701) - mstore(0x5ee0, 0x07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a) -mstore(0x5f00, mload(0x4cc0)) -success := and(eq(staticcall(gas(), 0x7, 0x5ec0, 0x60, 0x5ec0, 0x40), 1), success) -mstore(0x5f20, mload(0x5e40)) - mstore(0x5f40, mload(0x5e60)) -mstore(0x5f60, mload(0x5ec0)) - mstore(0x5f80, mload(0x5ee0)) -success := and(eq(staticcall(gas(), 0x6, 0x5f20, 0x80, 0x5f20, 0x40), 1), success) -mstore(0x5fa0, 0x2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d) - mstore(0x5fc0, 0x154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6) -mstore(0x5fe0, mload(0x4ce0)) -success := and(eq(staticcall(gas(), 0x7, 0x5fa0, 0x60, 0x5fa0, 0x40), 1), success) -mstore(0x6000, mload(0x5f20)) - mstore(0x6020, mload(0x5f40)) -mstore(0x6040, mload(0x5fa0)) - mstore(0x6060, mload(0x5fc0)) -success := and(eq(staticcall(gas(), 0x6, 0x6000, 0x80, 0x6000, 0x40), 1), success) -mstore(0x6080, 0x2402db4b1c7746dcd9fe7eab82ab3fa7ebb1bd352a9af94ef6811b2af9ab6f8e) - mstore(0x60a0, 0x2a0047ec08a254753c466648f0dc6e077e88e5495829c3a845873b9058bf4407) -mstore(0x60c0, mload(0x4d00)) -success := and(eq(staticcall(gas(), 0x7, 0x6080, 0x60, 0x6080, 0x40), 1), success) -mstore(0x60e0, mload(0x6000)) - mstore(0x6100, mload(0x6020)) -mstore(0x6120, mload(0x6080)) - mstore(0x6140, mload(0x60a0)) -success := and(eq(staticcall(gas(), 0x6, 0x60e0, 0x80, 0x60e0, 0x40), 1), success) -mstore(0x6160, 0x0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a) - mstore(0x6180, 0x27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e28) -mstore(0x61a0, mload(0x4d20)) -success := and(eq(staticcall(gas(), 0x7, 0x6160, 0x60, 0x6160, 0x40), 1), success) -mstore(0x61c0, mload(0x60e0)) - mstore(0x61e0, mload(0x6100)) -mstore(0x6200, mload(0x6160)) - mstore(0x6220, mload(0x6180)) -success := and(eq(staticcall(gas(), 0x6, 0x61c0, 0x80, 0x61c0, 0x40), 1), success) -mstore(0x6240, 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) - mstore(0x6260, 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3) -mstore(0x6280, mload(0x4d40)) -success := and(eq(staticcall(gas(), 0x7, 0x6240, 0x60, 0x6240, 0x40), 1), success) -mstore(0x62a0, mload(0x61c0)) - mstore(0x62c0, mload(0x61e0)) -mstore(0x62e0, mload(0x6240)) - mstore(0x6300, mload(0x6260)) -success := and(eq(staticcall(gas(), 0x6, 0x62a0, 0x80, 0x62a0, 0x40), 1), success) -mstore(0x6320, 0x1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a) - mstore(0x6340, 0x00b004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56) -mstore(0x6360, mload(0x4d60)) -success := and(eq(staticcall(gas(), 0x7, 0x6320, 0x60, 0x6320, 0x40), 1), success) -mstore(0x6380, mload(0x62a0)) - mstore(0x63a0, mload(0x62c0)) -mstore(0x63c0, mload(0x6320)) - mstore(0x63e0, mload(0x6340)) -success := and(eq(staticcall(gas(), 0x6, 0x6380, 0x80, 0x6380, 0x40), 1), success) -mstore(0x6400, 0x2903a763c1c6b78667f906b6fe2b4ad197b55587c90e14e8502446da8c45ef7d) - mstore(0x6420, 0x13ea57986f9295e92def3303aef53f2b4f625ba985531201ab53dc7307f46b69) -mstore(0x6440, mload(0x4d80)) -success := and(eq(staticcall(gas(), 0x7, 0x6400, 0x60, 0x6400, 0x40), 1), success) -mstore(0x6460, mload(0x6380)) - mstore(0x6480, mload(0x63a0)) -mstore(0x64a0, mload(0x6400)) - mstore(0x64c0, mload(0x6420)) -success := and(eq(staticcall(gas(), 0x6, 0x6460, 0x80, 0x6460, 0x40), 1), success) -mstore(0x64e0, mload(0x420)) - mstore(0x6500, mload(0x440)) -mstore(0x6520, mload(0x4da0)) -success := and(eq(staticcall(gas(), 0x7, 0x64e0, 0x60, 0x64e0, 0x40), 1), success) -mstore(0x6540, mload(0x6460)) - mstore(0x6560, mload(0x6480)) -mstore(0x6580, mload(0x64e0)) - mstore(0x65a0, mload(0x6500)) -success := and(eq(staticcall(gas(), 0x6, 0x6540, 0x80, 0x6540, 0x40), 1), success) -mstore(0x65c0, mload(0x460)) - mstore(0x65e0, mload(0x480)) -mstore(0x6600, mload(0x4dc0)) -success := and(eq(staticcall(gas(), 0x7, 0x65c0, 0x60, 0x65c0, 0x40), 1), success) -mstore(0x6620, mload(0x6540)) - mstore(0x6640, mload(0x6560)) -mstore(0x6660, mload(0x65c0)) - mstore(0x6680, mload(0x65e0)) -success := and(eq(staticcall(gas(), 0x6, 0x6620, 0x80, 0x6620, 0x40), 1), success) -mstore(0x66a0, mload(0x4a0)) - mstore(0x66c0, mload(0x4c0)) -mstore(0x66e0, mload(0x4de0)) -success := and(eq(staticcall(gas(), 0x7, 0x66a0, 0x60, 0x66a0, 0x40), 1), success) -mstore(0x6700, mload(0x6620)) - mstore(0x6720, mload(0x6640)) -mstore(0x6740, mload(0x66a0)) - mstore(0x6760, mload(0x66c0)) -success := and(eq(staticcall(gas(), 0x6, 0x6700, 0x80, 0x6700, 0x40), 1), success) -mstore(0x6780, mload(0x4e0)) - mstore(0x67a0, mload(0x500)) -mstore(0x67c0, mload(0x4e00)) -success := and(eq(staticcall(gas(), 0x7, 0x6780, 0x60, 0x6780, 0x40), 1), success) -mstore(0x67e0, mload(0x6700)) - mstore(0x6800, mload(0x6720)) -mstore(0x6820, mload(0x6780)) - mstore(0x6840, mload(0x67a0)) -success := and(eq(staticcall(gas(), 0x6, 0x67e0, 0x80, 0x67e0, 0x40), 1), success) -mstore(0x6860, mload(0x520)) - mstore(0x6880, mload(0x540)) -mstore(0x68a0, mload(0x4e20)) -success := and(eq(staticcall(gas(), 0x7, 0x6860, 0x60, 0x6860, 0x40), 1), success) -mstore(0x68c0, mload(0x67e0)) - mstore(0x68e0, mload(0x6800)) -mstore(0x6900, mload(0x6860)) - mstore(0x6920, mload(0x6880)) -success := and(eq(staticcall(gas(), 0x6, 0x68c0, 0x80, 0x68c0, 0x40), 1), success) -mstore(0x6940, mload(0x380)) - mstore(0x6960, mload(0x3a0)) -mstore(0x6980, mload(0x4e40)) -success := and(eq(staticcall(gas(), 0x7, 0x6940, 0x60, 0x6940, 0x40), 1), success) -mstore(0x69a0, mload(0x68c0)) - mstore(0x69c0, mload(0x68e0)) -mstore(0x69e0, mload(0x6940)) - mstore(0x6a00, mload(0x6960)) -success := and(eq(staticcall(gas(), 0x6, 0x69a0, 0x80, 0x69a0, 0x40), 1), success) -mstore(0x6a20, mload(0x2c0)) - mstore(0x6a40, mload(0x2e0)) -mstore(0x6a60, mload(0x4f40)) -success := and(eq(staticcall(gas(), 0x7, 0x6a20, 0x60, 0x6a20, 0x40), 1), success) -mstore(0x6a80, mload(0x69a0)) - mstore(0x6aa0, mload(0x69c0)) -mstore(0x6ac0, mload(0x6a20)) - mstore(0x6ae0, mload(0x6a40)) -success := and(eq(staticcall(gas(), 0x6, 0x6a80, 0x80, 0x6a80, 0x40), 1), success) -mstore(0x6b00, mload(0x300)) - mstore(0x6b20, mload(0x320)) -mstore(0x6b40, mload(0x50e0)) -success := and(eq(staticcall(gas(), 0x7, 0x6b00, 0x60, 0x6b00, 0x40), 1), success) -mstore(0x6b60, mload(0x6a80)) - mstore(0x6b80, mload(0x6aa0)) -mstore(0x6ba0, mload(0x6b00)) - mstore(0x6bc0, mload(0x6b20)) -success := and(eq(staticcall(gas(), 0x6, 0x6b60, 0x80, 0x6b60, 0x40), 1), success) -mstore(0x6be0, mload(0x340)) - mstore(0x6c00, mload(0x360)) -mstore(0x6c20, mload(0x5100)) -success := and(eq(staticcall(gas(), 0x7, 0x6be0, 0x60, 0x6be0, 0x40), 1), success) -mstore(0x6c40, mload(0x6b60)) - mstore(0x6c60, mload(0x6b80)) -mstore(0x6c80, mload(0x6be0)) - mstore(0x6ca0, mload(0x6c00)) -success := and(eq(staticcall(gas(), 0x6, 0x6c40, 0x80, 0x6c40, 0x40), 1), success) -mstore(0x6cc0, mload(0x180)) - mstore(0x6ce0, mload(0x1a0)) -mstore(0x6d00, mload(0x5200)) -success := and(eq(staticcall(gas(), 0x7, 0x6cc0, 0x60, 0x6cc0, 0x40), 1), success) -mstore(0x6d20, mload(0x6c40)) - mstore(0x6d40, mload(0x6c60)) -mstore(0x6d60, mload(0x6cc0)) - mstore(0x6d80, mload(0x6ce0)) -success := and(eq(staticcall(gas(), 0x6, 0x6d20, 0x80, 0x6d20, 0x40), 1), success) -mstore(0x6da0, mload(0xae0)) - mstore(0x6dc0, mload(0xb00)) -mstore(0x6de0, sub(f_q, mload(0x5240))) -success := and(eq(staticcall(gas(), 0x7, 0x6da0, 0x60, 0x6da0, 0x40), 1), success) -mstore(0x6e00, mload(0x6d20)) - mstore(0x6e20, mload(0x6d40)) -mstore(0x6e40, mload(0x6da0)) - mstore(0x6e60, mload(0x6dc0)) -success := and(eq(staticcall(gas(), 0x6, 0x6e00, 0x80, 0x6e00, 0x40), 1), success) -mstore(0x6e80, mload(0xb80)) - mstore(0x6ea0, mload(0xba0)) -mstore(0x6ec0, mload(0x5260)) -success := and(eq(staticcall(gas(), 0x7, 0x6e80, 0x60, 0x6e80, 0x40), 1), success) -mstore(0x6ee0, mload(0x6e00)) - mstore(0x6f00, mload(0x6e20)) -mstore(0x6f20, mload(0x6e80)) - mstore(0x6f40, mload(0x6ea0)) -success := and(eq(staticcall(gas(), 0x6, 0x6ee0, 0x80, 0x6ee0, 0x40), 1), success) -mstore(0x6f60, mload(0x6ee0)) - mstore(0x6f80, mload(0x6f00)) -mstore(0x6fa0, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) - mstore(0x6fc0, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) - mstore(0x6fe0, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) - mstore(0x7000, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) -mstore(0x7020, mload(0xb80)) - mstore(0x7040, mload(0xba0)) -mstore(0x7060, 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) - mstore(0x7080, 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) - mstore(0x70a0, 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) - mstore(0x70c0, 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff) -success := and(eq(staticcall(gas(), 0x8, 0x6f60, 0x180, 0x6f60, 0x20), 1), success) -success := and(eq(mload(0x6f60), 1), success) +success := and(eq(staticcall(gas(), 0x7, 0x53c0, 0x60, 0x53c0, 0x40), 1), success) +mstore(0x5420, mload(0x53c0)) + mstore(0x5440, mload(0x53e0)) +mstore(0x5460, mload(0xa0)) + mstore(0x5480, mload(0xc0)) +success := and(eq(staticcall(gas(), 0x6, 0x5420, 0x80, 0x5420, 0x40), 1), success) +mstore(0x54a0, mload(0xe0)) + mstore(0x54c0, mload(0x100)) +mstore(0x54e0, mload(0x3e20)) +success := and(eq(staticcall(gas(), 0x7, 0x54a0, 0x60, 0x54a0, 0x40), 1), success) +mstore(0x5500, mload(0x5420)) + mstore(0x5520, mload(0x5440)) +mstore(0x5540, mload(0x54a0)) + mstore(0x5560, mload(0x54c0)) +success := and(eq(staticcall(gas(), 0x6, 0x5500, 0x80, 0x5500, 0x40), 1), success) +mstore(0x5580, mload(0x120)) + mstore(0x55a0, mload(0x140)) +mstore(0x55c0, mload(0x4c80)) +success := and(eq(staticcall(gas(), 0x7, 0x5580, 0x60, 0x5580, 0x40), 1), success) +mstore(0x55e0, mload(0x5500)) + mstore(0x5600, mload(0x5520)) +mstore(0x5620, mload(0x5580)) + mstore(0x5640, mload(0x55a0)) +success := and(eq(staticcall(gas(), 0x6, 0x55e0, 0x80, 0x55e0, 0x40), 1), success) +mstore(0x5660, mload(0x200)) + mstore(0x5680, mload(0x220)) +mstore(0x56a0, mload(0x4ca0)) +success := and(eq(staticcall(gas(), 0x7, 0x5660, 0x60, 0x5660, 0x40), 1), success) +mstore(0x56c0, mload(0x55e0)) + mstore(0x56e0, mload(0x5600)) +mstore(0x5700, mload(0x5660)) + mstore(0x5720, mload(0x5680)) +success := and(eq(staticcall(gas(), 0x6, 0x56c0, 0x80, 0x56c0, 0x40), 1), success) +mstore(0x5740, 0x291e4db43c260726b91c535917a801bde06be7f7cf45010909762313db425290) + mstore(0x5760, 0x154e7fe15847ac4d1cd93fa6c8209672cfccf45ad8e13ab82fc6b167ba1994fc) +mstore(0x5780, mload(0x4cc0)) +success := and(eq(staticcall(gas(), 0x7, 0x5740, 0x60, 0x5740, 0x40), 1), success) +mstore(0x57a0, mload(0x56c0)) + mstore(0x57c0, mload(0x56e0)) +mstore(0x57e0, mload(0x5740)) + mstore(0x5800, mload(0x5760)) +success := and(eq(staticcall(gas(), 0x6, 0x57a0, 0x80, 0x57a0, 0x40), 1), success) +mstore(0x5820, 0x176b10d402fac05bfc982234f50b305ad067e122f1682a4b9c4bd98bda91919d) + mstore(0x5840, 0x1d62e78d655e3fc74188666738fca6524a712f1a3c4ccfdd0fa44f3e2c849c51) +mstore(0x5860, mload(0x4ce0)) +success := and(eq(staticcall(gas(), 0x7, 0x5820, 0x60, 0x5820, 0x40), 1), success) +mstore(0x5880, mload(0x57a0)) + mstore(0x58a0, mload(0x57c0)) +mstore(0x58c0, mload(0x5820)) + mstore(0x58e0, mload(0x5840)) +success := and(eq(staticcall(gas(), 0x6, 0x5880, 0x80, 0x5880, 0x40), 1), success) +mstore(0x5900, 0x019dd7ee531990d335aad8f64c26a1bc072b47a7efd4504404d2e95e20250759) + mstore(0x5920, 0x0c413dd8e50189a05a374679bae72f724f7b71e956c32c0881ea37694276ea83) +mstore(0x5940, mload(0x4d00)) +success := and(eq(staticcall(gas(), 0x7, 0x5900, 0x60, 0x5900, 0x40), 1), success) +mstore(0x5960, mload(0x5880)) + mstore(0x5980, mload(0x58a0)) +mstore(0x59a0, mload(0x5900)) + mstore(0x59c0, mload(0x5920)) +success := and(eq(staticcall(gas(), 0x6, 0x5960, 0x80, 0x5960, 0x40), 1), success) +mstore(0x59e0, 0x0730799d5bfec1cefc5aaffcffe3f3dd491b2bfcaf9f553f94de6145ed4742af) + mstore(0x5a00, 0x24ad4af082e96b14b9a6da80f4fa1334f253c458add531c8d9f8b23c5ecb9c43) +mstore(0x5a20, mload(0x4d20)) +success := and(eq(staticcall(gas(), 0x7, 0x59e0, 0x60, 0x59e0, 0x40), 1), success) +mstore(0x5a40, mload(0x5960)) + mstore(0x5a60, mload(0x5980)) +mstore(0x5a80, mload(0x59e0)) + mstore(0x5aa0, mload(0x5a00)) +success := and(eq(staticcall(gas(), 0x6, 0x5a40, 0x80, 0x5a40, 0x40), 1), success) +mstore(0x5ac0, 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) + mstore(0x5ae0, 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0) +mstore(0x5b00, mload(0x4d40)) +success := and(eq(staticcall(gas(), 0x7, 0x5ac0, 0x60, 0x5ac0, 0x40), 1), success) +mstore(0x5b20, mload(0x5a40)) + mstore(0x5b40, mload(0x5a60)) +mstore(0x5b60, mload(0x5ac0)) + mstore(0x5b80, mload(0x5ae0)) +success := and(eq(staticcall(gas(), 0x6, 0x5b20, 0x80, 0x5b20, 0x40), 1), success) +mstore(0x5ba0, 0x0b30fe9581a6c70064e3b35446b2433842db76e8fad547fbb1ee69916473f7ed) + mstore(0x5bc0, 0x286e0f87d619e3fedac8a3d7442ef34fb6566ce9af5a315758c0c2b8000c36cf) +mstore(0x5be0, mload(0x4d60)) +success := and(eq(staticcall(gas(), 0x7, 0x5ba0, 0x60, 0x5ba0, 0x40), 1), success) +mstore(0x5c00, mload(0x5b20)) + mstore(0x5c20, mload(0x5b40)) +mstore(0x5c40, mload(0x5ba0)) + mstore(0x5c60, mload(0x5bc0)) +success := and(eq(staticcall(gas(), 0x6, 0x5c00, 0x80, 0x5c00, 0x40), 1), success) +mstore(0x5c80, 0x14e66a771ef08cca0551c26b3439d49d391ba21d91b706df2c4b1f177d7759e5) + mstore(0x5ca0, 0x0532723a26dc928f43033efaef8e4aa2732772ba414b1dadce1fe7d0b30d99d2) +mstore(0x5cc0, mload(0x4d80)) +success := and(eq(staticcall(gas(), 0x7, 0x5c80, 0x60, 0x5c80, 0x40), 1), success) +mstore(0x5ce0, mload(0x5c00)) + mstore(0x5d00, mload(0x5c20)) +mstore(0x5d20, mload(0x5c80)) + mstore(0x5d40, mload(0x5ca0)) +success := and(eq(staticcall(gas(), 0x6, 0x5ce0, 0x80, 0x5ce0, 0x40), 1), success) +mstore(0x5d60, 0x0474ae1c4230bdcdd25ce460ef73c689e4227edf0ec7c2be85ef8d75592e1b36) + mstore(0x5d80, 0x2fd83e6e07cc35755a04337fd70af8aa31fc74de07a539b8a8756caa60d04890) +mstore(0x5da0, mload(0x4da0)) +success := and(eq(staticcall(gas(), 0x7, 0x5d60, 0x60, 0x5d60, 0x40), 1), success) +mstore(0x5dc0, mload(0x5ce0)) + mstore(0x5de0, mload(0x5d00)) +mstore(0x5e00, mload(0x5d60)) + mstore(0x5e20, mload(0x5d80)) +success := and(eq(staticcall(gas(), 0x6, 0x5dc0, 0x80, 0x5dc0, 0x40), 1), success) +mstore(0x5e40, 0x1c6f93aef795f525c8b51bcb0234bb345942cc31782bf75096fff2707f3e4b9f) + mstore(0x5e60, 0x1bf84b761871a3311b096d870534b0a4b095330cd45fbe7bbbf5b353a980c39d) +mstore(0x5e80, mload(0x4dc0)) +success := and(eq(staticcall(gas(), 0x7, 0x5e40, 0x60, 0x5e40, 0x40), 1), success) +mstore(0x5ea0, mload(0x5dc0)) + mstore(0x5ec0, mload(0x5de0)) +mstore(0x5ee0, mload(0x5e40)) + mstore(0x5f00, mload(0x5e60)) +success := and(eq(staticcall(gas(), 0x6, 0x5ea0, 0x80, 0x5ea0, 0x40), 1), success) +mstore(0x5f20, 0x07609ba791f0ed5d569091041c800974b8440bc5c0f97d9b6295a1632175116c) + mstore(0x5f40, 0x1cdb0412f38e1a19531afbd1c9603146e7bd1c34a93df6be4c65b126e3537b68) +mstore(0x5f60, mload(0x4de0)) +success := and(eq(staticcall(gas(), 0x7, 0x5f20, 0x60, 0x5f20, 0x40), 1), success) +mstore(0x5f80, mload(0x5ea0)) + mstore(0x5fa0, mload(0x5ec0)) +mstore(0x5fc0, mload(0x5f20)) + mstore(0x5fe0, mload(0x5f40)) +success := and(eq(staticcall(gas(), 0x6, 0x5f80, 0x80, 0x5f80, 0x40), 1), success) +mstore(0x6000, 0x0e955b89eca5fc34d2172022f89dc467ac2e84c9929e1ce0c2a8ce831c5dd701) + mstore(0x6020, 0x07cf929adce614b088c82cb3934f1eb7546dd2e48396e914b4ff06ec45de9e8a) +mstore(0x6040, mload(0x4e00)) +success := and(eq(staticcall(gas(), 0x7, 0x6000, 0x60, 0x6000, 0x40), 1), success) +mstore(0x6060, mload(0x5f80)) + mstore(0x6080, mload(0x5fa0)) +mstore(0x60a0, mload(0x6000)) + mstore(0x60c0, mload(0x6020)) +success := and(eq(staticcall(gas(), 0x6, 0x6060, 0x80, 0x6060, 0x40), 1), success) +mstore(0x60e0, 0x2d4531a47528e642f8f6954a3f3ff9f6072e38d30e2e0d108d1cac201d4b684d) + mstore(0x6100, 0x154c409bbd1760ec55639d32d5817c9399e573b22a8fdda5f707c9b9de1d4ca6) +mstore(0x6120, mload(0x4e20)) +success := and(eq(staticcall(gas(), 0x7, 0x60e0, 0x60, 0x60e0, 0x40), 1), success) +mstore(0x6140, mload(0x6060)) + mstore(0x6160, mload(0x6080)) +mstore(0x6180, mload(0x60e0)) + mstore(0x61a0, mload(0x6100)) +success := and(eq(staticcall(gas(), 0x6, 0x6140, 0x80, 0x6140, 0x40), 1), success) +mstore(0x61c0, 0x2dec3929e07b4276215297f5f653b3ec6bf9b910006678ab3c3d67654001d6da) + mstore(0x61e0, 0x20b9c7e9a6c29e31e9164962de9a0478aa976e72a2e2d0e9c9ab6fabbb20ba49) +mstore(0x6200, mload(0x4e40)) +success := and(eq(staticcall(gas(), 0x7, 0x61c0, 0x60, 0x61c0, 0x40), 1), success) +mstore(0x6220, mload(0x6140)) + mstore(0x6240, mload(0x6160)) +mstore(0x6260, mload(0x61c0)) + mstore(0x6280, mload(0x61e0)) +success := and(eq(staticcall(gas(), 0x6, 0x6220, 0x80, 0x6220, 0x40), 1), success) +mstore(0x62a0, 0x0476c7f154f703672add74ffebc6ffa6159b4e527f0a4354b601facd57ff1a1a) + mstore(0x62c0, 0x27c10290f730edad9bcb2538056f755efea924b0a69d86d5c9c833717e730e28) +mstore(0x62e0, mload(0x4e60)) +success := and(eq(staticcall(gas(), 0x7, 0x62a0, 0x60, 0x62a0, 0x40), 1), success) +mstore(0x6300, mload(0x6220)) + mstore(0x6320, mload(0x6240)) +mstore(0x6340, mload(0x62a0)) + mstore(0x6360, mload(0x62c0)) +success := and(eq(staticcall(gas(), 0x6, 0x6300, 0x80, 0x6300, 0x40), 1), success) +mstore(0x6380, 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) + mstore(0x63a0, 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3) +mstore(0x63c0, mload(0x4e80)) +success := and(eq(staticcall(gas(), 0x7, 0x6380, 0x60, 0x6380, 0x40), 1), success) +mstore(0x63e0, mload(0x6300)) + mstore(0x6400, mload(0x6320)) +mstore(0x6420, mload(0x6380)) + mstore(0x6440, mload(0x63a0)) +success := and(eq(staticcall(gas(), 0x6, 0x63e0, 0x80, 0x63e0, 0x40), 1), success) +mstore(0x6460, 0x1e87eb88577795c9f28c423b4d2c3ec1e890164466ea9742d9996ae5c3b80a2a) + mstore(0x6480, 0x00b004814b24c7c7a9dc56ffa03d4f2b7e0f5605f3bb18deddf9e63978abbc56) +mstore(0x64a0, mload(0x4ea0)) +success := and(eq(staticcall(gas(), 0x7, 0x6460, 0x60, 0x6460, 0x40), 1), success) +mstore(0x64c0, mload(0x63e0)) + mstore(0x64e0, mload(0x6400)) +mstore(0x6500, mload(0x6460)) + mstore(0x6520, mload(0x6480)) +success := and(eq(staticcall(gas(), 0x6, 0x64c0, 0x80, 0x64c0, 0x40), 1), success) +mstore(0x6540, 0x20e2c72c77bcc14c0e9801d47d3ab42674027a82cde0955f1b17e5cad25edfb0) + mstore(0x6560, 0x0350deaf2bcf4305e811ba811ccaae83d66761627e0a4eade1205c1cb0cfcd78) +mstore(0x6580, mload(0x4ec0)) +success := and(eq(staticcall(gas(), 0x7, 0x6540, 0x60, 0x6540, 0x40), 1), success) +mstore(0x65a0, mload(0x64c0)) + mstore(0x65c0, mload(0x64e0)) +mstore(0x65e0, mload(0x6540)) + mstore(0x6600, mload(0x6560)) +success := and(eq(staticcall(gas(), 0x6, 0x65a0, 0x80, 0x65a0, 0x40), 1), success) +mstore(0x6620, mload(0x460)) + mstore(0x6640, mload(0x480)) +mstore(0x6660, mload(0x4ee0)) +success := and(eq(staticcall(gas(), 0x7, 0x6620, 0x60, 0x6620, 0x40), 1), success) +mstore(0x6680, mload(0x65a0)) + mstore(0x66a0, mload(0x65c0)) +mstore(0x66c0, mload(0x6620)) + mstore(0x66e0, mload(0x6640)) +success := and(eq(staticcall(gas(), 0x6, 0x6680, 0x80, 0x6680, 0x40), 1), success) +mstore(0x6700, mload(0x4a0)) + mstore(0x6720, mload(0x4c0)) +mstore(0x6740, mload(0x4f00)) +success := and(eq(staticcall(gas(), 0x7, 0x6700, 0x60, 0x6700, 0x40), 1), success) +mstore(0x6760, mload(0x6680)) + mstore(0x6780, mload(0x66a0)) +mstore(0x67a0, mload(0x6700)) + mstore(0x67c0, mload(0x6720)) +success := and(eq(staticcall(gas(), 0x6, 0x6760, 0x80, 0x6760, 0x40), 1), success) +mstore(0x67e0, mload(0x4e0)) + mstore(0x6800, mload(0x500)) +mstore(0x6820, mload(0x4f20)) +success := and(eq(staticcall(gas(), 0x7, 0x67e0, 0x60, 0x67e0, 0x40), 1), success) +mstore(0x6840, mload(0x6760)) + mstore(0x6860, mload(0x6780)) +mstore(0x6880, mload(0x67e0)) + mstore(0x68a0, mload(0x6800)) +success := and(eq(staticcall(gas(), 0x6, 0x6840, 0x80, 0x6840, 0x40), 1), success) +mstore(0x68c0, mload(0x520)) + mstore(0x68e0, mload(0x540)) +mstore(0x6900, mload(0x4f40)) +success := and(eq(staticcall(gas(), 0x7, 0x68c0, 0x60, 0x68c0, 0x40), 1), success) +mstore(0x6920, mload(0x6840)) + mstore(0x6940, mload(0x6860)) +mstore(0x6960, mload(0x68c0)) + mstore(0x6980, mload(0x68e0)) +success := and(eq(staticcall(gas(), 0x6, 0x6920, 0x80, 0x6920, 0x40), 1), success) +mstore(0x69a0, mload(0x560)) + mstore(0x69c0, mload(0x580)) +mstore(0x69e0, mload(0x4f60)) +success := and(eq(staticcall(gas(), 0x7, 0x69a0, 0x60, 0x69a0, 0x40), 1), success) +mstore(0x6a00, mload(0x6920)) + mstore(0x6a20, mload(0x6940)) +mstore(0x6a40, mload(0x69a0)) + mstore(0x6a60, mload(0x69c0)) +success := and(eq(staticcall(gas(), 0x6, 0x6a00, 0x80, 0x6a00, 0x40), 1), success) +mstore(0x6a80, mload(0x3c0)) + mstore(0x6aa0, mload(0x3e0)) +mstore(0x6ac0, mload(0x4f80)) +success := and(eq(staticcall(gas(), 0x7, 0x6a80, 0x60, 0x6a80, 0x40), 1), success) +mstore(0x6ae0, mload(0x6a00)) + mstore(0x6b00, mload(0x6a20)) +mstore(0x6b20, mload(0x6a80)) + mstore(0x6b40, mload(0x6aa0)) +success := and(eq(staticcall(gas(), 0x6, 0x6ae0, 0x80, 0x6ae0, 0x40), 1), success) +mstore(0x6b60, mload(0x300)) + mstore(0x6b80, mload(0x320)) +mstore(0x6ba0, mload(0x5080)) +success := and(eq(staticcall(gas(), 0x7, 0x6b60, 0x60, 0x6b60, 0x40), 1), success) +mstore(0x6bc0, mload(0x6ae0)) + mstore(0x6be0, mload(0x6b00)) +mstore(0x6c00, mload(0x6b60)) + mstore(0x6c20, mload(0x6b80)) +success := and(eq(staticcall(gas(), 0x6, 0x6bc0, 0x80, 0x6bc0, 0x40), 1), success) +mstore(0x6c40, mload(0x340)) + mstore(0x6c60, mload(0x360)) +mstore(0x6c80, mload(0x5220)) +success := and(eq(staticcall(gas(), 0x7, 0x6c40, 0x60, 0x6c40, 0x40), 1), success) +mstore(0x6ca0, mload(0x6bc0)) + mstore(0x6cc0, mload(0x6be0)) +mstore(0x6ce0, mload(0x6c40)) + mstore(0x6d00, mload(0x6c60)) +success := and(eq(staticcall(gas(), 0x6, 0x6ca0, 0x80, 0x6ca0, 0x40), 1), success) +mstore(0x6d20, mload(0x380)) + mstore(0x6d40, mload(0x3a0)) +mstore(0x6d60, mload(0x5240)) +success := and(eq(staticcall(gas(), 0x7, 0x6d20, 0x60, 0x6d20, 0x40), 1), success) +mstore(0x6d80, mload(0x6ca0)) + mstore(0x6da0, mload(0x6cc0)) +mstore(0x6dc0, mload(0x6d20)) + mstore(0x6de0, mload(0x6d40)) +success := and(eq(staticcall(gas(), 0x6, 0x6d80, 0x80, 0x6d80, 0x40), 1), success) +mstore(0x6e00, mload(0x1c0)) + mstore(0x6e20, mload(0x1e0)) +mstore(0x6e40, mload(0x5340)) +success := and(eq(staticcall(gas(), 0x7, 0x6e00, 0x60, 0x6e00, 0x40), 1), success) +mstore(0x6e60, mload(0x6d80)) + mstore(0x6e80, mload(0x6da0)) +mstore(0x6ea0, mload(0x6e00)) + mstore(0x6ec0, mload(0x6e20)) +success := and(eq(staticcall(gas(), 0x6, 0x6e60, 0x80, 0x6e60, 0x40), 1), success) +mstore(0x6ee0, mload(0xb20)) + mstore(0x6f00, mload(0xb40)) +mstore(0x6f20, sub(f_q, mload(0x5380))) +success := and(eq(staticcall(gas(), 0x7, 0x6ee0, 0x60, 0x6ee0, 0x40), 1), success) +mstore(0x6f40, mload(0x6e60)) + mstore(0x6f60, mload(0x6e80)) +mstore(0x6f80, mload(0x6ee0)) + mstore(0x6fa0, mload(0x6f00)) +success := and(eq(staticcall(gas(), 0x6, 0x6f40, 0x80, 0x6f40, 0x40), 1), success) +mstore(0x6fc0, mload(0xbc0)) + mstore(0x6fe0, mload(0xbe0)) +mstore(0x7000, mload(0x53a0)) +success := and(eq(staticcall(gas(), 0x7, 0x6fc0, 0x60, 0x6fc0, 0x40), 1), success) +mstore(0x7020, mload(0x6f40)) + mstore(0x7040, mload(0x6f60)) +mstore(0x7060, mload(0x6fc0)) + mstore(0x7080, mload(0x6fe0)) +success := and(eq(staticcall(gas(), 0x6, 0x7020, 0x80, 0x7020, 0x40), 1), success) +mstore(0x70a0, mload(0x7020)) + mstore(0x70c0, mload(0x7040)) +mstore(0x70e0, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) + mstore(0x7100, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) + mstore(0x7120, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) + mstore(0x7140, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) +mstore(0x7160, mload(0xbc0)) + mstore(0x7180, mload(0xbe0)) +mstore(0x71a0, 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) + mstore(0x71c0, 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) + mstore(0x71e0, 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) + mstore(0x7200, 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff) +success := and(eq(staticcall(gas(), 0x8, 0x70a0, 0x180, 0x70a0, 0x20), 1), success) +success := and(eq(mload(0x70a0), 1), success) if not(success) { revert(0, 0) } return(0, 0) diff --git a/contracts/src/Summa.sol b/contracts/src/Summa.sol index c0357c85..a2135a75 100644 --- a/contracts/src/Summa.sol +++ b/contracts/src/Summa.sol @@ -36,13 +36,13 @@ contract Summa is Ownable { /** * @dev Struct representing a commitment submitted by the CEX. * @param mstRoot Merkle sum tree root of the CEX's liabilities - * @param rootSums The total sums of the assets included in the tree + * @param rootBalances The total sums of the assets included in the tree * @param assetChains The chains where the CEX holds the assets included into the tree * @param assetNames The names of the assets included into the tree */ struct Commitment { uint256 mstRoot; - uint256[] rootSums; + uint256[] rootBalances; string[] assetNames; string[] assetChains; } @@ -77,14 +77,14 @@ contract Summa is Ownable { event LiabilitiesCommitmentSubmitted( uint256 indexed timestamp, uint256 mstRoot, - uint256[] rootSums, + uint256[] rootBalances, Asset[] assets ); constructor(IVerifier _inclusionVerifier) { inclusionVerifier = _inclusionVerifier; } - + /** * @dev Submit an optimistic proof of multiple address ownership for a CEX. The proof is subject to an off-chain verification as it's not feasible to verify the signatures of non-EVM chains in an Ethereum smart contract. * @param _addressOwnershipProofs The list of address ownership proofs @@ -115,21 +115,21 @@ contract Summa is Ownable { } /** - * @dev Submit proof of solvency for a CEX + * @dev Submit commitment for a CEX * @param mstRoot Merkle sum tree root of the CEX's liabilities - * @param rootSums The total sums of the assets included into the Merkle sum tree + * @param rootBalances The total sums of the assets included into the Merkle sum tree * @param assets The assets included into the Merkle sum tree * @param timestamp The timestamp at which the CEX took the snapshot of its assets and liabilities */ function submitCommitment( uint256 mstRoot, - uint256[] memory rootSums, + uint256[] memory rootBalances, Asset[] memory assets, uint256 timestamp ) public onlyOwner { require(mstRoot != 0, "Invalid MST root"); require( - rootSums.length == assets.length, + rootBalances.length == assets.length, "Root asset sums and asset number mismatch" ); string[] memory assetNames = new string[](assets.length); @@ -141,7 +141,7 @@ contract Summa is Ownable { "Invalid asset" ); require( - rootSums[i] != 0, + rootBalances[i] != 0, "All root sums should be greater than zero" ); assetNames[i] = assets[i].assetName; @@ -150,7 +150,7 @@ contract Summa is Ownable { commitments[timestamp] = Commitment( mstRoot, - rootSums, + rootBalances, assetNames, assetChains ); @@ -158,7 +158,7 @@ contract Summa is Ownable { emit LiabilitiesCommitmentSubmitted( timestamp, mstRoot, - rootSums, + rootBalances, assets ); } @@ -177,6 +177,12 @@ contract Summa is Ownable { commitments[timestamp].mstRoot == publicInputs[1], "Invalid MST root" ); + for (uint i = 2; i < publicInputs.length; i++) { + require( + commitments[timestamp].rootBalances[i - 2] == publicInputs[i], + "Invalid root balance" + ); + } return inclusionVerifier.verify(publicInputs, proof); } } diff --git a/contracts/test/Summa.ts b/contracts/test/Summa.ts index d8d6da15..7eee13d2 100644 --- a/contracts/test/Summa.ts +++ b/contracts/test/Summa.ts @@ -12,17 +12,21 @@ describe("Summa Contract", () => { function submitCommitment( summa: Summa, mstRoot: BigNumber, - rootSums: BigNumber[], + rootBalances: BigNumber[], assets = [ { chain: "ETH", assetName: "ETH", }, + { + chain: "BTC", + assetName: "BTC", + }, ] ): any { return summa.submitCommitment( mstRoot, - rootSums, + rootBalances, assets, BigNumber.from(1693559255) ); @@ -32,11 +36,13 @@ describe("Summa Contract", () => { summa: Summa, inclusionProof: string, leafHash: BigNumber, - mstRoot: BigNumber + mstRoot: BigNumber, + assetBalance1: BigNumber, + assetBalance2: BigNumber ): any { return summa.verifyInclusionProof( inclusionProof, - [leafHash, mstRoot], + [leafHash, mstRoot, assetBalance1, assetBalance2], 1693559255 ); } @@ -213,9 +219,9 @@ describe("Summa Contract", () => { }); }); - describe("verify proof of solvency", () => { + describe("submit commitment", () => { let mstRoot: BigNumber; - let rootSum: BigNumber; + let rootBalances: BigNumber[]; let summa: Summa; let account1: SignerWithAddress; let account2: SignerWithAddress; @@ -249,21 +255,28 @@ describe("Summa Contract", () => { }, ]; - mstRoot = BigNumber.from( - "0x2e021d9bf99c5bd7267488b6a7a5cf5f7d00222a41b6a9b971899c44089e0c5" + const commitmentCalldataJson = fs.readFileSync( + path.resolve( + __dirname, + "../../zk_prover/examples/commitment_solidity_calldata.json" + ), + "utf-8" ); - rootSum = BigNumber.from(10000000); + const commitmentCalldata: any = JSON.parse(commitmentCalldataJson); + + mstRoot = commitmentCalldata.root_hash; + rootBalances = commitmentCalldata.root_balances; }); - it("should verify the proof of solvency for the given public input", async () => { + it("should submit commitment for the given public input", async () => { await summa.submitProofOfAddressOwnership(ownedAddresses); - await expect(submitCommitment(summa, mstRoot, [rootSum])) + await expect(submitCommitment(summa, mstRoot, rootBalances)) .to.emit(summa, "LiabilitiesCommitmentSubmitted") .withArgs( BigNumber.from(1693559255), mstRoot, - [rootSum], + rootBalances, (assets: [Summa.AssetStruct]) => { return assets[0].chain == "ETH" && assets[0].assetName == "ETH"; } @@ -287,12 +300,12 @@ describe("Summa Contract", () => { }); it("should revert with invalid root sum", async () => { - rootSum = BigNumber.from(0); + rootBalances = [BigNumber.from(0), BigNumber.from(0)]; await summa.submitProofOfAddressOwnership(ownedAddresses); await expect( - submitCommitment(summa, mstRoot, [rootSum]) + submitCommitment(summa, mstRoot, rootBalances) ).to.be.revertedWith("All root sums should be greater than zero"); }); @@ -300,51 +313,53 @@ describe("Summa Contract", () => { await summa.submitProofOfAddressOwnership(ownedAddresses); await expect( - submitCommitment( - summa, - mstRoot, - [rootSum], - [ - { - chain: "", - assetName: "ETH", - }, - ] - ) + submitCommitment(summa, mstRoot, rootBalances, [ + { + chain: "BTC", + assetName: "BTC", + }, + { + chain: "", + assetName: "ETH", + }, + ]) ).to.be.revertedWith("Invalid asset"); await expect( - submitCommitment( - summa, - mstRoot, - [rootSum], - [ - { - chain: "ETH", - assetName: "", - }, - ] - ) + submitCommitment(summa, mstRoot, rootBalances, [ + { + chain: "ETH", + assetName: "ETH", + }, + { + chain: "BTC", + assetName: "", + }, + ]) ).to.be.revertedWith("Invalid asset"); }); it("should not submit invalid root", async () => { await expect( - submitCommitment(summa, BigNumber.from(0), [rootSum]) + submitCommitment(summa, BigNumber.from(0), rootBalances) ).to.be.revertedWith("Invalid MST root"); }); it("should revert if asset and sum count don't match", async () => { + rootBalances = [BigNumber.from(10000000)]; await expect( - submitCommitment(summa, mstRoot, [rootSum, rootSum]) + submitCommitment(summa, mstRoot, rootBalances) ).to.be.revertedWith("Root asset sums and asset number mismatch"); }); }); describe("verify proof of inclusion", () => { - let mstRoot: BigNumber; - let rootSum: BigNumber; + let commitmentMstRoot: BigNumber; + let rootBalances: BigNumber[]; + let inclusionMstRoot: BigNumber; let leafHash: BigNumber; + let assetBalance1: BigNumber; + let assetBalance2: BigNumber; let summa: Summa; let account1: SignerWithAddress; let account2: SignerWithAddress; @@ -387,43 +402,101 @@ describe("Summa Contract", () => { ); const inclusionCalldata: any = JSON.parse(inclusionJson); - leafHash = inclusionCalldata.public_inputs[0]; - mstRoot = inclusionCalldata.public_inputs[1]; inclusionProof = inclusionCalldata.proof; - rootSum = BigNumber.from(10000000); + leafHash = inclusionCalldata.public_inputs[0]; + inclusionMstRoot = inclusionCalldata.public_inputs[1]; + assetBalance1 = inclusionCalldata.public_inputs[2]; + assetBalance2 = inclusionCalldata.public_inputs[3]; + + const commitmentCalldataJson = fs.readFileSync( + path.resolve( + __dirname, + "../../zk_prover/examples/commitment_solidity_calldata.json" + ), + "utf-8" + ); + const commitmentCalldata: any = JSON.parse(commitmentCalldataJson); + + commitmentMstRoot = commitmentCalldata.root_hash; + rootBalances = commitmentCalldata.root_balances; }); it("should verify the proof of inclusion for the given public input", async () => { await summa.submitProofOfAddressOwnership(ownedAddresses); - await submitCommitment(summa, mstRoot, [rootSum]); + await submitCommitment(summa, commitmentMstRoot, rootBalances); expect( - await verifyInclusionProof(summa, inclusionProof, leafHash, mstRoot) + await verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + assetBalance1, + assetBalance2 + ) ).to.be.equal(true); }); it("should not verify with invalid MST root", async () => { await summa.submitProofOfAddressOwnership(ownedAddresses); - await submitCommitment(summa, mstRoot, [rootSum]); - mstRoot = BigNumber.from(0); + await submitCommitment(summa, commitmentMstRoot, rootBalances); + inclusionMstRoot = BigNumber.from(0); await expect( - verifyInclusionProof(summa, inclusionProof, leafHash, mstRoot) + verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + assetBalance1, + assetBalance2 + ) ).to.be.revertedWith("Invalid MST root"); }); it("should not verify if the MST root lookup by timestamp returns an incorrect MST root", async () => { // The lookup will return a zero MST root as no MST root has been stored yet await expect( - verifyInclusionProof(summa, inclusionProof, leafHash, mstRoot) + verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + assetBalance1, + assetBalance2 + ) ).to.be.revertedWith("Invalid MST root"); }); + it("should not verify with invalid root balances", async () => { + assetBalance1 = BigNumber.from(0); + + await summa.submitProofOfAddressOwnership(ownedAddresses); + await submitCommitment(summa, commitmentMstRoot, rootBalances); + await expect( + verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + assetBalance1, + assetBalance2 + ) + ).to.be.revertedWith("Invalid root balance"); + }); + it("should not verify with invalid leaf", async () => { leafHash = BigNumber.from(0); await summa.submitProofOfAddressOwnership(ownedAddresses); - await submitCommitment(summa, mstRoot, [rootSum]); + await submitCommitment(summa, commitmentMstRoot, rootBalances); expect( - await verifyInclusionProof(summa, inclusionProof, leafHash, mstRoot) + await verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + assetBalance1, + assetBalance2 + ) ).to.be.equal(false); }); @@ -431,9 +504,16 @@ describe("Summa Contract", () => { inclusionProof = inclusionProof.replace("1", "2"); await summa.submitProofOfAddressOwnership(ownedAddresses); - await submitCommitment(summa, mstRoot, [rootSum]); + await submitCommitment(summa, commitmentMstRoot, rootBalances); expect( - await verifyInclusionProof(summa, inclusionProof, leafHash, mstRoot) + await verifyInclusionProof( + summa, + inclusionProof, + leafHash, + inclusionMstRoot, + assetBalance1, + assetBalance2 + ) ).to.be.equal(false); }); }); diff --git a/zk_prover/README.md b/zk_prover/README.md index af77f651..36f9116e 100644 --- a/zk_prover/README.md +++ b/zk_prover/README.md @@ -24,23 +24,19 @@ cargo doc --no-deps --open For testing purposes, it's not necessary to download the `ptau` file. The `generate_setup_artifacts` function can manage this by generating a new setup from a randomly generated value. This automated generation process is intended for testing and development convenience, and it should not be used in production. For real-world situations, you must provide the path of a specific `ptau` file to the `generate_setup_artifacts`. The circuit will use the randomness from the given file. You can find an example that initializes a `Snapshot` instance [here](https://github.com/summa-dev/summa-solvency/blob/11d4fce5d18f6175804aa792fc9fc5ac27bf5c00/backend/src/apis/snapshot.rs#L115-L116) in the backend. -## Build a Solvency Verifier Contract +## Build a Commitment -A `gen_solvency_verifier.rs` script is provided to generate a solidity contract that can be used to verify the proof of solvency via a smart contract. Note that the function to verify such proof is a view function, which means that it can be called without spending gas and that it does not modify the state of the contract +A `gen_commitment.rs` script is provided to generate a commitment out of a Merkle Sum Tree. In particular, the example takes a csv file located in "src/merkle_sum_tree/csv/entry_16.csv", build a Merkle Sum Tree and extract a commitment out it. The commitment is made of the `root_hash` and the `root_balances`. + +The script will eventually generate a `commitment_solidity_calldata.json` file that contains some testing calldata to be used within `contracts` and `backend` to test the publishing of the commitment to the Summa Smart Contract. The script can be run as follows: ``` -cargo run --release --example gen_solvency_verifier +cargo run --release --example gen_commitment ``` -The script will generate a new `SolvencyVerifier.sol` and `SolvencyVerifier.yul` contracts in `contracts/src`. - -Note that the generic parameters of the circuits `N_ASSETS` and `N_BYTES` are set to `2` and `14`. This means that the circuit is tuned to verify the proof of solvency for an exchange with 2 assets and a balances in a range of 14 bytes. These parameters can be changed in the script. - -Furthermore, the verifier is generated based on a specified `ptau` file, `hermez-raw-11`, for the generic parameters (`N_ASSETS`, `N_BYTES`), using the `generate_setup_artifacts` function. If you try to use different generic parameters, you may have to choose a different `ptau` file for that. - -On top of that the script will also generate a `solvency_proof_solidity_calldata.json` file that contains some testing calldata to be used within `contracts` and `backend` to test the verifier. Again, in the example, the proof is generated based on the `src/merkle_sum_tree/csv/entry_16.csv` file. If you want to generate a proof for a different file, you can change the path in the script. +Note that the generic parameters of the Merkle Sum Tree `N_ASSETS` and `N_BYTES` are set to `2` and `14`. This means that this should go in pair with a Inclusion Verifier Circuit tuned to the same generic parameters. ## Build an Inclusion Verifier Contract @@ -85,10 +81,6 @@ The benchmarking included the following areas: - Proving Key Gen for MstInclusion Circuit - ZK Proof Generation for MstInclusion Circuit - ZK Proof Verification for MstInclusion Circuit -- Verification Key Gen for Solvency Circuit -- Proving Key Gen for Solvency Circuit -- ZK Proof Generation for Solvency Circuit -- ZK Proof Verification for Solvency Circuit In order to run the benchmarking, we provide a set of dummy `username, balances` entries formatted in csv files. The csv files can be downloaded as follows @@ -133,13 +125,3 @@ For Merkle Sum Tree Proof of Inclusion circuit | VK Gen | Pk Gen | Proof Generation | Proof Verification | Proof Size (bytes) | | --------- | --------- | ---------------- | ------------------ | ------------------ | | 88.92 ms | 135.96 ms | 369.31 ms | 3.65 ms | 1632 | - -For Proof of Solvency circuit - -| VK Gen | Pk Gen | Proof Generation | Proof Verification | Proof Size (bytes) | -| -------- | --------- | ---------------- | ------------------ | ------------------ | -| 32.86 ms | 31.76 ms | 139.60 ms | 4.09 ms | 1568 | - -Gas cost to verify proof of solvency - -395579 gas units (run `cargo run --release --example gen_solvency_verifier`) diff --git a/zk_prover/benches/full_solvency_flow.rs b/zk_prover/benches/full_solvency_flow.rs index eab18332..8b606102 100644 --- a/zk_prover/benches/full_solvency_flow.rs +++ b/zk_prover/benches/full_solvency_flow.rs @@ -7,10 +7,7 @@ use halo2_proofs::{ use snark_verifier_sdk::CircuitExt; use summa_solvency::{ circuits::merkle_sum_tree::MstInclusionCircuit, - circuits::{ - solvency::SolvencyCircuit, - utils::{full_prover, full_verifier, generate_setup_artifacts}, - }, + circuits::utils::{full_prover, full_verifier, generate_setup_artifacts}, merkle_sum_tree::{MerkleSumTree, Tree}, }; @@ -170,106 +167,6 @@ fn verify_zk_proof_mst_inclusion_circuit(_c: &mut Criterion) { }); } -fn verification_key_gen_solvency_circuit(_c: &mut Criterion) { - let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - - let empty_circuit = SolvencyCircuit::::init_empty(); - - let (params, _, _) = generate_setup_artifacts(11, None, empty_circuit.clone()).unwrap(); - - let bench_name = format!( - "gen verification key for 2 power of {} entries with {} assets solvency circuit", - LEVELS, N_ASSETS - ); - criterion.bench_function(&bench_name, |b| { - b.iter(|| { - keygen_vk(¶ms, &empty_circuit).expect("vk generation should not fail"); - }) - }); -} - -fn proving_key_gen_solvency_circuit(_c: &mut Criterion) { - let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - - let empty_circuit = SolvencyCircuit::::init_empty(); - - let (params, _, vk) = generate_setup_artifacts(11, None, empty_circuit.clone()).unwrap(); - - let bench_name = format!( - "gen proving key for 2 power of {} entries with {} assets solvency circuit", - LEVELS, N_ASSETS - ); - criterion.bench_function(&bench_name, |b| { - b.iter(|| { - keygen_pk(¶ms, vk.clone(), &empty_circuit).expect("pk generation should not fail"); - }) - }); -} - -fn generate_zk_proof_solvency_circuit(_c: &mut Criterion) { - let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - - let empty_circuit = SolvencyCircuit::::init_empty(); - - let (params, pk, _) = generate_setup_artifacts(11, None, empty_circuit).unwrap(); - - let csv_file = format!( - "benches/csv/{}/{}_entry_2_{}.csv", - PATH_NAME, PATH_NAME, LEVELS - ); - - let merkle_sum_tree = MerkleSumTree::::new(&csv_file).unwrap(); - - let asset_sums = merkle_sum_tree.root().balances.map(|x| x + Fp::from(1)); - - // Only now we can instantiate the circuit with the actual inputs - let circuit = SolvencyCircuit::::init(&merkle_sum_tree, asset_sums); - - let bench_name = format!( - "generate zk proof - tree of 2 power of {} entries with {} assets solvency circuit", - LEVELS, N_ASSETS - ); - criterion.bench_function(&bench_name, |b| { - b.iter(|| { - full_prover(¶ms, &pk, circuit.clone(), circuit.instances()); - }) - }); -} - -fn verify_zk_proof_solvency_circuit(_c: &mut Criterion) { - let mut criterion = Criterion::default().sample_size(SAMPLE_SIZE); - - let empty_circuit = SolvencyCircuit::::init_empty(); - - let (params, pk, vk) = generate_setup_artifacts(11, None, empty_circuit).unwrap(); - - let csv_file = format!( - "benches/csv/{}/{}_entry_2_{}.csv", - PATH_NAME, PATH_NAME, LEVELS - ); - - let merkle_sum_tree = MerkleSumTree::::new(&csv_file).unwrap(); - - let asset_sums = merkle_sum_tree.root().balances.map(|x| x + Fp::from(1)); - - // Only now we can instantiate the circuit with the actual inputs - let circuit = SolvencyCircuit::::init(&merkle_sum_tree, asset_sums); - - let proof = full_prover(¶ms, &pk, circuit.clone(), circuit.instances()); - - println!("proof size in bytes: {}", proof.len()); - - let bench_name = format!( - "verify zk proof - tree of 2 power of {} entries with {} assets solvency circuit", - LEVELS, N_ASSETS - ); - criterion.bench_function(&bench_name, |b| { - b.iter(|| { - full_verifier(¶ms, &vk, proof.clone(), circuit.instances()); - }) - }); -} - criterion_group!( benches, build_mstree, @@ -278,9 +175,5 @@ criterion_group!( proving_key_gen_mst_inclusion_circuit, generate_zk_proof_mst_inclusion_circuit, verify_zk_proof_mst_inclusion_circuit, - verification_key_gen_solvency_circuit, - proving_key_gen_solvency_circuit, - generate_zk_proof_solvency_circuit, - verify_zk_proof_solvency_circuit ); criterion_main!(benches); diff --git a/zk_prover/examples/commitment_solidity_calldata.json b/zk_prover/examples/commitment_solidity_calldata.json new file mode 100644 index 00000000..4f4891d9 --- /dev/null +++ b/zk_prover/examples/commitment_solidity_calldata.json @@ -0,0 +1,7 @@ +{ + "root_hash": "0x2e021d9bf99c5bd7267488b6a7a5cf5f7d00222a41b6a9b971899c44089e0c5", + "root_balances": [ + "0x87f3e", + "0x87f3e" + ] +} \ No newline at end of file diff --git a/zk_prover/examples/gen_commitment.rs b/zk_prover/examples/gen_commitment.rs new file mode 100644 index 00000000..f0a820ce --- /dev/null +++ b/zk_prover/examples/gen_commitment.rs @@ -0,0 +1,41 @@ +#![feature(generic_const_exprs)] + +use serde_json::to_string_pretty; +use std::{fs::File, io::Write}; +use summa_solvency::{ + circuits::types::CommitmentSolidityCallData, + circuits::utils::field_element_to_solidity_calldata, + merkle_sum_tree::{MerkleSumTree, Tree}, +}; + +const N_ASSETS: usize = 2; +const N_BYTES: usize = 14; + +fn main() { + let merkle_sum_tree = + MerkleSumTree::::new("src/merkle_sum_tree/csv/entry_16.csv").unwrap(); + + let root = merkle_sum_tree.root(); + + // The commitment to be published on-chain is made of (root_hash, root_balances) + let root_hash_hex_string = field_element_to_solidity_calldata(root.hash); + let root_balances_hex_strings: Vec = root + .balances + .iter() + .map(|balance| field_element_to_solidity_calldata(*balance)) + .collect(); + + let commitment = CommitmentSolidityCallData { + root_hash: root_hash_hex_string, + root_balances: root_balances_hex_strings, + }; + + // Serialize to a JSON string + let serialized_data = to_string_pretty(&commitment).expect("Failed to serialize data"); + + // Save the serialized data to a JSON file + let mut file = File::create("./examples/commitment_solidity_calldata.json") + .expect("Unable to create file"); + file.write_all(serialized_data.as_bytes()) + .expect("Unable to write data to file"); +} diff --git a/zk_prover/examples/inclusion_proof_solidity_calldata.json b/zk_prover/examples/inclusion_proof_solidity_calldata.json index fa338586..591c6a8f 100644 --- a/zk_prover/examples/inclusion_proof_solidity_calldata.json +++ b/zk_prover/examples/inclusion_proof_solidity_calldata.json @@ -1,7 +1,9 @@ { - "proof": "0x13403af61410c5c302c94b2cc6edd5564a7e18001399ce63be4e80a7e12124c00c7a2c9e809945caa2039128bedb827f7dc6dbd078e979cc22139ad1791bf92d2e4faaddb95f660720890598d49a79d6541a4f3f5688aba8e498cb03df887a0a10f18d44f08de3cc22e9d7367e949945333524bfb0cad270da557cc7b9a5b9bf0b7be3d68c10694d2b5361bd9ab1b51e65928ddd906ba4390b944fe82433493428e04bf5ab93c7b505b73b55909417706a2b2276e4965eb848742d66619ba9982790a991c0364b08f8b21575415c6c43a9e81dda9b73a69a2ea7a195ad09561b2560e89e472043a9853a9d6eea1390b708541b2f3e1611852186881ce5412df50c9268b3eeb2d3535843f1ddd9f69b15215ef311260a0f16c9c0422cc58ec2e018951ead384f4f48c164233faa716af819b62a75a6482439df7c8a5e4a2685b317d86ef6cc91970797a14fd1081f351de158a14ec474a24997619ae5763003901b2b3e77f306182fb9a5b262ed69185cd8b4fb6042da7a07ec329018067e64422d9f913ce69e5f3b180f6ff301b89e5718d4fbebd6c95eeb32accbbec9050b4714783a8a9f063daf33b3e6ad99b2bf0b72c635d256baa606eb2be67eeab3c1971639c0a0a6283eadc47f549aaf73dde26f52eafc0e59123f835c2af94dbdf97b1e5ff9022c7c1fafc3b6223b86187568f30f242684995f79fc236c1dfa8da29216b8041d3173f0a255a8fad649a5e6cf0e17b92f20151f748e5c87f25c3c28d10506906a752c525994a39ea29bdf43951081b87f93a2df8ec99276472a2a8b0c1695cb6830519f5bf4bb6d3a0ce07d172460b3ba2b11224bcef03b1da45de7032ff3c6a56979ea5ef4355526830db3833cd920391c36e4287b6d3f1225e795181b17eba8464a28ff8acfc6cbb2e0e17504a5a45844b22ea0a7c3861e97a90c3504f22136d1c6072693c821987480ef82c7ec047fc3d7f0496da157cbb5793c1100e3c5d1f4bb79719e756f85e871e30647fb0df31a0042baeded973857c1ec32076a23a9beabe10e22bd9f25dff9ff0b02cabd5e562ccf00b5461414f7a37a8b2333445c5911ca9dbe4e61e52cbf44c8c270447f33a5039442e379f5ec35019316c15a4a6d20fc7d4f44a5e494e4ca0e2cab768d4dc5b5129d3129daf9b7c06c0525b59ea0ac498d50ee04543c69a2ad1475f4daea9b8c8e17371c13611e0b1e211c0ff89525a0de1f75229e49cb6c67e16c7c83ffc0f537eb30436eadbfbe9118f309a391b4d24065742086899fe51893bf03154607440ebbf9678ff920d3e321e90ab6ad9be50192ed6792864f6cde95ed1bb51a8a8d797f9432c9001673d412eafb7242040d2215bbb4acced972f5ca8bdb53a36c439c0da6aa9e435fa2b82365ca7ac26332b53c07a702539a897859a95492c4ef468bf53244360e6b1b4e10cfa91f73cb3bc117e93f2da9ef7c6db202a5e8e7a905f9a4f990594444cd1404e00fa4fbcc815928ca7b08bed877b51b08a9cef10345d58ca39e4090b285d82861eb394c64222a28f80c7414ac924af3f18539f5b4f76b02ed49460f7369132908f5aba537c39227f02c5c5483be4e6166889c46dbc4ce2af227ea2be40abc19b4f39c2e31ec61f94647f895916089e3fc75b70344a9df1b68b378958bfa0810c4ed1267ecca973a0a5b5769a16a2519a9685adbbf83be19e34a3cd5e5ac5421a71dd395df440b2639c73d34a9cc4893d23cc780e75b90a36d7635c2628f5c2bc312485b67416f3bf483b6b0b804f5aa6b5bedd66c1baeaddc971c3da64bb61018cb310d1dd98fd067b8b65a3bcd27ff226fa6c0a5a922022a32950cb8d60530510a5142d39a6a08a8e7f5a4a2e3a727bad928170f90c83df504baf82e053613bcf4565cc6e75eae1c046103f60ffe17eee0c87d52d4425583267bcb9fe49c14f0d96b1a440a42553262f6a9342b5d188b6cb20a1899c4d91ffdca61e8d6bd151e9ae7f8ec311850539dc0b61f0de1595247e3a97fbac78cc185d1d30fc7601530d50cc2d555f68d6042b809330f58be58426304738dcc6cb211d23fd0a2591a6aa97c71fffd4e27e0072ad98d0f2992e2a9114f5161545b1f4de57e3248a1186b55c6a643aa4977a215e0fb42aeba42590baf33ec529d5f28012ba5851c8426d5262d69b850c9dd946888f237089b608f2df977b9ea1b64570974c3ab4ac21be1ccf9c90ce8b361daadb8b83a46f5f2c8793a5a03335f2b970fb9a04c6ad22393fa799e5f50615dd8d83cbe023f7106bba673943c2bb3ca1547bec7ba21d31ab4a7099fca496ff31e9ff480dbf598496df7fba9d1592c4f859ebc15c862de05e47e5e9a7cc1f2e559480b6d9f380e812f3898237a178570e0cc622a73d6802896ee9860696852a89778122834cf9de8b5f296e90689769bba9588308eed5b1a34c90929d20262ee785553da10dddcb5da0bdce4b12fd33d179caa65ffe34d150e621f9cf8842b42583028e5d0f96659a4fb340d30cd70627d414a2c77526d220dd07096fcad9680d0bc34ae9cb3416da19c2341ec705f00cebdee1e71d9941d9d7b693a4a444873cc73cba3442ba82e477e19143853c5c694d7257ccdd4c0241bf6de0c7fe5df1ac02f70ae3de105eb42166eb45345884b1a08bd5aa495ce016607288b6f9e48d0cf587c5be61601c4a7c01b94eef51fe9877b65f6186cc4066d7ecb67a69582ee074c1b0d8131d76309605e7642eb5fa4be718538c6b77d272e6595a0d7c862c21efa0feabb1290b897af7000ab178fd59ff6191586dfab19369aa902dd30725be46b61ba8a173168908e989aff4cc42129aee03a416647160754507fcc1ffb50ec91eb902378e2dc441876678943c1707fbbc8e3e05eef199f2de9495468202bc6d411494200b38126392b2acf47c17c46c3eee1171bd213f5afff56502ce7a7cd172079b8ecc1429ac03d9b09d86d6b3f40843cadd60816693ed6de5615075e2bc17250be87181113066d38bec7adaebd7ebfd05d6ffd", + "proof": "0x0f10963e904c615d4e300b931c6dd5d05eec2df7afaa82185303e874d3da5de018f95aba51fdffea23246bbf5b2aa5881bc1dc18f3e79d2800e03fe9a5ef0cf310339b53be81d8cb2c43ac5a0f6bcea44c172116e29502b5f4527f7b5bce10c913b9e2004dc58392babac1a80f46129f35131130ff40310d8c7cf56e9f96f4eb191b6800c111533070288a4590ef3beaf9ab506b6ee6cc5292d229bf53663f7b0da4c4956e8c8ec242cca4b33a8e82528ba66db026e82edd787425ca7fc3d731029cd66c1da2304fde313ec53e113f8f9cb41dfae575993c1edb8f4d59a592bc285139d27556c978df7ed87d0ee9a06869e8e43d76cd281ce50e940435092bd429970059380b7b6cf67cc35a503098c7ae7c4451db3d94732c689fee34f32e811e64c25fdb83bc7de1ba2f22ad25267d7476d46f1c2669a8b12dba61ba2e89cd1dda88ff54d7cfad9de0e6d2c63f7c2ed16ce4772673c70081e00d00b15703681ba37b61e27062ef2e4b771052853b2c06c6cf170907b2e7a0982d4a3e36e9682648bab3733590514767b58ff05e78fa21757ad04641312fbd8679a321d3cc60249d152ed8cf0a469c4e35b9646f030361f1f69935acabedad83ae640fd2834c2b6960827a7284fc1086702adde85e9b6e1b90fa8a12713905bf8c9475f0c7e61a90102e9980f0f8e9182190f2df2c668f67b8f40fcb7687bef1e9e54de352341ab8adb97b56744bd9af8d41458ee41c8f188cd32e224c6429751bb8fa3f98bb0bd5645f493d2ecae2e6212d11623289eb6a285b38719aaf5176db4029b00f421ec83ca5f921ec66a52132b650372fe0232dd072cbfa0c6e28646c8a39b7131616eda84fbb854435fccda3f7498a3395a7a91926a5296d01b75a6570b038bb6323b126523805a61ab5e21cbf098b70973a9fa39c3c1558982f4da0dd6a2b55c72d550f8f2792731b1315e52ccc9a6335e33602ed3598dd5055e53cb23a01fa4e15ca49f6bdd5703e8e891e93f63d7c536f9547d0a58b030b0052ad31a10d55052b0bc767bd355b6b8ef5d31c0a0b6dc823f7005fe94f80d7c959a7d5c0a8ad072d7b1641e63bf18a3d9c24da68d605bdcb7c1f2835355d6a27a94e51a19e1aca0529926c39c1d15d119457eb98e4d2a38915484be2592f847cb3c6550a1b19eb25ef1ffa1b04453394f0f917fda0bf47551ec85b2bfd39b3f7b342c27c7a141b1cac9571d4cdc11b5e6cf727d53c057c56348b337167a56e38de1dc81a2968070030f5afe9a16a95f0d8d01369d66eecd37889c37bec4f2bb3f0cb36647a596e10d76324c0487da86313ea54ecf16ce7b0ae95b85b079066d383465214ee8db20dc1a70e3273fab4c463a4363b81e551121f93bfbaab6adc17caf7a935ecb09d009a456d9bb2a3d98b6f6f870b8e14367ac3f130aee15fac79d7360f710feff01d1ccac1e1dcae3108d9d8e0f42bb7e36e9da861f91367244c641413f17e9ad31de7184ebc254ab30a3ee663a8cf8ea48b0265859575a2cbd74d1178953a194a05f622e145a7df1ddce75f5c80d08a824f04d2c8e72eaffb10cc495ad6e04a2e259e97b9c4780a5cd0987e8c826c6dd1480309a04abf2f67c9830f2b20e17450003dc6be8453bd41aa5334fef237c1d2088e0ebbd710b97f0df0bfc659a0bab61277f5a1b76d2cb4260ad71e719fe1c8896ff4696e0edeee2ef146b6a797557c23765898341fff3401a8cd4ee2fa9c82a73e7b5456a11a3747f97f2435fecdd11a91c9729bc9415497f966a7ca5b90e7685ed3fd49f668c6143939dd9df5cb012cd049424bba142e77d56a0bd9f367a3b85efb868bd8ba03134958a4209c7be4157367375508751cf7911ca59a58336f78d76157dc3fa7b4cb5f70b3809a69f6108947e8f7168e63b2fe566c14e8ce7be7854da105691bb2f50d10369c98498b0a5da7d03c2e1c5319847bdaef723336ecd4c3b40ac2575ca9281939fb6160ff183c112df0bcc99ce9fc066616c2d618caecf163806fcd2dc8d379e752af77ad103a546f9e38f920387adfe6280eb9091a2d7ab350938b9a2a323378b7ee508c03de3a104f262cc72154607e46c4b98aa092670edb845da226d02c96ec2b70051dc46cd822871aff0e875f255d10ce8be4deaab62529ae3698b091f8299a41d10765ed0190a5c3f02e598dc0d4553f11ab75b8d3f0165f9920c896d81f1484c21d6d9f5e88229ccec18a829d0f5e878e2dd037d2380dcca4b1d70b167d1285e90c70dcbbe5167790ec1be0ec8d05362cd905d209599195f5ee3c0f47add628f91376a00802ea0094b697d647a1b787f4972798fd860b7b4e8f1a63688bc21c632b46ea113bdd32b84d8b072d5f482fd9cfc438d69e19ce8f19e702a06bd680b208a4c83b94b71fd1eeab82b6b328d0c5423db4248b06c508e6f5e2480a540d62243ae6f83aa6243054dcadc597d7681e2035f80d0a6538ea97cab95a7cd815ad2698426588eb3eb016a4b5dc8c3cbd55ce27eec8287360b6f6e81c1beba80f8629128adbfeaf4c7b34e64bc0a8a8478d032f828e1017fc6a9db982eae8e7432f1bf5ca7149ebceab13825bdb414da57febb4edd3a83e2b0723349d64dcc019721a1274ef097535f7bff2f14f320f5f7a1b75bc6778bf79ccc34f317bbc523c0604274a8be2de38fb9a38be550500ec42fbf74ee00f5f26e8178aef69c89d1a2b25a5a371f8470b93302388079c0003107e0b6068cef7dcd6095f63399d65e8691f670578bc6e050484713524e84ec85fbcf85a876dd8a69faa11d5950afac0ae2ecc55f10ec3b29e20c31adbd14aa640c487d7545eab626d205fdb1edb3ddf0d0687496775644cf73b3ed274b0006353c595d7e468703bff6e4cd20844b0ea0422206d215fab57fd652f63c17c923d3ea28c233106dad004e7c69ca32514d1a719313fcfb4350f4b698b5710cf96279ed4fc6c26bfa6801714e4515d4777be101858d9e2893ade8725ca03d0956c072f57ccc036f77eb41c977c9a3dcc2e5d3f", "public_inputs": [ "0xe113acd03b98f0bab0ef6f577245d5d008cbcc19ef2dab3608aa4f37f72a407", - "0x2e021d9bf99c5bd7267488b6a7a5cf5f7d00222a41b6a9b971899c44089e0c5" + "0x2e021d9bf99c5bd7267488b6a7a5cf5f7d00222a41b6a9b971899c44089e0c5", + "0x87f3e", + "0x87f3e" ] } \ No newline at end of file diff --git a/zk_prover/examples/solvency_proof_solidity_calldata.json b/zk_prover/examples/solvency_proof_solidity_calldata.json deleted file mode 100644 index c36f0396..00000000 --- a/zk_prover/examples/solvency_proof_solidity_calldata.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "proof": "0x294a01e5e8169bc04c5c79e96566af34f6802cbe75a80f20eefa4a2a771efb7721c43380eca2289ab8876e66cd5b52d73e6ece7b43d7144de8a38d4ee033db0d0ba95ef7404070024598023f2cdc5bc54d55dd968900937110426ac0f711bcf92f6fa30db6b6274efc31960400f4355951028f5ea05c74f4ea9a43804d68ab8a1faae935f5d6891da738aea21e9fb4f4df779100ed79e8472e4743f50818f86715a98f3b91aef115e98ca337f57bc7b21c9ad2d672741525246aee1dfc26442110d259c4ffd040e1f8a7e573b9b46a4400f4bf72748504ce214a3001fad4c201043433cff2ff4bc51a5b012960d2884a1fa993a5462d463e156bf1af8b914c531c51ab717be7c4e29db1d808974477174dc99d463f6805d5f03dbb82cdab2bfd2ff7106202a03425ece58e8221e1052da0b83e3c65fc7763a7ab0dad4954c73f1952b13a33eb59681908eae3340c1920640e02c8ce375232e5c8ab5d31e753d70f2e23519a75905f14b606d2f2eb9c10da382672e0a33c9cdd3a12ba15c4ad8f2a46e5d579a7f672d24eec3888aefb2fe4ac548f6d835bc990747d582a3b0adb2e91ec2fbec6c1bc8d8e8e4b5fff97c0fbc0a43c7dd9789f96424db17d1e7640168dd2a598e140145be4d462e855cbd4d5dc4ac05610969749c62faccdfeb9660dcc91aaeb24a5b6972345c9f17307935e4f0a77043ab1e56a1c467bda4b6a120cff749fe9e8c61e57253d94a952fb1fa79bd1a1342bf735e63d992944ec42d400899ea57c1270173f60ea0cfa8ca5dccf4e8c51bcf2b6c501f790ecebb954b5181ff52913cc4b81a46977c3e40b9ae405cc6eea5b14601ed360781eac6cb58722e7563918338a4fa1e08d3cba14fef21bef0441b1c6a89be528faae6fbe2adb10e446fffaa6f99d87b83bfea201e5cd03bbf54a71fd3985447835e056c315e427235bd37e1b81cd3f68b0f878c55bc05f1808a02ef265061d6fed656f0c9bec0cee229a9ebb0d89412107254bfed767d6a901b40114341d8afc2edc2e34a34f0fb7abaeac1a071d9399c9cc02de7e48baccbb94a4b5a4b98f6262e9d4952e040760992864d804252902790fc3dfff37a7644c07cfb488b0f3b1e5c0eeb0808f044de336457432352a9b5fb25cc71c8fc8a7b37821cf4a0acb566382a9a01fce2df0a8d04416469401069c3e0b150277ced57b7ff7b3f49500b99d22dd88b7d210e7b92d3624c3a6d4adf525783dae26ad0ac156ab90710059ec4ff21c3662e3132b5bf2d76f84310a393635304224c44f3d13a6f57f26b5725d33a36543b9db0b72e9730c611eb00cc88b483dae28fb89af7add85f12b206e204de4fa8936ff05729686a309cc06f17e68dd8cee610666c1fa5d626f4b57f953bb36aeb0579e21e2aaeb30ee947d3b230e2d5c6965631a8f156cc7aa71eb686dd2ae74c1d0a5209779f450c9b24a234645243ee58e21d11f1dd57bfc92f787a6a3059f1237281f877e7346885b00a5d69195be3d5e5414be51e54bcf0b85b09fb7892f26058125676fbcb5a058e3e1c1164cfa948169c069d361623ab20ce8b689fcae7bc8220564a42a09f823ce54a4fe6b1c94939d19aba2103ef8f19e93bd0a64a3aeea500ee57170a4baee49b3f3d7b5968e2300c1e9ad1802bf888a69091c1deb21549b2657d57e3055764df26d0b537856f8e4ae7eaf6b7c2174f60003f59686137b3b2e854d57406ff9dd9d5e9a8279547871dde24894b4a8ad0ebc589b633ed7f09c06a3cdb87e0ec4c6e2337d3a4e1dd273fc09169793f22df47879d4733ad823932a18a303f90a298ff01347f8dc9f599fa8fbd469efc7f85520f0c0fe8e8e4f971546aad4b1720bac6209b030fa3d9302e1761fccc5f2587ad172b65ff7d944e91fc6db80b00a23ca68a205d109cff3cccaf4bff0bcdb6b17f0e02de74482b32d080519d1c985ea154c34ab927d9a1bae09968860458e97db6a13901d09f23e8d1988ab3c1230060dd33bc38dbc03581e83c63a7c5062b31280eb115322da48aa20538d0557dbd02599b22130bf8aae39674773e32fe2c179e012f4a0811ea5652374eb7e130adcdd370a68a4e488b3f0d71574b11065edff13f23059baacc6940fb1b26601b810d6507da8d229b306f61838a36dff66594a8be53a55272bc2ef1a8347b7c6d498630ab0005b9975190867689fafc1cc3f4d2f7718a39b71be792f028da06fa8b02843b1239afc4cca03b4a052b74abb2f5207001ccba33ea4af149fc50e954481cc95f55f4ea60f5866111809bc313c836173e3db24e1bcb48e2e292ab2e8f5538af4abd29ca864b9a29a2d7106c5308890db916cd51ed97a611485b6b8d571f63b23054ea38db45b3d9e5474039ec29bd5b944cf5307ef5d4621f322fbf1c20d0478f3aaf54b6cdb69c280eb75691152c3402ad946bc8a3e7324c0f7ba170fa64c61663c720801fd41a97417a79ff25887605e1835a915c49c071b15cf28cb95624e2656bf55661dbb466b0efceb7c544e6f3ab91c2a02481b213c7b285603ea2e09d8694dee99195d28c9de7ad4d12f5592badead2c3944972710811bff0dafa849f5194ef70ece117ad294866ba9354c3098cd0ee1109a7b0be853e683ec193490372163656977623aee93e8a2cb8721aec45391a714fdbd011ae72b577dcb12e2be3411103540570fca6f01cc14fcba0bcab834b6a728cd0ea41ae608423866f345cd38cd5c38b22a9ef5988ceff2a8482856688bdbaa0c0d75b6ddaefb9a40e8d04d1b75284e6b6ab8855413310bd537c50b2cfa45e0761dd5365989410d019c882e94500d605e5c4a9c3d70aa623fe9ff12e083423f550955c0660e0ee3555b4a521091ec9da13cbec536d2ee0a2711a98a752bf4e94108823f5374623a632d835cdbb9d0f63cf71b963a3322ce48c54588f727ff7476", - "public_inputs": [ - "0x2e021d9bf99c5bd7267488b6a7a5cf5f7d00222a41b6a9b971899c44089e0c5", - "0x87f3f", - "0x87f3f" - ] -} diff --git a/zk_prover/src/chips/less_than_check/lt_check.rs b/zk_prover/src/chips/less_than_check/lt_check.rs deleted file mode 100644 index 10bcfb8e..00000000 --- a/zk_prover/src/chips/less_than_check/lt_check.rs +++ /dev/null @@ -1,135 +0,0 @@ -use halo2_proofs::{ - circuit::{AssignedCell, Layouter}, - halo2curves::bn256::Fr as Fp, - plonk::{Advice, Column, ConstraintSystem, Error, Expression, Fixed, Selector}, - poly::Rotation, -}; - -use crate::chips::range::{ - range_check::{RangeCheckChip, RangeCheckConfig}, - utils::pow_of_two, -}; - -/// Config for the CheckLt chip. -#[derive(Clone, Copy, Debug)] -pub struct CheckLtConfig { - /// Denotes the lhs value. - lhs_col: Column, - /// Denotes the rhs value. - rhs_col: Column, - /// Denotes the diff value. - diff_col: Column, - /// Denotes the selector used to enforce the LT constraint between lhs and rhs. - check_lt_selector: Selector, - /// Configuration for the RangeCheck chip. - range_check_config: RangeCheckConfig, -} - -/// Constrains that 'lhs' is less than 'rhs'. -/// -/// Assumes that `lhs` and `rhs` are known to have <= N_BYTES bytes. -/// -/// Note: This may fail silently if `lhs` or `rhs` have more than N_BYTES -/// -/// Patterned after [Axiom `check_less_than`](https://axiom-crypto.github.io/halo2-lib/src/halo2_base/gates/range.rs.html#213-219) -/// -/// It performs the following constraint: -/// * `diff = lhs - rhs + 2**(N_BYTES*8)`. When check_lt_selector is 1, this constraint is enforced. -/// * `diff ∈ N_BYTES range for diff cell - -#[derive(Clone, Copy, Debug)] -pub struct CheckLtChip { - config: CheckLtConfig, -} - -impl CheckLtChip { - /// Configures the CheckLtChip. - pub fn configure( - meta: &mut ConstraintSystem, - lhs_col: Column, - rhs_col: Column, - diff_col: Column, - range: Column, - check_lt_selector: Selector, - toggle_lookup_check: Selector, - ) -> CheckLtConfig { - meta.create_gate("lt gate", |meta| { - let lhs_expr = meta.query_advice(lhs_col, Rotation::cur()); - let rhs_expr = meta.query_advice(rhs_col, Rotation::cur()); - let diff_expr = meta.query_advice(diff_col, Rotation::cur()); - let check_lt_selector: Expression = meta.query_selector(check_lt_selector); - - let range_fp = pow_of_two(N_BYTES * 8); - - let range_expr = Expression::Constant(range_fp); - - vec![check_lt_selector * (lhs_expr - rhs_expr + range_expr - diff_expr)] - }); - - let range_check_config = - RangeCheckChip::configure(meta, diff_col, range, toggle_lookup_check); - - CheckLtConfig { - lhs_col, - rhs_col, - diff_col, - check_lt_selector, - range_check_config, - } - } - - /// Constructs a CheckLtChip given a config. - pub fn construct(config: CheckLtConfig) -> CheckLtChip { - CheckLtChip { config } - } - - /// Assign `lhs`, `rhs` and `diff` to the region. - pub fn assign( - &self, - mut layouter: impl Layouter, - lhs_cell: &AssignedCell, - rhs_cell: &AssignedCell, - ) -> Result<(), Error> { - let diff_cell = layouter.assign_region( - || "assign lhs, rhs and diff to the region", - |mut region| { - // enable check_lt_selector at offset 0 - self.config.check_lt_selector.enable(&mut region, 0)?; - - // copy `lhs_cell` to `lhs_col` column at offset 0 - lhs_cell.copy_advice(|| "copy lhs", &mut region, self.config.lhs_col, 0)?; - - // copy `rhs_cell` to `rhs_col` column at offset 0 - rhs_cell.copy_advice(|| "copy rhs", &mut region, self.config.rhs_col, 0)?; - - // Compute diff_val starting from lhs_cell and rhs_cell - let diff_val = lhs_cell.value().zip(rhs_cell.value()).map(|(lhs, rhs)| { - let mut diff = lhs - rhs; - let range = pow_of_two(N_BYTES * 8); - diff += range; - diff - }); - - let diff_cell = region.assign_advice( - || "assign diff to the region", - self.config.diff_col, - 0, - || diff_val, - )?; - - Ok(diff_cell) - }, - )?; - - // Instantiate the range check chip. - let range_check_chip = RangeCheckChip::construct(self.config.range_check_config); - - // load the lookup table for range check - range_check_chip.load(&mut layouter)?; - - // assign diff_cell to the range check chip to perform range check - range_check_chip.assign(layouter, &diff_cell)?; - - Ok(()) - } -} diff --git a/zk_prover/src/chips/less_than_check/mod.rs b/zk_prover/src/chips/less_than_check/mod.rs deleted file mode 100644 index 7434b5b3..00000000 --- a/zk_prover/src/chips/less_than_check/mod.rs +++ /dev/null @@ -1,2 +0,0 @@ -pub mod lt_check; -mod tests; diff --git a/zk_prover/src/chips/less_than_check/tests.rs b/zk_prover/src/chips/less_than_check/tests.rs deleted file mode 100644 index 56e8673d..00000000 --- a/zk_prover/src/chips/less_than_check/tests.rs +++ /dev/null @@ -1,231 +0,0 @@ -use crate::chips::less_than_check::lt_check::{CheckLtChip, CheckLtConfig}; -use halo2_proofs::{ - circuit::{AssignedCell, Layouter, SimpleFloorPlanner, Value}, - halo2curves::bn256::Fr as Fp, - plonk::{Advice, Circuit, Column, ConstraintSystem, Error}, -}; - -#[derive(Debug, Clone)] -pub struct TestConfig { - pub check_lt_config: CheckLtConfig, - pub advice_cols: [Column; 3], -} - -impl TestConfig { - /// Generic method to assign witness value to a cell in the witness table to advice column `column_index`. `object_to_assign` is label to identify the object being assigned. It is useful for debugging. - pub fn assign_value( - &self, - mut layouter: impl Layouter, - value: Fp, - column_index: usize, - object_to_assign: &'static str, - ) -> Result, Error> { - layouter.assign_region( - || format!("assign {}", object_to_assign), - |mut region| { - region.assign_advice( - || "value", - self.advice_cols[column_index], - 0, - || Value::known(value), - ) - }, - ) - } -} - -// The test circuit takes two inputs lhs and rhs. -// Leverages CheckLtChip to enforce that lhs < rhs. -#[derive(Default, Clone, Debug)] -struct TestCircuit { - pub lhs: Fp, - pub rhs: Fp, -} - -impl Circuit for TestCircuit { - type Config = TestConfig; - type FloorPlanner = SimpleFloorPlanner; - - fn without_witnesses(&self) -> Self { - Self::default() - } - - fn configure(meta: &mut ConstraintSystem) -> Self::Config { - let advice_cols = [ - meta.advice_column(), - meta.advice_column(), - meta.advice_column(), - ]; - - meta.enable_equality(advice_cols[0]); - meta.enable_equality(advice_cols[1]); - meta.enable_equality(advice_cols[2]); - - let range = meta.fixed_column(); - meta.enable_constant(range); - - let check_lt_enable = meta.selector(); - let toggle_lookup_check = meta.complex_selector(); - - let check_lt_config = CheckLtChip::::configure( - meta, - advice_cols[0], - advice_cols[1], - advice_cols[2], - range, - check_lt_enable, - toggle_lookup_check, - ); - - { - TestConfig { - advice_cols, - check_lt_config, - } - } - } - - fn synthesize( - &self, - config: Self::Config, - mut layouter: impl Layouter, - ) -> Result<(), Error> { - // Initiate the check lt chip - let check_lt_chip = CheckLtChip::construct(config.check_lt_config); - - // Assign lhs, rhs witnesses to advice columns - let lhs_cell = - config.assign_value(layouter.namespace(|| "assign lhs"), self.lhs, 0, "lhs")?; - - let rhs_cell = - config.assign_value(layouter.namespace(|| "assign rhs"), self.rhs, 1, "rhs")?; - - // Assign lhs and rhs - check_lt_chip.assign( - layouter.namespace(|| "assign lhs and rhs"), - &lhs_cell, - &rhs_cell, - )?; - - Ok(()) - } -} - -#[cfg(test)] -mod testing { - use super::TestCircuit; - use halo2_proofs::{ - dev::{FailureLocation, MockProver, VerifyFailure}, - halo2curves::bn256::Fr as Fp, - plonk::Any, - }; - - // lhs = 1 - // rhs = 200 - // N_BYTES = 2 - #[test] - fn valid_check_lt() { - let k = 9; - - let lhs = Fp::from(1); - let rhs = Fp::from(200); - - let circuit = TestCircuit::<2> { lhs, rhs }; - let prover = MockProver::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - } - - // lhs = 1 - // rhs = 200 - // N_BYTES = 10 - #[test] - fn valid_check_lt_2() { - let k = 9; - - let lhs = Fp::from(1); - let rhs = Fp::from(200); - - let circuit = TestCircuit::<10> { lhs, rhs }; - let prover = MockProver::run(k, &circuit, vec![]).unwrap(); - prover.assert_satisfied(); - } - - // lhs = 200 - // rhs = 1 - // lhs - rhs + range = 200 - 1 + 2^16 = 199 + 2^16 which is out of range. - #[test] - fn invalid_check_lt() { - let k = 9; - - let lhs = Fp::from(200); - let rhs = Fp::from(1); - - let circuit = TestCircuit::<2> { lhs, rhs }; - let invalid_prover = MockProver::run(k, &circuit, vec![]).unwrap(); - assert_eq!( - invalid_prover.verify(), - Err(vec![ - VerifyFailure::Permutation { - column: (Any::advice(), 2).into(), - location: FailureLocation::InRegion { - region: (4, "assign value to perform range check").into(), - offset: 2 - } - }, - VerifyFailure::Permutation { - column: (Any::Fixed, 0).into(), - location: FailureLocation::OutsideRegion { row: 256 } - }, - ]) - ); - } - - // lhs = 200 - // rhs = 200 - // lhs - rhs + range = 200 - 200 + 2^16 = 2^16 which is out of range. - #[test] - fn invalid_check_lt_2() { - let k = 9; - - let lhs = Fp::from(200); - let rhs = Fp::from(200); - - let circuit = TestCircuit::<2> { lhs, rhs }; - let invalid_prover = MockProver::run(k, &circuit, vec![]).unwrap(); - assert_eq!( - invalid_prover.verify(), - Err(vec![ - VerifyFailure::Permutation { - column: (Any::advice(), 2).into(), - location: FailureLocation::InRegion { - region: (4, "assign value to perform range check").into(), - offset: 2 - } - }, - VerifyFailure::Permutation { - column: (Any::Fixed, 0).into(), - location: FailureLocation::OutsideRegion { row: 256 } - }, - ]) - ); - } - - #[cfg(feature = "dev-graph")] - #[test] - fn print_check_lt() { - use plotters::prelude::*; - - let root = - BitMapBackend::new("prints/lt-check-layout.png", (1024, 3096)).into_drawing_area(); - root.fill(&WHITE).unwrap(); - let root = root.titled("Lt Check Layout", ("sans-serif", 60)).unwrap(); - - let circuit = TestCircuit::<2> { - lhs: Fp::from(1), - rhs: Fp::from(200), - }; - halo2_proofs::dev::CircuitLayout::default() - .render(9, &circuit, &root) - .unwrap(); - } -} diff --git a/zk_prover/src/chips/merkle_sum_tree.rs b/zk_prover/src/chips/merkle_sum_tree.rs index b5cd463c..e47bdd68 100644 --- a/zk_prover/src/chips/merkle_sum_tree.rs +++ b/zk_prover/src/chips/merkle_sum_tree.rs @@ -101,7 +101,7 @@ impl MerkleSumTreeChip { mut layouter: impl Layouter, current_hash: &AssignedCell, element_hash: Fp, - swap_bit_assigned: AssignedCell, + swap_bit_assigned: &AssignedCell, ) -> Result<(AssignedCell, AssignedCell), Error> { layouter.assign_region( || "assign nodes hashes per merkle tree level", @@ -181,7 +181,7 @@ impl MerkleSumTreeChip { mut layouter: impl Layouter, current_balance: &AssignedCell, element_balance: Fp, - swap_bit_assigned: AssignedCell, + swap_bit_assigned: &AssignedCell, ) -> Result< ( AssignedCell, diff --git a/zk_prover/src/chips/mod.rs b/zk_prover/src/chips/mod.rs index 58bf8673..97a1ea8f 100644 --- a/zk_prover/src/chips/mod.rs +++ b/zk_prover/src/chips/mod.rs @@ -1,4 +1,3 @@ -pub mod less_than_check; pub mod merkle_sum_tree; pub mod poseidon; pub mod range; diff --git a/zk_prover/src/circuits/merkle_sum_tree.rs b/zk_prover/src/circuits/merkle_sum_tree.rs index f095dfea..8cbe13d0 100644 --- a/zk_prover/src/circuits/merkle_sum_tree.rs +++ b/zk_prover/src/circuits/merkle_sum_tree.rs @@ -3,7 +3,7 @@ use crate::chips::poseidon::hash::{PoseidonChip, PoseidonConfig}; use crate::chips::poseidon::poseidon_spec::PoseidonSpec; use crate::chips::range::range_check::{RangeCheckChip, RangeCheckConfig}; use crate::circuits::traits::CircuitBase; -use crate::merkle_sum_tree::{big_uint_to_fp, Entry, MerkleProof}; +use crate::merkle_sum_tree::{big_uint_to_fp, Entry, MerkleProof, Node}; use halo2_proofs::circuit::{AssignedCell, Layouter, SimpleFloorPlanner}; use halo2_proofs::halo2curves::bn256::Fr as Fp; use halo2_proofs::plonk::{ @@ -31,7 +31,7 @@ pub struct MstInclusionCircuit, pub path_element_balances: Vec<[Fp; N_ASSETS]>, pub path_indices: Vec, - pub root_hash: Fp, + pub root: Node, } impl CircuitExt @@ -40,13 +40,15 @@ where [usize; 2 * (1 + N_ASSETS)]: Sized, [usize; N_ASSETS + 1]: Sized, { - /// Returns the number of public inputs of the circuit. It is 2, namely the laef hash to be verified inclusion of and the root hash of the merkle sum tree. + /// Returns the number of public inputs of the circuit. It is {2 + N_ASSETS}, namely the leaf hash to be verified inclusion of, the root hash of the merkle sum tree and the root balances of the merkle sum tree. fn num_instance(&self) -> Vec { - vec![2] + vec![{ 2 + N_ASSETS }] } /// Returns the values of the public inputs of the circuit. Namely the leaf hash to be verified inclusion of and the root hash of the merkle sum tree. fn instances(&self) -> Vec> { - vec![vec![self.entry.compute_leaf().hash, self.root_hash]] + let mut instance = vec![self.entry.compute_leaf().hash, self.root.hash]; + instance.extend_from_slice(&self.root.balances); + vec![instance] } } @@ -57,6 +59,8 @@ impl CircuitBa impl MstInclusionCircuit +where + [usize; N_ASSETS + 1]: Sized, { pub fn init_empty() -> Self { Self { @@ -64,7 +68,7 @@ impl path_element_hashes: vec![Fp::zero(); LEVELS], path_element_balances: vec![[Fp::zero(); N_ASSETS]; LEVELS], path_indices: vec![Fp::zero(); LEVELS], - root_hash: Fp::zero(), + root: Node::init_empty(), } } @@ -85,7 +89,7 @@ impl path_element_hashes: merkle_proof.sibling_hashes, path_element_balances: merkle_proof.sibling_sums, path_indices: merkle_proof.path_indices, - root_hash: merkle_proof.root_hash, + root: merkle_proof.root, } } } @@ -191,6 +195,7 @@ where impl Circuit for MstInclusionCircuit where + [usize; N_ASSETS + 1]: Sized, [usize; 2 * (1 + N_ASSETS)]: Sized, { type Config = MstInclusionConfig; @@ -212,15 +217,15 @@ where ) -> Result<(), Error> { // build auxiliary chips let merkle_sum_tree_chip = - MerkleSumTreeChip::::construct(config.merkle_sum_tree_config.clone()); + MerkleSumTreeChip::::construct(config.merkle_sum_tree_config); let poseidon_entry_chip = PoseidonChip::::construct( - config.poseidon_entry_config.clone(), + config.poseidon_entry_config, ); let poseidon_middle_chip = PoseidonChip::::construct( - config.poseidon_middle_config.clone(), + config.poseidon_middle_config, ); let range_check_chip = RangeCheckChip::::construct(config.range_check_config); @@ -294,7 +299,7 @@ where layouter.namespace(|| format!("{}: assign nodes hashes", namespace_prefix)), ¤t_hash, self.path_element_hashes[level], - swap_bit_level.clone(), + &swap_bit_level, )?; let mut next_balances = vec![]; @@ -313,7 +318,7 @@ where }), ¤t_balances[asset], self.path_element_balances[level][asset], - swap_bit_level.clone(), + &swap_bit_level, )?; // Each balance cell is constrained to be within the range defined by N_BYTES @@ -374,6 +379,16 @@ where config.instance, )?; + // expose the last current balances, namely the root balances, as public input + for (i, balance) in current_balances.iter().enumerate() { + self.expose_public( + layouter.namespace(|| format!("public root balance {}", i)), + balance, + 2 + i, + config.instance, + )?; + } + // perform range check on the balances of the root to make sure these lie in the range defined by N_BYTES for balance in current_balances.iter() { range_check_chip.assign(layouter.namespace(|| "range check root balance"), balance)?; diff --git a/zk_prover/src/circuits/mod.rs b/zk_prover/src/circuits/mod.rs index 3cf1fbb0..1a494993 100644 --- a/zk_prover/src/circuits/mod.rs +++ b/zk_prover/src/circuits/mod.rs @@ -1,5 +1,4 @@ pub mod merkle_sum_tree; -pub mod solvency; mod tests; pub mod traits; pub mod types; diff --git a/zk_prover/src/circuits/solvency.rs b/zk_prover/src/circuits/solvency.rs deleted file mode 100644 index 95cec188..00000000 --- a/zk_prover/src/circuits/solvency.rs +++ /dev/null @@ -1,357 +0,0 @@ -use crate::chips::less_than_check::lt_check::{CheckLtChip, CheckLtConfig}; -use crate::chips::merkle_sum_tree::{MerkleSumTreeChip, MerkleSumTreeConfig}; -use crate::chips::poseidon::hash::{PoseidonChip, PoseidonConfig}; -use crate::chips::poseidon::poseidon_spec::PoseidonSpec; -use crate::circuits::traits::CircuitBase; -use crate::merkle_sum_tree::Tree; -use halo2_proofs::circuit::{AssignedCell, Layouter, SimpleFloorPlanner, Value}; -use halo2_proofs::halo2curves::bn256::Fr as Fp; -use halo2_proofs::plonk::{ - Advice, Circuit, Column, ConstraintSystem, Error, Fixed, Instance, Selector, -}; -use snark_verifier_sdk::CircuitExt; - -/// Circuit for verifying solvency, namely that the asset_sums is greater than the sum of the liabilities stored in the merkle sum tree -/// -/// # Type Parameters -/// -/// * `N_ASSETS`: The number of assets for which the solvency is verified. -/// * `N_BYTES`: Range in which the balances should lie -/// -/// # Fields -/// -/// * `left_node_hash`: The hash of the penultimate left node of the merkle sum tree -/// * `left_node_balances`: The balances of the penultimate left node of the merkle sum tree -/// * `right_node_hash`: The hash of the penultimate right node of the merkle sum tree -/// * `right_node_balances`: The balances of the penultimate right node of the merkle sum tree -/// * `asset_sums`: The sum of the assets of the CEX for each asset -/// * `root_hash`: The root hash of the merkle sum tree -#[derive(Clone)] -pub struct SolvencyCircuit { - pub left_node_hash: Fp, - pub left_node_balances: [Fp; N_ASSETS], - pub right_node_hash: Fp, - pub right_node_balances: [Fp; N_ASSETS], - pub asset_sums: [Fp; N_ASSETS], - pub root_hash: Fp, -} - -impl CircuitBase - for SolvencyCircuit -{ -} - -impl CircuitExt - for SolvencyCircuit -where - [usize; 2 * (1 + N_ASSETS)]: Sized, -{ - /// Returns the number of public inputs of the circuit. It is 1 + N_ASSETS, namely the root hash of the merkle sum tree and the sum of the assets of the CEX for each asset - fn num_instance(&self) -> Vec { - vec![1 + N_ASSETS] - } - - /// Returns the values of the public inputs of the circuit. The first value is the root hash of the merkle sum tree and the remaining values are the sum of the assets of the CEX for each asset - fn instances(&self) -> Vec> { - let mut instances = vec![self.root_hash]; - instances.extend(self.asset_sums); - vec![instances] - } -} - -impl SolvencyCircuit { - pub fn init_empty() -> Self { - Self { - left_node_hash: Fp::zero(), - left_node_balances: [Fp::zero(); N_ASSETS], - right_node_hash: Fp::zero(), - right_node_balances: [Fp::zero(); N_ASSETS], - asset_sums: [Fp::zero(); N_ASSETS], - root_hash: Fp::zero(), - } - } - - /// Initializes the circuit with the merkle sum tree and the assets sum - pub fn init>( - merkle_sum_tree: &T, - asset_sums: [Fp; N_ASSETS], - ) -> Self { - let (penultimate_node_left, penultimate_node_right) = merkle_sum_tree - .penultimate_level_data() - .expect("Failed to retrieve penultimate level data"); - - let root_hash = merkle_sum_tree.root().hash; - - Self { - left_node_hash: penultimate_node_left.hash, - left_node_balances: penultimate_node_left.balances, - right_node_hash: penultimate_node_right.hash, - right_node_balances: penultimate_node_right.balances, - asset_sums, - root_hash, - } - } -} - -/// Configuration for the solvency circuit -/// # Type Parameters -/// -/// * `N_ASSETS`: The number of assets for which the solvency is verified. -/// * `N_BYTES`: Range in which the balances should lie -/// -/// # Fields -/// -/// * `merkle_sum_tree_config`: Configuration for the merkle sum tree -/// * `poseidon_config`: Configuration for the poseidon hash function with WIDTH = 2 and RATE = 1 -/// * `instance`: Instance column used to store the public inputs -/// * `lt_selector`: Selector to activate the less than constraint -/// * `lt_config`: Configuration for the less than chip -/// -/// The circuit performs an additional constraint: -/// * `lt_enable * (lt_config.is_lt - 1) = 0` (if `lt_enable` is toggled). It basically enforces the result of the less than chip to be 1. -#[derive(Debug, Clone)] -pub struct SolvencyConfig -where - [usize; 2 * (1 + N_ASSETS)]: Sized, -{ - advice_cols: [Column; 3], - merkle_sum_tree_config: MerkleSumTreeConfig, - poseidon_config: PoseidonConfig<2, 1, { 2 * (1 + N_ASSETS) }>, - instance: Column, - check_lt_config: CheckLtConfig, -} - -impl SolvencyConfig -where - [usize; 2 * (1 + N_ASSETS)]: Sized, -{ - /// Configures the circuit - pub fn configure(meta: &mut ConstraintSystem) -> Self { - // the max number of advices columns needed is #WIDTH + 1 given requirement of the poseidon config - let advice_cols: [Column; 3] = std::array::from_fn(|_| meta.advice_column()); - - // the max number of fixed columns needed is 2 * WIDTH given requirement of the poseidon config - let fixed_columns: [Column; 4] = std::array::from_fn(|_| meta.fixed_column()); - - // we also need 4 selectors - 3 simple selectors and 1 complex selector - let selectors: [Selector; 3] = std::array::from_fn(|_| meta.selector()); - let enable_lookup_selector = meta.complex_selector(); - - // enable constant for the fixed_column[2], this is required for the poseidon chip - meta.enable_constant(fixed_columns[2]); - - // in fact, the poseidon config requires #WIDTH advice columns for state and 1 for partial_sbox, #WIDTH fixed columns for rc_a and #WIDTH for rc_b - let poseidon_config = PoseidonChip::::configure( - meta, - advice_cols[0..2].try_into().unwrap(), - advice_cols[2], - fixed_columns[0..2].try_into().unwrap(), - fixed_columns[2..4].try_into().unwrap(), - ); - - // enable permutation for all the advice columns - for col in &advice_cols { - meta.enable_equality(*col); - } - - // the configuration of merkle_sum_tree will always require 3 advices, no matter the number of assets - let merkle_sum_tree_config = MerkleSumTreeChip::::configure( - meta, - advice_cols[0..3].try_into().unwrap(), - selectors[0..2].try_into().unwrap(), - ); - - // configure check lt chip - let check_lt_config = CheckLtChip::::configure( - meta, - advice_cols[0], - advice_cols[1], - advice_cols[2], - fixed_columns[0], - selectors[2], - enable_lookup_selector, - ); - - let instance = meta.instance_column(); - meta.enable_equality(instance); - - Self { - advice_cols, - merkle_sum_tree_config, - poseidon_config, - check_lt_config, - instance, - } - } - - /// Generic method to assign witness value to a cell in the witness table to advice column `column_index`. `object_to_assign` is label to identify the object being assigned. It is useful for debugging. - pub fn assign_value_to_witness( - &self, - mut layouter: impl Layouter, - value: Fp, - column_index: usize, - object_to_assign: &'static str, - ) -> Result, Error> { - layouter.assign_region( - || format!("assign {}", object_to_assign), - |mut region| { - region.assign_advice( - || "value", - self.advice_cols[column_index], - 0, - || Value::known(value), - ) - }, - ) - } -} - -impl Circuit for SolvencyCircuit -where - [usize; 2 * (1 + N_ASSETS)]: Sized, -{ - type Config = SolvencyConfig; - type FloorPlanner = SimpleFloorPlanner; - - fn without_witnesses(&self) -> Self { - Self::init_empty() - } - - fn configure(meta: &mut ConstraintSystem) -> Self::Config { - SolvencyConfig::::configure(meta) - } - - fn synthesize( - &self, - config: Self::Config, - mut layouter: impl Layouter, - ) -> Result<(), Error> { - // build auxiliary chips - let merkle_sum_tree_chip = - MerkleSumTreeChip::::construct(config.merkle_sum_tree_config.clone()); - let poseidon_chip = PoseidonChip::::construct( - config.poseidon_config.clone(), - ); - let check_lt_chip = CheckLtChip::::construct(config.check_lt_config); - - // assign asset sums value to the witness - let asset_sums = self - .asset_sums - .iter() - .enumerate() - .map(|(i, sum)| { - config.assign_value_to_witness( - layouter.namespace(|| format!("assign asset sum {}", i)), - *sum, - 0, - "asset sum", - ) - }) - .collect::, _>>()?; - - // Assign the penultimate left node hash and the penultimate left node balances following this layout on two columns: - // - // | a | b | - // | --------------------- | -------------------------- | - // | left_node_hash | left_node_balances_0 | - // | - | left_node_balances_1 | - // | - | ... | - // | - | left_node_balances_N | - - let left_node_hash = self.assign_value_to_witness( - layouter.namespace(|| "assign penultimate left node hash"), - self.left_node_hash, - "left node hash", - config.advice_cols[0], - )?; - - let left_node_balances = self - .left_node_balances - .iter() - .enumerate() - .map(|(i, balance)| { - self.assign_value_to_witness( - layouter.namespace(|| format!("assign entry balance {}", i)), - *balance, - "left node balance", - config.advice_cols[1], - ) - }) - .collect::, _>>()?; - - // assign swap bit - let swap_bit = self.assign_value_to_witness( - layouter.namespace(|| "assign swap bit"), - Fp::from(0), - "swap bit", - config.advice_cols[2], - )?; - - // assign penultimate nodes hashes according to the swap bit - let (left_hash, right_hash) = merkle_sum_tree_chip.assign_nodes_hashes_per_level( - layouter.namespace(|| "assign penultimate nodes hashes"), - &left_node_hash, - self.right_node_hash, - swap_bit.clone(), - )?; - - let mut root_balances = vec![]; - let mut left_balances = vec![]; - let mut right_balances = vec![]; - - // assign penultimate nodes balances per each asset according to the swap bit - for asset in 0..N_ASSETS { - let (left_balance, right_balance, next_balance) = merkle_sum_tree_chip - .assign_nodes_balance_per_asset( - layouter.namespace(|| format!("asset {}: assign nodes balances", asset)), - &left_node_balances[asset], - self.right_node_balances[asset], - swap_bit.clone(), - )?; - - root_balances.push(next_balance); - left_balances.push(left_balance); - right_balances.push(right_balance); - } - - // create an hash_input array of length L that contains the left hash, the left balances, the right hash and the right balances - let hash_input_vec: Vec> = [left_hash] - .iter() - .chain(left_balances.iter()) - .chain([right_hash].iter()) - .chain(right_balances.iter()) - .map(|x| x.to_owned()) - .collect(); - - let hash_input: [AssignedCell; 2 * (1 + N_ASSETS)] = match hash_input_vec.try_into() - { - Ok(arr) => arr, - Err(_) => panic!("Failed to convert Vec to Array"), - }; - - // compute the root hash - let root_hash = poseidon_chip.hash( - layouter.namespace(|| format!("perform root hash")), - hash_input, - )?; - - // expose the root hash, as public input - self.expose_public( - layouter.namespace(|| "public root hash"), - &root_hash, - 0, - config.instance, - )?; - - // enforce root balances to be less than the assets sum - for i in 0..N_ASSETS { - check_lt_chip.assign( - layouter.namespace(|| "enforce less than"), - &root_balances[i], - &asset_sums[i], - )?; - } - - Ok(()) - } -} diff --git a/zk_prover/src/circuits/tests.rs b/zk_prover/src/circuits/tests.rs index 80069a11..183868cc 100644 --- a/zk_prover/src/circuits/tests.rs +++ b/zk_prover/src/circuits/tests.rs @@ -5,8 +5,7 @@ mod test { use crate::{ circuits::{ merkle_sum_tree::MstInclusionCircuit, - solvency::SolvencyCircuit, - utils::{full_prover, full_verifier, generate_setup_artifacts, get_verification_cost}, + utils::{full_prover, full_verifier, generate_setup_artifacts}, }, merkle_sum_tree::{big_uint_to_fp, Entry}, }; @@ -16,10 +15,7 @@ mod test { plonk::Any, }; use num_bigint::{BigUint, ToBigUint}; - use snark_verifier_sdk::{ - evm::{evm_verify, gen_evm_proof_shplonk, gen_evm_verifier_shplonk}, - CircuitExt, - }; + use snark_verifier_sdk::CircuitExt; const N_ASSETS: usize = 2; const LEVELS: usize = 4; @@ -45,6 +41,7 @@ mod test { let valid_prover = MockProver::run(K, &circuit, circuit.instances()).unwrap(); assert_eq!(circuit.instances()[0].len(), circuit.num_instance()[0]); + assert_eq!(circuit.instances()[0].len(), 2 + N_ASSETS); valid_prover.assert_satisfied(); } @@ -82,32 +79,21 @@ mod test { // verify the proof to be true assert!(full_verifier(¶ms, &vk, proof, circuit.instances())); - } - - #[test] - fn test_valid_solvency_with_full_prover() { - let circuit = SolvencyCircuit::::init_empty(); - - // The verification key (vk) and the proving key (pk) are then generated. - // An empty circuit is used here to emphasize that the circuit inputs are not relevant when generating the keys. - // Important: The dimensions of the circuit used to generate the keys must match those of the circuit used to generate the proof. - // In this case, the dimensions are represented by the height of the Merkle tree. - let (params, pk, vk) = generate_setup_artifacts(10, None, circuit).unwrap(); - let merkle_sum_tree = - MerkleSumTree::::new("src/merkle_sum_tree/csv/entry_16.csv") - .unwrap(); + // the user should perform the check on the public inputs + // public input #0 is the leaf hash + let expected_leaf_hash = user_entry.compute_leaf().hash; + assert_eq!(circuit.instances()[0][0], expected_leaf_hash); - let asset_sums = [Fp::from(556863u64), Fp::from(556863u64)]; + // public input #1 is the root hash + let expected_root_hash = merkle_sum_tree.root().hash; + assert_eq!(circuit.instances()[0][1], expected_root_hash); - // Only now we can instantiate the circuit with the actual inputs - let circuit = SolvencyCircuit::::init(&merkle_sum_tree, asset_sums); - - // Generate the proof - let proof = full_prover(¶ms, &pk, circuit.clone(), circuit.instances()); - - // verify the proof to be true - assert!(full_verifier(¶ms, &vk, proof, circuit.instances())); + // public inputs [2, 2+N_ASSETS - 1] are the root balances + let expected_root_balances = merkle_sum_tree.root().balances; + for i in 0..N_ASSETS { + assert_eq!(circuit.instances()[0][2 + i], expected_root_balances[i]); + } } // Passing an invalid root hash in the instance column should fail the permutation check between the computed root hash and the instance column root hash @@ -187,6 +173,7 @@ mod test { // Passing an invalid entry balance as input for the witness generation should fail: // - the permutation check between the leaf hash and the instance column leaf hash // - the permutation check between the computed root hash and the instance column root hash + // - the permutations checks between the computed root balances and the instance column root balances #[test] fn test_invalid_entry_balance_as_witness() { let merkle_sum_tree = @@ -232,6 +219,20 @@ mod test { offset: 36 } }, + VerifyFailure::Permutation { + column: (Any::advice(), 0).into(), + location: FailureLocation::InRegion { + region: (95, "assign value to perform range check").into(), + offset: 0 + } + }, + VerifyFailure::Permutation { + column: (Any::advice(), 0).into(), + location: FailureLocation::InRegion { + region: (96, "assign value to perform range check").into(), + offset: 0 + } + }, VerifyFailure::Permutation { column: (Any::Instance, 0).into(), location: FailureLocation::OutsideRegion { row: 0 } @@ -240,6 +241,14 @@ mod test { column: (Any::Instance, 0).into(), location: FailureLocation::OutsideRegion { row: 1 } }, + VerifyFailure::Permutation { + column: (Any::Instance, 0).into(), + location: FailureLocation::OutsideRegion { row: 2 } + }, + VerifyFailure::Permutation { + column: (Any::Instance, 0).into(), + location: FailureLocation::OutsideRegion { row: 3 } + }, ]) ); } @@ -454,7 +463,8 @@ mod test { ); } - // Adding a balance at the verge of overflowing should fail the range check for any following computed sum and, because we are adding a fake balance, the root hash check should fail too + // Adding a balance at the verge of overflowing should fail the range check for any following computed sum and, because we are adding a fake balance. + // Furthermore, the public input check on the root hash and on root_balances[0] should fail too #[test] fn test_balance_not_in_range() { let merkle_sum_tree = @@ -529,195 +539,23 @@ mod test { column: (Any::advice(), 0).into(), location: FailureLocation::InRegion { region: (95, "assign value to perform range check").into(), - offset: 14 - } - }, - VerifyFailure::Permutation { - column: (Any::Instance, 0).into(), - location: FailureLocation::OutsideRegion { row: 1 } - }, - ]) - ); - } - - // Passing asset_sums that are less than the liabilities sum should not fail the solvency circuit - #[test] - fn test_valid_liabilities_less_than_assets() { - let merkle_sum_tree = - MerkleSumTree::::new("src/merkle_sum_tree/csv/entry_16.csv") - .unwrap(); - - // Make the first asset sum more than liabilities sum (556862) - let asset_sums = [Fp::from(556863u64), Fp::from(556863u64)]; - - let circuit = SolvencyCircuit::::init(&merkle_sum_tree, asset_sums); - - let valid_prover = MockProver::run(K, &circuit, circuit.instances()).unwrap(); - - valid_prover.assert_satisfied(); - } - - #[test] - fn test_solvency_on_chain_verifier() { - let merkle_sum_tree = - MerkleSumTree::::new("src/merkle_sum_tree/csv/entry_16.csv") - .unwrap(); - - let asset_sums = [Fp::from(556863u64), Fp::from(556863u64)]; - - let circuit = SolvencyCircuit::::init(&merkle_sum_tree, asset_sums); - - // generate a universal trusted setup for testing, along with the verification key (vk) and the proving key (pk). - let (params, pk, _) = generate_setup_artifacts(10, None, circuit.clone()).unwrap(); - - get_verification_cost(¶ms, &pk, circuit.clone()); - - let num_instances = circuit.num_instance(); - let instances = circuit.instances(); - - let proof_calldata = gen_evm_proof_shplonk(¶ms, &pk, circuit, instances.clone()); - - let deployment_code = gen_evm_verifier_shplonk::>( - ¶ms, - pk.get_vk(), - num_instances, - None, - ); - - let gas_cost = evm_verify(deployment_code, instances, proof_calldata); - - assert!( - (350000..=450000).contains(&gas_cost), - "gas_cost is not within the expected range" - ); - } - - // Passing assets sum that is less than the liabilities sum should fail the solvency circuit - #[test] - fn test_invalid_assets_less_than_liabilities() { - let merkle_sum_tree = - MerkleSumTree::::new("src/merkle_sum_tree/csv/entry_16.csv") - .unwrap(); - - // Make the first asset sum less than liabilities sum (556862) - let less_than_asset_sums_1st = [Fp::from(556861u64), Fp::from(556863u64)]; - - let circuit = - SolvencyCircuit::::init(&merkle_sum_tree, less_than_asset_sums_1st); - - let invalid_prover = MockProver::run(K, &circuit, circuit.instances()).unwrap(); - - assert_eq!( - invalid_prover.verify(), - Err(vec![ - VerifyFailure::Permutation { - column: (Any::Fixed, 2).into(), - location: FailureLocation::OutsideRegion { row: 250 } - }, - VerifyFailure::Permutation { - column: (Any::advice(), 2).into(), - location: FailureLocation::InRegion { - region: (24, "assign value to perform range check").into(), - offset: 14 - } - }, - ]) - ); - - // Make the second asset sum less than liabilities sum (556862) - let less_than_asset_sums_2nd = [Fp::from(556863u64), Fp::from(556861u64)]; - - let circuit = - SolvencyCircuit::::init(&merkle_sum_tree, less_than_asset_sums_2nd); - - let invalid_prover = MockProver::run(K, &circuit, circuit.instances()).unwrap(); - - assert_eq!( - invalid_prover.verify(), - Err(vec![ - VerifyFailure::Permutation { - column: (Any::Fixed, 2).into(), - location: FailureLocation::OutsideRegion { row: 251 } - }, - VerifyFailure::Permutation { - column: (Any::advice(), 2).into(), - location: FailureLocation::InRegion { - region: (27, "assign value to perform range check").into(), - offset: 14 - } - }, - ]) - ); - - // Make both the balances less than liabilities sum (556862) - let less_than_asset_sums_both = [Fp::from(556861u64), Fp::from(556861u64)]; - - let circuit = - SolvencyCircuit::::init(&merkle_sum_tree, less_than_asset_sums_both); - - let invalid_prover = MockProver::run(K, &circuit, circuit.instances()).unwrap(); - - assert_eq!( - invalid_prover.verify(), - Err(vec![ - VerifyFailure::Permutation { - column: (Any::Fixed, 2).into(), - location: FailureLocation::OutsideRegion { row: 250 } - }, - VerifyFailure::Permutation { - column: (Any::Fixed, 2).into(), - location: FailureLocation::OutsideRegion { row: 251 } - }, - VerifyFailure::Permutation { - column: (Any::advice(), 2).into(), - location: FailureLocation::InRegion { - region: (24, "assign value to perform range check").into(), - offset: 14 + offset: 0 } }, VerifyFailure::Permutation { - column: (Any::advice(), 2).into(), + column: (Any::advice(), 0).into(), location: FailureLocation::InRegion { - region: (27, "assign value to perform range check").into(), + region: (95, "assign value to perform range check").into(), offset: 14 } }, - ]) - ); - } - - // Manipulating the liabilities to make it less than the assets sum should fail the solvency circuit because the root hash will not match - #[test] - fn test_invalid_manipulated_liabilties() { - let merkle_sum_tree = - MerkleSumTree::::new("src/merkle_sum_tree/csv/entry_16.csv") - .unwrap(); - - // For the second asset, the asset_sums is less than the liabilities sum (556862) namely the CEX is not solvent! - let less_than_asset_sums_2nd = [Fp::from(556863u64), Fp::from(556861u64)]; - - let mut circuit = - SolvencyCircuit::::init(&merkle_sum_tree, less_than_asset_sums_2nd); - - // But actually, the CEX tries to manipulate the liabilities sum for the second asset to make it less than the assets sum and result solvent - circuit.left_node_balances[1] = Fp::from(1u64); - - // This should pass the less the less than constraint but generate a root hash that does not match the one passed in the instance - let invalid_prover = MockProver::run(K, &circuit, circuit.instances()).unwrap(); - - assert_eq!( - invalid_prover.verify(), - Err(vec![ VerifyFailure::Permutation { - column: (Any::advice(), 0).into(), - location: FailureLocation::InRegion { - region: (21, "permute state").into(), - offset: 36 - } + column: (Any::Instance, 0).into(), + location: FailureLocation::OutsideRegion { row: 1 } }, VerifyFailure::Permutation { column: (Any::Instance, 0).into(), - location: FailureLocation::OutsideRegion { row: 0 } + location: FailureLocation::OutsideRegion { row: 2 } }, ]) ); @@ -753,27 +591,4 @@ mod test { .render(K, &circuit, &root) .unwrap(); } - - #[cfg(feature = "dev-graph")] - #[test] - fn print_solvency_circuit() { - use plotters::prelude::*; - - let asset_sums = [Fp::from(556863u64), Fp::from(556863u64)]; - - let merkle_sum_tree = - MerkleSumTree::::new("src/merkle_sum_tree/csv/entry_16.csv") - .unwrap(); - - let circuit = SolvencyCircuit::::init(&merkle_sum_tree, asset_sums); - - let root = - BitMapBackend::new("prints/solvency-layout.png", (2048, 32768)).into_drawing_area(); - root.fill(&WHITE).unwrap(); - let root = root.titled("Solvency Layout", ("sans-serif", 60)).unwrap(); - - halo2_proofs::dev::CircuitLayout::default() - .render(K, &circuit, &root) - .unwrap(); - } } diff --git a/zk_prover/src/circuits/types.rs b/zk_prover/src/circuits/types.rs index d6a1cee8..4a546666 100644 --- a/zk_prover/src/circuits/types.rs +++ b/zk_prover/src/circuits/types.rs @@ -6,3 +6,9 @@ pub struct ProofSolidityCallData { pub proof: String, pub public_inputs: Vec, } + +#[derive(Serialize, Deserialize)] +pub struct CommitmentSolidityCallData { + pub root_hash: U256, + pub root_balances: Vec, +} diff --git a/zk_prover/src/circuits/utils.rs b/zk_prover/src/circuits/utils.rs index 96bb2bcb..7971a2e4 100644 --- a/zk_prover/src/circuits/utils.rs +++ b/zk_prover/src/circuits/utils.rs @@ -433,9 +433,7 @@ pub fn gen_proof_solidity_calldata + CircuitExt>( let flattened_instances = instances.into_iter().flatten(); for val in flattened_instances { - let bytes = val.to_repr(); - let u = U256::from_little_endian(bytes.as_slice()); - public_inputs.push(u); + public_inputs.push(field_element_to_solidity_calldata(val)); } let solidity_proof_calldata = Bytes::from(proof_calldata); @@ -443,6 +441,13 @@ pub fn gen_proof_solidity_calldata + CircuitExt>( (solidity_proof_calldata, public_inputs) } +/// Converts a field element to a Solidity calldata +pub fn field_element_to_solidity_calldata(field_element: Fp) -> U256 { + let bytes = field_element.to_repr(); + let u = U256::from_little_endian(bytes.as_slice()); + u +} + /// Generates the solidity code for the verification contract starting from the yul code (yul_code_path) and writes it to sol_code_path pub fn write_verifier_sol_from_yul( yul_code_path: &str, diff --git a/zk_prover/src/merkle_sum_tree/mod.rs b/zk_prover/src/merkle_sum_tree/mod.rs index 644e2509..d185ef50 100644 --- a/zk_prover/src/merkle_sum_tree/mod.rs +++ b/zk_prover/src/merkle_sum_tree/mod.rs @@ -9,7 +9,7 @@ use halo2_proofs::halo2curves::bn256::Fr as Fp; #[derive(Clone, Debug)] pub struct MerkleProof { pub leaf: Node, - pub root_hash: Fp, + pub root: Node, pub sibling_hashes: Vec, pub sibling_sums: Vec<[Fp; N_ASSETS]>, pub path_indices: Vec, diff --git a/zk_prover/src/merkle_sum_tree/mst.rs b/zk_prover/src/merkle_sum_tree/mst.rs index 59619ac7..dd914542 100644 --- a/zk_prover/src/merkle_sum_tree/mst.rs +++ b/zk_prover/src/merkle_sum_tree/mst.rs @@ -47,16 +47,6 @@ impl Tree fn get_entry(&self, index: usize) -> &Entry { &self.entries[index] } - - /// Returns the nodes stored at the penultimate level of the tree, namely the one before the root - fn penultimate_level_data(&self) -> Result<(&Node, &Node), &'static str> { - let penultimate_level = self - .nodes - .get(self.depth - 1) - .ok_or("The tree does not have a penultimate level")?; - - Ok((&penultimate_level[0], &penultimate_level[1])) - } } impl MerkleSumTree { diff --git a/zk_prover/src/merkle_sum_tree/node.rs b/zk_prover/src/merkle_sum_tree/node.rs index e4eef23e..e4d43a84 100644 --- a/zk_prover/src/merkle_sum_tree/node.rs +++ b/zk_prover/src/merkle_sum_tree/node.rs @@ -33,6 +33,16 @@ impl Node { } } + pub fn init_empty() -> Node + where + [usize; N_ASSETS + 1]: Sized, + { + Node { + hash: Fp::zero(), + balances: [Fp::zero(); N_ASSETS], + } + } + /// Builds a leaf-level node of the MST pub fn leaf(username: &BigUint, balances: &[BigUint; N_ASSETS]) -> Node where diff --git a/zk_prover/src/merkle_sum_tree/tests.rs b/zk_prover/src/merkle_sum_tree/tests.rs index 9cab36e7..0b598c46 100644 --- a/zk_prover/src/merkle_sum_tree/tests.rs +++ b/zk_prover/src/merkle_sum_tree/tests.rs @@ -1,7 +1,7 @@ #[cfg(test)] mod test { - use crate::merkle_sum_tree::utils::{big_uint_to_fp, poseidon_node}; + use crate::merkle_sum_tree::utils::big_uint_to_fp; use crate::merkle_sum_tree::{Entry, MerkleSumTree, Tree}; use num_bigint::{BigUint, ToBigUint}; @@ -81,7 +81,7 @@ mod test { // shouldn't verify a proof with a wrong root hash let mut proof_invalid_2 = proof.clone(); - proof_invalid_2.root_hash = 0.into(); + proof_invalid_2.root.hash = 0.into(); assert!(!merkle_tree.verify_proof(&proof_invalid_2)); // shouldn't verify a proof with a wrong computed balance @@ -226,37 +226,4 @@ mod test { let fp_3 = fp_2 - fp; assert_eq!(fp_3, 18446744073709551613.into()); } - - #[test] - fn test_penultimate_level_data() { - let merkle_tree = - MerkleSumTree::::new("src/merkle_sum_tree/csv/entry_16.csv") - .unwrap(); - - let root = merkle_tree.root(); - - let (node_left, node_right) = merkle_tree - .penultimate_level_data() - .expect("Failed to retrieve penultimate level data"); - - // perform hashing using poseidon node - let expected_root = poseidon_node( - node_left.hash, - node_left.balances, - node_right.hash, - node_right.balances, - ); - - assert_eq!(root.hash, expected_root); - - assert_eq!( - root.balances[0], - node_left.balances[0] + node_right.balances[0] - ); - - assert_eq!( - root.balances[1], - node_left.balances[1] + node_right.balances[1] - ); - } } diff --git a/zk_prover/src/merkle_sum_tree/tree.rs b/zk_prover/src/merkle_sum_tree/tree.rs index e03d5b5a..248c5960 100644 --- a/zk_prover/src/merkle_sum_tree/tree.rs +++ b/zk_prover/src/merkle_sum_tree/tree.rs @@ -18,9 +18,6 @@ pub trait Tree { fn get_entry(&self, index: usize) -> &Entry; - /// Returns the nodes stored at the penultimate level of the tree, namely the one before the root - fn penultimate_level_data(&self) -> Result<(&Node, &Node), &'static str>; - /// Generates a MerkleProof for the user with the given index. fn generate_proof(&self, index: usize) -> Result, &'static str> { let nodes = self.nodes(); @@ -56,7 +53,7 @@ pub trait Tree { Ok(MerkleProof { leaf: leaf.clone(), - root_hash: root.hash, + root: root.clone(), sibling_hashes, sibling_sums, path_indices, @@ -71,8 +68,6 @@ pub trait Tree { { let mut node = proof.leaf.clone(); - let mut balances = proof.leaf.balances; - for i in 0..proof.sibling_hashes.len() { let sibling_node = Node { hash: proof.sibling_hashes[i], @@ -84,14 +79,9 @@ pub trait Tree { } else { node = Node::middle(&sibling_node, &node); } - - for (balance, sibling_balance) in balances.iter_mut().zip(sibling_node.balances.iter()) - { - *balance += sibling_balance; - } } - proof.root_hash == node.hash && balances == node.balances + proof.root.hash == node.hash && proof.root.balances == node.balances } /// Returns the index of the user with the given username and balances in the tree