From 0ce4a0d0c5db39d53c724e19439c9d6b5da9a985 Mon Sep 17 00:00:00 2001 From: "enrico.eth" <85900164+enricobottazzi@users.noreply.github.com> Date: Fri, 1 Dec 2023 10:14:59 +0100 Subject: [PATCH] Circuit improvements (#198) * chore: apply clippy fixes * fix: audit comment 1 - Lookup table lives outside of `RangeCheckChip` * fix: audit comment 2 - `swap_constraint` * feat: optimize number of balances to be range checked * chore: update `InclusionVerifier` contract * chore: comment * Record circuit config parameters in the contract * Fix contract deployment parameters * Fix typo * chore: rename to `assetsCount` * chore: update backend * chore: fix comments * chore: minor changes --------- Co-authored-by: Alex Kuzmin --- .../src/contracts/abi/InclusionVerifier.json | 2 +- backend/src/contracts/abi/Summa.json | 2 +- .../contracts/generated/inclusion_verifier.rs | 12820 ++++++++-------- .../src/contracts/generated/summa_contract.rs | 2997 ++-- backend/src/tests.rs | 22 +- contracts/README.md | 6 + contracts/scripts/deploy.ts | 9 + contracts/src/InclusionVerifier.sol | 4 +- contracts/src/InclusionVerifier.yul | 1614 +- contracts/src/Summa.sol | 22 +- contracts/test/Summa.ts | 3 + .../inclusion_proof_solidity_calldata.json | 2 +- zk_prover/prints/mst-inclusion-layout.png | Bin 1914487 -> 1842560 bytes zk_prover/src/chips/merkle_sum_tree.rs | 24 +- zk_prover/src/chips/range/range_check.rs | 37 +- zk_prover/src/chips/range/tests.rs | 22 +- zk_prover/src/circuits/merkle_sum_tree.rs | 71 +- zk_prover/src/circuits/tests.rs | 80 +- zk_prover/src/circuits/traits.rs | 22 +- zk_prover/src/circuits/utils.rs | 4 +- .../src/merkle_sum_tree/utils/csv_parser.rs | 4 +- 21 files changed, 9224 insertions(+), 8543 deletions(-) diff --git a/backend/src/contracts/abi/InclusionVerifier.json b/backend/src/contracts/abi/InclusionVerifier.json index edc6d1a4..3ac0da95 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":"0x608060405234801561001057600080fd5b506155ea80620000216000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154ac565b610057565b604051901515815260200160405180910390f35b600060016100636153d5565b6000805160206155958339815191526100d9565b600080516020615575833981519152808310818310169083800960008051602061557583398151915283840960008051602061557583398151915284820990506000805160206155758339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f17afb5973c405d2d6ef7a1bbbdc35209ce9098f7618703ae04a9338beaebdc97600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155958339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610680830151600209611fa083015280610600830151820361062084015108611fc08301819052611fa0830151829109611fe083015280610600830151820361064084015108612000830152806120008301518203611fe08401510861202083015280610660830151820361062084015108612040830152806120408301518203612020840151086120608301819052611ee083015182910961208083015280612080830151611f80840151086120a0830152806120a0830151610420840151096120c083015280611a00830151611da0840151096120e0830152806120e0830151611a60840151096121008301528061062083015161060084015108612120830152806106808301518203612120840151086121408301819052612100830151829109612160830152806121608301516120c08401510861218083015280612180830151610420840151096121a083018190526121608301518291086121c0830152806121c0830151610420840151096121e08301528061092083015182036001086122008301819052611300830151829109612220830152806122208301516121e084015108612240830152806122408301516104208401510961226083015261098082015181908009612280830152806109808301518203612280840151086122a083018190526112408301518291096122c0830152806122c0830151612260840151086122e0830152806122e083015161042084015109612300830152806109608301518203610980840151086123208301819052611300830151829109612340830152806123408301516123008401510861236083015280612360830151610420840151096123808301528061124083015182036001086123a083015280611280830151611260840151086123c083018190526112a08301518291086123e083018190526112c083015182910861240083018190526112e08301518291086124208301528061242083015182036123a0840151086124408301528061026083015161086084015109612460830152806124608301516106e08401510861248083018190526102c08301518291086124a083015280610260830151610880840151096124c0830152806124c0830151610600840151086124e083018190526102c083015182910861250083018190526124a0830151829109612520830152806102608301516108a084015109612540830152806125408301516106208401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108c0840151096125c0830152806125c0830151610700840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830181905261094083015182910961264083015280610260830151600109612660830152806126608301516105c084015109612680830152806126808301516106e0840151086126a083018190526102c08301518291086126c0830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096126e0830152806126e08301516105c084015109612700830152806127008301516106008401510861272083018190526102c083015182910861274083018190526126c0830151829109612760830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612780830152806127808301516105c0840151096127a0830152806127a0830151610620840151086127c083018190526102c08301518291086127e08301819052612760830151829109612800830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e5209612820830152806128208301516105c084015109612840830152806128408301516107008401510861286083018190526102c083015182910861288083018190526128008301518291096128a083018190526109208301518291096128c0830152806128c08301518203612640840151086128e0830181905261244083015182910961290083015280612900830151612380840151086129208301528061292083015161042084015109612940830152806102608301516108e084015109612960830152806129608301516106808401510861298083018190526102c08301518291086129a083015280610260830151610900840151096129c0830152806129c0830151611380840151086129e083018190526102c0830151829108612a0083018190526129a0830151829109612a2083018190526109a0830151829109612a40830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612a6083015280612a608301516105c084015109612a8083015280612a8083015161068084015108612aa083018190526102c0830151829108612ac0830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612ae083015280612ae08301516105c084015109612b0083015280612b0083015161138084015108612b2083018190526102c0830151829108612b408301819052612ac0830151829109612b608301819052610980830151829109612b8083015280612b808301518203612a4084015108612ba08301819052612440830151829109612bc083015280612bc083015161294084015108612be083015280612be083015161042084015109612c00830152806109c08301518203600108612c208301819052611300830151829109612c4083015280612c40830151612c0084015108612c6083015280612c6083015161042084015109612c808301526109c082015181908009612ca0830152806109c08301518203612ca084015108612cc08301819052611240830151829109612ce083015280612ce0830151612c8084015108612d0083015280612d0083015161042084015109612d2083015280610260830151610a0084015108612d4083018190526109e0830151829109612d60830152806102c0830151610a4084015108612d808301819052612d60830151829109612da08301528061064083015161010009612dc083015280612dc0830151820361060084015108612de08301819052610780830151829109612e008301819052610260830151829108612e2083018190526109c0830151829109612e40830152806102c083015161076084015108612e608301819052612e40830151829109612e8083015280612e808301518203612da084015108612ea08301819052612440830151829109612ec083015280612ec0830151612d2084015108612ee083015280612ee083015161042084015109612f0083015280610a408301518203610a0084015108612f208301819052611300830151829109612f4083015280612f40830151612f0084015108612f6083015280612f6083015161042084015109612f8083015280612440830151612f2084015109612fa083015280610a208301518203610a0084015108612fc08301819052612fa0830151829109612fe083015280612fe0830151612f8084015108613000830152610d40820151819080096130208301819052610d408301518291096130408301819052610d408301518291096130608301819052610d4083015182910961308083015280610d408301516001096130a0830152806130208301516001096130c0830152806130408301516001096130e08301528061306083015160010961310083015280610d6083015161300084015109613120830152806105c0830151610c00840151096131408301528060016105c084015109613160830152806131608301518203610b8084015108613180830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c0840151096131a0830152806131a08301518203610b80840151086131c0830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c084015109613220830152806132208301518203610b808401510861324083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132608401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806132808401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c087015109086132a08401525061318082015181906001096132c083018190526131c08301518291096132e08301819052613240830151829109613300830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133208401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133408401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133608401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613380840152506132008201516132e0830151829190096133a083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806133c08401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806133e08401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134008401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c08701510908613420840152506132408201516132c08301518291900961344083015261326082015181816132808501510990508061346084015281816132a0850151099050806134808401528181613320850151099050806134a084015281816132c0850151099050806134c08401528181613340850151099050806134e084015281816133608501510990508061350084015281816133808501510990508061352084015281816133a08501510990508061354084015281816133c08501510990508061356084015281816133e08501510990508061358084015281816132e0850151099050806135a08401528181613400850151099050806135c08401528181613420850151099050806135e0840152818161344085015109905080613600840152506020613640830152602061366083015260206136808301526136008201516136a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6136c08301526000805160206155958339815191526136e08301528260016020613620850160c0613640870160055afa141692506136208201516000613440840151905082826135e086015109613440850152828282099150613420840151905082826135c086015109613420850152828282099150613400840151905082826135a0860151096134008501528282820991506132e084015190508282613580860151096132e08501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c08501528282820991506133a084015190508282613520860151096133a08501528282820991506133808401519050828261350086015109613380850152828282099150613360840151905082826134e086015109613360850152828282099150613340840151905082826134c0860151096133408501528282820991506132c0840151905082826134a0860151096132c085015282828209915061332084015190508282613480860151096133208501528282820991506132a084015190508282613460860151096132a08501528282820991506132808401519050828261326086015109613280850152828282096132608501819052613280850151909250839150829008905081816132a085015108613700840152506132c0820151613300830151829190096137208301526133208201518061374084015250806133a0830151613300840151096137608301526133408201518181613360850151089050818161338085015108613780840152506132e0820151613300830151829190096137a08301526133c082015181816133e0850151086137c084015250613440820151613300830151829190096137e083015261340082015181816134208501510861380084015250613700820151613740830151829082900990508061382084015281816137808501510990508061384084015281816137c0850151099050806138608401528181613800850151099050806138808401525060206138c083015260206138e083015260206139008301526138808201516139208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff61394083015260008051602061559583398151915261396083015282600160206138a0850160c06138c0870160055afa141692506138a0820151600061380084015190508282613860860151096138008501528282820991506137c084015190508282613840860151096137c0850152828282099150613780840151905082826138208601510961378085015282828209915061374084015190508282613700860151096137408501528282820961370085015250506137408201516137208301518291900961398083015280613780830151613760840151096139a0830152806137c08301516137a0840151096139c0830152806138008301516137e0840151096139e0830152610a8082015181908009613a008301819052610a80830151829109613a208301819052610a80830151829109613a408301819052610a80830151829109613a608301819052610a80830151829109613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c60830152610ae082015181908009613c808301819052610ae0830151829109613ca08301819052610ae0830151829109613cc08301819052610ae0830151829109613ce08301528061326083015161060084015109818183613280860151610640870151090890508181836132a08601516106c08701510908613d0084018190526137008401518392509009613d20830152806001613d20840151830309613d408301528061326083015161062084015109818183613280860151610660870151090890508181836132a08601516106a08701510908613d6084018190526137008401518392509009613d808301819052610a808301518291820309613da083015280610a80830151600109613dc083015280613da0830151613d4084015108613de0830152806001613de084015109613e00830152806001613dc084015109613e2083015280613720830151600109613e408301528061332083015161068084015109613e608301819052613980830151829109613e80830152806001613e80840151830309613ea0830152806001613e4084015109613ec083015280613320830151610a4084015109613ee08301819052613980830151829109613f008301819052610a808301518291820309613f2083015280610a80830151613e4084015109613f4083015280613f20830151613ea084015108613f60830152806133208301516106e084015109613f808301819052613980830151829109613fa08301819052613a008301518291820309613fc083015280613a00830151613e4084015109613fe083015280613fc0830151613f6084015108614000830152806133208301516107008401510961402083018190526139808301518291096140408301819052613a20830151829182030961406083015280613a20830151613e408401510961408083015280614060830151614000840151086140a083015280613320830151610720840151096140c083018190526139808301518291096140e08301819052613a40830151829182030961410083015280613a40830151613e4084015109614120830152806141008301516140a084015108614140830152806133208301516107408401510961416083018190526139808301518291096141808301819052613a6083015182918203096141a083015280613a60830151613e40840151096141c0830152806141a0830151614140840151086141e0830152806133208301516107608401510961420083018190526139808301518291096142208301819052613a80830151829182030961424083015280613a80830151613e4084015109614260830152806142408301516141e08401510861428083015280613320830151610780840151096142a083018190526139808301518291096142c08301819052613aa083015182918203096142e083015280613aa0830151613e4084015109614300830152806142e083015161428084015108614320830152806133208301516107a08401510961434083018190526139808301518291096143608301819052613ac0830151829182030961438083015280613ac0830151613e40840151096143a083015280614380830151614320840151086143c0830152806133208301516107c0840151096143e083018190526139808301518291096144008301819052613ae0830151829182030961442083015280613ae0830151613e4084015109614440830152806144208301516143c084015108614460830152806133208301516107e08401510961448083018190526139808301518291096144a08301819052613b0083015182918203096144c083015280613b00830151613e40840151096144e0830152806144c083015161446084015108614500830152806133208301516108008401510961452083018190526139808301518291096145408301819052613b20830151829182030961456083015280613b20830151613e408401510961458083015280614560830151614500840151086145a083015280613320830151610820840151096145c083018190526139808301518291096145e08301819052613b40830151829182030961460083015280613b40830151613e4084015109614620830152806146008301516145a084015108614640830152806133208301516108608401510961466083018190526139808301518291096146808301819052613b6083015182918203096146a083015280613b60830151613e40840151096146c0830152806146a0830151614640840151086146e0830152806133208301516108808401510961470083018190526139808301518291096147208301819052613b80830151829182030961474083015280613b80830151613e4084015109614760830152806147408301516146e084015108614780830152806133208301516108a0840151096147a083018190526139808301518291096147c08301819052613ba083015182918203096147e083015280613ba0830151613e4084015109614800830152806147e083015161478084015108614820830152806133208301516108c08401510961484083018190526139808301518291096148608301819052613bc0830151829182030961488083015280613bc0830151613e40840151096148a083015280614880830151614820840151086148c0830152806133208301516108e0840151096148e083018190526139808301518291096149008301819052613be0830151829182030961492083015280613be0830151613e4084015109614940830152806149208301516148c084015108614960830152806133208301516109008401510961498083018190526139808301518291096149a08301819052613c0083015182918203096149c083015280613c00830151613e40840151096149e0830152806149c083015161496084015108614a00830152806137208301516130a084015109614a20830152806137208301516130c084015109614a40830152806137208301516130e084015109614a608301528061372083015161310084015109614a808301528061332083015161312084015109614aa08301819052613980830151829109614ac08301819052613c208301518291820309614ae083015280613c20830151613e4084015109614b0083015280613c20830151614a2084015109614b2083015280613c20830151614a4084015109614b4083015280613c20830151614a6084015109614b6083015280613c20830151614a8084015109614b8083015280614ae0830151614a0084015108614ba08301528061332083015161084084015109614bc08301819052613980830151829109614be08301819052613c408301518291820309614c0083015280613c40830151613e4084015109614c2083015280614c00830151614ba084015108614c408301819052610ae0830151829109614c6083015280610ae0830151613ec084015109614c8083015280610ae0830151613f4084015109614ca083015280610ae0830151613fe084015109614cc083015280610ae083015161408084015109614ce083015280610ae083015161412084015109614d0083015280610ae08301516141c084015109614d2083015280610ae083015161426084015109614d4083015280610ae083015161430084015109614d6083015280610ae08301516143a084015109614d8083015280610ae083015161444084015109614da083015280610ae08301516144e084015109614dc083015280610ae083015161458084015109614de083015280610ae083015161462084015109614e0083015280610ae08301516146c084015109614e2083015280610ae083015161476084015109614e4083015280610ae083015161480084015109614e6083015280610ae08301516148a084015109614e8083015280610ae083015161494084015109614ea083015280610ae08301516149e084015109614ec083015280610ae0830151614b0084015109614ee083015280610ae0830151614b2084015109614f0083015280610ae0830151614b4084015109614f2083015280610ae0830151614b6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614c2084015109614f8083015280614c60830151613e0084015108614fa083015280613760830151600109614fc08301528061334083015161092084015109818183613360860151610940870151090890508181836133808601516109608701510908614fe084018190526139a08401518392509009615000830152806001615000840151830309615020830152806001614fc08401510961504083015280613c808301516150208401510961506083015280613c808301516150408401510961508083015280615060830151614fa0840151086150a0830152806137a08301516001096150c0830152806133c0830151610980840151098181836133e08601516109a087015109086150e084018190526139c084015183925090096151008301528060016151008401518303096151208301528060016150c084015109615140830152806133c08301516109c0840151098181836133e08601516109e0870151090861516084018190526139c084015183925090096151808301819052610a8083015182918203096151a083015280610a808301516150c0840151096151c0830152806151a0830151615120840151086151e08301819052613ca083015182910961520083015280613ca08301516151408401510961522083015280613ca08301516151c084015109615240830152806152008301516150a084015108615260830152806137e083015160010961528083015280613400830151610a0084015109818183613420860151610a2087015109086152a084018190526139e084015183925090096152c08301528060016152c08401518303096152e08301528060016152808401510961530083015280613cc08301516152e08401510961532083015280613cc08301516153008401510961534083015280615320830151615260840151086153608301528061330083015160010961538083015280610b808301516001096153a083015260016153c0830181815260026153e085015261536084015161540085015284919060409060608160075afa141692506153c08201516154208301526153e082015161544083015260a082015161546083015260c0820151615480830152826001604061542085016080615420870160065afa1416925060e08201516154a08301526101008201516154c0830152613e208201516154e083015282600160406154a0850160606154a0870160075afa141692506154208201516155008301526154408201516155208301526154a08201516155408301526154c0820151615560830152826001604061550085016080615500870160065afa141692506101208201516155808301526101408201516155a0830152614c808201516155c0830152826001604061558085016060615580870160075afa141692506155008201516155e08301526155208201516156008301526155808201516156208301526155a082015161564083015282600160406155e0850160806155e0870160065afa14169250610200820151615660830152610220820151615680830152614ca08201516156a0830152826001604061566085016060615660870160075afa141692506155e08201516156c08301526156008201516156e083015261566082015161570083015261568082015161572083015282600160406156c0850160806156c0870160065afa141692507f046611b44bb4f4cd8fcf6f82fed641d34961b88a6012df5e0f44d4f40248d57b6157408301527f25b84353a92c37bb156457e31b9133dc81245e1f3774b898f41cf59a7b0adf57615760830152614cc0820151615780830152826001604061574085016060615740870160075afa141692506156c08201516157a08301526156e08201516157c08301526157408201516157e083015261576082015161580083015282600160406157a0850160806157a0870160065afa141692507f259da9f643187930ce1299a3f700a93f17cf3129bffe184a6de1cf19f0b91f7e6158208301527f29fcbc05cd2c0152b3eb21e8fd01a00bc79780f21281598873fb955dba235f7e615840830152614ce0820151615860830152826001604061582085016060615820870160075afa141692506157a08201516158808301526157c08201516158a08301526158208201516158c08301526158408201516158e0830152826001604061588085016080615880870160065afa141692507f2b99cb49ca685626a08c009ea442fc895a2f86cca1f29f18d4b7ec9ece937aa26159008301527f20a45cae33f3917205b76aeb87e409350840664058839b1db76f8761db50fac8615920830152614d00820151615940830152826001604061590085016060615900870160075afa141692506158808201516159608301526158a08201516159808301526159008201516159a08301526159208201516159c0830152826001604061596085016080615960870160065afa141692507f25a265a57942223657b3316c913bffe8db0efedbed9ac878308e1d63d4df61d86159e08301527f0d2f79604094b53fd56a955d2574e241ad67498ab320f2bb764841f5c903bff9615a00830152614d20820151615a2083015282600160406159e0850160606159e0870160075afa14169250615960820151615a40830152615980820151615a608301526159e0820151615a80830152615a00820151615aa08301528260016040615a4085016080615a40870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615ac08301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615ae0830152614d40820151615b008301528260016040615ac085016060615ac0870160075afa14169250615a40820151615b20830152615a60820151615b40830152615ac0820151615b60830152615ae0820151615b808301528260016040615b2085016080615b20870160065afa141692507f0160a474a2c8de56950bbe25d6f09002a91f2cc20fbdb15e8413f1176e7f1865615ba08301527f1d0f5797eaaea89e5119e4260db563605a84d004b8efd02c51b960bfecf20e90615bc0830152614d60820151615be08301528260016040615ba085016060615ba0870160075afa14169250615b20820151615c00830152615b40820151615c20830152615ba0820151615c40830152615bc0820151615c608301528260016040615c0085016080615c00870160065afa141692507f02b619a2a245b370b3319e21e0be467256209338cf9546447b875a2779e010d4615c808301527f07d7f03df06345ba2df20bb867841f60ebd25daab5aafa13ddc1413116996802615ca0830152614d80820151615cc08301528260016040615c8085016060615c80870160075afa14169250615c00820151615ce0830152615c20820151615d00830152615c80820151615d20830152615ca0820151615d408301528260016040615ce085016080615ce0870160065afa141692507f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b615d608301527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097615d80830152614da0820151615da08301528260016040615d6085016060615d60870160075afa14169250615ce0820151615dc0830152615d00820151615de0830152615d60820151615e00830152615d80820151615e208301528260016040615dc085016080615dc0870160065afa141692507f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91615e408301527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd615e60830152614dc0820151615e808301528260016040615e4085016060615e40870160075afa14169250615dc0820151615ea0830152615de0820151615ec0830152615e40820151615ee0830152615e60820151615f008301528260016040615ea085016080615ea0870160065afa141692507f13caf6fa687a546fd1eeb9e0d43a9f8fe9a3f05322f5edda1b95d50e83839851615f208301527f22e2768775e2d96fd8925c48a99df2b248cb3d893a15b9dca81660b79cc35f4a615f40830152614de0820151615f608301528260016040615f2085016060615f20870160075afa14169250615ea0820151615f80830152615ec0820151615fa0830152615f20820151615fc0830152615f40820151615fe08301528260016040615f8085016080615f80870160065afa141692507f19a074dc6d1a0f1e5589a55d9c4955cf867e2899dbfd46a11c27a84804b5b2396160008301527f26b112fb59a0b875833e52f951b3b010826b169f320d80597f1275544ae24897616020830152614e00820151616040830152826001604061600085016060616000870160075afa14169250615f80820151616060830152615fa08201516160808301526160008201516160a08301526160208201516160c0830152826001604061606085016080616060870160065afa141692507f1c6df6612866079dc2a52525842c8025502eb5a8913c560836c4bc7ab2dc334e6160e08301527f0d36fe2bf6d58291ed035a1f090904639502213a2449227d156ee3f8f6372e2c616100830152614e2082015161612083015282600160406160e0850160606160e0870160075afa141692506160608201516161408301526160808201516161608301526160e08201516161808301526161008201516161a0830152826001604061614085016080616140870160065afa141692507f01add1e14d0a1880ee8e837b20502713d06428d55d61fea8fea89a71648971fa6161c08301527f12c982466ea6dcfada3ad0e277fed44f770466650d4704906a4d34b6b8d8bed16161e0830152614e4082015161620083015282600160406161c0850160606161c0870160075afa141692506161408201516162208301526161608201516162408301526161c08201516162608301526161e0820151616280830152826001604061622085016080616220870160065afa141692507f2faee9fe4eb97b37abb4fdd1b604ed8acf55df0a370bcfe7f5615b7598989d7a6162a08301527f2269aff86c3fd35864f3e2cb39db623e0122a05b6b5f789ff57434e557a90c236162c0830152614e608201516162e083015282600160406162a0850160606162a0870160075afa141692506162208201516163008301526162408201516163208301526162a08201516163408301526162c0820151616360830152826001604061630085016080616300870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746163808301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e36163a0830152614e808201516163c0830152826001604061638085016060616380870160075afa141692506163008201516163e08301526163208201516164008301526163808201516164208301526163a082015161644083015282600160406163e0850160806163e0870160065afa141692507f01b6921cc4c35a03d696e754bac06edba8187499252d98da7e7d40b844f242456164608301527f181dfa294889601a9cc57448d966b9cc60e7795ab336d2078dc43aeb888484fb616480830152614ea08201516164a0830152826001604061646085016060616460870160075afa141692506163e08201516164c08301526164008201516164e083015261646082015161650083015261648082015161652083015282600160406164c0850160806164c0870160065afa141692507f0f0dcdaa6fd2f36460376557f9d6b4b0985b085d2d8ffca7c6c408d8560d5d086165408301527f0bc4e7f7a927678093e4be2bfb543ab7d6267ee943e8ed13369a3b3c9ef23779616560830152614ec0820151616580830152826001604061654085016060616540870160075afa141692506164c08201516165a08301526164e08201516165c08301526165408201516165e083015261656082015161660083015282600160406165a0850160806165a0870160065afa14169250610460820151616620830152610480820151616640830152614ee0820151616660830152826001604061662085016060616620870160075afa141692506165a08201516166808301526165c08201516166a08301526166208201516166c08301526166408201516166e0830152826001604061668085016080616680870160065afa141692506104a08201516167008301526104c0820151616720830152614f00820151616740830152826001604061670085016060616700870160075afa141692506166808201516167608301526166a08201516167808301526167008201516167a08301526167208201516167c0830152826001604061676085016080616760870160065afa141692506104e08201516167e0830152610500820151616800830152614f2082015161682083015282600160406167e0850160606167e0870160075afa141692506167608201516168408301526167808201516168608301526167e08201516168808301526168008201516168a0830152826001604061684085016080616840870160065afa141692506105208201516168c08301526105408201516168e0830152614f4082015161690083015282600160406168c0850160606168c0870160075afa141692506168408201516169208301526168608201516169408301526168c08201516169608301526168e0820151616980830152826001604061692085016080616920870160065afa141692506105608201516169a08301526105808201516169c0830152614f608201516169e083015282600160406169a0850160606169a0870160075afa14169250616920820151616a00830152616940820151616a208301526169a0820151616a408301526169c0820151616a608301528260016040616a0085016080616a00870160065afa141692506103c0820151616a808301526103e0820151616aa0830152614f80820151616ac08301528260016040616a8085016060616a80870160075afa14169250616a00820151616ae0830152616a20820151616b00830152616a80820151616b20830152616aa0820151616b408301528260016040616ae085016080616ae0870160065afa14169250610300820151616b60830152610320820151616b80830152615080820151616ba08301528260016040616b6085016060616b60870160075afa14169250616ae0820151616bc0830152616b00820151616be0830152616b60820151616c00830152616b80820151616c208301528260016040616bc085016080616bc0870160065afa14169250610340820151616c40830152610360820151616c60830152615220820151616c808301528260016040616c4085016060616c40870160075afa14169250616bc0820151616ca0830152616be0820151616cc0830152616c40820151616ce0830152616c60820151616d008301528260016040616ca085016080616ca0870160065afa14169250610380820151616d208301526103a0820151616d40830152615240820151616d608301528260016040616d2085016060616d20870160075afa14169250616ca0820151616d80830152616cc0820151616da0830152616d20820151616dc0830152616d40820151616de08301528260016040616d8085016080616d80870160065afa141692506101c0820151616e008301526101e0820151616e20830152615340820151616e408301528260016040616e0085016060616e00870160075afa14169250616d80820151616e60830152616da0820151616e80830152616e00820151616ea0830152616e20820151616ec08301528260016040616e6085016080616e60870160065afa14169250610b20820151616ee0830152610b40820151616f008301526153808201518103616f20830152508160016040616ee084016060616ee0860160075afa14169150616e60810151616f40820152616e80810151616f60820152616ee0810151616f80820152616f00810151616fa08201528160016040616f4084016080616f40860160065afa14169150610bc0810151616fc0820152610be0810151616fe08201526153a08101516170008201528160016040616fc084016060616fc0860160075afa14169150616f40810151617020820152616f60810151617040820152616fc0810151617060820152616fe0810151617080820152816001604061702084016080617020860160065afa141691506170208101516170a08201526170408101516170c08201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26170e08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171008201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171208201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa617140820152610bc0810151617160820152610be08101516171808201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6171a08201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6171c08201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456171e08201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61720082015281600160206170a084016101806170a0860160085afa6170a093909301516001149214161691505092915050565b604051806172000160405280610390906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715615434576154346153f5565b604052919050565b600082601f83011261544d57600080fd5b813567ffffffffffffffff811115615467576154676153f5565b61547a601f8201601f191660200161540b565b81815284602083860101111561548f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156154bf57600080fd5b823567ffffffffffffffff808211156154d757600080fd5b818501915085601f8301126154eb57600080fd5b81356020828211156154ff576154ff6153f5565b8160051b61550e82820161540b565b928352848101820192828101908a85111561552857600080fd5b958301955b848710156155465786358252958301959083019061552d565b975050508601359250508082111561555d57600080fd5b5061556a8582860161543c565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220f964c2eff2c690734da252f9c4c5e8346ee57d4f780840e636f83cf215278f6764736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154ac565b610057565b604051901515815260200160405180910390f35b600060016100636153d5565b6000805160206155958339815191526100d9565b600080516020615575833981519152808310818310169083800960008051602061557583398151915283840960008051602061557583398151915284820990506000805160206155758339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f17afb5973c405d2d6ef7a1bbbdc35209ce9098f7618703ae04a9338beaebdc97600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155958339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610680830151600209611fa083015280610600830151820361062084015108611fc08301819052611fa0830151829109611fe083015280610600830151820361064084015108612000830152806120008301518203611fe08401510861202083015280610660830151820361062084015108612040830152806120408301518203612020840151086120608301819052611ee083015182910961208083015280612080830151611f80840151086120a0830152806120a0830151610420840151096120c083015280611a00830151611da0840151096120e0830152806120e0830151611a60840151096121008301528061062083015161060084015108612120830152806106808301518203612120840151086121408301819052612100830151829109612160830152806121608301516120c08401510861218083015280612180830151610420840151096121a083018190526121608301518291086121c0830152806121c0830151610420840151096121e08301528061092083015182036001086122008301819052611300830151829109612220830152806122208301516121e084015108612240830152806122408301516104208401510961226083015261098082015181908009612280830152806109808301518203612280840151086122a083018190526112408301518291096122c0830152806122c0830151612260840151086122e0830152806122e083015161042084015109612300830152806109608301518203610980840151086123208301819052611300830151829109612340830152806123408301516123008401510861236083015280612360830151610420840151096123808301528061124083015182036001086123a083015280611280830151611260840151086123c083018190526112a08301518291086123e083018190526112c083015182910861240083018190526112e08301518291086124208301528061242083015182036123a0840151086124408301528061026083015161086084015109612460830152806124608301516106e08401510861248083018190526102c08301518291086124a083015280610260830151610880840151096124c0830152806124c0830151610600840151086124e083018190526102c083015182910861250083018190526124a0830151829109612520830152806102608301516108a084015109612540830152806125408301516106208401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108c0840151096125c0830152806125c0830151610700840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830181905261094083015182910961264083015280610260830151600109612660830152806126608301516105c084015109612680830152806126808301516106e0840151086126a083018190526102c08301518291086126c0830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a2096126e0830152806126e08301516105c084015109612700830152806127008301516106008401510861272083018190526102c083015182910861274083018190526126c0830151829109612760830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612780830152806127808301516105c0840151096127a0830152806127a0830151610620840151086127c083018190526102c08301518291086127e08301819052612760830151829109612800830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e5209612820830152806128208301516105c084015109612840830152806128408301516107008401510861286083018190526102c083015182910861288083018190526128008301518291096128a083018190526109208301518291096128c0830152806128c08301518203612640840151086128e0830181905261244083015182910961290083015280612900830151612380840151086129208301528061292083015161042084015109612940830152806102608301516108e084015109612960830152806129608301516106808401510861298083018190526102c08301518291086129a083015280610260830151610900840151096129c0830152806129c0830151611380840151086129e083018190526102c0830151829108612a0083018190526129a0830151829109612a2083018190526109a0830151829109612a40830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612a6083015280612a608301516105c084015109612a8083015280612a8083015161068084015108612aa083018190526102c0830151829108612ac0830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612ae083015280612ae08301516105c084015109612b0083015280612b0083015161138084015108612b2083018190526102c0830151829108612b408301819052612ac0830151829109612b608301819052610980830151829109612b8083015280612b808301518203612a4084015108612ba08301819052612440830151829109612bc083015280612bc083015161294084015108612be083015280612be083015161042084015109612c00830152806109c08301518203600108612c208301819052611300830151829109612c4083015280612c40830151612c0084015108612c6083015280612c6083015161042084015109612c808301526109c082015181908009612ca0830152806109c08301518203612ca084015108612cc08301819052611240830151829109612ce083015280612ce0830151612c8084015108612d0083015280612d0083015161042084015109612d2083015280610260830151610a0084015108612d4083018190526109e0830151829109612d60830152806102c0830151610a4084015108612d808301819052612d60830151829109612da08301528061064083015161010009612dc083015280612dc0830151820361060084015108612de08301819052610780830151829109612e008301819052610260830151829108612e2083018190526109c0830151829109612e40830152806102c083015161076084015108612e608301819052612e40830151829109612e8083015280612e808301518203612da084015108612ea08301819052612440830151829109612ec083015280612ec0830151612d2084015108612ee083015280612ee083015161042084015109612f0083015280610a408301518203610a0084015108612f208301819052611300830151829109612f4083015280612f40830151612f0084015108612f6083015280612f6083015161042084015109612f8083015280612440830151612f2084015109612fa083015280610a208301518203610a0084015108612fc08301819052612fa0830151829109612fe083015280612fe0830151612f8084015108613000830152610d40820151819080096130208301819052610d408301518291096130408301819052610d408301518291096130608301819052610d4083015182910961308083015280610d408301516001096130a0830152806130208301516001096130c0830152806130408301516001096130e08301528061306083015160010961310083015280610d6083015161300084015109613120830152806105c0830151610c00840151096131408301528060016105c084015109613160830152806131608301518203610b8084015108613180830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c0840151096131a0830152806131a08301518203610b80840151086131c0830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c084015109613220830152806132208301518203610b808401510861324083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132608401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806132808401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c087015109086132a08401525061318082015181906001096132c083018190526131c08301518291096132e08301819052613240830151829109613300830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133208401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133408401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133608401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613380840152506132008201516132e0830151829190096133a083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806133c08401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806133e08401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134008401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c08701510908613420840152506132408201516132c08301518291900961344083015261326082015181816132808501510990508061346084015281816132a0850151099050806134808401528181613320850151099050806134a084015281816132c0850151099050806134c08401528181613340850151099050806134e084015281816133608501510990508061350084015281816133808501510990508061352084015281816133a08501510990508061354084015281816133c08501510990508061356084015281816133e08501510990508061358084015281816132e0850151099050806135a08401528181613400850151099050806135c08401528181613420850151099050806135e0840152818161344085015109905080613600840152506020613640830152602061366083015260206136808301526136008201516136a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6136c08301526000805160206155958339815191526136e08301528260016020613620850160c0613640870160055afa141692506136208201516000613440840151905082826135e086015109613440850152828282099150613420840151905082826135c086015109613420850152828282099150613400840151905082826135a0860151096134008501528282820991506132e084015190508282613580860151096132e08501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c08501528282820991506133a084015190508282613520860151096133a08501528282820991506133808401519050828261350086015109613380850152828282099150613360840151905082826134e086015109613360850152828282099150613340840151905082826134c0860151096133408501528282820991506132c0840151905082826134a0860151096132c085015282828209915061332084015190508282613480860151096133208501528282820991506132a084015190508282613460860151096132a08501528282820991506132808401519050828261326086015109613280850152828282096132608501819052613280850151909250839150829008905081816132a085015108613700840152506132c0820151613300830151829190096137208301526133208201518061374084015250806133a0830151613300840151096137608301526133408201518181613360850151089050818161338085015108613780840152506132e0820151613300830151829190096137a08301526133c082015181816133e0850151086137c084015250613440820151613300830151829190096137e083015261340082015181816134208501510861380084015250613700820151613740830151829082900990508061382084015281816137808501510990508061384084015281816137c0850151099050806138608401528181613800850151099050806138808401525060206138c083015260206138e083015260206139008301526138808201516139208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff61394083015260008051602061559583398151915261396083015282600160206138a0850160c06138c0870160055afa141692506138a0820151600061380084015190508282613860860151096138008501528282820991506137c084015190508282613840860151096137c0850152828282099150613780840151905082826138208601510961378085015282828209915061374084015190508282613700860151096137408501528282820961370085015250506137408201516137208301518291900961398083015280613780830151613760840151096139a0830152806137c08301516137a0840151096139c0830152806138008301516137e0840151096139e0830152610a8082015181908009613a008301819052610a80830151829109613a208301819052610a80830151829109613a408301819052610a80830151829109613a608301819052610a80830151829109613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c60830152610ae082015181908009613c808301819052610ae0830151829109613ca08301819052610ae0830151829109613cc08301819052610ae0830151829109613ce08301528061326083015161060084015109818183613280860151610640870151090890508181836132a08601516106c08701510908613d0084018190526137008401518392509009613d20830152806001613d20840151830309613d408301528061326083015161062084015109818183613280860151610660870151090890508181836132a08601516106a08701510908613d6084018190526137008401518392509009613d808301819052610a808301518291820309613da083015280610a80830151600109613dc083015280613da0830151613d4084015108613de0830152806001613de084015109613e00830152806001613dc084015109613e2083015280613720830151600109613e408301528061332083015161068084015109613e608301819052613980830151829109613e80830152806001613e80840151830309613ea0830152806001613e4084015109613ec083015280613320830151610a4084015109613ee08301819052613980830151829109613f008301819052610a808301518291820309613f2083015280610a80830151613e4084015109613f4083015280613f20830151613ea084015108613f60830152806133208301516106e084015109613f808301819052613980830151829109613fa08301819052613a008301518291820309613fc083015280613a00830151613e4084015109613fe083015280613fc0830151613f6084015108614000830152806133208301516107008401510961402083018190526139808301518291096140408301819052613a20830151829182030961406083015280613a20830151613e408401510961408083015280614060830151614000840151086140a083015280613320830151610720840151096140c083018190526139808301518291096140e08301819052613a40830151829182030961410083015280613a40830151613e4084015109614120830152806141008301516140a084015108614140830152806133208301516107408401510961416083018190526139808301518291096141808301819052613a6083015182918203096141a083015280613a60830151613e40840151096141c0830152806141a0830151614140840151086141e0830152806133208301516107608401510961420083018190526139808301518291096142208301819052613a80830151829182030961424083015280613a80830151613e4084015109614260830152806142408301516141e08401510861428083015280613320830151610780840151096142a083018190526139808301518291096142c08301819052613aa083015182918203096142e083015280613aa0830151613e4084015109614300830152806142e083015161428084015108614320830152806133208301516107a08401510961434083018190526139808301518291096143608301819052613ac0830151829182030961438083015280613ac0830151613e40840151096143a083015280614380830151614320840151086143c0830152806133208301516107c0840151096143e083018190526139808301518291096144008301819052613ae0830151829182030961442083015280613ae0830151613e4084015109614440830152806144208301516143c084015108614460830152806133208301516107e08401510961448083018190526139808301518291096144a08301819052613b0083015182918203096144c083015280613b00830151613e40840151096144e0830152806144c083015161446084015108614500830152806133208301516108008401510961452083018190526139808301518291096145408301819052613b20830151829182030961456083015280613b20830151613e408401510961458083015280614560830151614500840151086145a083015280613320830151610820840151096145c083018190526139808301518291096145e08301819052613b40830151829182030961460083015280613b40830151613e4084015109614620830152806146008301516145a084015108614640830152806133208301516108608401510961466083018190526139808301518291096146808301819052613b6083015182918203096146a083015280613b60830151613e40840151096146c0830152806146a0830151614640840151086146e0830152806133208301516108808401510961470083018190526139808301518291096147208301819052613b80830151829182030961474083015280613b80830151613e4084015109614760830152806147408301516146e084015108614780830152806133208301516108a0840151096147a083018190526139808301518291096147c08301819052613ba083015182918203096147e083015280613ba0830151613e4084015109614800830152806147e083015161478084015108614820830152806133208301516108c08401510961484083018190526139808301518291096148608301819052613bc0830151829182030961488083015280613bc0830151613e40840151096148a083015280614880830151614820840151086148c0830152806133208301516108e0840151096148e083018190526139808301518291096149008301819052613be0830151829182030961492083015280613be0830151613e4084015109614940830152806149208301516148c084015108614960830152806133208301516109008401510961498083018190526139808301518291096149a08301819052613c0083015182918203096149c083015280613c00830151613e40840151096149e0830152806149c083015161496084015108614a00830152806137208301516130a084015109614a20830152806137208301516130c084015109614a40830152806137208301516130e084015109614a608301528061372083015161310084015109614a808301528061332083015161312084015109614aa08301819052613980830151829109614ac08301819052613c208301518291820309614ae083015280613c20830151613e4084015109614b0083015280613c20830151614a2084015109614b2083015280613c20830151614a4084015109614b4083015280613c20830151614a6084015109614b6083015280613c20830151614a8084015109614b8083015280614ae0830151614a0084015108614ba08301528061332083015161084084015109614bc08301819052613980830151829109614be08301819052613c408301518291820309614c0083015280613c40830151613e4084015109614c2083015280614c00830151614ba084015108614c408301819052610ae0830151829109614c6083015280610ae0830151613ec084015109614c8083015280610ae0830151613f4084015109614ca083015280610ae0830151613fe084015109614cc083015280610ae083015161408084015109614ce083015280610ae083015161412084015109614d0083015280610ae08301516141c084015109614d2083015280610ae083015161426084015109614d4083015280610ae083015161430084015109614d6083015280610ae08301516143a084015109614d8083015280610ae083015161444084015109614da083015280610ae08301516144e084015109614dc083015280610ae083015161458084015109614de083015280610ae083015161462084015109614e0083015280610ae08301516146c084015109614e2083015280610ae083015161476084015109614e4083015280610ae083015161480084015109614e6083015280610ae08301516148a084015109614e8083015280610ae083015161494084015109614ea083015280610ae08301516149e084015109614ec083015280610ae0830151614b0084015109614ee083015280610ae0830151614b2084015109614f0083015280610ae0830151614b4084015109614f2083015280610ae0830151614b6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614c2084015109614f8083015280614c60830151613e0084015108614fa083015280613760830151600109614fc08301528061334083015161092084015109818183613360860151610940870151090890508181836133808601516109608701510908614fe084018190526139a08401518392509009615000830152806001615000840151830309615020830152806001614fc08401510961504083015280613c808301516150208401510961506083015280613c808301516150408401510961508083015280615060830151614fa0840151086150a0830152806137a08301516001096150c0830152806133c0830151610980840151098181836133e08601516109a087015109086150e084018190526139c084015183925090096151008301528060016151008401518303096151208301528060016150c084015109615140830152806133c08301516109c0840151098181836133e08601516109e0870151090861516084018190526139c084015183925090096151808301819052610a8083015182918203096151a083015280610a808301516150c0840151096151c0830152806151a0830151615120840151086151e08301819052613ca083015182910961520083015280613ca08301516151408401510961522083015280613ca08301516151c084015109615240830152806152008301516150a084015108615260830152806137e083015160010961528083015280613400830151610a0084015109818183613420860151610a2087015109086152a084018190526139e084015183925090096152c08301528060016152c08401518303096152e08301528060016152808401510961530083015280613cc08301516152e08401510961532083015280613cc08301516153008401510961534083015280615320830151615260840151086153608301528061330083015160010961538083015280610b808301516001096153a083015260016153c0830181815260026153e085015261536084015161540085015284919060409060608160075afa141692506153c08201516154208301526153e082015161544083015260a082015161546083015260c0820151615480830152826001604061542085016080615420870160065afa1416925060e08201516154a08301526101008201516154c0830152613e208201516154e083015282600160406154a0850160606154a0870160075afa141692506154208201516155008301526154408201516155208301526154a08201516155408301526154c0820151615560830152826001604061550085016080615500870160065afa141692506101208201516155808301526101408201516155a0830152614c808201516155c0830152826001604061558085016060615580870160075afa141692506155008201516155e08301526155208201516156008301526155808201516156208301526155a082015161564083015282600160406155e0850160806155e0870160065afa14169250610200820151615660830152610220820151615680830152614ca08201516156a0830152826001604061566085016060615660870160075afa141692506155e08201516156c08301526156008201516156e083015261566082015161570083015261568082015161572083015282600160406156c0850160806156c0870160065afa141692507f046611b44bb4f4cd8fcf6f82fed641d34961b88a6012df5e0f44d4f40248d57b6157408301527f25b84353a92c37bb156457e31b9133dc81245e1f3774b898f41cf59a7b0adf57615760830152614cc0820151615780830152826001604061574085016060615740870160075afa141692506156c08201516157a08301526156e08201516157c08301526157408201516157e083015261576082015161580083015282600160406157a0850160806157a0870160065afa141692507f259da9f643187930ce1299a3f700a93f17cf3129bffe184a6de1cf19f0b91f7e6158208301527f29fcbc05cd2c0152b3eb21e8fd01a00bc79780f21281598873fb955dba235f7e615840830152614ce0820151615860830152826001604061582085016060615820870160075afa141692506157a08201516158808301526157c08201516158a08301526158208201516158c08301526158408201516158e0830152826001604061588085016080615880870160065afa141692507f2b99cb49ca685626a08c009ea442fc895a2f86cca1f29f18d4b7ec9ece937aa26159008301527f20a45cae33f3917205b76aeb87e409350840664058839b1db76f8761db50fac8615920830152614d00820151615940830152826001604061590085016060615900870160075afa141692506158808201516159608301526158a08201516159808301526159008201516159a08301526159208201516159c0830152826001604061596085016080615960870160065afa141692507f25a265a57942223657b3316c913bffe8db0efedbed9ac878308e1d63d4df61d86159e08301527f0d2f79604094b53fd56a955d2574e241ad67498ab320f2bb764841f5c903bff9615a00830152614d20820151615a2083015282600160406159e0850160606159e0870160075afa14169250615960820151615a40830152615980820151615a608301526159e0820151615a80830152615a00820151615aa08301528260016040615a4085016080615a40870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615ac08301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615ae0830152614d40820151615b008301528260016040615ac085016060615ac0870160075afa14169250615a40820151615b20830152615a60820151615b40830152615ac0820151615b60830152615ae0820151615b808301528260016040615b2085016080615b20870160065afa141692507f0160a474a2c8de56950bbe25d6f09002a91f2cc20fbdb15e8413f1176e7f1865615ba08301527f1d0f5797eaaea89e5119e4260db563605a84d004b8efd02c51b960bfecf20e90615bc0830152614d60820151615be08301528260016040615ba085016060615ba0870160075afa14169250615b20820151615c00830152615b40820151615c20830152615ba0820151615c40830152615bc0820151615c608301528260016040615c0085016080615c00870160065afa141692507f02b619a2a245b370b3319e21e0be467256209338cf9546447b875a2779e010d4615c808301527f07d7f03df06345ba2df20bb867841f60ebd25daab5aafa13ddc1413116996802615ca0830152614d80820151615cc08301528260016040615c8085016060615c80870160075afa14169250615c00820151615ce0830152615c20820151615d00830152615c80820151615d20830152615ca0820151615d408301528260016040615ce085016080615ce0870160065afa141692507f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b615d608301527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097615d80830152614da0820151615da08301528260016040615d6085016060615d60870160075afa14169250615ce0820151615dc0830152615d00820151615de0830152615d60820151615e00830152615d80820151615e208301528260016040615dc085016080615dc0870160065afa141692507f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91615e408301527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd615e60830152614dc0820151615e808301528260016040615e4085016060615e40870160075afa14169250615dc0820151615ea0830152615de0820151615ec0830152615e40820151615ee0830152615e60820151615f008301528260016040615ea085016080615ea0870160065afa141692507f13caf6fa687a546fd1eeb9e0d43a9f8fe9a3f05322f5edda1b95d50e83839851615f208301527f22e2768775e2d96fd8925c48a99df2b248cb3d893a15b9dca81660b79cc35f4a615f40830152614de0820151615f608301528260016040615f2085016060615f20870160075afa14169250615ea0820151615f80830152615ec0820151615fa0830152615f20820151615fc0830152615f40820151615fe08301528260016040615f8085016080615f80870160065afa141692507f19a074dc6d1a0f1e5589a55d9c4955cf867e2899dbfd46a11c27a84804b5b2396160008301527f26b112fb59a0b875833e52f951b3b010826b169f320d80597f1275544ae24897616020830152614e00820151616040830152826001604061600085016060616000870160075afa14169250615f80820151616060830152615fa08201516160808301526160008201516160a08301526160208201516160c0830152826001604061606085016080616060870160065afa141692507f1c6df6612866079dc2a52525842c8025502eb5a8913c560836c4bc7ab2dc334e6160e08301527f0d36fe2bf6d58291ed035a1f090904639502213a2449227d156ee3f8f6372e2c616100830152614e2082015161612083015282600160406160e0850160606160e0870160075afa141692506160608201516161408301526160808201516161608301526160e08201516161808301526161008201516161a0830152826001604061614085016080616140870160065afa141692507f01add1e14d0a1880ee8e837b20502713d06428d55d61fea8fea89a71648971fa6161c08301527f12c982466ea6dcfada3ad0e277fed44f770466650d4704906a4d34b6b8d8bed16161e0830152614e4082015161620083015282600160406161c0850160606161c0870160075afa141692506161408201516162208301526161608201516162408301526161c08201516162608301526161e0820151616280830152826001604061622085016080616220870160065afa141692507f2faee9fe4eb97b37abb4fdd1b604ed8acf55df0a370bcfe7f5615b7598989d7a6162a08301527f2269aff86c3fd35864f3e2cb39db623e0122a05b6b5f789ff57434e557a90c236162c0830152614e608201516162e083015282600160406162a0850160606162a0870160075afa141692506162208201516163008301526162408201516163208301526162a08201516163408301526162c0820151616360830152826001604061630085016080616300870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746163808301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e36163a0830152614e808201516163c0830152826001604061638085016060616380870160075afa141692506163008201516163e08301526163208201516164008301526163808201516164208301526163a082015161644083015282600160406163e0850160806163e0870160065afa141692507f01b6921cc4c35a03d696e754bac06edba8187499252d98da7e7d40b844f242456164608301527f181dfa294889601a9cc57448d966b9cc60e7795ab336d2078dc43aeb888484fb616480830152614ea08201516164a0830152826001604061646085016060616460870160075afa141692506163e08201516164c08301526164008201516164e083015261646082015161650083015261648082015161652083015282600160406164c0850160806164c0870160065afa141692507f0f0dcdaa6fd2f36460376557f9d6b4b0985b085d2d8ffca7c6c408d8560d5d086165408301527f0bc4e7f7a927678093e4be2bfb543ab7d6267ee943e8ed13369a3b3c9ef23779616560830152614ec0820151616580830152826001604061654085016060616540870160075afa141692506164c08201516165a08301526164e08201516165c08301526165408201516165e083015261656082015161660083015282600160406165a0850160806165a0870160065afa14169250610460820151616620830152610480820151616640830152614ee0820151616660830152826001604061662085016060616620870160075afa141692506165a08201516166808301526165c08201516166a08301526166208201516166c08301526166408201516166e0830152826001604061668085016080616680870160065afa141692506104a08201516167008301526104c0820151616720830152614f00820151616740830152826001604061670085016060616700870160075afa141692506166808201516167608301526166a08201516167808301526167008201516167a08301526167208201516167c0830152826001604061676085016080616760870160065afa141692506104e08201516167e0830152610500820151616800830152614f2082015161682083015282600160406167e0850160606167e0870160075afa141692506167608201516168408301526167808201516168608301526167e08201516168808301526168008201516168a0830152826001604061684085016080616840870160065afa141692506105208201516168c08301526105408201516168e0830152614f4082015161690083015282600160406168c0850160606168c0870160075afa141692506168408201516169208301526168608201516169408301526168c08201516169608301526168e0820151616980830152826001604061692085016080616920870160065afa141692506105608201516169a08301526105808201516169c0830152614f608201516169e083015282600160406169a0850160606169a0870160075afa14169250616920820151616a00830152616940820151616a208301526169a0820151616a408301526169c0820151616a608301528260016040616a0085016080616a00870160065afa141692506103c0820151616a808301526103e0820151616aa0830152614f80820151616ac08301528260016040616a8085016060616a80870160075afa14169250616a00820151616ae0830152616a20820151616b00830152616a80820151616b20830152616aa0820151616b408301528260016040616ae085016080616ae0870160065afa14169250610300820151616b60830152610320820151616b80830152615080820151616ba08301528260016040616b6085016060616b60870160075afa14169250616ae0820151616bc0830152616b00820151616be0830152616b60820151616c00830152616b80820151616c208301528260016040616bc085016080616bc0870160065afa14169250610340820151616c40830152610360820151616c60830152615220820151616c808301528260016040616c4085016060616c40870160075afa14169250616bc0820151616ca0830152616be0820151616cc0830152616c40820151616ce0830152616c60820151616d008301528260016040616ca085016080616ca0870160065afa14169250610380820151616d208301526103a0820151616d40830152615240820151616d608301528260016040616d2085016060616d20870160075afa14169250616ca0820151616d80830152616cc0820151616da0830152616d20820151616dc0830152616d40820151616de08301528260016040616d8085016080616d80870160065afa141692506101c0820151616e008301526101e0820151616e20830152615340820151616e408301528260016040616e0085016060616e00870160075afa14169250616d80820151616e60830152616da0820151616e80830152616e00820151616ea0830152616e20820151616ec08301528260016040616e6085016080616e60870160065afa14169250610b20820151616ee0830152610b40820151616f008301526153808201518103616f20830152508160016040616ee084016060616ee0860160075afa14169150616e60810151616f40820152616e80810151616f60820152616ee0810151616f80820152616f00810151616fa08201528160016040616f4084016080616f40860160065afa14169150610bc0810151616fc0820152610be0810151616fe08201526153a08101516170008201528160016040616fc084016060616fc0860160075afa14169150616f40810151617020820152616f60810151617040820152616fc0810151617060820152616fe0810151617080820152816001604061702084016080617020860160065afa141691506170208101516170a08201526170408101516170c08201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26170e08201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171008201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171208201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa617140820152610bc0810151617160820152610be08101516171808201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6171a08201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6171c08201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456171e08201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61720082015281600160206170a084016101806170a0860160085afa6170a093909301516001149214161691505092915050565b604051806172000160405280610390906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715615434576154346153f5565b604052919050565b600082601f83011261544d57600080fd5b813567ffffffffffffffff811115615467576154676153f5565b61547a601f8201601f191660200161540b565b81815284602083860101111561548f57600080fd5b816020850160208301376000918101602001919091529392505050565b600080604083850312156154bf57600080fd5b823567ffffffffffffffff808211156154d757600080fd5b818501915085601f8301126154eb57600080fd5b81356020828211156154ff576154ff6153f5565b8160051b61550e82820161540b565b928352848101820192828101908a85111561552857600080fd5b958301955b848710156155465786358252958301959083019061552d565b975050508601359250508082111561555d57600080fd5b5061556a8582860161543c565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220f964c2eff2c690734da252f9c4c5e8346ee57d4f780840e636f83cf215278f6764736f6c63430008120033","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":"0x608060405234801561001057600080fd5b5061563680620000216000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154f8565b610057565b604051901515815260200160405180910390f35b60006001610063615421565b6000805160206155e18339815191526100d9565b6000805160206155c183398151915280831081831016908380096000805160206155c18339815191528384096000805160206155c183398151915284820990506000805160206155c18339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f3600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155e18339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610600830151820361062084015108611fa083015280611fa083015161068084015109611fc08301819052610600830151829108611fe0830152806106408301518203611fe0840151086120008301819052611ee083015182910961202083015280612020830151611f808401510861204083015280612040830151610420840151096120608301528061062083015182036106008401510861208083015280612080830151610680840151096120a083018190526106208301518291086120c08301528061066083015182036120c0840151086120e08301819052611ee08301518291096121008301528061210083015161206084015108612120830152806121208301516104208401510961214083015280611a00830151611da08401510961216083015280612160830151611a608401510961218083015280610620830151610600840151086121a08301528061068083015182036121a0840151086121c083018190526121808301518291096121e0830152806121e083015161214084015108612200830152806122008301516104208401510961222083018190526121e0830151829108612240830152806122408301516104208401510961226083015280610920830151820360010861228083018190526113008301518291096122a0830152806122a0830151612260840151086122c0830152806122c0830151610420840151096122e083015261098082015181908009612300830152806109808301518203612300840151086123208301819052611240830151829109612340830152806123408301516122e0840151086123608301528061236083015161042084015109612380830152806109608301518203610980840151086123a083018190526113008301518291096123c0830152806123c0830151612380840151086123e0830152806123e083015161042084015109612400830152806112408301518203600108612420830152806112808301516112608401510861244083018190526112a083015182910861246083018190526112c083015182910861248083018190526112e08301518291086124a0830152806124a08301518203612420840151086124c083015280610260830151610860840151096124e0830152806124e08301516106e08401510861250083018190526102c08301518291086125208301528061026083015161088084015109612540830152806125408301516106008401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108a0840151096125c0830152806125c0830151610620840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830152806102608301516108c084015109612640830152806126408301516107008401510861266083018190526102c083015182910861268083018190526126208301518291096126a083018190526109408301518291096126c0830152806102608301516001096126e0830152806126e08301516105c084015109612700830152806127008301516106e08401510861272083018190526102c0830151829108612740830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a209612760830152806127608301516105c08401510961278083015280612780830151610600840151086127a083018190526102c08301518291086127c083018190526127408301518291096127e0830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612800830152806128008301516105c084015109612820830152806128208301516106208401510861284083018190526102c083015182910861286083018190526127e0830151829109612880830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096128a0830152806128a08301516105c0840151096128c0830152806128c0830151610700840151086128e083018190526102c0830151829108612900830181905261288083015182910961292083018190526109208301518291096129408301528061294083015182036126c08401510861296083018190526124c083015182910961298083015280612980830151612400840151086129a0830152806129a0830151610420840151096129c0830152806102608301516108e0840151096129e0830152806129e083015161068084015108612a0083018190526102c0830151829108612a208301528061026083015161090084015109612a4083015280612a4083015161138084015108612a6083018190526102c0830151829108612a808301819052612a20830151829109612aa083018190526109a0830151829109612ac0830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612ae083015280612ae08301516105c084015109612b0083015280612b0083015161068084015108612b2083018190526102c0830151829108612b40830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612b6083015280612b608301516105c084015109612b8083015280612b8083015161138084015108612ba083018190526102c0830151829108612bc08301819052612b40830151829109612be08301819052610980830151829109612c0083015280612c008301518203612ac084015108612c2083018190526124c0830151829109612c4083015280612c408301516129c084015108612c6083015280612c6083015161042084015109612c80830152806109c08301518203600108612ca08301819052611300830151829109612cc083015280612cc0830151612c8084015108612ce083015280612ce083015161042084015109612d008301526109c082015181908009612d20830152806109c08301518203612d2084015108612d408301819052611240830151829109612d6083015280612d60830151612d0084015108612d8083015280612d8083015161042084015109612da083015280610260830151610a0084015108612dc083018190526109e0830151829109612de0830152806102c0830151610a4084015108612e008301819052612de0830151829109612e208301528061064083015161010009612e4083015280612e40830151820361060084015108612e608301819052610780830151829109612e808301819052610260830151829108612ea083018190526109c0830151829109612ec0830152806102c083015161076084015108612ee08301819052612ec0830151829109612f0083015280612f008301518203612e2084015108612f2083018190526124c0830151829109612f4083015280612f40830151612da084015108612f6083015280612f6083015161042084015109612f8083015280610a408301518203610a0084015108612fa08301819052611300830151829109612fc083015280612fc0830151612f8084015108612fe083015280612fe083015161042084015109613000830152806124c0830151612fa08401510961302083015280610a208301518203610a008401510861304083018190526130208301518291096130608301528061306083015161300084015108613080830152610d40820151819080096130a08301819052610d408301518291096130c08301819052610d408301518291096130e08301819052610d4083015182910961310083015280610d40830151600109613120830152806130a0830151600109613140830152806130c0830151600109613160830152806130e083015160010961318083015280610d60830151613080840151096131a0830152806105c0830151610c00840151096131c08301528060016105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c084015109613220830152806132208301518203610b8084015108613240830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c084015109613260830152806132608301518203610b8084015108613280830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c0840151096132a0830152806132a08301518203610b80840151086132c083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132e08401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806133008401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c08701510908613320840152506132008201518190600109613340830181905261324083015182910961336083018190526132c0830151829109613380830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133a08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133c08401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133e08401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613400840152506132808201516133608301518291900961342083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806134408401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806134608401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134808401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c087015109086134a0840152506132c0820151613340830151829190096134c08301526132e08201518181613300850151099050806134e084015281816133208501510990508061350084015281816133a08501510990508061352084015281816133408501510990508061354084015281816133c08501510990508061356084015281816133e0850151099050806135808401528181613400850151099050806135a08401528181613420850151099050806135c08401528181613440850151099050806135e084015281816134608501510990508061360084015281816133608501510990508061362084015281816134808501510990508061364084015281816134a08501510990508061366084015281816134c0850151099050806136808401525060206136c083015260206136e083015260206137008301526136808201516137208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6137408301526000805160206155e183398151915261376083015282600160206136a0850160c06136c0870160055afa141692506136a082015160006134c084015190508282613660860151096134c08501528282820991506134a084015190508282613640860151096134a085015282828209915061348084015190508282613620860151096134808501528282820991506133608401519050828261360086015109613360850152828282099150613460840151905082826135e086015109613460850152828282099150613440840151905082826135c086015109613440850152828282099150613420840151905082826135a08601510961342085015282828209915061340084015190508282613580860151096134008501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c085015282828209915061334084015190508282613520860151096133408501528282820991506133a084015190508282613500860151096133a0850152828282099150613320840151905082826134e086015109613320850152828282099150613300840151905082826132e086015109613300850152828282096132e08501819052613300850151909250839150829008905081816133208501510861378084015250613340820151613380830151829190096137a08301526133a0820151806137c08401525080613420830151613380840151096137e08301526133c082015181816133e08501510890508181613400850151086138008401525061336082015161338083015182919009613820830152613440820151818161346085015108613840840152506134c08201516133808301518291900961386083015261348082015181816134a085015108613880840152506137808201516137c083015182908290099050806138a08401528181613800850151099050806138c08401528181613840850151099050806138e0840152818161388085015109905080613900840152506020613940830152602061396083015260206139808301526139008201516139a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6139c08301526000805160206155e18339815191526139e08301528260016020613920850160c0613940870160055afa141692506139208201516000613880840151905082826138e086015109613880850152828282099150613840840151905082826138c086015109613840850152828282099150613800840151905082826138a0860151096138008501528282820991506137c084015190508282613780860151096137c08501528282820961378085015250506137c08201516137a083015182919009613a00830152806138008301516137e084015109613a208301528061384083015161382084015109613a408301528061388083015161386084015109613a60830152610a8082015181908009613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c608301819052610a80830151829109613c808301819052610a80830151829109613ca08301819052610a80830151829109613cc08301819052610a80830151829109613ce0830152610ae082015181908009613d008301819052610ae0830151829109613d208301819052610ae0830151829109613d408301819052610ae0830151829109613d60830152806132e083015161060084015109818183613300860151610640870151090890508181836133208601516106c08701510908613d8084018190526137808401518392509009613da0830152806001613da0840151830309613dc0830152806132e083015161062084015109818183613300860151610660870151090890508181836133208601516106a08701510908613de084018190526137808401518392509009613e008301819052610a808301518291820309613e2083015280610a80830151600109613e4083015280613e20830151613dc084015108613e60830152806001613e6084015109613e80830152806001613e4084015109613ea0830152806137a0830151600109613ec0830152806133a083015161068084015109613ee08301819052613a00830151829109613f00830152806001613f00840151830309613f20830152806001613ec084015109613f40830152806133a0830151610a4084015109613f608301819052613a00830151829109613f808301819052610a808301518291820309613fa083015280610a80830151613ec084015109613fc083015280613fa0830151613f2084015108613fe0830152806133a08301516106e0840151096140008301819052613a008301518291096140208301819052613a80830151829182030961404083015280613a80830151613ec08401510961406083015280614040830151613fe084015108614080830152806133a0830151610700840151096140a08301819052613a008301518291096140c08301819052613aa083015182918203096140e083015280613aa0830151613ec084015109614100830152806140e083015161408084015108614120830152806133a0830151610720840151096141408301819052613a008301518291096141608301819052613ac0830151829182030961418083015280613ac0830151613ec0840151096141a083015280614180830151614120840151086141c0830152806133a0830151610740840151096141e08301819052613a008301518291096142008301819052613ae0830151829182030961422083015280613ae0830151613ec084015109614240830152806142208301516141c084015108614260830152806133a0830151610760840151096142808301819052613a008301518291096142a08301819052613b0083015182918203096142c083015280613b00830151613ec0840151096142e0830152806142c083015161426084015108614300830152806133a0830151610780840151096143208301819052613a008301518291096143408301819052613b20830151829182030961436083015280613b20830151613ec08401510961438083015280614360830151614300840151086143a0830152806133a08301516107a0840151096143c08301819052613a008301518291096143e08301819052613b40830151829182030961440083015280613b40830151613ec084015109614420830152806144008301516143a084015108614440830152806133a08301516107c0840151096144608301819052613a008301518291096144808301819052613b6083015182918203096144a083015280613b60830151613ec0840151096144c0830152806144a0830151614440840151086144e0830152806133a08301516107e0840151096145008301819052613a008301518291096145208301819052613b80830151829182030961454083015280613b80830151613ec084015109614560830152806145408301516144e084015108614580830152806133a0830151610800840151096145a08301819052613a008301518291096145c08301819052613ba083015182918203096145e083015280613ba0830151613ec084015109614600830152806145e083015161458084015108614620830152806133a0830151610820840151096146408301819052613a008301518291096146608301819052613bc0830151829182030961468083015280613bc0830151613ec0840151096146a083015280614680830151614620840151086146c0830152806133a0830151610860840151096146e08301819052613a008301518291096147008301819052613be0830151829182030961472083015280613be0830151613ec084015109614740830152806147208301516146c084015108614760830152806133a0830151610880840151096147808301819052613a008301518291096147a08301819052613c0083015182918203096147c083015280613c00830151613ec0840151096147e0830152806147c083015161476084015108614800830152806133a08301516108a0840151096148208301819052613a008301518291096148408301819052613c20830151829182030961486083015280613c20830151613ec08401510961488083015280614860830151614800840151086148a0830152806133a08301516108c0840151096148c08301819052613a008301518291096148e08301819052613c40830151829182030961490083015280613c40830151613ec084015109614920830152806149008301516148a084015108614940830152806133a08301516108e0840151096149608301819052613a008301518291096149808301819052613c6083015182918203096149a083015280613c60830151613ec0840151096149c0830152806149a0830151614940840151086149e0830152806133a083015161090084015109614a008301819052613a00830151829109614a208301819052613c808301518291820309614a4083015280613c80830151613ec084015109614a6083015280614a408301516149e084015108614a80830152806137a083015161312084015109614aa0830152806137a083015161314084015109614ac0830152806137a083015161316084015109614ae0830152806137a083015161318084015109614b00830152806133a08301516131a084015109614b208301819052613a00830151829109614b408301819052613ca08301518291820309614b6083015280613ca0830151613ec084015109614b8083015280613ca0830151614aa084015109614ba083015280613ca0830151614ac084015109614bc083015280613ca0830151614ae084015109614be083015280613ca0830151614b0084015109614c0083015280614b60830151614a8084015108614c20830152806133a083015161084084015109614c408301819052613a00830151829109614c608301819052613cc08301518291820309614c8083015280613cc0830151613ec084015109614ca083015280614c80830151614c2084015108614cc08301819052610ae0830151829109614ce083015280610ae0830151613f4084015109614d0083015280610ae0830151613fc084015109614d2083015280610ae083015161406084015109614d4083015280610ae083015161410084015109614d6083015280610ae08301516141a084015109614d8083015280610ae083015161424084015109614da083015280610ae08301516142e084015109614dc083015280610ae083015161438084015109614de083015280610ae083015161442084015109614e0083015280610ae08301516144c084015109614e2083015280610ae083015161456084015109614e4083015280610ae083015161460084015109614e6083015280610ae08301516146a084015109614e8083015280610ae083015161474084015109614ea083015280610ae08301516147e084015109614ec083015280610ae083015161488084015109614ee083015280610ae083015161492084015109614f0083015280610ae08301516149c084015109614f2083015280610ae0830151614a6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614ba084015109614f8083015280610ae0830151614bc084015109614fa083015280610ae0830151614be084015109614fc083015280610ae0830151614c0084015109614fe083015280610ae0830151614ca08401510961500083015280614ce0830151613e8084015108615020830152806137e0830151600109615040830152806133c0830151610920840151098181836133e08601516109408701510908905081818361340086015161096087015109086150608401819052613a2084015183925090096150808301528060016150808401518303096150a0830152806001615040840151096150c083015280613d008301516150a0840151096150e083015280613d008301516150c084015109615100830152806150e0830151615020840151086151208301528061382083015160010961514083015280613440830151610980840151098181836134608601516109a087015109086151608401819052613a4084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c0830152806134408301516109c0840151098181836134608601516109e087015109086151e08401819052613a4084015183925090096152008301819052610a80830151829182030961522083015280610a8083015161514084015109615240830152806152208301516151a0840151086152608301819052613d2083015182910961528083015280613d208301516151c0840151096152a083015280613d20830151615240840151096152c083015280615280830151615120840151086152e08301528061386083015160010961530083015280613480830151610a00840151098181836134a0860151610a2087015109086153208401819052613a6084015183925090096153408301528060016153408401518303096153608301528060016153008401510961538083015280613d40830151615360840151096153a083015280613d40830151615380840151096153c0830152806153a08301516152e0840151086153e08301528061338083015160010961540083015280610b808301516001096154208301526001615440830181815260026154608501526153e084015161548085015284919060409060608160075afa141692506154408201516154a08301526154608201516154c083015260a08201516154e083015260c082015161550083015282600160406154a0850160806154a0870160065afa1416925060e0820151615520830152610100820151615540830152613ea0820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa14169250610120820151615600830152610140820151615620830152614d00820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692506102008201516156e0830152610220820151615700830152614d2082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906157c08301527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a956157e0830152614d4082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a36158a08301527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b66158c0830152614d608201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e6159808301527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b6159a0830152614d808201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056615a608301527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c615a80830152614da0820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615b408301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615b60830152614dc0820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8615c208301527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78615c40830152614de0820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5615d008301527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098615d20830152614e00820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b615de08301527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097615e00830152614e20820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91615ec08301527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd615ee0830152614e40820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa615fa08301527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289615fc0830152614e60820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f817436160808301527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c6160a0830152614e808201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe6161608301527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a616180830152614ea08201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad6162408301527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960616260830152614ec0820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d226163208301527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac616340830152614ee0820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746164008301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616420830152614f00820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692507f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e6164e08301527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb616500830152614f2082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692507f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf06165c08301527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb3916165e0830152614f4082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104608201516166a08301526104808201516166c0830152614f608201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104a08201516167808301526104c08201516167a0830152614f808201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa141692506104e0820151616860830152610500820151616880830152614fa08201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa14169250610520820151616940830152610540820151616960830152614fc0820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa14169250610560820151616a20830152610580820151616a40830152614fe0820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa141692506103c0820151616b008301526103e0820151616b20830152615000820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610300820151616be0830152610320820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610340820151616cc0830152610360820151616ce08301526152a0820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610380820151616da08301526103a0820151616dc08301526152c0820151616de08301528260016040616da085016060616da0870160075afa14169250616d20820151616e00830152616d40820151616e20830152616da0820151616e40830152616dc0820151616e608301528260016040616e0085016080616e00870160065afa141692506101c0820151616e808301526101e0820151616ea08301526153c0820151616ec08301528260016040616e8085016060616e80870160075afa14169250616e00820151616ee0830152616e20820151616f00830152616e80820151616f20830152616ea0820151616f408301528260016040616ee085016080616ee0870160065afa14169250610b20820151616f60830152610b40820151616f808301526154008201518103616fa0830152508160016040616f6084016060616f60860160075afa14169150616ee0810151616fc0820152616f00810151616fe0820152616f60810151617000820152616f808101516170208201528160016040616fc084016080616fc0860160065afa14169150610bc0810151617040820152610be0810151617060820152615420810151617080820152816001604061704084016060617040860160075afa14169150616fc08101516170a0820152616fe08101516170c08201526170408101516170e082015261706081015161710082015281600160406170a0840160806170a0860160065afa141691506170a08101516171208201526170c08101516171408201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26171608201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171808201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171a08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6171c0820152610bc08101516171e0820152610be08101516172008201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6172208201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6172408201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456172608201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61728082015281600160206171208401610180617120860160085afa61712093909301516001149214161691505092915050565b604051806172800160405280610394906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561548057615480615441565b604052919050565b600082601f83011261549957600080fd5b813567ffffffffffffffff8111156154b3576154b3615441565b6154c6601f8201601f1916602001615457565b8181528460208386010111156154db57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561550b57600080fd5b823567ffffffffffffffff8082111561552357600080fd5b818501915085601f83011261553757600080fd5b813560208282111561554b5761554b615441565b8160051b61555a828201615457565b928352848101820192828101908a85111561557457600080fd5b958301955b8487101561559257863582529583019590830190615579565b97505050860135925050808211156155a957600080fd5b506155b685828601615488565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220433d439b616c9b0984aa273d65d03bbc910a575c3fc62a9c5097577b1baffcd564736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061002b5760003560e01c8063bd205a9014610030575b600080fd5b61004361003e3660046154f8565b610057565b604051901515815260200160405180910390f35b60006001610063615421565b6000805160206155e18339815191526100d9565b6000805160206155c183398151915280831081831016908380096000805160206155c18339815191528384096000805160206155c183398151915284820990506000805160206155c18339815191526003820891909114919091169392505050565b8060208701510660208301528060408701510660408301528060608701510660608301528060808701510660808301527f101e32209fbc2afdda2eab08eed3e3e9323ecd92e5c6b9508204b948de1ae5f3600083015260208501518060a084015260408601518060c0850152846101508284610077565b169450505060608501518060e0840152608086015180610100850152846101778284610077565b169450505060a08501518061012084015260c0860151806101408501528461019f8284610077565b16945050506101606000830120610160830152610160820151818106610180840152806101a08401525060e0850151806101c0840152610100860151806101e0850152846101ed8284610077565b16945050506101208501518061020084015261014086015180610220850152846102178284610077565b60a06101a0870120610240870181905285810661026088015261028087015216945060019150506102a083015360216102808301206102a083018190528181066102c08401526102e0830152610160850151610300830181905261018086015161032084018190528461028a8284610077565b16945050506101a0850151806103408401526101c086015180610360850152846102b48284610077565b16945050506101e085015180610380840152610200860151806103a0850152846102de8284610077565b1694505050610220850151806103c0840152610240860151806103e0850152846103088284610077565b16945050506101206102e083012061040083015261040082015181810661042084015280610440840152506102608501518061046084015261028086015180610480850152846103588284610077565b16945050506102a0850151806104a08401526102c0860151806104c0850152846103828284610077565b16945050506102e0850151806104e084015261030086015180610500850152846103ac8284610077565b16945050506103208501518061052084015261034086015180610540850152846103d68284610077565b16945050506103608501518061056084015261038086015180610580850152846104008284610077565b16945050506101606104408301206105a08301526105a08201518181066105c0840152806105e084015250806103a086015106610600830152806103c086015106610620830152806103e0860151066106408301528061040086015106610660830152806104208601510661068083015280610440860151066106a083015280610460860151066106c083015280610480860151066106e0830152806104a086015106610700830152806104c086015106610720830152806104e0860151066107408301528061050086015106610760830152806105208601510661078083015280610540860151066107a083015280610560860151066107c083015280610580860151066107e0830152806105a086015106610800830152806105c086015106610820830152806105e0860151066108408301528061060086015106610860830152806106208601510661088083015280610640860151066108a083015280610660860151066108c083015280610680860151066108e0830152806106a086015106610900830152806106c086015106610920830152806106e0860151066109408301528061070086015106610960830152806107208601510661098083015280610740860151066109a083015280610760860151066109c083015280610780860151066109e0830152806107a086015106610a00830152806107c086015106610a20830152806107e086015106610a408301526104806105e0830120610a60830152610a60820151818106610a8084015280610aa0840152506001610ac08301536021610aa0830120610ac08301819052818106610ae0840152610b00830152610800850151610b208301819052610820860151610b408401819052846106898284610077565b16945050506060610b00830120610b60830152610b60820151818106610b8084015280610ba08401525061084085015180610bc084015261086086015180610be0850152846106d88284610077565b1694505050806105c08301516105c084015109610c00830181905281908009610c20830181905281908009610c40830181905281908009610c60830181905281908009610c80830181905281908009610ca0830181905281908009610cc0830181905281908009610ce0830181905281908009610d00830181905281908009610d20830181905281908009610d40830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000000610d4084015108610d60830152807f305e41e912d579f5b3193badcab128321c8ee1cb70aa396331b979553d820001610d6084015109610d80830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d302610d8084015109610da0830152807f0daef86f88c440658be430f38559b834662c0dbd4d47a55d6e97fb49c41a2cff6105c084015108610dc0830152807f2498c2d3affa1baaf6419dbccb6a054bb87359c02eade5aeacd86c84757b9051610d8084015109610de0830152807f0bcb8b9f3137847ec20ea7f9b61753116fc08e884b0b8ae29709890f7a846fb06105c084015108610e00830152807f096b9f8b8598b7c387fb69abf236b0d5e04e24d275ee98244443eda5d3bc4035610d8084015109610e20830152807f26f8aee75b98e8663054dc0a8f4aa78747e5c37603cad86cff9e07ee1c43bfcc6105c084015108610e40830152807f28771071ab1633014eae27cfc16d5ebe08a8fe2fc9e85044e4a45f82c14cd825610d8084015109610e60830152807f07ed3e01361b6d2869a21de6c013f99f1f8aea18afd1204c5f3d96112eb327dc6105c084015108610e80830152807f0ae3c95fc03c0a5f2de8a8f46c03ccdfdfed2bb98c9e4ae0b10b15eda4e3b1e3610d8084015109610ea0830152807f2580851320f595ca8a679cc2157d8b7d4846bc8eed1b25b092d6dfa64b1c4e1e6105c084015108610ec0830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a610d8084015109610ee0830152807f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e76105c084015108610f00830152806001610d8084015109610f20830152807f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c084015108610f40830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f610d8084015109610f60830152807f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa26105c084015108610f80830152807f2ad9021ed07c42ab19f77c5cf2cbd2deb135ea330f1b1573bd08d99309c4bb7d610d8084015109610fa0830152807f058b4c5410b55d7e9e58c9598eb5857e76fdfe156a9e5b1d86d91c00e63b44846105c084015108610fc0830152807f1908597d2fc3bc1da312efa344e0fc8a7079300238f2ee35774f117e66fd4467610d8084015109610fe0830152807f175bf4f5b16de40c153d56133ca05bd2b7bab84640c6825bcc92e4158902bb9a6105c084015108611000830152610dc08201518181610e00850151099050806110208401528181610e40850151099050806110408401528181610e80850151099050806110608401528181610ec0850151099050806110808401528181610f00850151099050806110a08401528181610f40850151099050806110c08401528181610f80850151099050806110e08401528181610fc0850151099050806111008401528181611000850151099050806111208401528181610d608501510990508061114084015250602061118083015260206111a083015260206111c08301526111408201516111e08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6112008301526000805160206155e18339815191526112208301528260016020611160850160c0611180870160055afa141692506111608201516000610d608401519050828261112086015109610d608501528282820991506110008401519050828261110086015109611000850152828282099150610fc0840151905082826110e086015109610fc0850152828282099150610f80840151905082826110c086015109610f80850152828282099150610f40840151905082826110a086015109610f40850152828282099150610f008401519050828261108086015109610f00850152828282099150610ec08401519050828261106086015109610ec0850152828282099150610e808401519050828261104086015109610e80850152828282099150610e408401519050828261102086015109610e40850152828282099150610e0084015190508282610dc086015109610e0085015282828209610dc08501819052610da08501518493509091500961124083015280610e00830151610de08401510961126083015280610e40830151610e208401510961128083015280610e80830151610e60840151096112a083015280610ec0830151610ea0840151096112c083015280610f00830151610ee0840151096112e083015280610f40830151610f208401510961130083015280610f80830151610f608401510961132083015280610fc0830151610fa08401510961134083015280611000830151610fe084015109611360830152806020830151611300840151098181836040860151611320870151090890508181836060860151611340870151090890508181836080860151611360870151090861138084015250610720820151610600830151829190086113a08301819052819080096113c08301819052819080096113e0830152806113e08301516113a084015109611400830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad561140084015109611420830152806107408301516106208401510861144083018190528190800961146083018190528190800961148083015280611480830151611440840151096114a0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e86114a0840151096114c0830152806114c0830151611420840151086114e08301528061064083015182036114e08401510861150083018190526107c08301518291096115208301528061152083015161042084015109611540830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961140084015109611560830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c86114a08401510961158083015280611580830151611560840151086115a08301528061066083015182036115a0840151086115c083018190526107c08301518291096115e0830152806115e08301516115408401510861160083015280611600830151610420840151096116208301528061068083015182036114008401510861164083018190526107e0830151829109611660830152806116608301516116208401510861168083015280611680830151610420840151096116a0830152807f066f6f85d6f68a85ec10345351a23a3aaf07f38af8c952a7bceca70bd2af7ad5610680840151096116c0830152807f2b9d4b4110c9ae997782e1509b1d0fdb20a7c02bbd8bea7305462b9f8125b1e8611440840151096116e0830152806116e08301516116c08401510861170083018190526106e08301518291086117208301819052819080096117408301819052819080096117608301528061176083015161172084015109611780830152807f13abec390ada7f4370819ab1c7846f210554569d9b29d1ea8dbebd0fa8c53e66610640840151096117a0830152807f1eb9e1dc19a33a624c9862a1d97d1510bd521ead5dfe0345aaf6185b1a1e60fe610660840151096117c0830152806117c08301516117a0840151086117e0830152806117e083015182036117808401510861180083018190526107e0830151829109611820830152806118208301516116a0840151086118408301528061184083015161042084015109611860830152807f0cc57cdbb08507d62bf67a4493cc262fb6c09d557013fff1f573f431221f8ff961068084015109611880830152807f1274e649a32ed355a31a6ed69724e1adade857e86eb5c3a121bcd147943203c8611440840151096118a0830152806118a0830151611880840151086118c083018190526107008301518291086118e0830152807f0fc1c9394db89bb2601abc49fdad4f038ce5169030a2ad69763f7875036bcb0261064084015109611900830152807f16a9e98c493a902b9502054edc03e7b22b7eac34345961bc8abced6bd147c8be6106608401510961192083015280611920830151611900840151086119408301528061194083015182036118e08401510861196083018190526107e083015182910961198083015280611980830151611860840151086119a0830152806119a0830151610420840151096119c0830152806107a083015182036001086119e083018190526107a0830151829109611a00830152806107a08301518203600208611a208301819052611a00830151829109611a40830152806107a08301518203600408611a608301819052611a40830151829109611a80830152806106008301516106c084015108611aa0830152806106408301518203611aa084015108611ac08301819052611a80830151829109611ae083015280611ae08301516119c084015108611b0083015280611b0083015161042084015109611b208301528061066083015182036106a084015108611b408301819052611a80830151829109611b6083015280611b60830151611b2084015108611b8083015280611b8083015161042084015109611ba08301528061080083015161150084015109611bc083015280611bc0830151611ba084015108611be083015280611be083015161042084015109611c00830152806108008301516115c084015109611c2083015280611c20830151611c0084015108611c4083015280611c4083015161042084015109611c608301528061082083015161164084015109611c8083015280611c80830151611c6084015108611ca083015280611ca083015161042084015109611cc08301528061082083015161180084015109611ce083015280611ce0830151611cc084015108611d0083015280611d0083015161042084015109611d208301528061082083015161196084015109611d4083015280611d40830151611d2084015108611d6083015280611d6083015161042084015109611d80830152806107a08301518203600308611da08301819052611a40830151829109611dc083015280611dc0830151611ac084015109611de083015280611de0830151611d8084015108611e0083015280611e0083015161042084015109611e2083015280611dc0830151611b4084015109611e4083015280611e40830151611e2084015108611e6083015280611e6083015161042084015109611e80830152806107a0830151611a2084015109611ea083015280611ea0830151611da084015109611ec083015280611ec0830151611a6084015109611ee083015280611ee083015161068084015109611f00830152806106808301518203600108611f208301819052611f00830151829109611f4083015280611f40830151611e8084015108611f6083015280611f6083015161042084015109611f8083015280610600830151820361062084015108611fa083015280611fa083015161068084015109611fc08301819052610600830151829108611fe0830152806106408301518203611fe0840151086120008301819052611ee083015182910961202083015280612020830151611f808401510861204083015280612040830151610420840151096120608301528061062083015182036106008401510861208083015280612080830151610680840151096120a083018190526106208301518291086120c08301528061066083015182036120c0840151086120e08301819052611ee08301518291096121008301528061210083015161206084015108612120830152806121208301516104208401510961214083015280611a00830151611da08401510961216083015280612160830151611a608401510961218083015280610620830151610600840151086121a08301528061068083015182036121a0840151086121c083018190526121808301518291096121e0830152806121e083015161214084015108612200830152806122008301516104208401510961222083018190526121e0830151829108612240830152806122408301516104208401510961226083015280610920830151820360010861228083018190526113008301518291096122a0830152806122a0830151612260840151086122c0830152806122c0830151610420840151096122e083015261098082015181908009612300830152806109808301518203612300840151086123208301819052611240830151829109612340830152806123408301516122e0840151086123608301528061236083015161042084015109612380830152806109608301518203610980840151086123a083018190526113008301518291096123c0830152806123c0830151612380840151086123e0830152806123e083015161042084015109612400830152806112408301518203600108612420830152806112808301516112608401510861244083018190526112a083015182910861246083018190526112c083015182910861248083018190526112e08301518291086124a0830152806124a08301518203612420840151086124c083015280610260830151610860840151096124e0830152806124e08301516106e08401510861250083018190526102c08301518291086125208301528061026083015161088084015109612540830152806125408301516106008401510861256083018190526102c083015182910861258083018190526125208301518291096125a0830152806102608301516108a0840151096125c0830152806125c0830151610620840151086125e083018190526102c083015182910861260083018190526125a0830151829109612620830152806102608301516108c084015109612640830152806126408301516107008401510861266083018190526102c083015182910861268083018190526126208301518291096126a083018190526109408301518291096126c0830152806102608301516001096126e0830152806126e08301516105c084015109612700830152806127008301516106e08401510861272083018190526102c0830151829108612740830152806102608301517f09226b6e22c6f0ca64ec26aad4c86e715b5f898e5e963f25870e56bbe533e9a209612760830152806127608301516105c08401510961278083015280612780830151610600840151086127a083018190526102c08301518291086127c083018190526127408301518291096127e0830152806102608301517f13b360d4e82fe915fed16081038f98c211427b87a281bd733c277dbadf10372b09612800830152806128008301516105c084015109612820830152806128208301516106208401510861284083018190526102c083015182910861286083018190526127e0830151829109612880830152806102608301517f18afdf23e9bd9302673fc1e076a492d4d65bd18ebc4d854ed189139bab313e52096128a0830152806128a08301516105c0840151096128c0830152806128c0830151610700840151086128e083018190526102c0830151829108612900830181905261288083015182910961292083018190526109208301518291096129408301528061294083015182036126c08401510861296083018190526124c083015182910961298083015280612980830151612400840151086129a0830152806129a0830151610420840151096129c0830152806102608301516108e0840151096129e0830152806129e083015161068084015108612a0083018190526102c0830151829108612a208301528061026083015161090084015109612a4083015280612a4083015161138084015108612a6083018190526102c0830151829108612a808301819052612a20830151829109612aa083018190526109a0830151829109612ac0830152806102608301517ea136ba13afa6c83eb7b82fb370e228e74155e48fb8f1c1cfc33fb0da8afb4209612ae083015280612ae08301516105c084015109612b0083015280612b0083015161068084015108612b2083018190526102c0830151829108612b40830152806102608301517f2eb9750dce545f17d492058dd201a1251ff3d9077864583d44eaf9be9008699d09612b6083015280612b608301516105c084015109612b8083015280612b8083015161138084015108612ba083018190526102c0830151829108612bc08301819052612b40830151829109612be08301819052610980830151829109612c0083015280612c008301518203612ac084015108612c2083018190526124c0830151829109612c4083015280612c408301516129c084015108612c6083015280612c6083015161042084015109612c80830152806109c08301518203600108612ca08301819052611300830151829109612cc083015280612cc0830151612c8084015108612ce083015280612ce083015161042084015109612d008301526109c082015181908009612d20830152806109c08301518203612d2084015108612d408301819052611240830151829109612d6083015280612d60830151612d0084015108612d8083015280612d8083015161042084015109612da083015280610260830151610a0084015108612dc083018190526109e0830151829109612de0830152806102c0830151610a4084015108612e008301819052612de0830151829109612e208301528061064083015161010009612e4083015280612e40830151820361060084015108612e608301819052610780830151829109612e808301819052610260830151829108612ea083018190526109c0830151829109612ec0830152806102c083015161076084015108612ee08301819052612ec0830151829109612f0083015280612f008301518203612e2084015108612f2083018190526124c0830151829109612f4083015280612f40830151612da084015108612f6083015280612f6083015161042084015109612f8083015280610a408301518203610a0084015108612fa08301819052611300830151829109612fc083015280612fc0830151612f8084015108612fe083015280612fe083015161042084015109613000830152806124c0830151612fa08401510961302083015280610a208301518203610a008401510861304083018190526130208301518291096130608301528061306083015161300084015108613080830152610d40820151819080096130a08301819052610d408301518291096130c08301819052610d408301518291096130e08301819052610d4083015182910961310083015280610d40830151600109613120830152806130a0830151600109613140830152806130c0830151600109613160830152806130e083015160010961318083015280610d60830151613080840151096131a0830152806105c0830151610c00840151096131c08301528060016105c0840151096131e0830152806131e08301518203610b8084015108613200830152807f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705f6105c084015109613220830152806132208301518203610b8084015108613240830152807f22b55603586d5fc42c6c14c2fc27a028c207da8b2c71cb33d549fa4a2be5d3026105c084015109613260830152806132608301518203610b8084015108613280830152807f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d7161a6105c0840151096132a0830152806132a08301518203610b80840151086132c083015280817f21054ce8b3cb9dc9b87af5c70c8f54994090ad8fa7e06caaf989ba5806b6798b610c0085015109610b8084015109818183847f0f5f018a2d66025fffd54fef74f203c3e7a33ab8d1d903e64a583b3be9498676610c00880151096105c087015109089050806132e08401525080817f10ac009d2f31395e301635cd6d292978a4012197c24d6e63fb49943a70296136610c0085015109610b8084015109818183847f2696aa2788110c63ebbfd7f92b352ce93b28bbdae57b7cb94bc5885ee439e774610c00880151096105c087015109089050806133008401525080817f2510cae1618713ac17c9ef83f1a67645ed21f454d96bf1f072ca5b463e7f0c28610c0085015109610b8084015109818183847f0d6a07653c64f4112284cb8b23bf73adecaf4ee0fef51998549526f07b6defd7610c00880151096105c08701510908613320840152506132008201518190600109613340830181905261324083015182910961336083018190526132c0830151829109613380830152806001610b80840151098181837f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000006105c087015109089050806133a08401525080817f1d81b9bd5165d63a0d4a8370d37966eb243365d36ca235911564a783f8234cf2610c0085015109610b8084015109818183847f12e294b58fcbc9efab05c245ae07f172040082750d173b002e7d4e0ff7dcb30f610c00880151096105c087015109089050806133c08401525080817f142f93c8919700eddb46a823a63f1726c05e6953fd8ba57ddf6ea70e7ebc8dcf610c0085015109610b8084015109818183847f2707d3cc5788c2cfc0ee9e5f5638da3b90cb6d8b97224a4521073ec9f10826fb610c00880151096105c087015109089050806133e08401525080817f13d3d4db83b42c4d48afa6b5c9cbe3f49703d0caf1fdc301b0d4d3743ab60833610c0085015109610b8084015109818183847f223ed99d38075819043fa85ed3c54f3bfb5d62312139562ca82d9903b1b52e27610c00880151096105c08701510908613400840152506132808201516133608301518291900961342083015280817f1b9e4cecf9d91a534374fa77043701c82dc7e69e6a661b163dd63549ae8d8fa36105c085015109610b8084015109818183847f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c0880151096105c087015109089050806134408401525080817f14c60185e75885d674db4b3f7d4a5694fa6c01aa0f53557b060bc04a4172705e6105c085015109610b8084015109818183847f1a514dd9f80de355133414990bffdc137169ffbf79f1b0988ce4dc4b27adb4e36105c0880151096105c087015109089050806134608401525080817f0566fffbb9f283767505fb50085852d112c8c6f13d7a5194bbb3850e5828e9e86105c085015109610b8084015109818183847f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c0880151096105c087015109089050806134808401525080817f2afd4e77273f1cb3434a4a667929058c156b21573c3f1efc882e708597d716196105c085015109610b8084015109818183847f20198517670312541561a1720d2538ac357df59dafa0d41bd7235a97f2f364376105c0880151096105c087015109086134a0840152506132c0820151613340830151829190096134c08301526132e08201518181613300850151099050806134e084015281816133208501510990508061350084015281816133a08501510990508061352084015281816133408501510990508061354084015281816133c08501510990508061356084015281816133e0850151099050806135808401528181613400850151099050806135a08401528181613420850151099050806135c08401528181613440850151099050806135e084015281816134608501510990508061360084015281816133608501510990508061362084015281816134808501510990508061364084015281816134a08501510990508061366084015281816134c0850151099050806136808401525060206136c083015260206136e083015260206137008301526136808201516137208301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6137408301526000805160206155e183398151915261376083015282600160206136a0850160c06136c0870160055afa141692506136a082015160006134c084015190508282613660860151096134c08501528282820991506134a084015190508282613640860151096134a085015282828209915061348084015190508282613620860151096134808501528282820991506133608401519050828261360086015109613360850152828282099150613460840151905082826135e086015109613460850152828282099150613440840151905082826135c086015109613440850152828282099150613420840151905082826135a08601510961342085015282828209915061340084015190508282613580860151096134008501528282820991506133e084015190508282613560860151096133e08501528282820991506133c084015190508282613540860151096133c085015282828209915061334084015190508282613520860151096133408501528282820991506133a084015190508282613500860151096133a0850152828282099150613320840151905082826134e086015109613320850152828282099150613300840151905082826132e086015109613300850152828282096132e08501819052613300850151909250839150829008905081816133208501510861378084015250613340820151613380830151829190096137a08301526133a0820151806137c08401525080613420830151613380840151096137e08301526133c082015181816133e08501510890508181613400850151086138008401525061336082015161338083015182919009613820830152613440820151818161346085015108613840840152506134c08201516133808301518291900961386083015261348082015181816134a085015108613880840152506137808201516137c083015182908290099050806138a08401528181613800850151099050806138c08401528181613840850151099050806138e0840152818161388085015109905080613900840152506020613940830152602061396083015260206139808301526139008201516139a08301527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593efffffff6139c08301526000805160206155e18339815191526139e08301528260016020613920850160c0613940870160055afa141692506139208201516000613880840151905082826138e086015109613880850152828282099150613840840151905082826138c086015109613840850152828282099150613800840151905082826138a0860151096138008501528282820991506137c084015190508282613780860151096137c08501528282820961378085015250506137c08201516137a083015182919009613a00830152806138008301516137e084015109613a208301528061384083015161382084015109613a408301528061388083015161386084015109613a60830152610a8082015181908009613a808301819052610a80830151829109613aa08301819052610a80830151829109613ac08301819052610a80830151829109613ae08301819052610a80830151829109613b008301819052610a80830151829109613b208301819052610a80830151829109613b408301819052610a80830151829109613b608301819052610a80830151829109613b808301819052610a80830151829109613ba08301819052610a80830151829109613bc08301819052610a80830151829109613be08301819052610a80830151829109613c008301819052610a80830151829109613c208301819052610a80830151829109613c408301819052610a80830151829109613c608301819052610a80830151829109613c808301819052610a80830151829109613ca08301819052610a80830151829109613cc08301819052610a80830151829109613ce0830152610ae082015181908009613d008301819052610ae0830151829109613d208301819052610ae0830151829109613d408301819052610ae0830151829109613d60830152806132e083015161060084015109818183613300860151610640870151090890508181836133208601516106c08701510908613d8084018190526137808401518392509009613da0830152806001613da0840151830309613dc0830152806132e083015161062084015109818183613300860151610660870151090890508181836133208601516106a08701510908613de084018190526137808401518392509009613e008301819052610a808301518291820309613e2083015280610a80830151600109613e4083015280613e20830151613dc084015108613e60830152806001613e6084015109613e80830152806001613e4084015109613ea0830152806137a0830151600109613ec0830152806133a083015161068084015109613ee08301819052613a00830151829109613f00830152806001613f00840151830309613f20830152806001613ec084015109613f40830152806133a0830151610a4084015109613f608301819052613a00830151829109613f808301819052610a808301518291820309613fa083015280610a80830151613ec084015109613fc083015280613fa0830151613f2084015108613fe0830152806133a08301516106e0840151096140008301819052613a008301518291096140208301819052613a80830151829182030961404083015280613a80830151613ec08401510961406083015280614040830151613fe084015108614080830152806133a0830151610700840151096140a08301819052613a008301518291096140c08301819052613aa083015182918203096140e083015280613aa0830151613ec084015109614100830152806140e083015161408084015108614120830152806133a0830151610720840151096141408301819052613a008301518291096141608301819052613ac0830151829182030961418083015280613ac0830151613ec0840151096141a083015280614180830151614120840151086141c0830152806133a0830151610740840151096141e08301819052613a008301518291096142008301819052613ae0830151829182030961422083015280613ae0830151613ec084015109614240830152806142208301516141c084015108614260830152806133a0830151610760840151096142808301819052613a008301518291096142a08301819052613b0083015182918203096142c083015280613b00830151613ec0840151096142e0830152806142c083015161426084015108614300830152806133a0830151610780840151096143208301819052613a008301518291096143408301819052613b20830151829182030961436083015280613b20830151613ec08401510961438083015280614360830151614300840151086143a0830152806133a08301516107a0840151096143c08301819052613a008301518291096143e08301819052613b40830151829182030961440083015280613b40830151613ec084015109614420830152806144008301516143a084015108614440830152806133a08301516107c0840151096144608301819052613a008301518291096144808301819052613b6083015182918203096144a083015280613b60830151613ec0840151096144c0830152806144a0830151614440840151086144e0830152806133a08301516107e0840151096145008301819052613a008301518291096145208301819052613b80830151829182030961454083015280613b80830151613ec084015109614560830152806145408301516144e084015108614580830152806133a0830151610800840151096145a08301819052613a008301518291096145c08301819052613ba083015182918203096145e083015280613ba0830151613ec084015109614600830152806145e083015161458084015108614620830152806133a0830151610820840151096146408301819052613a008301518291096146608301819052613bc0830151829182030961468083015280613bc0830151613ec0840151096146a083015280614680830151614620840151086146c0830152806133a0830151610860840151096146e08301819052613a008301518291096147008301819052613be0830151829182030961472083015280613be0830151613ec084015109614740830152806147208301516146c084015108614760830152806133a0830151610880840151096147808301819052613a008301518291096147a08301819052613c0083015182918203096147c083015280613c00830151613ec0840151096147e0830152806147c083015161476084015108614800830152806133a08301516108a0840151096148208301819052613a008301518291096148408301819052613c20830151829182030961486083015280613c20830151613ec08401510961488083015280614860830151614800840151086148a0830152806133a08301516108c0840151096148c08301819052613a008301518291096148e08301819052613c40830151829182030961490083015280613c40830151613ec084015109614920830152806149008301516148a084015108614940830152806133a08301516108e0840151096149608301819052613a008301518291096149808301819052613c6083015182918203096149a083015280613c60830151613ec0840151096149c0830152806149a0830151614940840151086149e0830152806133a083015161090084015109614a008301819052613a00830151829109614a208301819052613c808301518291820309614a4083015280613c80830151613ec084015109614a6083015280614a408301516149e084015108614a80830152806137a083015161312084015109614aa0830152806137a083015161314084015109614ac0830152806137a083015161316084015109614ae0830152806137a083015161318084015109614b00830152806133a08301516131a084015109614b208301819052613a00830151829109614b408301819052613ca08301518291820309614b6083015280613ca0830151613ec084015109614b8083015280613ca0830151614aa084015109614ba083015280613ca0830151614ac084015109614bc083015280613ca0830151614ae084015109614be083015280613ca0830151614b0084015109614c0083015280614b60830151614a8084015108614c20830152806133a083015161084084015109614c408301819052613a00830151829109614c608301819052613cc08301518291820309614c8083015280613cc0830151613ec084015109614ca083015280614c80830151614c2084015108614cc08301819052610ae0830151829109614ce083015280610ae0830151613f4084015109614d0083015280610ae0830151613fc084015109614d2083015280610ae083015161406084015109614d4083015280610ae083015161410084015109614d6083015280610ae08301516141a084015109614d8083015280610ae083015161424084015109614da083015280610ae08301516142e084015109614dc083015280610ae083015161438084015109614de083015280610ae083015161442084015109614e0083015280610ae08301516144c084015109614e2083015280610ae083015161456084015109614e4083015280610ae083015161460084015109614e6083015280610ae08301516146a084015109614e8083015280610ae083015161474084015109614ea083015280610ae08301516147e084015109614ec083015280610ae083015161488084015109614ee083015280610ae083015161492084015109614f0083015280610ae08301516149c084015109614f2083015280610ae0830151614a6084015109614f4083015280610ae0830151614b8084015109614f6083015280610ae0830151614ba084015109614f8083015280610ae0830151614bc084015109614fa083015280610ae0830151614be084015109614fc083015280610ae0830151614c0084015109614fe083015280610ae0830151614ca08401510961500083015280614ce0830151613e8084015108615020830152806137e0830151600109615040830152806133c0830151610920840151098181836133e08601516109408701510908905081818361340086015161096087015109086150608401819052613a2084015183925090096150808301528060016150808401518303096150a0830152806001615040840151096150c083015280613d008301516150a0840151096150e083015280613d008301516150c084015109615100830152806150e0830151615020840151086151208301528061382083015160010961514083015280613440830151610980840151098181836134608601516109a087015109086151608401819052613a4084015183925090096151808301528060016151808401518303096151a0830152806001615140840151096151c0830152806134408301516109c0840151098181836134608601516109e087015109086151e08401819052613a4084015183925090096152008301819052610a80830151829182030961522083015280610a8083015161514084015109615240830152806152208301516151a0840151086152608301819052613d2083015182910961528083015280613d208301516151c0840151096152a083015280613d20830151615240840151096152c083015280615280830151615120840151086152e08301528061386083015160010961530083015280613480830151610a00840151098181836134a0860151610a2087015109086153208401819052613a6084015183925090096153408301528060016153408401518303096153608301528060016153008401510961538083015280613d40830151615360840151096153a083015280613d40830151615380840151096153c0830152806153a08301516152e0840151086153e08301528061338083015160010961540083015280610b808301516001096154208301526001615440830181815260026154608501526153e084015161548085015284919060409060608160075afa141692506154408201516154a08301526154608201516154c083015260a08201516154e083015260c082015161550083015282600160406154a0850160806154a0870160065afa1416925060e0820151615520830152610100820151615540830152613ea0820151615560830152826001604061552085016060615520870160075afa141692506154a08201516155808301526154c08201516155a08301526155208201516155c08301526155408201516155e0830152826001604061558085016080615580870160065afa14169250610120820151615600830152610140820151615620830152614d00820151615640830152826001604061560085016060615600870160075afa141692506155808201516156608301526155a08201516156808301526156008201516156a08301526156208201516156c0830152826001604061566085016080615660870160065afa141692506102008201516156e0830152610220820151615700830152614d2082015161572083015282600160406156e0850160606156e0870160075afa141692506156608201516157408301526156808201516157608301526156e08201516157808301526157008201516157a0830152826001604061574085016080615740870160065afa141692507f299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a906157c08301527f21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a956157e0830152614d4082015161580083015282600160406157c0850160606157c0870160075afa141692506157408201516158208301526157608201516158408301526157c08201516158608301526157e0820151615880830152826001604061582085016080615820870160065afa141692507f19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a36158a08301527f2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b66158c0830152614d608201516158e083015282600160406158a0850160606158a0870160075afa141692506158208201516159008301526158408201516159208301526158a08201516159408301526158c0820151615960830152826001604061590085016080615900870160065afa141692507f17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e6159808301527f1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b6159a0830152614d808201516159c0830152826001604061598085016060615980870160075afa141692506159008201516159e0830152615920820151615a00830152615980820151615a208301526159a0820151615a4083015282600160406159e0850160806159e0870160065afa141692507f05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056615a608301527f2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c615a80830152614da0820151615aa08301528260016040615a6085016060615a60870160075afa141692506159e0820151615ac0830152615a00820151615ae0830152615a60820151615b00830152615a80820151615b208301528260016040615ac085016080615ac0870160065afa141692507f22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4615b408301527f0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0615b60830152614dc0820151615b808301528260016040615b4085016060615b40870160075afa14169250615ac0820151615ba0830152615ae0820151615bc0830152615b40820151615be0830152615b60820151615c008301528260016040615ba085016080615ba0870160065afa141692507f19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8615c208301527f0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78615c40830152614de0820151615c608301528260016040615c2085016060615c20870160075afa14169250615ba0820151615c80830152615bc0820151615ca0830152615c20820151615cc0830152615c40820151615ce08301528260016040615c8085016080615c80870160065afa141692507f1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5615d008301527f1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098615d20830152614e00820151615d408301528260016040615d0085016060615d00870160075afa14169250615c80820151615d60830152615ca0820151615d80830152615d00820151615da0830152615d20820151615dc08301528260016040615d6085016080615d60870160065afa141692507f203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b615de08301527f04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097615e00830152614e20820151615e208301528260016040615de085016060615de0870160075afa14169250615d60820151615e40830152615d80820151615e60830152615de0820151615e80830152615e00820151615ea08301528260016040615e4085016080615e40870160065afa141692507f20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91615ec08301527f2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd615ee0830152614e40820151615f008301528260016040615ec085016060615ec0870160075afa14169250615e40820151615f20830152615e60820151615f40830152615ec0820151615f60830152615ee0820151615f808301528260016040615f2085016080615f20870160065afa141692507f09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa615fa08301527f13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289615fc0830152614e60820151615fe08301528260016040615fa085016060615fa0870160075afa14169250615f20820151616000830152615f40820151616020830152615fa0820151616040830152615fc0820151616060830152826001604061600085016080616000870160065afa141692507f08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f817436160808301527f08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c6160a0830152614e808201516160c0830152826001604061608085016060616080870160075afa141692506160008201516160e08301526160208201516161008301526160808201516161208301526160a082015161614083015282600160406160e0850160806160e0870160065afa141692507f25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe6161608301527f2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a616180830152614ea08201516161a0830152826001604061616085016060616160870160075afa141692506160e08201516161c08301526161008201516161e083015261616082015161620083015261618082015161622083015282600160406161c0850160806161c0870160065afa141692507f07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad6162408301527f255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960616260830152614ec0820151616280830152826001604061624085016060616240870160075afa141692506161c08201516162a08301526161e08201516162c08301526162408201516162e083015261626082015161630083015282600160406162a0850160806162a0870160065afa141692507f136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d226163208301527f0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac616340830152614ee0820151616360830152826001604061632085016060616320870160075afa141692506162a08201516163808301526162c08201516163a08301526163208201516163c08301526163408201516163e0830152826001604061638085016080616380870160065afa141692507f0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c4529746164008301527f0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3616420830152614f00820151616440830152826001604061640085016060616400870160075afa141692506163808201516164608301526163a08201516164808301526164008201516164a08301526164208201516164c0830152826001604061646085016080616460870160065afa141692507f1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e6164e08301527f050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb616500830152614f2082015161652083015282600160406164e0850160606164e0870160075afa141692506164608201516165408301526164808201516165608301526164e08201516165808301526165008201516165a0830152826001604061654085016080616540870160065afa141692507f1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf06165c08301527f0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb3916165e0830152614f4082015161660083015282600160406165c0850160606165c0870160075afa141692506165408201516166208301526165608201516166408301526165c08201516166608301526165e0820151616680830152826001604061662085016080616620870160065afa141692506104608201516166a08301526104808201516166c0830152614f608201516166e083015282600160406166a0850160606166a0870160075afa141692506166208201516167008301526166408201516167208301526166a08201516167408301526166c0820151616760830152826001604061670085016080616700870160065afa141692506104a08201516167808301526104c08201516167a0830152614f808201516167c0830152826001604061678085016060616780870160075afa141692506167008201516167e08301526167208201516168008301526167808201516168208301526167a082015161684083015282600160406167e0850160806167e0870160065afa141692506104e0820151616860830152610500820151616880830152614fa08201516168a0830152826001604061686085016060616860870160075afa141692506167e08201516168c08301526168008201516168e083015261686082015161690083015261688082015161692083015282600160406168c0850160806168c0870160065afa14169250610520820151616940830152610540820151616960830152614fc0820151616980830152826001604061694085016060616940870160075afa141692506168c08201516169a08301526168e08201516169c08301526169408201516169e0830152616960820151616a0083015282600160406169a0850160806169a0870160065afa14169250610560820151616a20830152610580820151616a40830152614fe0820151616a608301528260016040616a2085016060616a20870160075afa141692506169a0820151616a808301526169c0820151616aa0830152616a20820151616ac0830152616a40820151616ae08301528260016040616a8085016080616a80870160065afa141692506103c0820151616b008301526103e0820151616b20830152615000820151616b408301528260016040616b0085016060616b00870160075afa14169250616a80820151616b60830152616aa0820151616b80830152616b00820151616ba0830152616b20820151616bc08301528260016040616b6085016080616b60870160065afa14169250610300820151616be0830152610320820151616c00830152615100820151616c208301528260016040616be085016060616be0870160075afa14169250616b60820151616c40830152616b80820151616c60830152616be0820151616c80830152616c00820151616ca08301528260016040616c4085016080616c40870160065afa14169250610340820151616cc0830152610360820151616ce08301526152a0820151616d008301528260016040616cc085016060616cc0870160075afa14169250616c40820151616d20830152616c60820151616d40830152616cc0820151616d60830152616ce0820151616d808301528260016040616d2085016080616d20870160065afa14169250610380820151616da08301526103a0820151616dc08301526152c0820151616de08301528260016040616da085016060616da0870160075afa14169250616d20820151616e00830152616d40820151616e20830152616da0820151616e40830152616dc0820151616e608301528260016040616e0085016080616e00870160065afa141692506101c0820151616e808301526101e0820151616ea08301526153c0820151616ec08301528260016040616e8085016060616e80870160075afa14169250616e00820151616ee0830152616e20820151616f00830152616e80820151616f20830152616ea0820151616f408301528260016040616ee085016080616ee0870160065afa14169250610b20820151616f60830152610b40820151616f808301526154008201518103616fa0830152508160016040616f6084016060616f60860160075afa14169150616ee0810151616fc0820152616f00810151616fe0820152616f60810151617000820152616f808101516170208201528160016040616fc084016080616fc0860160065afa14169150610bc0810151617040820152610be0810151617060820152615420810151617080820152816001604061704084016060617040860160075afa14169150616fc08101516170a0820152616fe08101516170c08201526170408101516170e082015261706081015161710082015281600160406170a0840160806170a0860160065afa141691506170a08101516171208201526170c08101516171408201527f198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c26171608201527f1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed6171808201527f090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b6171a08201527f12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa6171c0820152610bc08101516171e0820152610be08101516172008201527f26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d6172208201527f30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e6172408201527f16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c1456172608201527f2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff61728082015281600160206171208401610180617120860160085afa61712093909301516001149214161691505092915050565b604051806172800160405280610394906020820280368337509192915050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561548057615480615441565b604052919050565b600082601f83011261549957600080fd5b813567ffffffffffffffff8111156154b3576154b3615441565b6154c6601f8201601f1916602001615457565b8181528460208386010111156154db57600080fd5b816020850160208301376000918101602001919091529392505050565b6000806040838503121561550b57600080fd5b823567ffffffffffffffff8082111561552357600080fd5b818501915085601f83011261553757600080fd5b813560208282111561554b5761554b615441565b8160051b61555a828201615457565b928352848101820192828101908a85111561557457600080fd5b958301955b8487101561559257863582529583019590830190615579565b97505050860135925050808211156155a957600080fd5b506155b685828601615488565b915050925092905056fe30644e72e131a029b85045b68181585d97816a916871ca8d3c208c16d87cfd4730644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001a2646970667358221220433d439b616c9b0984aa273d65d03bbc910a575c3fc62a9c5097577b1baffcd564736f6c63430008120033","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 ce7fffe1..e64dc963 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":"rootBalances","type":"uint256[]"},{"components":[{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"indexed":false,"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","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":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","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":"0x60a060405234801561001057600080fd5b5060405162001bed38038062001bed8339810160408190526100319161009b565b61003a3361004b565b6001600160a01b03166080526100cb565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000602082840312156100ad57600080fd5b81516001600160a01b03811681146100c457600080fd5b9392505050565b608051611b06620000e76000396000610b050152611b066000f3fe608060405234801561001057600080fd5b50600436106100935760003560e01c8063a3c4bcf811610066578063a3c4bcf814610114578063c7ddca0e14610137578063c8e581471461014a578063da64a7501461016d578063f2fde38b1461018057600080fd5b806319b339681461009857806349ce8997146100c1578063715018a6146100ef5780638da5cb5b146100f9575b600080fd5b6100ab6100a636600461117d565b610193565b6040516100b89190611251565b60405180910390f35b6100e16100cf36600461117d565b60036020526000908152604090205481565b6040519081526020016100b8565b6100f76104aa565b005b6000546040516001600160a01b0390911681526020016100b8565b61012761012236600461117d565b6104be565b6040516100b8949392919061126b565b6100f76101453660046113ea565b61071e565b61015d6101583660046115af565b6109bf565b60405190151581526020016100b8565b6100f761017b36600461161c565b610b85565b6100f761018e366004611763565b610f51565b6101be6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600260205260409020546102155760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b6000828152600260205260409020546001906102329082906117a2565b81548110610242576102426117bb565b906000526020600020906004020160405180608001604052908160008201805461026b906117d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610297906117d1565b80156102e45780601f106102b9576101008083540402835291602001916102e4565b820191906000526020600020905b8154815290600101906020018083116102c757829003601f168201915b505050505081526020016001820180546102fd906117d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610329906117d1565b80156103765780601f1061034b57610100808354040283529160200191610376565b820191906000526020600020905b81548152906001019060200180831161035957829003601f168201915b5050505050815260200160028201805461038f906117d1565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb906117d1565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b50505050508152602001600382018054610421906117d1565b80601f016020809104026020016040519081016040528092919081815260200182805461044d906117d1565b801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b5050505050815250509050919050565b6104b2610fca565b6104bc6000611024565b565b600181815481106104ce57600080fd5b90600052602060002090600402016000915090508060000180546104f1906117d1565b80601f016020809104026020016040519081016040528092919081815260200182805461051d906117d1565b801561056a5780601f1061053f5761010080835404028352916020019161056a565b820191906000526020600020905b81548152906001019060200180831161054d57829003601f168201915b50505050509080600101805461057f906117d1565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab906117d1565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b50505050509080600201805461060d906117d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610639906117d1565b80156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b50505050509080600301805461069b906117d1565b80601f01602080910402602001604051908101604052809291908181526020018280546106c7906117d1565b80156107145780601f106106e957610100808354040283529160200191610714565b820191906000526020600020905b8154815290600101906020018083116106f757829003601f168201915b5050505050905084565b610726610fca565b60005b8151811015610984576000828281518110610746576107466117bb565b602002602001015160000151604051602001610762919061180b565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915080156107d85760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c72656164792076657269666965640000000000000000604482015260640161020c565b60018484815181106107ec576107ec6117bb565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061081e9082611876565b50602082015160018201906108339082611876565b50604082015160028201906108489082611876565b506060820151600382019061085d9082611876565b5050600154600084815260026020526040902055508351849084908110610886576108866117bb565b602002602001015160000151516000141580156108c257508383815181106108b0576108b06117bb565b60200260200101516020015151600014155b80156108ed57508383815181106108db576108db6117bb565b60200260200101516040015151600014155b80156109185750838381518110610906576109066117bb565b60200260200101516060015151600014155b61096f5760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b606482015260840161020c565b5050808061097c90611936565b915050610729565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516109b4919061194f565b60405180910390a150565b6000826001815181106109d4576109d46117bb565b6020026020010151600360008481526020019081526020016000206000015414610a335760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b60025b8351811015610aed57838181518110610a5157610a516117bb565b602002602001015160036000858152602001908152602001600020600101600283610a7c91906117a2565b81548110610a8c57610a8c6117bb565b906000526020600020015414610adb5760405162461bcd60e51b8152602060048201526014602482015273496e76616c696420726f6f742062616c616e636560601b604482015260640161020c565b80610ae581611936565b915050610a36565b50604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610b3c90869088906004016119ec565b602060405180830381865afa158015610b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7d9190611a11565b949350505050565b610b8d610fca565b83600003610bd05760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b8151835114610c3f5760405162461bcd60e51b815260206004820152603560248201527f526f6f74206c696162696c69746965732073756d7320616e64206c696162696c6044820152740d2e8d2cae640dceadac4cae440dad2e6dac2e8c6d605b1b606482015260840161020c565b6000825167ffffffffffffffff811115610c5b57610c5b6112c3565b604051908082528060200260200182016040528015610c8e57816020015b6060815260200190600190039081610c795790505b5090506000835167ffffffffffffffff811115610cad57610cad6112c3565b604051908082528060200260200182016040528015610ce057816020015b6060815260200190600190039081610ccb5790505b50905060005b8451811015610e8657848181518110610d0157610d016117bb565b60200260200101516020015151600014158015610d3d5750848181518110610d2b57610d2b6117bb565b60200260200101516000015151600014155b610d825760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b604482015260640161020c565b858181518110610d9457610d946117bb565b6020026020010151600003610dfd5760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161020c565b848181518110610e0f57610e0f6117bb565b602002602001015160000151838281518110610e2d57610e2d6117bb565b6020026020010181905250848181518110610e4a57610e4a6117bb565b602002602001015160200151828281518110610e6857610e686117bb565b60200260200101819052508080610e7e90611936565b915050610ce6565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260038352939093208251815592518051929392610ed19260018501920190611074565b5060408201518051610eed9160028401916020909101906110bf565b5060608201518051610f099160038401916020909101906110bf565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610f4193929190611a33565b60405180910390a2505050505050565b610f59610fca565b6001600160a01b038116610fbe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161020c565b610fc781611024565b50565b6000546001600160a01b031633146104bc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156110af579160200282015b828111156110af578251825591602001919060010190611094565b506110bb929150611111565b5090565b828054828255906000526020600020908101928215611105579160200282015b8281111561110557825182906110f59082611876565b50916020019190600101906110df565b506110bb929150611126565b5b808211156110bb5760008155600101611112565b808211156110bb57600061113a8282611143565b50600101611126565b50805461114f906117d1565b6000825580601f1061115f575050565b601f016020900490600052602060002090810190610fc79190611111565b60006020828403121561118f57600080fd5b5035919050565b60005b838110156111b1578181015183820152602001611199565b50506000910152565b600081518084526111d2816020860160208601611196565b601f01601f19169290920160200192915050565b60008151608084526111fb60808501826111ba565b90506020830151848203602086015261121482826111ba565b9150506040830151848203604086015261122e82826111ba565b9150506060830151848203606086015261124882826111ba565b95945050505050565b60208152600061126460208301846111e6565b9392505050565b60808152600061127e60808301876111ba565b828103602084015261129081876111ba565b905082810360408401526112a481866111ba565b905082810360608401526112b881856111ba565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156112fc576112fc6112c3565b60405290565b6040805190810167ffffffffffffffff811182821017156112fc576112fc6112c3565b604051601f8201601f1916810167ffffffffffffffff8111828210171561134e5761134e6112c3565b604052919050565b600067ffffffffffffffff821115611370576113706112c3565b5060051b60200190565b600082601f83011261138b57600080fd5b813567ffffffffffffffff8111156113a5576113a56112c3565b6113b8601f8201601f1916602001611325565b8181528460208386010111156113cd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156113fd57600080fd5b823567ffffffffffffffff8082111561141557600080fd5b818501915085601f83011261142957600080fd5b813561143c61143782611356565b611325565b81815260059190911b8301840190848101908883111561145b57600080fd5b8585015b8381101561153c5780358581111561147657600080fd5b86016080818c03601f1901121561148d5760008081fd5b6114956112d9565b88820135878111156114a75760008081fd5b6114b58d8b8386010161137a565b825250604080830135888111156114cc5760008081fd5b6114da8e8c8387010161137a565b8b84015250606080840135898111156114f35760008081fd5b6115018f8d8388010161137a565b8385015250608084013591508882111561151b5760008081fd5b6115298e8c8487010161137a565b908301525084525091860191860161145f565b5098975050505050505050565b600082601f83011261155a57600080fd5b8135602061156a61143783611356565b82815260059290921b8401810191818101908684111561158957600080fd5b8286015b848110156115a4578035835291830191830161158d565b509695505050505050565b6000806000606084860312156115c457600080fd5b833567ffffffffffffffff808211156115dc57600080fd5b6115e88783880161137a565b945060208601359150808211156115fe57600080fd5b5061160b86828701611549565b925050604084013590509250925092565b6000806000806080858703121561163257600080fd5b84359350602085013567ffffffffffffffff8082111561165157600080fd5b61165d88838901611549565b9450604087013591508082111561167357600080fd5b818701915087601f83011261168757600080fd5b6116946114378335611356565b82358082526020808301929160051b8501018a8111156116b357600080fd5b602085015b8181101561174f5784813511156116ce57600080fd5b803586016040818e03601f190112156116e657600080fd5b6116ee611302565b60208201358781111561170057600080fd5b61170f8f60208386010161137a565b82525060408201358781111561172457600080fd5b6117338f60208386010161137a565b60208301525080865250506020840193506020810190506116b8565b50979a969950976060013596505050505050565b60006020828403121561177557600080fd5b81356001600160a01b038116811461126457600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156117b5576117b561178c565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806117e557607f821691505b60208210810361180557634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161181d818460208701611196565b9190910192915050565b601f82111561187157600081815260208120601f850160051c8101602086101561184e5750805b601f850160051c820191505b8181101561186d5782815560010161185a565b5050505b505050565b815167ffffffffffffffff811115611890576118906112c3565b6118a48161189e84546117d1565b84611827565b602080601f8311600181146118d957600084156118c15750858301515b600019600386901b1c1916600185901b17855561186d565b600085815260208120601f198616915b82811015611908578886015182559484019460019091019084016118e9565b50858210156119265787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000600182016119485761194861178c565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119a457603f198886030184526119928583516111e6565b94509285019290850190600101611976565b5092979650505050505050565b600081518084526020808501945080840160005b838110156119e1578151875295820195908201906001016119c5565b509495945050505050565b6040815260006119ff60408301856119b1565b828103602084015261124881856111ba565b600060208284031215611a2357600080fd5b8151801515811461126457600080fd5b83815260006020606081840152611a4d60608401866119b1565b6040848203818601528186518084528484019150848160051b85010185890160005b83811015611abf57868303601f1901855281518051878552611a93888601826111ba565b918a0151858303868c0152919050611aab81836111ba565b968a01969450505090870190600101611a6f565b50909b9a505050505050505050505056fea2646970667358221220929937337ad16c6172e2163bc45ed3913fe51f8e5ce8cac3ac8073d01593edd764736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b50600436106100935760003560e01c8063a3c4bcf811610066578063a3c4bcf814610114578063c7ddca0e14610137578063c8e581471461014a578063da64a7501461016d578063f2fde38b1461018057600080fd5b806319b339681461009857806349ce8997146100c1578063715018a6146100ef5780638da5cb5b146100f9575b600080fd5b6100ab6100a636600461117d565b610193565b6040516100b89190611251565b60405180910390f35b6100e16100cf36600461117d565b60036020526000908152604090205481565b6040519081526020016100b8565b6100f76104aa565b005b6000546040516001600160a01b0390911681526020016100b8565b61012761012236600461117d565b6104be565b6040516100b8949392919061126b565b6100f76101453660046113ea565b61071e565b61015d6101583660046115af565b6109bf565b60405190151581526020016100b8565b6100f761017b36600461161c565b610b85565b6100f761018e366004611763565b610f51565b6101be6040518060800160405280606081526020016060815260200160608152602001606081525090565b6000828152600260205260409020546102155760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b6000828152600260205260409020546001906102329082906117a2565b81548110610242576102426117bb565b906000526020600020906004020160405180608001604052908160008201805461026b906117d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610297906117d1565b80156102e45780601f106102b9576101008083540402835291602001916102e4565b820191906000526020600020905b8154815290600101906020018083116102c757829003601f168201915b505050505081526020016001820180546102fd906117d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610329906117d1565b80156103765780601f1061034b57610100808354040283529160200191610376565b820191906000526020600020905b81548152906001019060200180831161035957829003601f168201915b5050505050815260200160028201805461038f906117d1565b80601f01602080910402602001604051908101604052809291908181526020018280546103bb906117d1565b80156104085780601f106103dd57610100808354040283529160200191610408565b820191906000526020600020905b8154815290600101906020018083116103eb57829003601f168201915b50505050508152602001600382018054610421906117d1565b80601f016020809104026020016040519081016040528092919081815260200182805461044d906117d1565b801561049a5780601f1061046f5761010080835404028352916020019161049a565b820191906000526020600020905b81548152906001019060200180831161047d57829003601f168201915b5050505050815250509050919050565b6104b2610fca565b6104bc6000611024565b565b600181815481106104ce57600080fd5b90600052602060002090600402016000915090508060000180546104f1906117d1565b80601f016020809104026020016040519081016040528092919081815260200182805461051d906117d1565b801561056a5780601f1061053f5761010080835404028352916020019161056a565b820191906000526020600020905b81548152906001019060200180831161054d57829003601f168201915b50505050509080600101805461057f906117d1565b80601f01602080910402602001604051908101604052809291908181526020018280546105ab906117d1565b80156105f85780601f106105cd576101008083540402835291602001916105f8565b820191906000526020600020905b8154815290600101906020018083116105db57829003601f168201915b50505050509080600201805461060d906117d1565b80601f0160208091040260200160405190810160405280929190818152602001828054610639906117d1565b80156106865780601f1061065b57610100808354040283529160200191610686565b820191906000526020600020905b81548152906001019060200180831161066957829003601f168201915b50505050509080600301805461069b906117d1565b80601f01602080910402602001604051908101604052809291908181526020018280546106c7906117d1565b80156107145780601f106106e957610100808354040283529160200191610714565b820191906000526020600020905b8154815290600101906020018083116106f757829003601f168201915b5050505050905084565b610726610fca565b60005b8151811015610984576000828281518110610746576107466117bb565b602002602001015160000151604051602001610762919061180b565b60408051601f1981840301815291815281516020928301206000818152600290935291205490915080156107d85760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c72656164792076657269666965640000000000000000604482015260640161020c565b60018484815181106107ec576107ec6117bb565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061081e9082611876565b50602082015160018201906108339082611876565b50604082015160028201906108489082611876565b506060820151600382019061085d9082611876565b5050600154600084815260026020526040902055508351849084908110610886576108866117bb565b602002602001015160000151516000141580156108c257508383815181106108b0576108b06117bb565b60200260200101516020015151600014155b80156108ed57508383815181106108db576108db6117bb565b60200260200101516040015151600014155b80156109185750838381518110610906576109066117bb565b60200260200101516060015151600014155b61096f5760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b606482015260840161020c565b5050808061097c90611936565b915050610729565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a0454658816040516109b4919061194f565b60405180910390a150565b6000826001815181106109d4576109d46117bb565b6020026020010151600360008481526020019081526020016000206000015414610a335760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b60025b8351811015610aed57838181518110610a5157610a516117bb565b602002602001015160036000858152602001908152602001600020600101600283610a7c91906117a2565b81548110610a8c57610a8c6117bb565b906000526020600020015414610adb5760405162461bcd60e51b8152602060048201526014602482015273496e76616c696420726f6f742062616c616e636560601b604482015260640161020c565b80610ae581611936565b915050610a36565b50604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610b3c90869088906004016119ec565b602060405180830381865afa158015610b59573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7d9190611a11565b949350505050565b610b8d610fca565b83600003610bd05760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b604482015260640161020c565b8151835114610c3f5760405162461bcd60e51b815260206004820152603560248201527f526f6f74206c696162696c69746965732073756d7320616e64206c696162696c6044820152740d2e8d2cae640dceadac4cae440dad2e6dac2e8c6d605b1b606482015260840161020c565b6000825167ffffffffffffffff811115610c5b57610c5b6112c3565b604051908082528060200260200182016040528015610c8e57816020015b6060815260200190600190039081610c795790505b5090506000835167ffffffffffffffff811115610cad57610cad6112c3565b604051908082528060200260200182016040528015610ce057816020015b6060815260200190600190039081610ccb5790505b50905060005b8451811015610e8657848181518110610d0157610d016117bb565b60200260200101516020015151600014158015610d3d5750848181518110610d2b57610d2b6117bb565b60200260200101516000015151600014155b610d825760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b604482015260640161020c565b858181518110610d9457610d946117bb565b6020026020010151600003610dfd5760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b606482015260840161020c565b848181518110610e0f57610e0f6117bb565b602002602001015160000151838281518110610e2d57610e2d6117bb565b6020026020010181905250848181518110610e4a57610e4a6117bb565b602002602001015160200151828281518110610e6857610e686117bb565b60200260200101819052508080610e7e90611936565b915050610ce6565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260038352939093208251815592518051929392610ed19260018501920190611074565b5060408201518051610eed9160028401916020909101906110bf565b5060608201518051610f099160038401916020909101906110bf565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610f4193929190611a33565b60405180910390a2505050505050565b610f59610fca565b6001600160a01b038116610fbe5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161020c565b610fc781611024565b50565b6000546001600160a01b031633146104bc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161020c565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b8280548282559060005260206000209081019282156110af579160200282015b828111156110af578251825591602001919060010190611094565b506110bb929150611111565b5090565b828054828255906000526020600020908101928215611105579160200282015b8281111561110557825182906110f59082611876565b50916020019190600101906110df565b506110bb929150611126565b5b808211156110bb5760008155600101611112565b808211156110bb57600061113a8282611143565b50600101611126565b50805461114f906117d1565b6000825580601f1061115f575050565b601f016020900490600052602060002090810190610fc79190611111565b60006020828403121561118f57600080fd5b5035919050565b60005b838110156111b1578181015183820152602001611199565b50506000910152565b600081518084526111d2816020860160208601611196565b601f01601f19169290920160200192915050565b60008151608084526111fb60808501826111ba565b90506020830151848203602086015261121482826111ba565b9150506040830151848203604086015261122e82826111ba565b9150506060830151848203606086015261124882826111ba565b95945050505050565b60208152600061126460208301846111e6565b9392505050565b60808152600061127e60808301876111ba565b828103602084015261129081876111ba565b905082810360408401526112a481866111ba565b905082810360608401526112b881856111ba565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff811182821017156112fc576112fc6112c3565b60405290565b6040805190810167ffffffffffffffff811182821017156112fc576112fc6112c3565b604051601f8201601f1916810167ffffffffffffffff8111828210171561134e5761134e6112c3565b604052919050565b600067ffffffffffffffff821115611370576113706112c3565b5060051b60200190565b600082601f83011261138b57600080fd5b813567ffffffffffffffff8111156113a5576113a56112c3565b6113b8601f8201601f1916602001611325565b8181528460208386010111156113cd57600080fd5b816020850160208301376000918101602001919091529392505050565b600060208083850312156113fd57600080fd5b823567ffffffffffffffff8082111561141557600080fd5b818501915085601f83011261142957600080fd5b813561143c61143782611356565b611325565b81815260059190911b8301840190848101908883111561145b57600080fd5b8585015b8381101561153c5780358581111561147657600080fd5b86016080818c03601f1901121561148d5760008081fd5b6114956112d9565b88820135878111156114a75760008081fd5b6114b58d8b8386010161137a565b825250604080830135888111156114cc5760008081fd5b6114da8e8c8387010161137a565b8b84015250606080840135898111156114f35760008081fd5b6115018f8d8388010161137a565b8385015250608084013591508882111561151b5760008081fd5b6115298e8c8487010161137a565b908301525084525091860191860161145f565b5098975050505050505050565b600082601f83011261155a57600080fd5b8135602061156a61143783611356565b82815260059290921b8401810191818101908684111561158957600080fd5b8286015b848110156115a4578035835291830191830161158d565b509695505050505050565b6000806000606084860312156115c457600080fd5b833567ffffffffffffffff808211156115dc57600080fd5b6115e88783880161137a565b945060208601359150808211156115fe57600080fd5b5061160b86828701611549565b925050604084013590509250925092565b6000806000806080858703121561163257600080fd5b84359350602085013567ffffffffffffffff8082111561165157600080fd5b61165d88838901611549565b9450604087013591508082111561167357600080fd5b818701915087601f83011261168757600080fd5b6116946114378335611356565b82358082526020808301929160051b8501018a8111156116b357600080fd5b602085015b8181101561174f5784813511156116ce57600080fd5b803586016040818e03601f190112156116e657600080fd5b6116ee611302565b60208201358781111561170057600080fd5b61170f8f60208386010161137a565b82525060408201358781111561172457600080fd5b6117338f60208386010161137a565b60208301525080865250506020840193506020810190506116b8565b50979a969950976060013596505050505050565b60006020828403121561177557600080fd5b81356001600160a01b038116811461126457600080fd5b634e487b7160e01b600052601160045260246000fd5b818103818111156117b5576117b561178c565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c908216806117e557607f821691505b60208210810361180557634e487b7160e01b600052602260045260246000fd5b50919050565b6000825161181d818460208701611196565b9190910192915050565b601f82111561187157600081815260208120601f850160051c8101602086101561184e5750805b601f850160051c820191505b8181101561186d5782815560010161185a565b5050505b505050565b815167ffffffffffffffff811115611890576118906112c3565b6118a48161189e84546117d1565b84611827565b602080601f8311600181146118d957600084156118c15750858301515b600019600386901b1c1916600185901b17855561186d565b600085815260208120601f198616915b82811015611908578886015182559484019460019091019084016118e9565b50858210156119265787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000600182016119485761194861178c565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119a457603f198886030184526119928583516111e6565b94509285019290850190600101611976565b5092979650505050505050565b600081518084526020808501945080840160005b838110156119e1578151875295820195908201906001016119c5565b509495945050505050565b6040815260006119ff60408301856119b1565b828103602084015261124881856111ba565b600060208284031215611a2357600080fd5b8151801515811461126457600080fd5b83815260006020606081840152611a4d60608401866119b1565b6040848203818601528186518084528484019150848160051b85010185890160005b83811015611abf57868303601f1901855281518051878552611a93888601826111ba565b918a0151858303868c0152919050611aab81836111ba565b968a01969450505090870190600101611a6f565b50909b9a505050505050505050505056fea2646970667358221220929937337ad16c6172e2163bc45ed3913fe51f8e5ce8cac3ac8073d01593edd764736f6c63430008120033","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"},{"internalType":"uint16","name":"mstLevels","type":"uint16"},{"internalType":"uint16","name":"assetsCount","type":"uint16"},{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"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":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"indexed":false,"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","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":[],"name":"config","outputs":[{"internalType":"uint16","name":"mstLevels","type":"uint16"},{"internalType":"uint16","name":"assetsCount","type":"uint16"},{"internalType":"uint8","name":"balanceByteRange","type":"uint8"}],"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":"name","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"internalType":"struct Summa.Cryptocurrency[]","name":"cryptocurrencies","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":"0x60a06040523480156200001157600080fd5b5060405162001cf938038062001cf9833981016040819052620000349162000110565b6200003f33620000a8565b6001600160a01b03939093166080526040805160608101825261ffff938416808252929093166020840181905260ff90941692018290526001805463ffffffff1916909117620100009093029290921760ff60201b191664010000000090910217905562000181565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b805161ffff811681146200010b57600080fd5b919050565b600080600080608085870312156200012757600080fd5b84516001600160a01b03811681146200013f57600080fd5b93506200014f60208601620000f8565b92506200015f60408601620000f8565b9150606085015160ff811681146200017657600080fd5b939692955090935050565b608051611b5c6200019d6000396000610b5b0152611b5c6000f3fe608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a3c4bcf811610066578063a3c4bcf814610169578063c7ddca0e1461018c578063c8e581471461019f578063da64a750146101c2578063f2fde38b146101d557600080fd5b806319b33968146100a357806349ce8997146100cc578063715018a6146100fa57806379502c55146101045780638da5cb5b1461014e575b600080fd5b6100b66100b13660046111d3565b6101e8565b6040516100c391906112a7565b60405180910390f35b6100ec6100da3660046111d3565b60046020526000908152604090205481565b6040519081526020016100c3565b610102610500565b005b60015461012a9061ffff8082169162010000810490911690640100000000900460ff1683565b6040805161ffff948516815293909216602084015260ff16908201526060016100c3565b6000546040516001600160a01b0390911681526020016100c3565b61017c6101773660046111d3565b610514565b6040516100c394939291906112c1565b61010261019a366004611440565b610774565b6101b26101ad366004611605565b610a15565b60405190151581526020016100c3565b6101026101d0366004611672565b610bdb565b6101026101e33660046117b9565b610fa7565b6102136040518060800160405280606081526020016060815260200160608152602001606081525090565b60008281526003602052604090205461026a5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b600082815260036020526040902054600290610288906001906117f8565b8154811061029857610298611811565b90600052602060002090600402016040518060800160405290816000820180546102c190611827565b80601f01602080910402602001604051908101604052809291908181526020018280546102ed90611827565b801561033a5780601f1061030f5761010080835404028352916020019161033a565b820191906000526020600020905b81548152906001019060200180831161031d57829003601f168201915b5050505050815260200160018201805461035390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461037f90611827565b80156103cc5780601f106103a1576101008083540402835291602001916103cc565b820191906000526020600020905b8154815290600101906020018083116103af57829003601f168201915b505050505081526020016002820180546103e590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461041190611827565b801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b5050505050815260200160038201805461047790611827565b80601f01602080910402602001604051908101604052809291908181526020018280546104a390611827565b80156104f05780601f106104c5576101008083540402835291602001916104f0565b820191906000526020600020905b8154815290600101906020018083116104d357829003601f168201915b5050505050815250509050919050565b610508611020565b610512600061107a565b565b6002818154811061052457600080fd5b906000526020600020906004020160009150905080600001805461054790611827565b80601f016020809104026020016040519081016040528092919081815260200182805461057390611827565b80156105c05780601f10610595576101008083540402835291602001916105c0565b820191906000526020600020905b8154815290600101906020018083116105a357829003601f168201915b5050505050908060010180546105d590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461060190611827565b801561064e5780601f106106235761010080835404028352916020019161064e565b820191906000526020600020905b81548152906001019060200180831161063157829003601f168201915b50505050509080600201805461066390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461068f90611827565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b5050505050908060030180546106f190611827565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90611827565b801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b5050505050905084565b61077c611020565b60005b81518110156109da57600082828151811061079c5761079c611811565b6020026020010151600001516040516020016107b89190611861565b60408051601f19818403018152918152815160209283012060008181526003909352912054909150801561082e5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610261565b600284848151811061084257610842611811565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061087490826118cc565b506020820151600182019061088990826118cc565b506040820151600282019061089e90826118cc565b50606082015160038201906108b390826118cc565b50506002546000848152600360205260409020555083518490849081106108dc576108dc611811565b60200260200101516000015151600014158015610918575083838151811061090657610906611811565b60200260200101516020015151600014155b8015610943575083838151811061093157610931611811565b60200260200101516040015151600014155b801561096e575083838151811061095c5761095c611811565b60200260200101516060015151600014155b6109c55760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610261565b505080806109d29061198c565b91505061077f565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a045465881604051610a0a91906119a5565b60405180910390a150565b600082600181518110610a2a57610a2a611811565b6020026020010151600460008481526020019081526020016000206000015414610a895760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b60025b8351811015610b4357838181518110610aa757610aa7611811565b602002602001015160046000858152602001908152602001600020600101600283610ad291906117f8565b81548110610ae257610ae2611811565b906000526020600020015414610b315760405162461bcd60e51b8152602060048201526014602482015273496e76616c696420726f6f742062616c616e636560601b6044820152606401610261565b80610b3b8161198c565b915050610a8c565b50604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610b929086908890600401611a42565b602060405180830381865afa158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190611a67565b949350505050565b610be3611020565b83600003610c265760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b8151835114610c955760405162461bcd60e51b815260206004820152603560248201527f526f6f74206c696162696c69746965732073756d7320616e64206c696162696c6044820152740d2e8d2cae640dceadac4cae440dad2e6dac2e8c6d605b1b6064820152608401610261565b6000825167ffffffffffffffff811115610cb157610cb1611319565b604051908082528060200260200182016040528015610ce457816020015b6060815260200190600190039081610ccf5790505b5090506000835167ffffffffffffffff811115610d0357610d03611319565b604051908082528060200260200182016040528015610d3657816020015b6060815260200190600190039081610d215790505b50905060005b8451811015610edc57848181518110610d5757610d57611811565b60200260200101516020015151600014158015610d935750848181518110610d8157610d81611811565b60200260200101516000015151600014155b610dd85760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b6044820152606401610261565b858181518110610dea57610dea611811565b6020026020010151600003610e535760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610261565b848181518110610e6557610e65611811565b602002602001015160000151838281518110610e8357610e83611811565b6020026020010181905250848181518110610ea057610ea0611811565b602002602001015160200151828281518110610ebe57610ebe611811565b60200260200101819052508080610ed49061198c565b915050610d3c565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260048352939093208251815592518051929392610f2792600185019201906110ca565b5060408201518051610f43916002840191602090910190611115565b5060608201518051610f5f916003840191602090910190611115565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610f9793929190611a89565b60405180910390a2505050505050565b610faf611020565b6001600160a01b0381166110145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610261565b61101d8161107a565b50565b6000546001600160a01b031633146105125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610261565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215611105579160200282015b828111156111055782518255916020019190600101906110ea565b50611111929150611167565b5090565b82805482825590600052602060002090810192821561115b579160200282015b8281111561115b578251829061114b90826118cc565b5091602001919060010190611135565b5061111192915061117c565b5b808211156111115760008155600101611168565b808211156111115760006111908282611199565b5060010161117c565b5080546111a590611827565b6000825580601f106111b5575050565b601f01602090049060005260206000209081019061101d9190611167565b6000602082840312156111e557600080fd5b5035919050565b60005b838110156112075781810151838201526020016111ef565b50506000910152565b600081518084526112288160208601602086016111ec565b601f01601f19169290920160200192915050565b60008151608084526112516080850182611210565b90506020830151848203602086015261126a8282611210565b915050604083015184820360408601526112848282611210565b9150506060830151848203606086015261129e8282611210565b95945050505050565b6020815260006112ba602083018461123c565b9392505050565b6080815260006112d46080830187611210565b82810360208401526112e68187611210565b905082810360408401526112fa8186611210565b9050828103606084015261130e8185611210565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561135257611352611319565b60405290565b6040805190810167ffffffffffffffff8111828210171561135257611352611319565b604051601f8201601f1916810167ffffffffffffffff811182821017156113a4576113a4611319565b604052919050565b600067ffffffffffffffff8211156113c6576113c6611319565b5060051b60200190565b600082601f8301126113e157600080fd5b813567ffffffffffffffff8111156113fb576113fb611319565b61140e601f8201601f191660200161137b565b81815284602083860101111561142357600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561145357600080fd5b823567ffffffffffffffff8082111561146b57600080fd5b818501915085601f83011261147f57600080fd5b813561149261148d826113ac565b61137b565b81815260059190911b830184019084810190888311156114b157600080fd5b8585015b83811015611592578035858111156114cc57600080fd5b86016080818c03601f190112156114e35760008081fd5b6114eb61132f565b88820135878111156114fd5760008081fd5b61150b8d8b838601016113d0565b825250604080830135888111156115225760008081fd5b6115308e8c838701016113d0565b8b84015250606080840135898111156115495760008081fd5b6115578f8d838801016113d0565b838501525060808401359150888211156115715760008081fd5b61157f8e8c848701016113d0565b90830152508452509186019186016114b5565b5098975050505050505050565b600082601f8301126115b057600080fd5b813560206115c061148d836113ac565b82815260059290921b840181019181810190868411156115df57600080fd5b8286015b848110156115fa57803583529183019183016115e3565b509695505050505050565b60008060006060848603121561161a57600080fd5b833567ffffffffffffffff8082111561163257600080fd5b61163e878388016113d0565b9450602086013591508082111561165457600080fd5b506116618682870161159f565b925050604084013590509250925092565b6000806000806080858703121561168857600080fd5b84359350602085013567ffffffffffffffff808211156116a757600080fd5b6116b38883890161159f565b945060408701359150808211156116c957600080fd5b818701915087601f8301126116dd57600080fd5b6116ea61148d83356113ac565b82358082526020808301929160051b8501018a81111561170957600080fd5b602085015b818110156117a557848135111561172457600080fd5b803586016040818e03601f1901121561173c57600080fd5b611744611358565b60208201358781111561175657600080fd5b6117658f6020838601016113d0565b82525060408201358781111561177a57600080fd5b6117898f6020838601016113d0565b602083015250808652505060208401935060208101905061170e565b50979a969950976060013596505050505050565b6000602082840312156117cb57600080fd5b81356001600160a01b03811681146112ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561180b5761180b6117e2565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061183b57607f821691505b60208210810361185b57634e487b7160e01b600052602260045260246000fd5b50919050565b600082516118738184602087016111ec565b9190910192915050565b601f8211156118c757600081815260208120601f850160051c810160208610156118a45750805b601f850160051c820191505b818110156118c3578281556001016118b0565b5050505b505050565b815167ffffffffffffffff8111156118e6576118e6611319565b6118fa816118f48454611827565b8461187d565b602080601f83116001811461192f57600084156119175750858301515b600019600386901b1c1916600185901b1785556118c3565b600085815260208120601f198616915b8281101561195e5788860151825594840194600190910190840161193f565b508582101561197c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001820161199e5761199e6117e2565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119fa57603f198886030184526119e885835161123c565b945092850192908501906001016119cc565b5092979650505050505050565b600081518084526020808501945080840160005b83811015611a3757815187529582019590820190600101611a1b565b509495945050505050565b604081526000611a556040830185611a07565b828103602084015261129e8185611210565b600060208284031215611a7957600080fd5b815180151581146112ba57600080fd5b83815260006020606081840152611aa36060840186611a07565b6040848203818601528186518084528484019150848160051b85010185890160005b83811015611b1557868303601f1901855281518051878552611ae988860182611210565b918a0151858303868c0152919050611b018183611210565b968a01969450505090870190600101611ac5565b50909b9a505050505050505050505056fea26469706673582212201433ee99272373b6723c253f90ffe01940889b9641f0849319f2f32a36cb145a64736f6c63430008120033","deployedBytecode":"0x608060405234801561001057600080fd5b506004361061009e5760003560e01c8063a3c4bcf811610066578063a3c4bcf814610169578063c7ddca0e1461018c578063c8e581471461019f578063da64a750146101c2578063f2fde38b146101d557600080fd5b806319b33968146100a357806349ce8997146100cc578063715018a6146100fa57806379502c55146101045780638da5cb5b1461014e575b600080fd5b6100b66100b13660046111d3565b6101e8565b6040516100c391906112a7565b60405180910390f35b6100ec6100da3660046111d3565b60046020526000908152604090205481565b6040519081526020016100c3565b610102610500565b005b60015461012a9061ffff8082169162010000810490911690640100000000900460ff1683565b6040805161ffff948516815293909216602084015260ff16908201526060016100c3565b6000546040516001600160a01b0390911681526020016100c3565b61017c6101773660046111d3565b610514565b6040516100c394939291906112c1565b61010261019a366004611440565b610774565b6101b26101ad366004611605565b610a15565b60405190151581526020016100c3565b6101026101d0366004611672565b610bdb565b6101026101e33660046117b9565b610fa7565b6102136040518060800160405280606081526020016060815260200160608152602001606081525090565b60008281526003602052604090205461026a5760405162461bcd60e51b81526020600482015260146024820152731059191c995cdcc81b9bdd081d995c9a599a595960621b60448201526064015b60405180910390fd5b600082815260036020526040902054600290610288906001906117f8565b8154811061029857610298611811565b90600052602060002090600402016040518060800160405290816000820180546102c190611827565b80601f01602080910402602001604051908101604052809291908181526020018280546102ed90611827565b801561033a5780601f1061030f5761010080835404028352916020019161033a565b820191906000526020600020905b81548152906001019060200180831161031d57829003601f168201915b5050505050815260200160018201805461035390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461037f90611827565b80156103cc5780601f106103a1576101008083540402835291602001916103cc565b820191906000526020600020905b8154815290600101906020018083116103af57829003601f168201915b505050505081526020016002820180546103e590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461041190611827565b801561045e5780601f106104335761010080835404028352916020019161045e565b820191906000526020600020905b81548152906001019060200180831161044157829003601f168201915b5050505050815260200160038201805461047790611827565b80601f01602080910402602001604051908101604052809291908181526020018280546104a390611827565b80156104f05780601f106104c5576101008083540402835291602001916104f0565b820191906000526020600020905b8154815290600101906020018083116104d357829003601f168201915b5050505050815250509050919050565b610508611020565b610512600061107a565b565b6002818154811061052457600080fd5b906000526020600020906004020160009150905080600001805461054790611827565b80601f016020809104026020016040519081016040528092919081815260200182805461057390611827565b80156105c05780601f10610595576101008083540402835291602001916105c0565b820191906000526020600020905b8154815290600101906020018083116105a357829003601f168201915b5050505050908060010180546105d590611827565b80601f016020809104026020016040519081016040528092919081815260200182805461060190611827565b801561064e5780601f106106235761010080835404028352916020019161064e565b820191906000526020600020905b81548152906001019060200180831161063157829003601f168201915b50505050509080600201805461066390611827565b80601f016020809104026020016040519081016040528092919081815260200182805461068f90611827565b80156106dc5780601f106106b1576101008083540402835291602001916106dc565b820191906000526020600020905b8154815290600101906020018083116106bf57829003601f168201915b5050505050908060030180546106f190611827565b80601f016020809104026020016040519081016040528092919081815260200182805461071d90611827565b801561076a5780601f1061073f5761010080835404028352916020019161076a565b820191906000526020600020905b81548152906001019060200180831161074d57829003601f168201915b5050505050905084565b61077c611020565b60005b81518110156109da57600082828151811061079c5761079c611811565b6020026020010151600001516040516020016107b89190611861565b60408051601f19818403018152918152815160209283012060008181526003909352912054909150801561082e5760405162461bcd60e51b815260206004820152601860248201527f4164647265737320616c726561647920766572696669656400000000000000006044820152606401610261565b600284848151811061084257610842611811565b6020908102919091018101518254600181018455600093845291909220825160049092020190819061087490826118cc565b506020820151600182019061088990826118cc565b506040820151600282019061089e90826118cc565b50606082015160038201906108b390826118cc565b50506002546000848152600360205260409020555083518490849081106108dc576108dc611811565b60200260200101516000015151600014158015610918575083838151811061090657610906611811565b60200260200101516020015151600014155b8015610943575083838151811061093157610931611811565b60200260200101516040015151600014155b801561096e575083838151811061095c5761095c611811565b60200260200101516060015151600014155b6109c55760405162461bcd60e51b815260206004820152602260248201527f496e76616c69642070726f6f66206f662061646472657373206f776e65727368604482015261069760f41b6064820152608401610261565b505080806109d29061198c565b91505061077f565b507f382315d4d56a6035e1899bffe77d9becefaf5f2650e4323b27854857a045465881604051610a0a91906119a5565b60405180910390a150565b600082600181518110610a2a57610a2a611811565b6020026020010151600460008481526020019081526020016000206000015414610a895760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b60025b8351811015610b4357838181518110610aa757610aa7611811565b602002602001015160046000858152602001908152602001600020600101600283610ad291906117f8565b81548110610ae257610ae2611811565b906000526020600020015414610b315760405162461bcd60e51b8152602060048201526014602482015273496e76616c696420726f6f742062616c616e636560601b6044820152606401610261565b80610b3b8161198c565b915050610a8c565b50604051630bd205a960e41b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063bd205a9090610b929086908890600401611a42565b602060405180830381865afa158015610baf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610bd39190611a67565b949350505050565b610be3611020565b83600003610c265760405162461bcd60e51b815260206004820152601060248201526f125b9d985b1a59081354d5081c9bdbdd60821b6044820152606401610261565b8151835114610c955760405162461bcd60e51b815260206004820152603560248201527f526f6f74206c696162696c69746965732073756d7320616e64206c696162696c6044820152740d2e8d2cae640dceadac4cae440dad2e6dac2e8c6d605b1b6064820152608401610261565b6000825167ffffffffffffffff811115610cb157610cb1611319565b604051908082528060200260200182016040528015610ce457816020015b6060815260200190600190039081610ccf5790505b5090506000835167ffffffffffffffff811115610d0357610d03611319565b604051908082528060200260200182016040528015610d3657816020015b6060815260200190600190039081610d215790505b50905060005b8451811015610edc57848181518110610d5757610d57611811565b60200260200101516020015151600014158015610d935750848181518110610d8157610d81611811565b60200260200101516000015151600014155b610dd85760405162461bcd60e51b8152602060048201526016602482015275496e76616c69642063727970746f63757272656e637960501b6044820152606401610261565b858181518110610dea57610dea611811565b6020026020010151600003610e535760405162461bcd60e51b815260206004820152602960248201527f416c6c20726f6f742073756d732073686f756c642062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610261565b848181518110610e6557610e65611811565b602002602001015160000151838281518110610e8357610e83611811565b6020026020010181905250848181518110610ea057610ea0611811565b602002602001015160200151828281518110610ebe57610ebe611811565b60200260200101819052508080610ed49061198c565b915050610d3c565b5060408051608081018252878152602080820188815282840186905260608301859052600087815260048352939093208251815592518051929392610f2792600185019201906110ca565b5060408201518051610f43916002840191602090910190611115565b5060608201518051610f5f916003840191602090910190611115565b50905050827f88bfc7389cb831ea0208ff106da6f5c9f88036ba084f1eb008d2788d3d45998d878787604051610f9793929190611a89565b60405180910390a2505050505050565b610faf611020565b6001600160a01b0381166110145760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610261565b61101d8161107a565b50565b6000546001600160a01b031633146105125760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610261565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215611105579160200282015b828111156111055782518255916020019190600101906110ea565b50611111929150611167565b5090565b82805482825590600052602060002090810192821561115b579160200282015b8281111561115b578251829061114b90826118cc565b5091602001919060010190611135565b5061111192915061117c565b5b808211156111115760008155600101611168565b808211156111115760006111908282611199565b5060010161117c565b5080546111a590611827565b6000825580601f106111b5575050565b601f01602090049060005260206000209081019061101d9190611167565b6000602082840312156111e557600080fd5b5035919050565b60005b838110156112075781810151838201526020016111ef565b50506000910152565b600081518084526112288160208601602086016111ec565b601f01601f19169290920160200192915050565b60008151608084526112516080850182611210565b90506020830151848203602086015261126a8282611210565b915050604083015184820360408601526112848282611210565b9150506060830151848203606086015261129e8282611210565b95945050505050565b6020815260006112ba602083018461123c565b9392505050565b6080815260006112d46080830187611210565b82810360208401526112e68187611210565b905082810360408401526112fa8186611210565b9050828103606084015261130e8185611210565b979650505050505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff8111828210171561135257611352611319565b60405290565b6040805190810167ffffffffffffffff8111828210171561135257611352611319565b604051601f8201601f1916810167ffffffffffffffff811182821017156113a4576113a4611319565b604052919050565b600067ffffffffffffffff8211156113c6576113c6611319565b5060051b60200190565b600082601f8301126113e157600080fd5b813567ffffffffffffffff8111156113fb576113fb611319565b61140e601f8201601f191660200161137b565b81815284602083860101111561142357600080fd5b816020850160208301376000918101602001919091529392505050565b6000602080838503121561145357600080fd5b823567ffffffffffffffff8082111561146b57600080fd5b818501915085601f83011261147f57600080fd5b813561149261148d826113ac565b61137b565b81815260059190911b830184019084810190888311156114b157600080fd5b8585015b83811015611592578035858111156114cc57600080fd5b86016080818c03601f190112156114e35760008081fd5b6114eb61132f565b88820135878111156114fd5760008081fd5b61150b8d8b838601016113d0565b825250604080830135888111156115225760008081fd5b6115308e8c838701016113d0565b8b84015250606080840135898111156115495760008081fd5b6115578f8d838801016113d0565b838501525060808401359150888211156115715760008081fd5b61157f8e8c848701016113d0565b90830152508452509186019186016114b5565b5098975050505050505050565b600082601f8301126115b057600080fd5b813560206115c061148d836113ac565b82815260059290921b840181019181810190868411156115df57600080fd5b8286015b848110156115fa57803583529183019183016115e3565b509695505050505050565b60008060006060848603121561161a57600080fd5b833567ffffffffffffffff8082111561163257600080fd5b61163e878388016113d0565b9450602086013591508082111561165457600080fd5b506116618682870161159f565b925050604084013590509250925092565b6000806000806080858703121561168857600080fd5b84359350602085013567ffffffffffffffff808211156116a757600080fd5b6116b38883890161159f565b945060408701359150808211156116c957600080fd5b818701915087601f8301126116dd57600080fd5b6116ea61148d83356113ac565b82358082526020808301929160051b8501018a81111561170957600080fd5b602085015b818110156117a557848135111561172457600080fd5b803586016040818e03601f1901121561173c57600080fd5b611744611358565b60208201358781111561175657600080fd5b6117658f6020838601016113d0565b82525060408201358781111561177a57600080fd5b6117898f6020838601016113d0565b602083015250808652505060208401935060208101905061170e565b50979a969950976060013596505050505050565b6000602082840312156117cb57600080fd5b81356001600160a01b03811681146112ba57600080fd5b634e487b7160e01b600052601160045260246000fd5b8181038181111561180b5761180b6117e2565b92915050565b634e487b7160e01b600052603260045260246000fd5b600181811c9082168061183b57607f821691505b60208210810361185b57634e487b7160e01b600052602260045260246000fd5b50919050565b600082516118738184602087016111ec565b9190910192915050565b601f8211156118c757600081815260208120601f850160051c810160208610156118a45750805b601f850160051c820191505b818110156118c3578281556001016118b0565b5050505b505050565b815167ffffffffffffffff8111156118e6576118e6611319565b6118fa816118f48454611827565b8461187d565b602080601f83116001811461192f57600084156119175750858301515b600019600386901b1c1916600185901b1785556118c3565b600085815260208120601f198616915b8281101561195e5788860151825594840194600190910190840161193f565b508582101561197c5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b60006001820161199e5761199e6117e2565b5060010190565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b828110156119fa57603f198886030184526119e885835161123c565b945092850192908501906001016119cc565b5092979650505050505050565b600081518084526020808501945080840160005b83811015611a3757815187529582019590820190600101611a1b565b509495945050505050565b604081526000611a556040830185611a07565b828103602084015261129e8185611210565b600060208284031215611a7957600080fd5b815180151581146112ba57600080fd5b83815260006020606081840152611aa36060840186611a07565b6040848203818601528186518084528484019150848160051b85010185890160005b83811015611b1557868303601f1901855281518051878552611ae988860182611210565b918a0151858303868c0152919050611b018183611210565b968a01969450505090870190600101611ac5565b50909b9a505050505050505050505056fea26469706673582212201433ee99272373b6723c253f90ffe01940889b9641f0849319f2f32a36cb145a64736f6c63430008120033","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 fec31af2..b2235df0 100644 --- a/backend/src/contracts/generated/inclusion_verifier.rs +++ b/backend/src/contracts/generated/inclusion_verifier.rs @@ -40,8 +40,8 @@ pub mod inclusion_verifier { 91, 80, 97, - 85, - 234, + 86, + 54, 128, 98, 0, @@ -114,7 +114,7 @@ pub mod inclusion_verifier { 4, 97, 84, - 172, + 248, 86, 91, 97, @@ -150,8 +150,8 @@ pub mod inclusion_verifier { 0, 99, 97, - 83, - 213, + 84, + 33, 86, 91, 96, @@ -162,7 +162,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 149, + 225, 131, 57, 129, @@ -182,7 +182,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 117, + 193, 131, 57, 129, @@ -208,7 +208,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 117, + 193, 131, 57, 129, @@ -226,7 +226,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 117, + 193, 131, 57, 129, @@ -246,7 +246,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 117, + 193, 131, 57, 129, @@ -321,38 +321,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 23, - 175, - 181, - 151, - 60, - 64, - 93, - 45, - 110, - 247, - 161, - 187, - 189, - 195, - 82, - 9, - 206, - 144, - 152, - 247, - 97, - 135, - 3, - 174, + 16, + 30, + 50, + 32, + 159, + 188, + 42, + 253, + 218, + 46, + 171, + 8, + 238, + 211, + 227, + 233, + 50, + 62, + 205, + 146, + 229, + 198, + 185, + 80, + 130, 4, - 169, - 51, - 139, - 234, - 235, - 220, - 151, + 185, + 72, + 222, + 26, + 229, + 243, 96, 0, 131, @@ -3225,7 +3225,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 149, + 225, 131, 57, 129, @@ -6001,13 +6001,19 @@ pub mod inclusion_verifier { 128, 97, 6, - 128, + 0, 131, 1, 81, - 96, - 2, - 9, + 130, + 3, + 97, + 6, + 32, + 132, + 1, + 81, + 8, 97, 31, 160, @@ -6016,20 +6022,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 6, - 0, + 31, + 160, 131, 1, 81, - 130, - 3, 97, 6, - 32, + 128, 132, 1, 81, - 8, + 9, 97, 31, 192, @@ -6039,14 +6043,14 @@ pub mod inclusion_verifier { 144, 82, 97, - 31, - 160, + 6, + 0, 131, 1, 81, 130, 145, - 9, + 8, 97, 31, 224, @@ -6056,15 +6060,15 @@ pub mod inclusion_verifier { 128, 97, 6, - 0, + 64, 131, 1, 81, 130, 3, 97, - 6, - 64, + 31, + 224, 132, 1, 81, @@ -6074,23 +6078,18 @@ pub mod inclusion_verifier { 0, 131, 1, + 129, + 144, 82, - 128, 97, - 32, - 0, + 30, + 224, 131, 1, 81, 130, - 3, - 97, - 31, - 224, - 132, - 1, - 81, - 8, + 145, + 9, 97, 32, 32, @@ -6099,16 +6098,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 6, - 96, + 32, + 32, 131, 1, 81, - 130, - 3, 97, - 6, - 32, + 31, + 128, 132, 1, 81, @@ -6126,32 +6123,35 @@ pub mod inclusion_verifier { 131, 1, 81, - 130, - 3, 97, - 32, + 4, 32, 132, 1, 81, - 8, + 9, 97, 32, 96, 131, 1, - 129, - 144, 82, + 128, 97, - 30, - 224, + 6, + 32, 131, 1, 81, 130, - 145, - 9, + 3, + 97, + 6, + 0, + 132, + 1, + 81, + 8, 97, 32, 128, @@ -6166,32 +6166,29 @@ pub mod inclusion_verifier { 1, 81, 97, - 31, + 6, 128, 132, 1, 81, - 8, + 9, 97, 32, 160, 131, 1, + 129, + 144, 82, - 128, 97, + 6, 32, - 160, 131, 1, 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, + 130, + 145, + 8, 97, 32, 192, @@ -6200,37 +6197,36 @@ pub mod inclusion_verifier { 82, 128, 97, - 26, - 0, + 6, + 96, 131, 1, 81, + 130, + 3, 97, - 29, - 160, + 32, + 192, 132, 1, 81, - 9, + 8, 97, 32, 224, 131, 1, + 129, + 144, 82, - 128, 97, - 32, + 30, 224, 131, 1, 81, - 97, - 26, - 96, - 132, - 1, - 81, + 130, + 145, 9, 97, 33, @@ -6240,14 +6236,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 6, - 32, + 33, + 0, 131, 1, 81, 97, - 6, - 0, + 32, + 96, 132, 1, 81, @@ -6260,36 +6256,37 @@ pub mod inclusion_verifier { 82, 128, 97, - 6, - 128, + 33, + 32, 131, 1, 81, - 130, - 3, 97, - 33, + 4, 32, 132, 1, 81, - 8, + 9, 97, 33, 64, 131, 1, - 129, - 144, 82, + 128, 97, - 33, + 26, 0, 131, 1, 81, - 130, - 145, + 97, + 29, + 160, + 132, + 1, + 81, 9, 97, 33, @@ -6305,12 +6302,12 @@ pub mod inclusion_verifier { 1, 81, 97, - 32, - 192, + 26, + 96, 132, 1, 81, - 8, + 9, 97, 33, 128, @@ -6319,54 +6316,56 @@ pub mod inclusion_verifier { 82, 128, 97, - 33, - 128, + 6, + 32, 131, 1, 81, 97, - 4, - 32, + 6, + 0, 132, 1, 81, - 9, + 8, 97, 33, 160, 131, 1, - 129, - 144, 82, + 128, 97, - 33, - 96, + 6, + 128, 131, 1, 81, 130, - 145, + 3, + 97, + 33, + 160, + 132, + 1, + 81, 8, 97, 33, 192, 131, 1, + 129, + 144, 82, - 128, 97, 33, - 192, + 128, 131, 1, 81, - 97, - 4, - 32, - 132, - 1, - 81, + 130, + 145, 9, 97, 33, @@ -6376,52 +6375,54 @@ pub mod inclusion_verifier { 82, 128, 97, - 9, - 32, + 33, + 224, 131, 1, 81, - 130, - 3, - 96, + 97, + 33, + 64, + 132, 1, + 81, 8, 97, 34, 0, 131, 1, - 129, - 144, 82, + 128, 97, - 19, + 34, 0, 131, 1, 81, - 130, - 145, - 9, 97, - 34, + 4, 32, - 131, + 132, 1, - 82, - 128, + 81, + 9, 97, 34, 32, 131, 1, - 81, + 129, + 144, + 82, 97, 33, 224, - 132, + 131, 1, 81, + 130, + 145, 8, 97, 34, @@ -6449,19 +6450,94 @@ pub mod inclusion_verifier { 131, 1, 82, + 128, 97, 9, - 128, - 130, + 32, + 131, 1, 81, + 130, + 3, + 96, + 1, + 8, + 97, + 34, + 128, + 131, + 1, 129, 144, + 82, + 97, + 19, + 0, + 131, + 1, + 81, + 130, + 145, + 9, + 97, + 34, + 160, + 131, + 1, + 82, 128, + 97, + 34, + 160, + 131, + 1, + 81, + 97, + 34, + 96, + 132, + 1, + 81, + 8, + 97, + 34, + 192, + 131, + 1, + 82, + 128, + 97, + 34, + 192, + 131, + 1, + 81, + 97, + 4, + 32, + 132, + 1, + 81, 9, 97, 34, + 224, + 131, + 1, + 82, + 97, + 9, 128, + 130, + 1, + 81, + 129, + 144, + 128, + 9, + 97, + 35, + 0, 131, 1, 82, @@ -6475,15 +6551,15 @@ pub mod inclusion_verifier { 130, 3, 97, - 34, - 128, + 35, + 0, 132, 1, 81, 8, 97, - 34, - 160, + 35, + 32, 131, 1, 129, @@ -6499,35 +6575,35 @@ pub mod inclusion_verifier { 145, 9, 97, - 34, - 192, + 35, + 64, 131, 1, 82, 128, 97, - 34, - 192, + 35, + 64, 131, 1, 81, 97, 34, - 96, + 224, 132, 1, 81, 8, 97, - 34, - 224, + 35, + 96, 131, 1, 82, 128, 97, - 34, - 224, + 35, + 96, 131, 1, 81, @@ -6540,7 +6616,7 @@ pub mod inclusion_verifier { 9, 97, 35, - 0, + 128, 131, 1, 82, @@ -6562,7 +6638,7 @@ pub mod inclusion_verifier { 8, 97, 35, - 32, + 160, 131, 1, 129, @@ -6579,34 +6655,34 @@ pub mod inclusion_verifier { 9, 97, 35, - 64, + 192, 131, 1, 82, 128, 97, 35, - 64, + 192, 131, 1, 81, 97, 35, - 0, + 128, 132, 1, 81, 8, 97, 35, - 96, + 224, 131, 1, 82, 128, 97, 35, - 96, + 224, 131, 1, 81, @@ -6618,8 +6694,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 35, - 128, + 36, + 0, 131, 1, 82, @@ -6636,8 +6712,8 @@ pub mod inclusion_verifier { 1, 8, 97, - 35, - 160, + 36, + 32, 131, 1, 82, @@ -6656,8 +6732,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 35, - 192, + 36, + 64, 131, 1, 129, @@ -6673,8 +6749,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 35, - 224, + 36, + 96, 131, 1, 129, @@ -6691,7 +6767,7 @@ pub mod inclusion_verifier { 8, 97, 36, - 0, + 128, 131, 1, 129, @@ -6708,29 +6784,29 @@ pub mod inclusion_verifier { 8, 97, 36, - 32, + 160, 131, 1, 82, 128, 97, 36, - 32, + 160, 131, 1, 81, 130, 3, 97, - 35, - 160, + 36, + 32, 132, 1, 81, 8, 97, 36, - 64, + 192, 131, 1, 82, @@ -6750,14 +6826,14 @@ pub mod inclusion_verifier { 9, 97, 36, - 96, + 224, 131, 1, 82, 128, 97, 36, - 96, + 224, 131, 1, 81, @@ -6769,8 +6845,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 36, - 128, + 37, + 0, 131, 1, 129, @@ -6786,8 +6862,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 36, - 160, + 37, + 32, 131, 1, 82, @@ -6806,15 +6882,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 36, - 192, + 37, + 64, 131, 1, 82, 128, 97, - 36, - 192, + 37, + 64, 131, 1, 81, @@ -6826,8 +6902,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 36, - 224, + 37, + 96, 131, 1, 129, @@ -6844,15 +6920,15 @@ pub mod inclusion_verifier { 8, 97, 37, - 0, + 128, 131, 1, 129, 144, 82, 97, - 36, - 160, + 37, + 32, 131, 1, 81, @@ -6861,7 +6937,7 @@ pub mod inclusion_verifier { 9, 97, 37, - 32, + 160, 131, 1, 82, @@ -6881,14 +6957,14 @@ pub mod inclusion_verifier { 9, 97, 37, - 64, + 192, 131, 1, 82, 128, 97, 37, - 64, + 192, 131, 1, 81, @@ -6901,7 +6977,7 @@ pub mod inclusion_verifier { 8, 97, 37, - 96, + 224, 131, 1, 129, @@ -6917,8 +6993,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 37, - 128, + 38, + 0, 131, 1, 129, @@ -6926,7 +7002,7 @@ pub mod inclusion_verifier { 82, 97, 37, - 32, + 160, 131, 1, 81, @@ -6934,8 +7010,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 37, - 160, + 38, + 32, 131, 1, 82, @@ -6954,15 +7030,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 37, - 192, + 38, + 64, 131, 1, 82, 128, 97, - 37, - 192, + 38, + 64, 131, 1, 81, @@ -6974,8 +7050,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 37, - 224, + 38, + 96, 131, 1, 129, @@ -6992,15 +7068,15 @@ pub mod inclusion_verifier { 8, 97, 38, - 0, + 128, 131, 1, 129, 144, 82, 97, - 37, - 160, + 38, + 32, 131, 1, 81, @@ -7009,7 +7085,7 @@ pub mod inclusion_verifier { 9, 97, 38, - 32, + 160, 131, 1, 129, @@ -7026,7 +7102,7 @@ pub mod inclusion_verifier { 9, 97, 38, - 64, + 192, 131, 1, 82, @@ -7042,14 +7118,14 @@ pub mod inclusion_verifier { 9, 97, 38, - 96, + 224, 131, 1, 82, 128, 97, 38, - 96, + 224, 131, 1, 81, @@ -7061,15 +7137,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 38, - 128, + 39, + 0, 131, 1, 82, 128, 97, - 38, - 128, + 39, + 0, 131, 1, 81, @@ -7081,8 +7157,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 38, - 160, + 39, + 32, 131, 1, 129, @@ -7098,8 +7174,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 38, - 192, + 39, + 64, 131, 1, 82, @@ -7145,15 +7221,15 @@ pub mod inclusion_verifier { 162, 9, 97, - 38, - 224, + 39, + 96, 131, 1, 82, 128, 97, - 38, - 224, + 39, + 96, 131, 1, 81, @@ -7166,14 +7242,14 @@ pub mod inclusion_verifier { 9, 97, 39, - 0, + 128, 131, 1, 82, 128, 97, 39, - 0, + 128, 131, 1, 81, @@ -7186,7 +7262,7 @@ pub mod inclusion_verifier { 8, 97, 39, - 32, + 160, 131, 1, 129, @@ -7203,15 +7279,15 @@ pub mod inclusion_verifier { 8, 97, 39, - 64, + 192, 131, 1, 129, 144, 82, 97, - 38, - 192, + 39, + 64, 131, 1, 81, @@ -7220,7 +7296,7 @@ pub mod inclusion_verifier { 9, 97, 39, - 96, + 224, 131, 1, 82, @@ -7266,15 +7342,15 @@ pub mod inclusion_verifier { 43, 9, 97, - 39, - 128, + 40, + 0, 131, 1, 82, 128, 97, - 39, - 128, + 40, + 0, 131, 1, 81, @@ -7286,15 +7362,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 39, - 160, + 40, + 32, 131, 1, 82, 128, 97, - 39, - 160, + 40, + 32, 131, 1, 81, @@ -7306,8 +7382,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 39, - 192, + 40, + 64, 131, 1, 129, @@ -7323,8 +7399,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 39, - 224, + 40, + 96, 131, 1, 129, @@ -7332,7 +7408,7 @@ pub mod inclusion_verifier { 82, 97, 39, - 96, + 224, 131, 1, 81, @@ -7341,7 +7417,7 @@ pub mod inclusion_verifier { 9, 97, 40, - 0, + 128, 131, 1, 82, @@ -7388,14 +7464,14 @@ pub mod inclusion_verifier { 9, 97, 40, - 32, + 160, 131, 1, 82, 128, 97, 40, - 32, + 160, 131, 1, 81, @@ -7408,14 +7484,14 @@ pub mod inclusion_verifier { 9, 97, 40, - 64, + 192, 131, 1, 82, 128, 97, 40, - 64, + 192, 131, 1, 81, @@ -7428,7 +7504,7 @@ pub mod inclusion_verifier { 8, 97, 40, - 96, + 224, 131, 1, 129, @@ -7444,8 +7520,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 40, - 128, + 41, + 0, 131, 1, 129, @@ -7453,7 +7529,7 @@ pub mod inclusion_verifier { 82, 97, 40, - 0, + 128, 131, 1, 81, @@ -7461,8 +7537,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 40, - 160, + 41, + 32, 131, 1, 129, @@ -7478,15 +7554,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 40, - 192, + 41, + 64, 131, 1, 82, 128, 97, - 40, - 192, + 41, + 64, 131, 1, 81, @@ -7494,14 +7570,14 @@ pub mod inclusion_verifier { 3, 97, 38, - 64, + 192, 132, 1, 81, 8, 97, - 40, - 224, + 41, + 96, 131, 1, 129, @@ -7509,7 +7585,7 @@ pub mod inclusion_verifier { 82, 97, 36, - 64, + 192, 131, 1, 81, @@ -7518,34 +7594,34 @@ pub mod inclusion_verifier { 9, 97, 41, - 0, + 128, 131, 1, 82, 128, 97, 41, - 0, + 128, 131, 1, 81, 97, - 35, - 128, + 36, + 0, 132, 1, 81, 8, 97, 41, - 32, + 160, 131, 1, 82, 128, 97, 41, - 32, + 160, 131, 1, 81, @@ -7558,7 +7634,7 @@ pub mod inclusion_verifier { 9, 97, 41, - 64, + 192, 131, 1, 82, @@ -7578,14 +7654,14 @@ pub mod inclusion_verifier { 9, 97, 41, - 96, + 224, 131, 1, 82, 128, 97, 41, - 96, + 224, 131, 1, 81, @@ -7597,8 +7673,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 41, - 128, + 42, + 0, 131, 1, 129, @@ -7614,8 +7690,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 41, - 160, + 42, + 32, 131, 1, 82, @@ -7634,15 +7710,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 41, - 192, + 42, + 64, 131, 1, 82, 128, 97, - 41, - 192, + 42, + 64, 131, 1, 81, @@ -7654,8 +7730,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 41, - 224, + 42, + 96, 131, 1, 129, @@ -7672,15 +7748,15 @@ pub mod inclusion_verifier { 8, 97, 42, - 0, + 128, 131, 1, 129, 144, 82, 97, - 41, - 160, + 42, + 32, 131, 1, 81, @@ -7689,7 +7765,7 @@ pub mod inclusion_verifier { 9, 97, 42, - 32, + 160, 131, 1, 129, @@ -7706,7 +7782,7 @@ pub mod inclusion_verifier { 9, 97, 42, - 64, + 192, 131, 1, 82, @@ -7752,14 +7828,14 @@ pub mod inclusion_verifier { 9, 97, 42, - 96, + 224, 131, 1, 82, 128, 97, 42, - 96, + 224, 131, 1, 81, @@ -7771,15 +7847,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 42, - 128, + 43, + 0, 131, 1, 82, 128, 97, - 42, - 128, + 43, + 0, 131, 1, 81, @@ -7791,8 +7867,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 42, - 160, + 43, + 32, 131, 1, 129, @@ -7808,8 +7884,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 42, - 192, + 43, + 64, 131, 1, 82, @@ -7855,15 +7931,15 @@ pub mod inclusion_verifier { 157, 9, 97, - 42, - 224, + 43, + 96, 131, 1, 82, 128, 97, - 42, - 224, + 43, + 96, 131, 1, 81, @@ -7876,14 +7952,14 @@ pub mod inclusion_verifier { 9, 97, 43, - 0, + 128, 131, 1, 82, 128, 97, 43, - 0, + 128, 131, 1, 81, @@ -7896,7 +7972,7 @@ pub mod inclusion_verifier { 8, 97, 43, - 32, + 160, 131, 1, 129, @@ -7913,15 +7989,15 @@ pub mod inclusion_verifier { 8, 97, 43, - 64, + 192, 131, 1, 129, 144, 82, 97, - 42, - 192, + 43, + 64, 131, 1, 81, @@ -7930,7 +8006,7 @@ pub mod inclusion_verifier { 9, 97, 43, - 96, + 224, 131, 1, 129, @@ -7946,15 +8022,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 128, + 44, + 0, 131, 1, 82, 128, 97, - 43, - 128, + 44, + 0, 131, 1, 81, @@ -7962,14 +8038,14 @@ pub mod inclusion_verifier { 3, 97, 42, - 64, + 192, 132, 1, 81, 8, 97, - 43, - 160, + 44, + 32, 131, 1, 129, @@ -7977,7 +8053,7 @@ pub mod inclusion_verifier { 82, 97, 36, - 64, + 192, 131, 1, 81, @@ -7985,35 +8061,35 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 192, + 44, + 64, 131, 1, 82, 128, 97, - 43, - 192, + 44, + 64, 131, 1, 81, 97, 41, - 64, + 192, 132, 1, 81, 8, 97, - 43, - 224, + 44, + 96, 131, 1, 82, 128, 97, - 43, - 224, + 44, + 96, 131, 1, 81, @@ -8026,7 +8102,7 @@ pub mod inclusion_verifier { 9, 97, 44, - 0, + 128, 131, 1, 82, @@ -8044,7 +8120,7 @@ pub mod inclusion_verifier { 8, 97, 44, - 32, + 160, 131, 1, 129, @@ -8061,34 +8137,34 @@ pub mod inclusion_verifier { 9, 97, 44, - 64, + 192, 131, 1, 82, 128, 97, 44, - 64, + 192, 131, 1, 81, 97, 44, - 0, + 128, 132, 1, 81, 8, 97, 44, - 96, + 224, 131, 1, 82, 128, 97, 44, - 96, + 224, 131, 1, 81, @@ -8100,8 +8176,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 44, - 128, + 45, + 0, 131, 1, 82, @@ -8116,8 +8192,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 44, - 160, + 45, + 32, 131, 1, 82, @@ -8131,15 +8207,15 @@ pub mod inclusion_verifier { 130, 3, 97, - 44, - 160, + 45, + 32, 132, 1, 81, 8, 97, - 44, - 192, + 45, + 64, 131, 1, 129, @@ -8155,35 +8231,35 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 224, + 45, + 96, 131, 1, 82, 128, 97, - 44, - 224, + 45, + 96, 131, 1, 81, 97, - 44, - 128, + 45, + 0, 132, 1, 81, 8, 97, 45, - 0, + 128, 131, 1, 82, 128, 97, 45, - 0, + 128, 131, 1, 81, @@ -8196,7 +8272,7 @@ pub mod inclusion_verifier { 9, 97, 45, - 32, + 160, 131, 1, 82, @@ -8216,7 +8292,7 @@ pub mod inclusion_verifier { 8, 97, 45, - 64, + 192, 131, 1, 129, @@ -8233,7 +8309,7 @@ pub mod inclusion_verifier { 9, 97, 45, - 96, + 224, 131, 1, 82, @@ -8252,8 +8328,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 45, - 128, + 46, + 0, 131, 1, 129, @@ -8261,7 +8337,7 @@ pub mod inclusion_verifier { 82, 97, 45, - 96, + 224, 131, 1, 81, @@ -8269,8 +8345,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 160, + 46, + 32, 131, 1, 82, @@ -8286,15 +8362,15 @@ pub mod inclusion_verifier { 0, 9, 97, - 45, - 192, + 46, + 64, 131, 1, 82, 128, 97, - 45, - 192, + 46, + 64, 131, 1, 81, @@ -8308,8 +8384,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 45, - 224, + 46, + 96, 131, 1, 129, @@ -8326,7 +8402,7 @@ pub mod inclusion_verifier { 9, 97, 46, - 0, + 128, 131, 1, 129, @@ -8343,7 +8419,7 @@ pub mod inclusion_verifier { 8, 97, 46, - 32, + 160, 131, 1, 129, @@ -8360,7 +8436,7 @@ pub mod inclusion_verifier { 9, 97, 46, - 64, + 192, 131, 1, 82, @@ -8380,7 +8456,7 @@ pub mod inclusion_verifier { 8, 97, 46, - 96, + 224, 131, 1, 129, @@ -8388,7 +8464,7 @@ pub mod inclusion_verifier { 82, 97, 46, - 64, + 192, 131, 1, 81, @@ -8396,30 +8472,30 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 128, + 47, + 0, 131, 1, 82, 128, 97, - 46, - 128, + 47, + 0, 131, 1, 81, 130, 3, 97, - 45, - 160, + 46, + 32, 132, 1, 81, 8, 97, - 46, - 160, + 47, + 32, 131, 1, 129, @@ -8427,7 +8503,7 @@ pub mod inclusion_verifier { 82, 97, 36, - 64, + 192, 131, 1, 81, @@ -8435,35 +8511,35 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 192, + 47, + 64, 131, 1, 82, 128, 97, - 46, - 192, + 47, + 64, 131, 1, 81, 97, 45, - 32, + 160, 132, 1, 81, 8, 97, - 46, - 224, + 47, + 96, 131, 1, 82, 128, 97, - 46, - 224, + 47, + 96, 131, 1, 81, @@ -8476,7 +8552,7 @@ pub mod inclusion_verifier { 9, 97, 47, - 0, + 128, 131, 1, 82, @@ -8498,7 +8574,7 @@ pub mod inclusion_verifier { 8, 97, 47, - 32, + 160, 131, 1, 129, @@ -8515,34 +8591,34 @@ pub mod inclusion_verifier { 9, 97, 47, - 64, + 192, 131, 1, 82, 128, 97, 47, - 64, + 192, 131, 1, 81, 97, 47, - 0, + 128, 132, 1, 81, 8, 97, 47, - 96, + 224, 131, 1, 82, 128, 97, 47, - 96, + 224, 131, 1, 81, @@ -8554,28 +8630,28 @@ pub mod inclusion_verifier { 81, 9, 97, - 47, - 128, + 48, + 0, 131, 1, 82, 128, 97, 36, - 64, + 192, 131, 1, 81, 97, 47, - 32, + 160, 132, 1, 81, 9, 97, - 47, - 160, + 48, + 32, 131, 1, 82, @@ -8596,16 +8672,16 @@ pub mod inclusion_verifier { 81, 8, 97, - 47, - 192, + 48, + 64, 131, 1, 129, 144, 82, 97, - 47, - 160, + 48, + 32, 131, 1, 81, @@ -8613,28 +8689,28 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 224, + 48, + 96, 131, 1, 82, 128, 97, - 47, - 224, + 48, + 96, 131, 1, 81, 97, - 47, - 128, + 48, + 0, 132, 1, 81, 8, 97, 48, - 0, + 128, 131, 1, 82, @@ -8650,7 +8726,7 @@ pub mod inclusion_verifier { 9, 97, 48, - 32, + 160, 131, 1, 129, @@ -8667,7 +8743,7 @@ pub mod inclusion_verifier { 9, 97, 48, - 64, + 192, 131, 1, 129, @@ -8684,7 +8760,7 @@ pub mod inclusion_verifier { 9, 97, 48, - 96, + 224, 131, 1, 129, @@ -8700,8 +8776,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 48, - 128, + 49, + 0, 131, 1, 82, @@ -8716,15 +8792,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 48, - 160, + 49, + 32, 131, 1, 82, 128, 97, 48, - 32, + 160, 131, 1, 81, @@ -8732,15 +8808,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 48, - 192, + 49, + 64, 131, 1, 82, 128, 97, 48, - 64, + 192, 131, 1, 81, @@ -8748,15 +8824,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 48, - 224, + 49, + 96, 131, 1, 82, 128, 97, 48, - 96, + 224, 131, 1, 81, @@ -8765,7 +8841,7 @@ pub mod inclusion_verifier { 9, 97, 49, - 0, + 128, 131, 1, 82, @@ -8778,14 +8854,14 @@ pub mod inclusion_verifier { 81, 97, 48, - 0, + 128, 132, 1, 81, 9, 97, 49, - 32, + 160, 131, 1, 82, @@ -8805,7 +8881,7 @@ pub mod inclusion_verifier { 9, 97, 49, - 64, + 192, 131, 1, 82, @@ -8821,14 +8897,14 @@ pub mod inclusion_verifier { 9, 97, 49, - 96, + 224, 131, 1, 82, 128, 97, 49, - 96, + 224, 131, 1, 81, @@ -8842,8 +8918,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 49, - 128, + 50, + 0, 131, 1, 82, @@ -8889,15 +8965,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 49, - 160, + 50, + 32, 131, 1, 82, 128, 97, - 49, - 160, + 50, + 32, 131, 1, 81, @@ -8911,8 +8987,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 49, - 192, + 50, + 64, 131, 1, 82, @@ -8958,15 +9034,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 49, - 224, + 50, + 96, 131, 1, 82, 128, 97, - 49, - 224, + 50, + 96, 131, 1, 81, @@ -8981,7 +9057,7 @@ pub mod inclusion_verifier { 8, 97, 50, - 0, + 128, 131, 1, 82, @@ -9028,14 +9104,14 @@ pub mod inclusion_verifier { 9, 97, 50, - 32, + 160, 131, 1, 82, 128, 97, 50, - 32, + 160, 131, 1, 81, @@ -9050,7 +9126,7 @@ pub mod inclusion_verifier { 8, 97, 50, - 64, + 192, 131, 1, 82, @@ -9160,7 +9236,7 @@ pub mod inclusion_verifier { 128, 97, 50, - 96, + 224, 132, 1, 82, @@ -9270,8 +9346,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 128, + 51, + 0, 132, 1, 82, @@ -9378,15 +9454,15 @@ pub mod inclusion_verifier { 9, 8, 97, - 50, - 160, + 51, + 32, 132, 1, 82, 80, 97, - 49, - 128, + 50, + 0, 130, 1, 81, @@ -9396,16 +9472,16 @@ pub mod inclusion_verifier { 1, 9, 97, - 50, - 192, + 51, + 64, 131, 1, 129, 144, 82, 97, - 49, - 192, + 50, + 64, 131, 1, 81, @@ -9413,8 +9489,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 50, - 224, + 51, + 96, 131, 1, 129, @@ -9422,7 +9498,7 @@ pub mod inclusion_verifier { 82, 97, 50, - 64, + 192, 131, 1, 81, @@ -9431,7 +9507,7 @@ pub mod inclusion_verifier { 9, 97, 51, - 0, + 128, 131, 1, 82, @@ -9494,7 +9570,7 @@ pub mod inclusion_verifier { 128, 97, 51, - 32, + 160, 132, 1, 82, @@ -9605,7 +9681,7 @@ pub mod inclusion_verifier { 128, 97, 51, - 64, + 192, 132, 1, 82, @@ -9716,7 +9792,7 @@ pub mod inclusion_verifier { 128, 97, 51, - 96, + 224, 132, 1, 82, @@ -9823,21 +9899,21 @@ pub mod inclusion_verifier { 9, 8, 97, - 51, - 128, + 52, + 0, 132, 1, 82, 80, 97, 50, - 0, + 128, 130, 1, 81, 97, - 50, - 224, + 51, + 96, 131, 1, 81, @@ -9846,8 +9922,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 51, - 160, + 52, + 32, 131, 1, 82, @@ -9956,8 +10032,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 192, + 52, + 64, 132, 1, 82, @@ -10067,8 +10143,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 224, + 52, + 96, 132, 1, 82, @@ -10179,7 +10255,7 @@ pub mod inclusion_verifier { 128, 97, 52, - 0, + 128, 132, 1, 82, @@ -10287,20 +10363,20 @@ pub mod inclusion_verifier { 8, 97, 52, - 32, + 160, 132, 1, 82, 80, 97, 50, - 64, + 192, 130, 1, 81, 97, - 50, - 192, + 51, + 64, 131, 1, 81, @@ -10310,93 +10386,21 @@ pub mod inclusion_verifier { 9, 97, 52, - 64, + 192, 131, 1, 82, 97, 50, - 96, + 224, 130, 1, 81, 129, 129, 97, - 50, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 52, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 50, - 160, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 52, - 128, - 132, - 1, - 82, - 129, - 129, - 97, 51, - 32, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 52, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 50, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 52, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 64, + 0, 133, 1, 81, @@ -10414,7 +10418,7 @@ pub mod inclusion_verifier { 129, 97, 51, - 96, + 32, 133, 1, 81, @@ -10432,7 +10436,7 @@ pub mod inclusion_verifier { 129, 97, 51, - 128, + 160, 133, 1, 81, @@ -10450,7 +10454,7 @@ pub mod inclusion_verifier { 129, 97, 51, - 160, + 64, 133, 1, 81, @@ -10503,8 +10507,8 @@ pub mod inclusion_verifier { 129, 129, 97, - 50, - 224, + 52, + 0, 133, 1, 81, @@ -10522,7 +10526,7 @@ pub mod inclusion_verifier { 129, 97, 52, - 0, + 32, 133, 1, 81, @@ -10540,7 +10544,7 @@ pub mod inclusion_verifier { 129, 97, 52, - 32, + 64, 133, 1, 81, @@ -10558,7 +10562,7 @@ pub mod inclusion_verifier { 129, 97, 52, - 64, + 96, 133, 1, 81, @@ -10572,20 +10576,84 @@ pub mod inclusion_verifier { 132, 1, 82, - 80, + 129, + 129, + 97, + 51, 96, + 133, + 1, + 81, + 9, + 144, + 80, + 128, + 97, + 54, 32, + 132, + 1, + 82, + 129, + 129, + 97, + 52, + 128, + 133, + 1, + 81, + 9, + 144, + 80, + 128, 97, 54, 64, - 131, + 132, 1, 82, + 129, + 129, + 97, + 52, + 160, + 133, + 1, + 81, + 9, + 144, + 80, + 128, + 97, + 54, 96, - 32, + 132, + 1, + 82, + 129, + 129, + 97, + 52, + 192, + 133, + 1, + 81, + 9, + 144, + 80, + 128, 97, 54, + 128, + 132, + 1, + 82, + 80, 96, + 32, + 97, + 54, + 192, 131, 1, 82, @@ -10593,19 +10661,27 @@ pub mod inclusion_verifier { 32, 97, 54, - 128, + 224, 131, 1, 82, + 96, + 32, 97, - 54, + 55, 0, + 131, + 1, + 82, + 97, + 54, + 128, 130, 1, 81, 97, - 54, - 160, + 55, + 32, 131, 1, 82, @@ -10643,8 +10719,8 @@ pub mod inclusion_verifier { 255, 255, 97, - 54, - 192, + 55, + 64, 131, 1, 82, @@ -10656,7 +10732,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 149, + 225, 131, 57, 129, @@ -10664,8 +10740,8 @@ pub mod inclusion_verifier { 145, 82, 97, - 54, - 224, + 55, + 96, 131, 1, 82, @@ -10676,14 +10752,14 @@ pub mod inclusion_verifier { 32, 97, 54, - 32, + 160, 133, 1, 96, 192, 97, 54, - 64, + 192, 135, 1, 96, @@ -10696,7 +10772,7 @@ pub mod inclusion_verifier { 80, 97, 54, - 32, + 160, 130, 1, 81, @@ -10704,7 +10780,7 @@ pub mod inclusion_verifier { 0, 97, 52, - 64, + 192, 132, 1, 81, @@ -10713,15 +10789,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 224, + 54, + 96, 134, 1, 81, 9, 97, 52, - 64, + 192, 133, 1, 82, @@ -10733,7 +10809,7 @@ pub mod inclusion_verifier { 80, 97, 52, - 32, + 160, 132, 1, 81, @@ -10742,15 +10818,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 192, + 54, + 64, 134, 1, 81, 9, 97, 52, - 32, + 160, 133, 1, 82, @@ -10762,7 +10838,7 @@ pub mod inclusion_verifier { 80, 97, 52, - 0, + 128, 132, 1, 81, @@ -10771,15 +10847,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 160, + 54, + 32, 134, 1, 81, 9, 97, 52, - 0, + 128, 133, 1, 82, @@ -10790,8 +10866,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 224, + 51, + 96, 132, 1, 81, @@ -10800,15 +10876,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 128, + 54, + 0, 134, 1, 81, 9, 97, - 50, - 224, + 51, + 96, 133, 1, 82, @@ -10819,8 +10895,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 51, - 224, + 52, + 96, 132, 1, 81, @@ -10830,14 +10906,14 @@ pub mod inclusion_verifier { 130, 97, 53, - 96, + 224, 134, 1, 81, 9, 97, - 51, - 224, + 52, + 96, 133, 1, 82, @@ -10848,8 +10924,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 51, - 192, + 52, + 64, 132, 1, 81, @@ -10859,14 +10935,14 @@ pub mod inclusion_verifier { 130, 97, 53, - 64, + 192, 134, 1, 81, 9, 97, - 51, - 192, + 52, + 64, 133, 1, 82, @@ -10877,8 +10953,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 51, - 160, + 52, + 32, 132, 1, 81, @@ -10888,14 +10964,14 @@ pub mod inclusion_verifier { 130, 97, 53, - 32, + 160, 134, 1, 81, 9, 97, - 51, - 160, + 52, + 32, 133, 1, 82, @@ -10906,8 +10982,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 51, - 128, + 52, + 0, 132, 1, 81, @@ -10917,14 +10993,14 @@ pub mod inclusion_verifier { 130, 97, 53, - 0, + 128, 134, 1, 81, 9, 97, - 51, - 128, + 52, + 0, 133, 1, 82, @@ -10936,7 +11012,7 @@ pub mod inclusion_verifier { 80, 97, 51, - 96, + 224, 132, 1, 81, @@ -10945,15 +11021,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 224, + 53, + 96, 134, 1, 81, 9, 97, 51, - 96, + 224, 133, 1, 82, @@ -10965,7 +11041,7 @@ pub mod inclusion_verifier { 80, 97, 51, - 64, + 192, 132, 1, 81, @@ -10974,15 +11050,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 192, + 53, + 64, 134, 1, 81, 9, 97, 51, - 64, + 192, 133, 1, 82, @@ -10993,8 +11069,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 192, + 51, + 64, 132, 1, 81, @@ -11003,15 +11079,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 160, + 53, + 32, 134, 1, 81, 9, 97, - 50, - 192, + 51, + 64, 133, 1, 82, @@ -11023,7 +11099,7 @@ pub mod inclusion_verifier { 80, 97, 51, - 32, + 160, 132, 1, 81, @@ -11032,15 +11108,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 128, + 53, + 0, 134, 1, 81, 9, 97, 51, - 32, + 160, 133, 1, 82, @@ -11051,8 +11127,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 160, + 51, + 32, 132, 1, 81, @@ -11062,14 +11138,14 @@ pub mod inclusion_verifier { 130, 97, 52, - 96, + 224, 134, 1, 81, 9, 97, - 50, - 160, + 51, + 32, 133, 1, 82, @@ -11080,8 +11156,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 128, + 51, + 0, 132, 1, 81, @@ -11091,14 +11167,14 @@ pub mod inclusion_verifier { 130, 97, 50, - 96, + 224, 134, 1, 81, 9, 97, - 50, - 128, + 51, + 0, 133, 1, 82, @@ -11108,15 +11184,15 @@ pub mod inclusion_verifier { 9, 97, 50, - 96, + 224, 133, 1, 129, 144, 82, 97, - 50, - 128, + 51, + 0, 133, 1, 81, @@ -11134,28 +11210,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 50, - 160, + 51, + 32, 133, 1, 81, 8, 97, 55, - 0, + 128, 132, 1, 82, 80, 97, - 50, - 192, + 51, + 64, 130, 1, 81, 97, 51, - 0, + 128, 131, 1, 81, @@ -11165,47 +11241,47 @@ pub mod inclusion_verifier { 9, 97, 55, - 32, + 160, 131, 1, 82, 97, 51, - 32, + 160, 130, 1, 81, 128, 97, 55, - 64, + 192, 132, 1, 82, 80, 128, 97, - 51, - 160, + 52, + 32, 131, 1, 81, 97, 51, - 0, + 128, 132, 1, 81, 9, 97, 55, - 96, + 224, 131, 1, 82, 97, 51, - 64, + 192, 130, 1, 81, @@ -11213,7 +11289,7 @@ pub mod inclusion_verifier { 129, 97, 51, - 96, + 224, 133, 1, 81, @@ -11223,28 +11299,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 51, - 128, + 52, + 0, 133, 1, 81, 8, 97, - 55, - 128, + 56, + 0, 132, 1, 82, 80, 97, - 50, - 224, + 51, + 96, 130, 1, 81, 97, 51, - 0, + 128, 131, 1, 81, @@ -11253,42 +11329,42 @@ pub mod inclusion_verifier { 144, 9, 97, - 55, - 160, + 56, + 32, 131, 1, 82, 97, - 51, - 192, + 52, + 64, 130, 1, 81, 129, 129, 97, - 51, - 224, + 52, + 96, 133, 1, 81, 8, 97, - 55, - 192, + 56, + 64, 132, 1, 82, 80, 97, 52, - 64, + 192, 130, 1, 81, 97, 51, - 0, + 128, 131, 1, 81, @@ -11297,14 +11373,14 @@ pub mod inclusion_verifier { 144, 9, 97, - 55, - 224, + 56, + 96, 131, 1, 82, 97, 52, - 0, + 128, 130, 1, 81, @@ -11312,27 +11388,27 @@ pub mod inclusion_verifier { 129, 97, 52, - 32, + 160, 133, 1, 81, 8, 97, 56, - 0, + 128, 132, 1, 82, 80, 97, 55, - 0, + 128, 130, 1, 81, 97, 55, - 64, + 192, 131, 1, 81, @@ -11346,15 +11422,15 @@ pub mod inclusion_verifier { 128, 97, 56, - 32, + 160, 132, 1, 82, 129, 129, 97, - 55, - 128, + 56, + 0, 133, 1, 81, @@ -11364,15 +11440,15 @@ pub mod inclusion_verifier { 128, 97, 56, - 64, + 192, 132, 1, 82, 129, 129, 97, - 55, - 192, + 56, + 64, 133, 1, 81, @@ -11382,7 +11458,7 @@ pub mod inclusion_verifier { 128, 97, 56, - 96, + 224, 132, 1, 82, @@ -11390,7 +11466,7 @@ pub mod inclusion_verifier { 129, 97, 56, - 0, + 128, 133, 1, 81, @@ -11399,8 +11475,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 56, - 128, + 57, + 0, 132, 1, 82, @@ -11408,16 +11484,16 @@ pub mod inclusion_verifier { 96, 32, 97, - 56, - 192, + 57, + 64, 131, 1, 82, 96, 32, 97, - 56, - 224, + 57, + 96, 131, 1, 82, @@ -11425,19 +11501,19 @@ pub mod inclusion_verifier { 32, 97, 57, - 0, + 128, 131, 1, 82, 97, - 56, - 128, + 57, + 0, 130, 1, 81, 97, 57, - 32, + 160, 131, 1, 82, @@ -11476,7 +11552,7 @@ pub mod inclusion_verifier { 255, 97, 57, - 64, + 192, 131, 1, 82, @@ -11488,7 +11564,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 149, + 225, 131, 57, 129, @@ -11497,7 +11573,7 @@ pub mod inclusion_verifier { 82, 97, 57, - 96, + 224, 131, 1, 82, @@ -11507,15 +11583,15 @@ pub mod inclusion_verifier { 96, 32, 97, - 56, - 160, + 57, + 32, 133, 1, 96, 192, 97, - 56, - 192, + 57, + 64, 135, 1, 96, @@ -11527,8 +11603,8 @@ pub mod inclusion_verifier { 146, 80, 97, - 56, - 160, + 57, + 32, 130, 1, 81, @@ -11536,7 +11612,7 @@ pub mod inclusion_verifier { 0, 97, 56, - 0, + 128, 132, 1, 81, @@ -11546,14 +11622,14 @@ pub mod inclusion_verifier { 130, 97, 56, - 96, + 224, 134, 1, 81, 9, 97, 56, - 0, + 128, 133, 1, 82, @@ -11564,8 +11640,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 55, - 192, + 56, + 64, 132, 1, 81, @@ -11575,14 +11651,14 @@ pub mod inclusion_verifier { 130, 97, 56, - 64, + 192, 134, 1, 81, 9, 97, - 55, - 192, + 56, + 64, 133, 1, 82, @@ -11593,8 +11669,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 55, - 128, + 56, + 0, 132, 1, 81, @@ -11604,14 +11680,14 @@ pub mod inclusion_verifier { 130, 97, 56, - 32, + 160, 134, 1, 81, 9, 97, - 55, - 128, + 56, + 0, 133, 1, 82, @@ -11623,7 +11699,7 @@ pub mod inclusion_verifier { 80, 97, 55, - 64, + 192, 132, 1, 81, @@ -11633,14 +11709,14 @@ pub mod inclusion_verifier { 130, 97, 55, - 0, + 128, 134, 1, 81, 9, 97, 55, - 64, + 192, 133, 1, 82, @@ -11650,7 +11726,7 @@ pub mod inclusion_verifier { 9, 97, 55, - 0, + 128, 133, 1, 82, @@ -11658,13 +11734,13 @@ pub mod inclusion_verifier { 80, 97, 55, - 64, + 192, 130, 1, 81, 97, 55, - 32, + 160, 131, 1, 81, @@ -11673,68 +11749,68 @@ pub mod inclusion_verifier { 144, 9, 97, - 57, - 128, + 58, + 0, 131, 1, 82, 128, 97, - 55, - 128, + 56, + 0, 131, 1, 81, 97, 55, - 96, + 224, 132, 1, 81, 9, 97, - 57, - 160, + 58, + 32, 131, 1, 82, 128, 97, - 55, - 192, + 56, + 64, 131, 1, 81, 97, - 55, - 160, + 56, + 32, 132, 1, 81, 9, 97, - 57, - 192, + 58, + 64, 131, 1, 82, 128, 97, 56, - 0, + 128, 131, 1, 81, 97, - 55, - 224, + 56, + 96, 132, 1, 81, 9, 97, - 57, - 224, + 58, + 96, 131, 1, 82, @@ -11750,7 +11826,7 @@ pub mod inclusion_verifier { 9, 97, 58, - 0, + 128, 131, 1, 129, @@ -11767,7 +11843,7 @@ pub mod inclusion_verifier { 9, 97, 58, - 32, + 160, 131, 1, 129, @@ -11784,7 +11860,7 @@ pub mod inclusion_verifier { 9, 97, 58, - 64, + 192, 131, 1, 129, @@ -11801,7 +11877,7 @@ pub mod inclusion_verifier { 9, 97, 58, - 96, + 224, 131, 1, 129, @@ -11817,8 +11893,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 128, + 59, + 0, 131, 1, 129, @@ -11834,8 +11910,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 160, + 59, + 32, 131, 1, 129, @@ -11851,8 +11927,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 192, + 59, + 64, 131, 1, 129, @@ -11868,8 +11944,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 224, + 59, + 96, 131, 1, 129, @@ -11886,7 +11962,7 @@ pub mod inclusion_verifier { 9, 97, 59, - 0, + 128, 131, 1, 129, @@ -11903,7 +11979,7 @@ pub mod inclusion_verifier { 9, 97, 59, - 32, + 160, 131, 1, 129, @@ -11920,7 +11996,7 @@ pub mod inclusion_verifier { 9, 97, 59, - 64, + 192, 131, 1, 129, @@ -11937,7 +12013,7 @@ pub mod inclusion_verifier { 9, 97, 59, - 96, + 224, 131, 1, 129, @@ -11953,8 +12029,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 128, + 60, + 0, 131, 1, 129, @@ -11970,8 +12046,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 160, + 60, + 32, 131, 1, 129, @@ -11987,8 +12063,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 192, + 60, + 64, 131, 1, 129, @@ -12004,8 +12080,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 224, + 60, + 96, 131, 1, 129, @@ -12022,7 +12098,7 @@ pub mod inclusion_verifier { 9, 97, 60, - 0, + 128, 131, 1, 129, @@ -12039,7 +12115,7 @@ pub mod inclusion_verifier { 9, 97, 60, - 32, + 160, 131, 1, 129, @@ -12056,7 +12132,7 @@ pub mod inclusion_verifier { 9, 97, 60, - 64, + 192, 131, 1, 129, @@ -12073,7 +12149,7 @@ pub mod inclusion_verifier { 9, 97, 60, - 96, + 224, 131, 1, 82, @@ -12088,8 +12164,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 60, - 128, + 61, + 0, 131, 1, 129, @@ -12105,8 +12181,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 60, - 160, + 61, + 32, 131, 1, 129, @@ -12122,8 +12198,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 60, - 192, + 61, + 64, 131, 1, 129, @@ -12139,15 +12215,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 60, - 224, + 61, + 96, 131, 1, 82, 128, 97, 50, - 96, + 224, 131, 1, 81, @@ -12162,8 +12238,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 128, + 51, + 0, 134, 1, 81, @@ -12181,8 +12257,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 160, + 51, + 32, 134, 1, 81, @@ -12196,7 +12272,7 @@ pub mod inclusion_verifier { 8, 97, 61, - 0, + 128, 132, 1, 129, @@ -12204,7 +12280,7 @@ pub mod inclusion_verifier { 82, 97, 55, - 0, + 128, 132, 1, 81, @@ -12215,7 +12291,7 @@ pub mod inclusion_verifier { 9, 97, 61, - 32, + 160, 131, 1, 82, @@ -12224,7 +12300,7 @@ pub mod inclusion_verifier { 1, 97, 61, - 32, + 160, 132, 1, 81, @@ -12233,14 +12309,14 @@ pub mod inclusion_verifier { 9, 97, 61, - 64, + 192, 131, 1, 82, 128, 97, 50, - 96, + 224, 131, 1, 81, @@ -12255,8 +12331,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 128, + 51, + 0, 134, 1, 81, @@ -12274,8 +12350,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 160, + 51, + 32, 134, 1, 81, @@ -12289,7 +12365,7 @@ pub mod inclusion_verifier { 8, 97, 61, - 96, + 224, 132, 1, 129, @@ -12297,7 +12373,7 @@ pub mod inclusion_verifier { 82, 97, 55, - 0, + 128, 132, 1, 81, @@ -12307,8 +12383,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 61, - 128, + 62, + 0, 131, 1, 129, @@ -12326,8 +12402,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 61, - 160, + 62, + 32, 131, 1, 82, @@ -12342,28 +12418,28 @@ pub mod inclusion_verifier { 1, 9, 97, - 61, - 192, + 62, + 64, 131, 1, 82, 128, 97, - 61, - 160, + 62, + 32, 131, 1, 81, 97, 61, - 64, + 192, 132, 1, 81, 8, 97, - 61, - 224, + 62, + 96, 131, 1, 82, @@ -12371,15 +12447,15 @@ pub mod inclusion_verifier { 96, 1, 97, - 61, - 224, + 62, + 96, 132, 1, 81, 9, 97, 62, - 0, + 128, 131, 1, 82, @@ -12387,22 +12463,22 @@ pub mod inclusion_verifier { 96, 1, 97, - 61, - 192, + 62, + 64, 132, 1, 81, 9, 97, 62, - 32, + 160, 131, 1, 82, 128, 97, 55, - 32, + 160, 131, 1, 81, @@ -12411,14 +12487,14 @@ pub mod inclusion_verifier { 9, 97, 62, - 64, + 192, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -12431,15 +12507,15 @@ pub mod inclusion_verifier { 9, 97, 62, - 96, + 224, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -12447,8 +12523,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 62, - 128, + 63, + 0, 131, 1, 82, @@ -12456,8 +12532,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 62, - 128, + 63, + 0, 132, 1, 81, @@ -12465,8 +12541,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 62, - 160, + 63, + 32, 131, 1, 82, @@ -12475,21 +12551,21 @@ pub mod inclusion_verifier { 1, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 62, - 192, + 63, + 64, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -12501,16 +12577,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 62, - 224, + 63, + 96, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -12519,7 +12595,7 @@ pub mod inclusion_verifier { 9, 97, 63, - 0, + 128, 131, 1, 129, @@ -12538,7 +12614,7 @@ pub mod inclusion_verifier { 9, 97, 63, - 32, + 160, 131, 1, 82, @@ -12551,41 +12627,41 @@ pub mod inclusion_verifier { 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 63, - 64, + 192, 131, 1, 82, 128, 97, 63, - 32, + 160, 131, 1, 81, 97, - 62, - 160, + 63, + 32, 132, 1, 81, 8, 97, 63, - 96, + 224, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -12597,16 +12673,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 63, - 128, + 64, + 0, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -12614,8 +12690,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 63, - 160, + 64, + 32, 131, 1, 129, @@ -12623,7 +12699,7 @@ pub mod inclusion_verifier { 82, 97, 58, - 0, + 128, 131, 1, 81, @@ -12633,55 +12709,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 63, - 192, + 64, + 64, 131, 1, 82, 128, 97, 58, - 0, + 128, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 63, - 224, + 64, + 96, 131, 1, 82, 128, 97, - 63, - 192, + 64, + 64, 131, 1, 81, 97, 63, - 96, + 224, 132, 1, 81, 8, 97, 64, - 0, + 128, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -12694,15 +12770,15 @@ pub mod inclusion_verifier { 9, 97, 64, - 32, + 160, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -12711,7 +12787,7 @@ pub mod inclusion_verifier { 9, 97, 64, - 64, + 192, 131, 1, 129, @@ -12719,7 +12795,7 @@ pub mod inclusion_verifier { 82, 97, 58, - 32, + 160, 131, 1, 81, @@ -12730,54 +12806,54 @@ pub mod inclusion_verifier { 9, 97, 64, - 96, + 224, 131, 1, 82, 128, 97, 58, - 32, + 160, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 64, - 128, + 65, + 0, 131, 1, 82, 128, 97, 64, - 96, + 224, 131, 1, 81, 97, 64, - 0, + 128, 132, 1, 81, 8, 97, - 64, - 160, + 65, + 32, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -12789,16 +12865,16 @@ pub mod inclusion_verifier { 81, 9, 97, + 65, 64, - 192, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -12806,8 +12882,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 64, - 224, + 65, + 96, 131, 1, 129, @@ -12815,7 +12891,7 @@ pub mod inclusion_verifier { 82, 97, 58, - 64, + 192, 131, 1, 81, @@ -12826,54 +12902,54 @@ pub mod inclusion_verifier { 9, 97, 65, - 0, + 128, 131, 1, 82, 128, 97, 58, - 64, + 192, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 65, - 32, + 160, 131, 1, 82, 128, 97, 65, - 0, + 128, 131, 1, 81, 97, - 64, - 160, + 65, + 32, 132, 1, 81, 8, 97, 65, - 64, + 192, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -12886,15 +12962,15 @@ pub mod inclusion_verifier { 9, 97, 65, - 96, + 224, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -12902,8 +12978,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 65, - 128, + 66, + 0, 131, 1, 129, @@ -12911,7 +12987,7 @@ pub mod inclusion_verifier { 82, 97, 58, - 96, + 224, 131, 1, 81, @@ -12921,55 +12997,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 65, - 160, + 66, + 32, 131, 1, 82, 128, 97, 58, - 96, + 224, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 65, - 192, + 66, + 64, 131, 1, 82, 128, 97, - 65, - 160, + 66, + 32, 131, 1, 81, 97, 65, - 64, + 192, 132, 1, 81, 8, 97, - 65, - 224, + 66, + 96, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -12982,15 +13058,15 @@ pub mod inclusion_verifier { 9, 97, 66, - 0, + 128, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -12999,15 +13075,15 @@ pub mod inclusion_verifier { 9, 97, 66, - 32, + 160, 131, 1, 129, 144, 82, 97, - 58, - 128, + 59, + 0, 131, 1, 81, @@ -13018,54 +13094,54 @@ pub mod inclusion_verifier { 9, 97, 66, - 64, + 192, 131, 1, 82, 128, 97, - 58, - 128, + 59, + 0, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 66, - 96, + 224, 131, 1, 82, 128, 97, 66, - 64, + 192, 131, 1, 81, 97, - 65, - 224, + 66, + 96, 132, 1, 81, 8, 97, - 66, - 128, + 67, + 0, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -13077,16 +13153,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 66, - 160, + 67, + 32, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -13094,16 +13170,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 66, - 192, + 67, + 64, 131, 1, 129, 144, 82, 97, - 58, - 160, + 59, + 32, 131, 1, 81, @@ -13113,55 +13189,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 66, - 224, + 67, + 96, 131, 1, 82, 128, 97, - 58, - 160, + 59, + 32, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 67, - 0, + 128, 131, 1, 82, 128, 97, - 66, - 224, + 67, + 96, 131, 1, 81, 97, - 66, - 128, + 67, + 0, 132, 1, 81, 8, 97, 67, - 32, + 160, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -13174,15 +13250,15 @@ pub mod inclusion_verifier { 9, 97, 67, - 64, + 192, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -13191,15 +13267,15 @@ pub mod inclusion_verifier { 9, 97, 67, - 96, + 224, 131, 1, 129, 144, 82, 97, - 58, - 192, + 59, + 64, 131, 1, 81, @@ -13209,55 +13285,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 67, - 128, + 68, + 0, 131, 1, 82, 128, 97, - 58, - 192, + 59, + 64, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 67, - 160, + 68, + 32, 131, 1, 82, 128, 97, - 67, - 128, + 68, + 0, 131, 1, 81, 97, 67, - 32, + 160, 132, 1, 81, 8, 97, - 67, - 192, + 68, + 64, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -13269,16 +13345,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 67, - 224, + 68, + 96, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -13287,15 +13363,15 @@ pub mod inclusion_verifier { 9, 97, 68, - 0, + 128, 131, 1, 129, 144, 82, 97, - 58, - 224, + 59, + 96, 131, 1, 81, @@ -13306,54 +13382,54 @@ pub mod inclusion_verifier { 9, 97, 68, - 32, + 160, 131, 1, 82, 128, 97, - 58, - 224, + 59, + 96, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 68, - 64, + 192, 131, 1, 82, 128, 97, 68, - 32, + 160, 131, 1, 81, 97, - 67, - 192, + 68, + 64, 132, 1, 81, 8, 97, 68, - 96, + 224, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -13365,16 +13441,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 68, - 128, + 69, + 0, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -13382,8 +13458,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 68, - 160, + 69, + 32, 131, 1, 129, @@ -13391,7 +13467,7 @@ pub mod inclusion_verifier { 82, 97, 59, - 0, + 128, 131, 1, 81, @@ -13401,55 +13477,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 68, - 192, + 69, + 64, 131, 1, 82, 128, 97, 59, - 0, + 128, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 68, - 224, + 69, + 96, 131, 1, 82, 128, 97, - 68, - 192, + 69, + 64, 131, 1, 81, 97, 68, - 96, + 224, 132, 1, 81, 8, 97, 69, - 0, + 128, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -13462,15 +13538,15 @@ pub mod inclusion_verifier { 9, 97, 69, - 32, + 160, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -13479,7 +13555,7 @@ pub mod inclusion_verifier { 9, 97, 69, - 64, + 192, 131, 1, 129, @@ -13487,7 +13563,7 @@ pub mod inclusion_verifier { 82, 97, 59, - 32, + 160, 131, 1, 81, @@ -13498,54 +13574,54 @@ pub mod inclusion_verifier { 9, 97, 69, - 96, + 224, 131, 1, 82, 128, 97, 59, - 32, + 160, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 69, - 128, + 70, + 0, 131, 1, 82, 128, 97, 69, - 96, + 224, 131, 1, 81, 97, 69, - 0, + 128, 132, 1, 81, 8, 97, - 69, - 160, + 70, + 32, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -13557,16 +13633,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 69, - 192, + 70, + 64, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -13574,8 +13650,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 69, - 224, + 70, + 96, 131, 1, 129, @@ -13583,7 +13659,7 @@ pub mod inclusion_verifier { 82, 97, 59, - 64, + 192, 131, 1, 81, @@ -13594,54 +13670,54 @@ pub mod inclusion_verifier { 9, 97, 70, - 0, + 128, 131, 1, 82, 128, 97, 59, - 64, + 192, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 70, - 32, + 160, 131, 1, 82, 128, 97, 70, - 0, + 128, 131, 1, 81, 97, - 69, - 160, + 70, + 32, 132, 1, 81, 8, 97, 70, - 64, + 192, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -13654,15 +13730,15 @@ pub mod inclusion_verifier { 9, 97, 70, - 96, + 224, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -13670,8 +13746,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 70, - 128, + 71, + 0, 131, 1, 129, @@ -13679,7 +13755,7 @@ pub mod inclusion_verifier { 82, 97, 59, - 96, + 224, 131, 1, 81, @@ -13689,55 +13765,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 70, - 160, + 71, + 32, 131, 1, 82, 128, 97, 59, - 96, + 224, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 70, - 192, + 71, + 64, 131, 1, 82, 128, 97, - 70, - 160, + 71, + 32, 131, 1, 81, 97, 70, - 64, + 192, 132, 1, 81, 8, 97, - 70, - 224, + 71, + 96, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -13750,15 +13826,15 @@ pub mod inclusion_verifier { 9, 97, 71, - 0, + 128, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -13767,15 +13843,15 @@ pub mod inclusion_verifier { 9, 97, 71, - 32, + 160, 131, 1, 129, 144, 82, 97, - 59, - 128, + 60, + 0, 131, 1, 81, @@ -13786,54 +13862,54 @@ pub mod inclusion_verifier { 9, 97, 71, - 64, + 192, 131, 1, 82, 128, 97, - 59, - 128, + 60, + 0, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 71, - 96, + 224, 131, 1, 82, 128, 97, 71, - 64, + 192, 131, 1, 81, 97, - 70, - 224, + 71, + 96, 132, 1, 81, 8, 97, - 71, - 128, + 72, + 0, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -13845,16 +13921,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 71, - 160, + 72, + 32, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -13862,16 +13938,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 71, - 192, + 72, + 64, 131, 1, 129, 144, 82, 97, - 59, - 160, + 60, + 32, 131, 1, 81, @@ -13881,55 +13957,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 71, - 224, + 72, + 96, 131, 1, 82, 128, 97, - 59, - 160, + 60, + 32, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 72, - 0, + 128, 131, 1, 82, 128, 97, - 71, - 224, + 72, + 96, 131, 1, 81, 97, - 71, - 128, + 72, + 0, 132, 1, 81, 8, 97, 72, - 32, + 160, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -13942,15 +14018,15 @@ pub mod inclusion_verifier { 9, 97, 72, - 64, + 192, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -13959,15 +14035,15 @@ pub mod inclusion_verifier { 9, 97, 72, - 96, + 224, 131, 1, 129, 144, 82, 97, - 59, - 192, + 60, + 64, 131, 1, 81, @@ -13977,55 +14053,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 72, - 128, + 73, + 0, 131, 1, 82, 128, 97, - 59, - 192, + 60, + 64, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 72, - 160, + 73, + 32, 131, 1, 82, 128, 97, - 72, - 128, + 73, + 0, 131, 1, 81, 97, 72, - 32, + 160, 132, 1, 81, 8, 97, - 72, - 192, + 73, + 64, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -14037,16 +14113,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 72, - 224, + 73, + 96, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -14055,15 +14131,15 @@ pub mod inclusion_verifier { 9, 97, 73, - 0, + 128, 131, 1, 129, 144, 82, 97, - 59, - 224, + 60, + 96, 131, 1, 81, @@ -14074,54 +14150,54 @@ pub mod inclusion_verifier { 9, 97, 73, - 32, + 160, 131, 1, 82, 128, 97, - 59, - 224, + 60, + 96, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 73, - 64, + 192, 131, 1, 82, 128, 97, 73, - 32, + 160, 131, 1, 81, 97, - 72, - 192, + 73, + 64, 132, 1, 81, 8, 97, 73, - 96, + 224, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -14133,16 +14209,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 73, - 128, + 74, + 0, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -14150,8 +14226,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 73, - 160, + 74, + 32, 131, 1, 129, @@ -14159,7 +14235,7 @@ pub mod inclusion_verifier { 82, 97, 60, - 0, + 128, 131, 1, 81, @@ -14169,156 +14245,156 @@ pub mod inclusion_verifier { 3, 9, 97, - 73, - 192, + 74, + 64, 131, 1, 82, 128, 97, 60, - 0, + 128, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 73, - 224, + 74, + 96, 131, 1, 82, 128, 97, - 73, - 192, + 74, + 64, 131, 1, 81, 97, 73, - 96, + 224, 132, 1, 81, 8, 97, 74, - 0, + 128, 131, 1, 82, 128, 97, 55, - 32, + 160, 131, 1, 81, 97, - 48, - 160, + 49, + 32, 132, 1, 81, 9, 97, 74, - 32, + 160, 131, 1, 82, 128, 97, 55, - 32, + 160, 131, 1, 81, 97, - 48, - 192, + 49, + 64, 132, 1, 81, 9, 97, 74, - 64, + 192, 131, 1, 82, 128, 97, 55, - 32, + 160, 131, 1, 81, 97, - 48, - 224, + 49, + 96, 132, 1, 81, 9, 97, 74, - 96, + 224, 131, 1, 82, 128, 97, 55, - 32, + 160, 131, 1, 81, 97, 49, - 0, + 128, 132, 1, 81, 9, 97, - 74, - 128, + 75, + 0, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, 97, 49, - 32, + 160, 132, 1, 81, 9, 97, - 74, - 160, + 75, + 32, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -14326,8 +14402,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 74, - 192, + 75, + 64, 131, 1, 129, @@ -14335,7 +14411,7 @@ pub mod inclusion_verifier { 82, 97, 60, - 32, + 160, 131, 1, 81, @@ -14345,135 +14421,135 @@ pub mod inclusion_verifier { 3, 9, 97, - 74, - 224, + 75, + 96, 131, 1, 82, 128, 97, 60, - 32, + 160, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 75, - 0, + 128, 131, 1, 82, 128, 97, 60, - 32, + 160, 131, 1, 81, 97, 74, - 32, + 160, 132, 1, 81, 9, 97, 75, - 32, + 160, 131, 1, 82, 128, 97, 60, - 32, + 160, 131, 1, 81, 97, 74, - 64, + 192, 132, 1, 81, 9, 97, 75, - 64, + 192, 131, 1, 82, 128, 97, 60, - 32, + 160, 131, 1, 81, 97, 74, - 96, + 224, 132, 1, 81, 9, 97, 75, - 96, + 224, 131, 1, 82, 128, 97, 60, - 32, + 160, 131, 1, 81, 97, - 74, - 128, + 75, + 0, 132, 1, 81, 9, 97, - 75, - 128, + 76, + 0, 131, 1, 82, 128, 97, - 74, - 224, + 75, + 96, 131, 1, 81, 97, 74, - 0, + 128, 132, 1, 81, 8, 97, - 75, - 160, + 76, + 32, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -14485,16 +14561,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 75, - 192, + 76, + 64, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -14502,8 +14578,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 75, - 224, + 76, + 96, 131, 1, 129, @@ -14511,7 +14587,7 @@ pub mod inclusion_verifier { 82, 97, 60, - 64, + 192, 131, 1, 81, @@ -14522,47 +14598,47 @@ pub mod inclusion_verifier { 9, 97, 76, - 0, + 128, 131, 1, 82, 128, 97, 60, - 64, + 192, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 76, - 32, + 160, 131, 1, 82, 128, 97, 76, - 0, + 128, 131, 1, 81, 97, - 75, - 160, + 76, + 32, 132, 1, 81, 8, 97, 76, - 64, + 192, 131, 1, 129, @@ -14579,7 +14655,7 @@ pub mod inclusion_verifier { 9, 97, 76, - 96, + 224, 131, 1, 82, @@ -14591,15 +14667,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 62, - 192, + 63, + 64, 132, 1, 81, 9, 97, - 76, - 128, + 77, + 0, 131, 1, 82, @@ -14612,14 +14688,14 @@ pub mod inclusion_verifier { 81, 97, 63, - 64, + 192, 132, 1, 81, 9, 97, - 76, - 160, + 77, + 32, 131, 1, 82, @@ -14631,15 +14707,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 63, - 224, + 64, + 96, 132, 1, 81, 9, 97, - 76, - 192, + 77, + 64, 131, 1, 82, @@ -14651,15 +14727,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 64, - 128, + 65, + 0, 132, 1, 81, 9, 97, - 76, - 224, + 77, + 96, 131, 1, 82, @@ -14672,14 +14748,14 @@ pub mod inclusion_verifier { 81, 97, 65, - 32, + 160, 132, 1, 81, 9, 97, 77, - 0, + 128, 131, 1, 82, @@ -14691,15 +14767,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 65, - 192, + 66, + 64, 132, 1, 81, 9, 97, 77, - 32, + 160, 131, 1, 82, @@ -14712,14 +14788,14 @@ pub mod inclusion_verifier { 81, 97, 66, - 96, + 224, 132, 1, 81, 9, 97, 77, - 64, + 192, 131, 1, 82, @@ -14732,14 +14808,14 @@ pub mod inclusion_verifier { 81, 97, 67, - 0, + 128, 132, 1, 81, 9, 97, 77, - 96, + 224, 131, 1, 82, @@ -14751,15 +14827,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 67, - 160, + 68, + 32, 132, 1, 81, 9, 97, - 77, - 128, + 78, + 0, 131, 1, 82, @@ -14772,14 +14848,14 @@ pub mod inclusion_verifier { 81, 97, 68, - 64, + 192, 132, 1, 81, 9, 97, - 77, - 160, + 78, + 32, 131, 1, 82, @@ -14791,15 +14867,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 68, - 224, + 69, + 96, 132, 1, 81, 9, 97, - 77, - 192, + 78, + 64, 131, 1, 82, @@ -14811,15 +14887,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 69, - 128, + 70, + 0, 132, 1, 81, 9, 97, - 77, - 224, + 78, + 96, 131, 1, 82, @@ -14832,14 +14908,14 @@ pub mod inclusion_verifier { 81, 97, 70, - 32, + 160, 132, 1, 81, 9, 97, 78, - 0, + 128, 131, 1, 82, @@ -14851,15 +14927,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 70, - 192, + 71, + 64, 132, 1, 81, 9, 97, 78, - 32, + 160, 131, 1, 82, @@ -14872,14 +14948,14 @@ pub mod inclusion_verifier { 81, 97, 71, - 96, + 224, 132, 1, 81, 9, 97, 78, - 64, + 192, 131, 1, 82, @@ -14892,14 +14968,14 @@ pub mod inclusion_verifier { 81, 97, 72, - 0, + 128, 132, 1, 81, 9, 97, 78, - 96, + 224, 131, 1, 82, @@ -14911,15 +14987,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 72, - 160, + 73, + 32, 132, 1, 81, 9, 97, - 78, - 128, + 79, + 0, 131, 1, 82, @@ -14932,14 +15008,14 @@ pub mod inclusion_verifier { 81, 97, 73, - 64, + 192, 132, 1, 81, 9, 97, - 78, - 160, + 79, + 32, 131, 1, 82, @@ -14951,15 +15027,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 73, - 224, + 74, + 96, 132, 1, 81, 9, 97, - 78, - 192, + 79, + 64, 131, 1, 82, @@ -14972,14 +15048,14 @@ pub mod inclusion_verifier { 81, 97, 75, - 0, + 128, 132, 1, 81, 9, 97, - 78, - 224, + 79, + 96, 131, 1, 82, @@ -14992,14 +15068,14 @@ pub mod inclusion_verifier { 81, 97, 75, - 32, + 160, 132, 1, 81, 9, 97, 79, - 0, + 128, 131, 1, 82, @@ -15012,14 +15088,14 @@ pub mod inclusion_verifier { 81, 97, 75, - 64, + 192, 132, 1, 81, 9, 97, 79, - 32, + 160, 131, 1, 82, @@ -15032,14 +15108,14 @@ pub mod inclusion_verifier { 81, 97, 75, - 96, + 224, 132, 1, 81, 9, 97, 79, - 64, + 192, 131, 1, 82, @@ -15051,15 +15127,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 75, - 128, + 76, + 0, 132, 1, 81, 9, 97, 79, - 96, + 224, 131, 1, 82, @@ -15072,41 +15148,41 @@ pub mod inclusion_verifier { 81, 97, 76, - 32, + 160, 132, 1, 81, 9, 97, - 79, - 128, + 80, + 0, 131, 1, 82, 128, 97, 76, - 96, + 224, 131, 1, 81, 97, 62, - 0, + 128, 132, 1, 81, 8, 97, - 79, - 160, + 80, + 32, 131, 1, 82, 128, 97, 55, - 96, + 224, 131, 1, 81, @@ -15114,15 +15190,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 79, - 192, + 80, + 64, 131, 1, 82, 128, 97, 51, - 64, + 192, 131, 1, 81, @@ -15138,7 +15214,7 @@ pub mod inclusion_verifier { 131, 97, 51, - 96, + 224, 134, 1, 81, @@ -15156,8 +15232,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 51, - 128, + 52, + 0, 134, 1, 81, @@ -15170,16 +15246,16 @@ pub mod inclusion_verifier { 9, 8, 97, - 79, - 224, + 80, + 96, 132, 1, 129, 144, 82, 97, - 57, - 160, + 58, + 32, 132, 1, 81, @@ -15190,7 +15266,7 @@ pub mod inclusion_verifier { 9, 97, 80, - 0, + 128, 131, 1, 82, @@ -15199,7 +15275,7 @@ pub mod inclusion_verifier { 1, 97, 80, - 0, + 128, 132, 1, 81, @@ -15208,7 +15284,7 @@ pub mod inclusion_verifier { 9, 97, 80, - 32, + 160, 131, 1, 82, @@ -15216,82 +15292,82 @@ pub mod inclusion_verifier { 96, 1, 97, - 79, - 192, + 80, + 64, 132, 1, 81, 9, 97, 80, - 64, + 192, 131, 1, 82, 128, 97, - 60, - 128, + 61, + 0, 131, 1, 81, 97, 80, - 32, + 160, 132, 1, 81, 9, 97, 80, - 96, + 224, 131, 1, 82, 128, 97, - 60, - 128, + 61, + 0, 131, 1, 81, 97, 80, - 64, + 192, 132, 1, 81, 9, 97, - 80, - 128, + 81, + 0, 131, 1, 82, 128, 97, 80, - 96, + 224, 131, 1, 81, 97, - 79, - 160, + 80, + 32, 132, 1, 81, 8, 97, - 80, - 160, + 81, + 32, 131, 1, 82, 128, 97, - 55, - 160, + 56, + 32, 131, 1, 81, @@ -15299,15 +15375,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 80, - 192, + 81, + 64, 131, 1, 82, 128, 97, - 51, - 192, + 52, + 64, 131, 1, 81, @@ -15322,8 +15398,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 51, - 224, + 52, + 96, 134, 1, 81, @@ -15336,16 +15412,16 @@ pub mod inclusion_verifier { 9, 8, 97, - 80, - 224, + 81, + 96, 132, 1, 129, 144, 82, 97, - 57, - 192, + 58, + 64, 132, 1, 81, @@ -15356,7 +15432,7 @@ pub mod inclusion_verifier { 9, 97, 81, - 0, + 128, 131, 1, 82, @@ -15365,7 +15441,7 @@ pub mod inclusion_verifier { 1, 97, 81, - 0, + 128, 132, 1, 81, @@ -15374,7 +15450,7 @@ pub mod inclusion_verifier { 9, 97, 81, - 32, + 160, 131, 1, 82, @@ -15382,22 +15458,22 @@ pub mod inclusion_verifier { 96, 1, 97, - 80, - 192, + 81, + 64, 132, 1, 81, 9, 97, 81, - 64, + 192, 131, 1, 82, 128, 97, - 51, - 192, + 52, + 64, 131, 1, 81, @@ -15412,8 +15488,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 51, - 224, + 52, + 96, 134, 1, 81, @@ -15427,15 +15503,15 @@ pub mod inclusion_verifier { 8, 97, 81, - 96, + 224, 132, 1, 129, 144, 82, 97, - 57, - 192, + 58, + 64, 132, 1, 81, @@ -15445,8 +15521,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 81, - 128, + 82, + 0, 131, 1, 129, @@ -15464,8 +15540,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 81, - 160, + 82, + 32, 131, 1, 82, @@ -15477,43 +15553,43 @@ pub mod inclusion_verifier { 1, 81, 97, - 80, - 192, + 81, + 64, 132, 1, 81, 9, 97, - 81, - 192, + 82, + 64, 131, 1, 82, 128, 97, - 81, - 160, + 82, + 32, 131, 1, 81, 97, 81, - 32, + 160, 132, 1, 81, 8, 97, - 81, - 224, + 82, + 96, 131, 1, 129, 144, 82, 97, - 60, - 160, + 61, + 32, 131, 1, 81, @@ -15522,74 +15598,74 @@ pub mod inclusion_verifier { 9, 97, 82, - 0, + 128, 131, 1, 82, 128, 97, - 60, - 160, + 61, + 32, 131, 1, 81, 97, 81, - 64, + 192, 132, 1, 81, 9, 97, 82, - 32, + 160, 131, 1, 82, 128, 97, - 60, - 160, + 61, + 32, 131, 1, 81, 97, - 81, - 192, + 82, + 64, 132, 1, 81, 9, 97, 82, - 64, + 192, 131, 1, 82, 128, 97, 82, - 0, + 128, 131, 1, 81, 97, - 80, - 160, + 81, + 32, 132, 1, 81, 8, 97, 82, - 96, + 224, 131, 1, 82, 128, 97, - 55, - 224, + 56, + 96, 131, 1, 81, @@ -15597,15 +15673,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 82, - 128, + 83, + 0, 131, 1, 82, 128, 97, 52, - 0, + 128, 131, 1, 81, @@ -15621,7 +15697,7 @@ pub mod inclusion_verifier { 131, 97, 52, - 32, + 160, 134, 1, 81, @@ -15634,16 +15710,16 @@ pub mod inclusion_verifier { 9, 8, 97, - 82, - 160, + 83, + 32, 132, 1, 129, 144, 82, 97, - 57, - 224, + 58, + 96, 132, 1, 81, @@ -15653,8 +15729,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 82, - 192, + 83, + 64, 131, 1, 82, @@ -15662,8 +15738,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 82, - 192, + 83, + 64, 132, 1, 81, @@ -15671,8 +15747,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 82, - 224, + 83, + 96, 131, 1, 82, @@ -15680,82 +15756,82 @@ pub mod inclusion_verifier { 96, 1, 97, - 82, - 128, + 83, + 0, 132, 1, 81, 9, 97, 83, - 0, + 128, 131, 1, 82, 128, 97, - 60, - 192, + 61, + 64, 131, 1, 81, 97, - 82, - 224, + 83, + 96, 132, 1, 81, 9, 97, 83, - 32, + 160, 131, 1, 82, 128, 97, - 60, - 192, + 61, + 64, 131, 1, 81, 97, 83, - 0, + 128, 132, 1, 81, 9, 97, 83, - 64, + 192, 131, 1, 82, 128, 97, 83, - 32, + 160, 131, 1, 81, 97, 82, - 96, + 224, 132, 1, 81, 8, 97, 83, - 96, + 224, 131, 1, 82, 128, 97, 51, - 0, + 128, 131, 1, 81, @@ -15763,8 +15839,8 @@ pub mod inclusion_verifier { 1, 9, 97, - 83, - 128, + 84, + 0, 131, 1, 82, @@ -15779,16 +15855,16 @@ pub mod inclusion_verifier { 1, 9, 97, - 83, - 160, + 84, + 32, 131, 1, 82, 96, 1, 97, - 83, - 192, + 84, + 64, 131, 1, 129, @@ -15797,20 +15873,20 @@ pub mod inclusion_verifier { 96, 2, 97, - 83, - 224, + 84, + 96, 133, 1, 82, 97, 83, - 96, + 224, 132, 1, 81, 97, 84, - 0, + 128, 133, 1, 82, @@ -15832,26 +15908,26 @@ pub mod inclusion_verifier { 146, 80, 97, - 83, - 192, + 84, + 64, 130, 1, 81, 97, 84, - 32, + 160, 131, 1, 82, 97, - 83, - 224, + 84, + 96, 130, 1, 81, 97, 84, - 64, + 192, 131, 1, 82, @@ -15862,7 +15938,7 @@ pub mod inclusion_verifier { 81, 97, 84, - 96, + 224, 131, 1, 82, @@ -15872,8 +15948,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 84, - 128, + 85, + 0, 131, 1, 82, @@ -15884,14 +15960,14 @@ pub mod inclusion_verifier { 64, 97, 84, - 32, + 160, 133, 1, 96, 128, 97, 84, - 32, + 160, 135, 1, 96, @@ -15908,8 +15984,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 84, - 160, + 85, + 32, 131, 1, 82, @@ -15920,20 +15996,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 84, - 192, + 85, + 64, 131, 1, 82, 97, 62, - 32, + 160, 130, 1, 81, 97, - 84, - 224, + 85, + 96, 131, 1, 82, @@ -15943,15 +16019,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 84, - 160, + 85, + 32, 133, 1, 96, 96, 97, - 84, - 160, + 85, + 32, 135, 1, 96, @@ -15964,49 +16040,49 @@ pub mod inclusion_verifier { 80, 97, 84, - 32, + 160, 130, 1, 81, 97, 85, - 0, + 128, 131, 1, 82, 97, 84, - 64, + 192, 130, 1, 81, 97, 85, - 32, + 160, 131, 1, 82, 97, - 84, - 160, + 85, + 32, 130, 1, 81, 97, 85, - 64, + 192, 131, 1, 82, 97, - 84, - 192, + 85, + 64, 130, 1, 81, 97, 85, - 96, + 224, 131, 1, 82, @@ -16017,14 +16093,14 @@ pub mod inclusion_verifier { 64, 97, 85, - 0, + 128, 133, 1, 96, 128, 97, 85, - 0, + 128, 135, 1, 96, @@ -16042,8 +16118,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 85, - 128, + 86, + 0, 131, 1, 82, @@ -16054,20 +16130,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 85, - 160, + 86, + 32, 131, 1, 82, 97, - 76, - 128, + 77, + 0, 130, 1, 81, 97, - 85, - 192, + 86, + 64, 131, 1, 82, @@ -16077,15 +16153,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 85, - 128, + 86, + 0, 133, 1, 96, 96, 97, - 85, - 128, + 86, + 0, 135, 1, 96, @@ -16098,49 +16174,49 @@ pub mod inclusion_verifier { 80, 97, 85, - 0, + 128, 130, 1, 81, 97, - 85, - 224, + 86, + 96, 131, 1, 82, 97, 85, - 32, + 160, 130, 1, 81, 97, 86, - 0, + 128, 131, 1, 82, 97, - 85, - 128, + 86, + 0, 130, 1, 81, 97, 86, - 32, + 160, 131, 1, 82, 97, - 85, - 160, + 86, + 32, 130, 1, 81, 97, 86, - 64, + 192, 131, 1, 82, @@ -16150,15 +16226,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 85, - 224, + 86, + 96, 133, 1, 96, 128, 97, - 85, - 224, + 86, + 96, 135, 1, 96, @@ -16177,7 +16253,7 @@ pub mod inclusion_verifier { 81, 97, 86, - 96, + 224, 131, 1, 82, @@ -16188,20 +16264,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 86, - 128, + 87, + 0, 131, 1, 82, 97, - 76, - 160, + 77, + 32, 130, 1, 81, 97, - 86, - 160, + 87, + 32, 131, 1, 82, @@ -16212,14 +16288,14 @@ pub mod inclusion_verifier { 64, 97, 86, - 96, + 224, 133, 1, 96, 96, 97, 86, - 96, + 224, 135, 1, 96, @@ -16231,50 +16307,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 85, - 224, + 86, + 96, 130, 1, 81, 97, - 86, - 192, + 87, + 64, 131, 1, 82, 97, 86, - 0, + 128, 130, 1, 81, 97, - 86, - 224, + 87, + 96, 131, 1, 82, 97, 86, - 96, + 224, 130, 1, 81, 97, 87, - 0, + 128, 131, 1, 82, 97, - 86, - 128, + 87, + 0, 130, 1, 81, 97, 87, - 32, + 160, 131, 1, 82, @@ -16284,15 +16360,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 86, - 192, + 87, + 64, 133, 1, 96, 128, 97, - 86, - 192, + 87, + 64, 135, 1, 96, @@ -16304,92 +16380,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 4, - 102, - 17, - 180, - 75, - 180, - 244, - 205, - 143, - 207, - 111, - 130, - 254, - 214, - 65, - 211, - 73, - 97, - 184, - 138, - 96, + 41, + 155, 18, - 223, - 94, - 15, - 68, - 212, - 244, - 2, - 72, - 213, + 230, + 83, + 153, + 220, + 234, + 63, + 30, + 12, + 224, + 70, + 207, + 95, + 147, + 206, 123, + 169, + 247, + 121, + 191, + 163, + 158, + 127, + 12, + 109, + 76, + 25, + 98, + 138, + 144, 97, 87, - 64, + 192, 131, 1, 82, 127, - 37, - 184, - 67, - 83, - 169, - 44, - 55, - 187, - 21, - 100, - 87, - 227, - 27, - 145, - 51, - 220, - 129, - 36, - 94, + 33, + 197, + 119, + 18, + 42, + 61, 31, - 55, - 116, - 184, - 152, - 244, - 28, - 245, + 77, + 1, + 155, + 147, + 231, + 36, + 217, + 129, + 176, + 101, + 62, + 217, + 79, + 73, + 46, + 175, + 236, + 80, + 148, + 82, + 49, + 147, + 95, 154, - 123, - 10, - 223, - 87, + 149, 97, 87, - 96, + 224, 131, 1, 82, 97, - 76, - 192, + 77, + 64, 130, 1, 81, 97, - 87, - 128, + 88, + 0, 131, 1, 82, @@ -16400,14 +16476,14 @@ pub mod inclusion_verifier { 64, 97, 87, - 64, + 192, 133, 1, 96, 96, 97, 87, - 64, + 192, 135, 1, 96, @@ -16419,50 +16495,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 86, - 192, + 87, + 64, 130, 1, 81, 97, - 87, - 160, + 88, + 32, 131, 1, 82, 97, - 86, - 224, + 87, + 96, 130, 1, 81, 97, - 87, - 192, + 88, + 64, 131, 1, 82, 97, 87, - 64, + 192, 130, 1, 81, 97, - 87, - 224, + 88, + 96, 131, 1, 82, 97, 87, - 96, + 224, 130, 1, 81, 97, 88, - 0, + 128, 131, 1, 82, @@ -16472,15 +16548,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 87, - 160, + 88, + 32, 133, 1, 96, 128, 97, - 87, - 160, + 88, + 32, 135, 1, 96, @@ -16492,92 +16568,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 37, - 157, - 169, - 246, - 67, - 24, + 25, + 217, + 34, + 1, + 65, + 190, + 242, + 89, + 33, + 212, + 116, + 198, + 230, + 52, + 208, + 109, + 251, + 125, 121, - 48, - 206, - 18, - 153, + 4, + 229, + 154, + 78, + 196, + 134, + 161, + 72, + 176, + 11, + 253, + 56, 163, - 247, - 0, - 169, - 63, - 23, - 207, - 49, - 41, - 191, - 254, - 24, - 74, - 109, - 225, - 207, - 25, - 240, - 185, - 31, - 126, 97, 88, - 32, + 160, 131, 1, 82, 127, - 41, - 252, - 188, - 5, - 205, - 44, - 1, - 82, - 179, - 235, - 33, - 232, - 253, - 1, - 160, - 11, - 199, - 151, + 47, + 56, + 81, + 30, + 83, + 104, 128, - 242, - 18, - 129, - 89, - 136, - 115, - 251, + 86, + 182, + 147, + 200, + 78, + 246, + 154, + 122, + 226, + 185, + 171, + 72, + 41, + 6, + 220, + 70, + 174, + 157, 149, - 93, - 186, - 35, - 95, - 126, + 34, + 253, + 60, + 224, + 152, + 182, 97, 88, - 64, + 192, 131, 1, 82, 97, - 76, - 224, + 77, + 96, 130, 1, 81, 97, 88, - 96, + 224, 131, 1, 82, @@ -16588,14 +16664,14 @@ pub mod inclusion_verifier { 64, 97, 88, - 32, + 160, 133, 1, 96, 96, 97, 88, - 32, + 160, 135, 1, 96, @@ -16607,50 +16683,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 87, - 160, + 88, + 32, 130, 1, 81, 97, - 88, - 128, + 89, + 0, 131, 1, 82, 97, - 87, - 192, + 88, + 64, 130, 1, 81, 97, - 88, - 160, + 89, + 32, 131, 1, 82, 97, 88, - 32, + 160, 130, 1, 81, 97, - 88, - 192, + 89, + 64, 131, 1, 82, 97, 88, - 64, + 192, 130, 1, 81, 97, - 88, - 224, + 89, + 96, 131, 1, 82, @@ -16660,15 +16736,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 88, - 128, + 89, + 0, 133, 1, 96, 128, 97, - 88, - 128, + 89, + 0, 135, 1, 96, @@ -16680,92 +16756,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 43, - 153, + 23, + 231, 203, - 73, - 202, - 104, - 86, - 38, - 160, - 140, - 0, - 158, - 164, - 66, - 252, - 137, - 90, - 47, - 134, - 204, - 161, - 242, - 159, - 24, - 212, - 183, - 236, - 158, + 106, + 48, + 196, 206, - 147, - 122, - 162, + 154, + 61, + 141, + 230, + 4, + 219, + 175, + 81, + 123, + 31, + 35, + 228, + 64, + 172, + 185, + 231, + 52, + 89, + 56, + 255, + 91, + 36, + 90, + 64, + 62, 97, 89, - 0, + 128, 131, 1, 82, 127, - 32, + 28, + 49, 164, - 92, - 174, - 51, - 243, - 145, - 114, - 5, - 183, + 45, + 125, + 163, + 96, + 204, + 232, + 38, + 46, + 33, + 251, + 154, + 94, + 242, 106, + 35, 235, - 135, - 228, - 9, - 53, - 8, - 64, - 102, + 188, + 246, + 153, + 92, + 202, + 184, + 154, + 238, 64, - 88, - 131, - 155, - 29, - 183, - 111, - 135, - 97, - 219, - 80, - 250, - 200, + 12, + 46, + 153, + 75, 97, 89, - 32, + 160, 131, 1, 82, 97, 77, - 0, + 128, 130, 1, 81, 97, 89, - 64, + 192, 131, 1, 82, @@ -16776,14 +16852,14 @@ pub mod inclusion_verifier { 64, 97, 89, - 0, + 128, 133, 1, 96, 96, 97, 89, - 0, + 128, 135, 1, 96, @@ -16795,50 +16871,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 88, - 128, + 89, + 0, 130, 1, 81, 97, 89, - 96, + 224, 131, 1, 82, 97, - 88, - 160, + 89, + 32, 130, 1, 81, 97, - 89, - 128, + 90, + 0, 131, 1, 82, 97, 89, - 0, + 128, 130, 1, 81, 97, - 89, - 160, + 90, + 32, 131, 1, 82, 97, 89, - 32, + 160, 130, 1, 81, 97, - 89, - 192, + 90, + 64, 131, 1, 82, @@ -16849,14 +16925,14 @@ pub mod inclusion_verifier { 64, 97, 89, - 96, + 224, 133, 1, 96, 128, 97, 89, - 96, + 224, 135, 1, 96, @@ -16868,92 +16944,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 37, - 162, - 101, - 165, - 121, - 66, - 34, - 54, - 87, - 179, - 49, - 108, - 145, - 59, - 255, - 232, - 219, - 14, - 254, - 219, - 237, - 154, - 200, - 120, + 5, + 89, + 28, + 127, + 170, + 44, + 158, + 175, + 28, + 149, + 115, + 168, + 75, + 221, + 236, 48, - 142, - 29, - 99, - 212, - 223, - 97, - 216, + 50, + 25, + 171, + 244, + 150, + 175, + 8, + 153, + 237, + 67, + 136, + 83, + 34, + 125, + 208, + 86, 97, - 89, - 224, + 90, + 96, 131, 1, 82, 127, - 13, - 47, - 121, - 96, + 44, + 250, + 36, + 253, + 229, + 118, + 117, + 11, 64, - 148, - 181, - 63, - 213, - 106, - 149, - 93, - 37, + 54, + 223, + 254, + 64, + 16, + 94, + 107, + 114, + 68, + 246, + 56, + 67, + 236, 116, - 226, - 65, - 173, - 103, - 73, - 138, - 179, - 32, - 242, - 187, - 118, - 72, - 65, - 245, - 201, - 3, - 191, - 249, + 217, + 208, + 170, + 212, + 139, + 164, + 19, + 40, + 124, 97, 90, - 0, + 128, 131, 1, 82, 97, 77, - 32, + 160, 130, 1, 81, 97, 90, - 32, + 160, 131, 1, 82, @@ -16963,15 +17039,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 89, - 224, + 90, + 96, 133, 1, 96, 96, 97, - 89, - 224, + 90, + 96, 135, 1, 96, @@ -16984,49 +17060,49 @@ pub mod inclusion_verifier { 80, 97, 89, - 96, + 224, 130, 1, 81, 97, 90, - 64, + 192, 131, 1, 82, 97, - 89, - 128, + 90, + 0, 130, 1, 81, 97, 90, - 96, + 224, 131, 1, 82, 97, - 89, - 224, + 90, + 96, 130, 1, 81, 97, - 90, - 128, + 91, + 0, 131, 1, 82, 97, 90, - 0, + 128, 130, 1, 81, 97, - 90, - 160, + 91, + 32, 131, 1, 82, @@ -17037,14 +17113,14 @@ pub mod inclusion_verifier { 64, 97, 90, - 64, + 192, 133, 1, 96, 128, 97, 90, - 64, + 192, 135, 1, 96, @@ -17089,8 +17165,8 @@ pub mod inclusion_verifier { 186, 164, 97, - 90, - 192, + 91, + 64, 131, 1, 82, @@ -17128,20 +17204,20 @@ pub mod inclusion_verifier { 39, 192, 97, - 90, - 224, + 91, + 96, 131, 1, 82, 97, 77, - 64, + 192, 130, 1, 81, 97, 91, - 0, + 128, 131, 1, 82, @@ -17151,15 +17227,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 90, - 192, + 91, + 64, 133, 1, 96, 96, 97, - 90, - 192, + 91, + 64, 135, 1, 96, @@ -17172,49 +17248,49 @@ pub mod inclusion_verifier { 80, 97, 90, - 64, + 192, 130, 1, 81, 97, 91, - 32, + 160, 131, 1, 82, 97, 90, - 96, + 224, 130, 1, 81, 97, 91, - 64, + 192, 131, 1, 82, 97, - 90, - 192, + 91, + 64, 130, 1, 81, 97, 91, - 96, + 224, 131, 1, 82, 97, - 90, - 224, + 91, + 96, 130, 1, 81, 97, - 91, - 128, + 92, + 0, 131, 1, 82, @@ -17225,14 +17301,14 @@ pub mod inclusion_verifier { 64, 97, 91, - 32, + 160, 133, 1, 96, 128, 97, 91, - 32, + 160, 135, 1, 96, @@ -17244,92 +17320,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 1, - 96, - 164, - 116, - 162, - 200, - 222, - 86, - 149, - 11, - 190, - 37, - 214, - 240, - 144, - 2, - 169, - 31, + 25, + 32, + 107, + 235, + 197, + 204, + 74, + 91, + 105, 44, + 88, + 188, + 97, + 231, + 174, + 198, + 211, + 251, + 184, + 52, + 78, + 57, + 161, + 51, + 105, + 159, + 116, + 230, + 244, + 14, 194, - 15, - 189, - 177, - 94, - 132, - 19, - 241, - 23, - 110, - 127, - 24, - 101, + 168, 97, - 91, - 160, + 92, + 32, 131, 1, 82, 127, - 29, - 15, - 87, - 151, - 234, - 174, - 168, - 158, - 81, - 25, - 228, + 6, + 120, + 199, + 189, + 209, + 65, + 189, 38, - 13, - 181, - 99, - 96, + 203, + 233, + 51, + 111, + 93, + 207, + 28, 90, - 132, - 208, - 4, - 184, - 239, - 208, - 44, - 81, - 185, - 96, - 191, - 236, + 140, 242, - 14, - 144, + 26, + 89, + 39, + 175, + 209, + 178, + 243, + 147, + 21, + 46, + 224, + 42, + 106, + 120, 97, - 91, - 192, + 92, + 64, 131, 1, 82, 97, 77, - 96, + 224, 130, 1, 81, 97, - 91, - 224, + 92, + 96, 131, 1, 82, @@ -17339,15 +17415,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 91, - 160, + 92, + 32, 133, 1, 96, 96, 97, - 91, - 160, + 92, + 32, 135, 1, 96, @@ -17360,49 +17436,49 @@ pub mod inclusion_verifier { 80, 97, 91, - 32, + 160, 130, 1, 81, 97, 92, - 0, + 128, 131, 1, 82, 97, 91, - 64, + 192, 130, 1, 81, 97, 92, - 32, + 160, 131, 1, 82, 97, - 91, - 160, + 92, + 32, 130, 1, 81, 97, 92, - 64, + 192, 131, 1, 82, 97, - 91, - 192, + 92, + 64, 130, 1, 81, 97, 92, - 96, + 224, 131, 1, 82, @@ -17413,14 +17489,14 @@ pub mod inclusion_verifier { 64, 97, 92, - 0, + 128, 133, 1, 96, 128, 97, 92, - 0, + 128, 135, 1, 96, @@ -17432,92 +17508,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 2, - 182, - 25, - 162, - 162, - 69, - 179, - 112, + 28, + 110, + 35, + 67, + 51, + 55, + 131, + 180, + 244, + 138, + 231, + 210, + 104, + 26, + 251, + 60, + 223, + 106, + 77, + 251, + 200, + 58, + 80, + 12, + 176, + 109, 179, - 49, - 158, - 33, - 224, - 190, - 70, - 114, - 86, - 32, - 147, - 56, - 207, - 149, - 70, - 68, - 123, - 135, + 38, 90, - 39, - 121, - 224, - 16, - 212, + 211, + 229, + 213, 97, - 92, - 128, + 93, + 0, 131, 1, 82, 127, - 7, - 215, - 240, + 26, 61, + 131, + 109, + 67, + 37, + 255, + 48, + 20, + 76, + 30, + 32, + 56, + 164, + 212, + 2, + 95, + 208, 240, - 99, - 69, - 186, - 45, + 26, 242, - 11, - 184, - 103, - 132, - 31, - 96, - 235, - 210, - 93, - 170, - 181, - 170, - 250, - 19, - 221, - 193, - 65, - 49, - 22, - 153, - 104, - 2, + 76, + 253, + 141, + 253, + 84, + 1, + 142, + 100, + 243, + 176, + 152, 97, - 92, - 160, + 93, + 32, 131, 1, 82, 97, - 77, - 128, + 78, + 0, 130, 1, 81, 97, - 92, - 192, + 93, + 64, 131, 1, 82, @@ -17527,15 +17603,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 92, - 128, + 93, + 0, 133, 1, 96, 96, 97, - 92, - 128, + 93, + 0, 135, 1, 96, @@ -17548,49 +17624,49 @@ pub mod inclusion_verifier { 80, 97, 92, - 0, + 128, 130, 1, 81, 97, - 92, - 224, + 93, + 96, 131, 1, 82, 97, 92, - 32, + 160, 130, 1, 81, 97, 93, - 0, + 128, 131, 1, 82, 97, - 92, - 128, + 93, + 0, 130, 1, 81, 97, 93, - 32, + 160, 131, 1, 82, 97, - 92, - 160, + 93, + 32, 130, 1, 81, 97, 93, - 64, + 192, 131, 1, 82, @@ -17600,15 +17676,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 92, - 224, + 93, + 96, 133, 1, 96, 128, 97, - 92, - 224, + 93, + 96, 135, 1, 96, @@ -17654,7 +17730,7 @@ pub mod inclusion_verifier { 107, 97, 93, - 96, + 224, 131, 1, 82, @@ -17692,20 +17768,20 @@ pub mod inclusion_verifier { 240, 151, 97, - 93, - 128, + 94, + 0, 131, 1, 82, 97, - 77, - 160, + 78, + 32, 130, 1, 81, 97, - 93, - 160, + 94, + 32, 131, 1, 82, @@ -17716,14 +17792,14 @@ pub mod inclusion_verifier { 64, 97, 93, - 96, + 224, 133, 1, 96, 96, 97, 93, - 96, + 224, 135, 1, 96, @@ -17735,50 +17811,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 92, - 224, + 93, + 96, 130, 1, 81, 97, - 93, - 192, + 94, + 64, 131, 1, 82, 97, 93, - 0, + 128, 130, 1, 81, 97, - 93, - 224, + 94, + 96, 131, 1, 82, 97, 93, - 96, + 224, 130, 1, 81, 97, 94, - 0, + 128, 131, 1, 82, 97, - 93, - 128, + 94, + 0, 130, 1, 81, 97, 94, - 32, + 160, 131, 1, 82, @@ -17788,15 +17864,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 93, - 192, + 94, + 64, 133, 1, 96, 128, 97, - 93, - 192, + 94, + 64, 135, 1, 96, @@ -17842,7 +17918,7 @@ pub mod inclusion_verifier { 145, 97, 94, - 64, + 192, 131, 1, 82, @@ -17881,19 +17957,19 @@ pub mod inclusion_verifier { 253, 97, 94, - 96, + 224, 131, 1, 82, 97, - 77, - 192, + 78, + 64, 130, 1, 81, 97, - 94, - 128, + 95, + 0, 131, 1, 82, @@ -17904,14 +17980,14 @@ pub mod inclusion_verifier { 64, 97, 94, - 64, + 192, 133, 1, 96, 96, 97, 94, - 64, + 192, 135, 1, 96, @@ -17923,50 +17999,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 93, - 192, + 94, + 64, 130, 1, 81, 97, - 94, - 160, + 95, + 32, 131, 1, 82, 97, - 93, - 224, + 94, + 96, 130, 1, 81, 97, - 94, - 192, + 95, + 64, 131, 1, 82, 97, 94, - 64, + 192, 130, 1, 81, 97, - 94, - 224, + 95, + 96, 131, 1, 82, 97, 94, - 96, + 224, 130, 1, 81, 97, 95, - 0, + 128, 131, 1, 82, @@ -17976,15 +18052,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 94, - 160, + 95, + 32, 133, 1, 96, 128, 97, - 94, - 160, + 95, + 32, 135, 1, 96, @@ -17996,92 +18072,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 19, + 9, + 227, + 48, + 50, + 69, + 227, + 176, + 10, 202, - 246, - 250, - 104, - 122, - 84, - 111, - 209, - 238, - 185, - 224, - 212, - 58, + 137, + 78, 159, - 143, - 233, - 163, - 240, - 83, - 34, - 245, - 237, - 218, - 27, - 149, - 213, - 14, - 131, - 131, - 152, + 186, + 61, 81, + 132, + 255, + 55, + 57, + 198, + 100, + 227, + 99, + 242, + 5, + 212, + 47, + 238, + 227, + 39, + 182, + 170, 97, 95, - 32, + 160, 131, 1, 82, 127, - 34, - 226, - 118, - 135, - 117, - 226, - 217, - 111, - 216, + 19, + 206, 146, - 92, - 72, - 169, - 157, - 242, - 178, + 40, + 60, + 198, + 246, 72, - 203, - 61, - 137, - 58, - 21, - 185, - 220, - 168, - 22, + 189, + 218, + 134, + 24, + 45, + 145, + 133, + 42, + 171, + 92, 96, - 183, + 136, + 171, + 0, + 141, 156, - 195, - 95, - 74, + 219, + 85, + 34, + 252, + 191, + 92, + 98, + 137, 97, 95, - 64, + 192, 131, 1, 82, 97, - 77, - 224, + 78, + 96, 130, 1, 81, 97, 95, - 96, + 224, 131, 1, 82, @@ -18092,14 +18168,14 @@ pub mod inclusion_verifier { 64, 97, 95, - 32, + 160, 133, 1, 96, 96, 97, 95, - 32, + 160, 135, 1, 96, @@ -18111,50 +18187,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 94, - 160, + 95, + 32, 130, 1, 81, 97, - 95, - 128, + 96, + 0, 131, 1, 82, 97, - 94, - 192, + 95, + 64, 130, 1, 81, 97, - 95, - 160, + 96, + 32, 131, 1, 82, 97, 95, - 32, + 160, 130, 1, 81, 97, - 95, - 192, + 96, + 64, 131, 1, 82, 97, 95, - 64, + 192, 130, 1, 81, 97, - 95, - 224, + 96, + 96, 131, 1, 82, @@ -18164,15 +18240,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 95, - 128, + 96, + 0, 133, 1, 96, 128, 97, - 95, - 128, + 96, + 0, 135, 1, 96, @@ -18184,92 +18260,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 25, - 160, - 116, - 220, - 109, - 26, - 15, - 30, - 85, - 137, + 8, 165, - 93, - 156, - 73, - 85, - 207, - 134, - 126, - 40, - 153, - 219, - 253, - 70, + 3, + 231, 161, - 28, - 39, + 102, + 132, 168, - 72, - 4, - 181, - 178, - 57, - 97, - 96, - 0, - 131, - 1, - 82, - 127, - 38, - 177, - 18, - 251, - 89, - 160, - 184, - 117, - 131, - 62, - 82, - 249, - 81, - 179, - 176, - 16, - 130, - 107, - 22, + 25, + 145, + 219, + 252, + 94, + 200, + 76, 159, - 50, - 13, + 75, + 15, + 122, + 80, + 109, + 223, + 38, + 182, + 125, + 48, + 94, + 191, + 192, + 248, + 23, + 67, + 97, + 96, 128, - 89, + 131, + 1, + 82, 127, - 18, - 117, - 84, - 74, - 226, - 72, - 151, + 8, + 162, + 216, + 225, + 118, + 15, + 251, + 22, + 247, + 1, + 71, + 248, + 180, + 78, + 120, + 28, + 237, + 101, + 161, + 230, + 119, + 167, + 134, + 205, + 216, + 188, + 159, + 148, + 123, + 54, + 19, + 28, 97, 96, - 32, + 160, 131, 1, 82, 97, 78, - 0, + 128, 130, 1, 81, 97, 96, - 64, + 192, 131, 1, 82, @@ -18280,14 +18356,14 @@ pub mod inclusion_verifier { 64, 97, 96, - 0, + 128, 133, 1, 96, 96, 97, 96, - 0, + 128, 135, 1, 96, @@ -18299,50 +18375,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 95, - 128, + 96, + 0, 130, 1, 81, 97, 96, - 96, + 224, 131, 1, 82, 97, - 95, - 160, + 96, + 32, 130, 1, 81, 97, - 96, - 128, + 97, + 0, 131, 1, 82, 97, 96, - 0, + 128, 130, 1, 81, 97, - 96, - 160, + 97, + 32, 131, 1, 82, 97, 96, - 32, + 160, 130, 1, 81, 97, - 96, - 192, + 97, + 64, 131, 1, 82, @@ -18353,14 +18429,14 @@ pub mod inclusion_verifier { 64, 97, 96, - 96, + 224, 133, 1, 96, 128, 97, 96, - 96, + 224, 135, 1, 96, @@ -18372,92 +18448,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 28, + 37, + 99, + 43, + 200, + 1, + 44, + 108, + 188, 109, - 246, + 221, + 166, 97, - 40, - 102, + 169, + 114, + 159, + 84, + 76, + 84, + 98, 7, - 157, - 194, - 165, - 37, - 37, + 0, + 195, 132, - 44, - 128, - 37, - 80, - 46, - 181, - 168, - 145, - 60, - 86, - 8, - 54, - 196, - 188, - 122, - 178, - 220, - 51, - 78, + 12, + 1, + 202, + 91, + 87, + 230, + 26, + 31, + 254, + 97, 97, 96, - 224, 131, 1, 82, 127, - 13, - 54, - 254, 43, - 246, - 213, - 130, - 145, - 237, - 3, - 90, - 31, - 9, - 9, - 4, - 99, - 149, - 2, - 33, + 165, + 118, + 76, + 102, 58, - 36, - 73, - 34, - 125, - 21, - 110, - 227, - 248, - 246, - 55, - 46, - 44, + 75, + 40, + 146, + 52, + 60, + 48, + 61, + 160, + 245, + 102, + 78, + 63, + 98, + 13, + 214, + 184, + 81, + 167, + 17, + 120, + 23, + 4, + 41, + 47, + 209, + 26, 97, 97, - 0, + 128, 131, 1, 82, 97, 78, - 32, + 160, 130, 1, 81, 97, 97, - 32, + 160, 131, 1, 82, @@ -18467,15 +18543,15 @@ pub mod inclusion_verifier { 96, 64, 97, + 97, 96, - 224, 133, 1, 96, 96, 97, + 97, 96, - 224, 135, 1, 96, @@ -18488,49 +18564,49 @@ pub mod inclusion_verifier { 80, 97, 96, - 96, + 224, 130, 1, 81, 97, 97, - 64, + 192, 131, 1, 82, 97, - 96, - 128, + 97, + 0, 130, 1, 81, 97, 97, - 96, + 224, 131, 1, 82, 97, + 97, 96, - 224, 130, 1, 81, 97, - 97, - 128, + 98, + 0, 131, 1, 82, 97, 97, - 0, + 128, 130, 1, 81, 97, - 97, - 160, + 98, + 32, 131, 1, 82, @@ -18541,14 +18617,14 @@ pub mod inclusion_verifier { 64, 97, 97, - 64, + 192, 133, 1, 96, 128, 97, 97, - 64, + 192, 135, 1, 96, @@ -18560,92 +18636,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 1, - 173, - 209, - 225, - 77, - 10, - 24, - 128, - 238, - 142, - 131, - 123, + 7, + 207, + 228, + 243, + 21, + 43, + 25, + 150, + 232, + 234, + 253, + 113, + 132, + 81, + 53, + 108, 32, - 80, - 39, - 19, - 208, - 100, - 40, - 213, - 93, - 97, - 254, - 168, - 254, + 68, + 228, + 194, + 57, + 252, + 194, + 158, + 179, 168, - 154, - 113, - 100, - 137, - 113, - 250, - 97, + 29, + 57, + 46, + 27, + 68, + 173, 97, - 192, + 98, + 64, 131, 1, 82, 127, - 18, - 201, - 130, - 70, - 110, - 166, - 220, - 250, - 218, - 58, - 208, + 37, + 86, + 115, 226, - 119, - 254, + 36, + 165, + 148, + 229, + 63, + 213, + 177, + 180, + 220, 212, - 79, - 119, - 4, - 102, - 101, - 13, - 71, + 99, + 41, + 231, + 42, 4, - 144, - 106, - 77, - 52, - 182, - 184, - 216, - 190, - 209, - 97, + 225, + 96, + 86, + 222, + 163, + 213, + 161, + 126, + 49, + 41, + 26, + 153, + 96, 97, - 224, + 98, + 96, 131, 1, 82, 97, 78, - 64, + 192, 130, 1, 81, 97, 98, - 0, + 128, 131, 1, 82, @@ -18655,15 +18731,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 97, - 192, + 98, + 64, 133, 1, 96, 96, 97, - 97, - 192, + 98, + 64, 135, 1, 96, @@ -18676,49 +18752,49 @@ pub mod inclusion_verifier { 80, 97, 97, - 64, + 192, 130, 1, 81, 97, 98, - 32, + 160, 131, 1, 82, 97, 97, - 96, + 224, 130, 1, 81, 97, 98, - 64, + 192, 131, 1, 82, 97, - 97, - 192, + 98, + 64, 130, 1, 81, 97, 98, - 96, + 224, 131, 1, 82, 97, - 97, - 224, + 98, + 96, 130, 1, 81, 97, - 98, - 128, + 99, + 0, 131, 1, 82, @@ -18729,14 +18805,14 @@ pub mod inclusion_verifier { 64, 97, 98, - 32, + 160, 133, 1, 96, 128, 97, 98, - 32, + 160, 135, 1, 96, @@ -18748,92 +18824,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 47, - 174, - 233, - 254, - 78, - 185, - 123, - 55, - 171, - 180, - 253, - 209, - 182, - 4, - 237, - 138, - 207, + 19, + 108, + 177, + 75, + 53, + 31, + 59, + 67, + 181, + 230, + 24, + 197, + 196, + 144, + 34, + 88, + 142, + 221, + 72, 85, - 223, - 10, - 55, - 11, - 207, - 231, - 245, - 97, - 91, - 117, - 152, - 152, - 157, - 122, + 15, + 78, + 125, + 105, + 48, + 148, + 66, + 232, + 184, + 61, + 13, + 34, 97, - 98, - 160, + 99, + 32, 131, 1, 82, 127, - 34, - 105, - 175, - 248, - 108, - 63, - 211, - 88, - 100, - 243, - 226, - 203, - 57, - 219, - 98, - 62, - 1, - 34, - 160, - 91, - 107, - 95, - 120, - 159, - 245, - 116, - 52, - 229, - 87, - 169, - 12, + 14, + 233, + 187, + 223, + 206, + 147, + 129, + 94, + 121, + 170, + 191, + 197, + 236, + 146, + 165, 35, + 70, + 196, + 106, + 69, + 225, + 123, + 197, + 188, + 154, + 216, + 21, + 94, + 152, + 44, + 156, + 172, 97, - 98, - 192, + 99, + 64, 131, 1, 82, 97, 78, - 96, + 224, 130, 1, 81, 97, - 98, - 224, + 99, + 96, 131, 1, 82, @@ -18843,15 +18919,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 98, - 160, + 99, + 32, 133, 1, 96, 96, 97, - 98, - 160, + 99, + 32, 135, 1, 96, @@ -18864,49 +18940,49 @@ pub mod inclusion_verifier { 80, 97, 98, - 32, + 160, 130, 1, 81, 97, 99, - 0, + 128, 131, 1, 82, 97, 98, - 64, + 192, 130, 1, 81, 97, 99, - 32, + 160, 131, 1, 82, 97, - 98, - 160, + 99, + 32, 130, 1, 81, 97, 99, - 64, + 192, 131, 1, 82, 97, - 98, - 192, + 99, + 64, 130, 1, 81, 97, 99, - 96, + 224, 131, 1, 82, @@ -18917,14 +18993,14 @@ pub mod inclusion_verifier { 64, 97, 99, - 0, + 128, 133, 1, 96, 128, 97, 99, - 0, + 128, 135, 1, 96, @@ -18969,8 +19045,8 @@ pub mod inclusion_verifier { 41, 116, 97, - 99, - 128, + 100, + 0, 131, 1, 82, @@ -19008,20 +19084,20 @@ pub mod inclusion_verifier { 25, 227, 97, - 99, - 160, + 100, + 32, 131, 1, 82, 97, - 78, - 128, + 79, + 0, 130, 1, 81, 97, - 99, - 192, + 100, + 64, 131, 1, 82, @@ -19031,15 +19107,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 99, - 128, + 100, + 0, 133, 1, 96, 96, 97, - 99, - 128, + 100, + 0, 135, 1, 96, @@ -19052,49 +19128,49 @@ pub mod inclusion_verifier { 80, 97, 99, - 0, + 128, 130, 1, 81, 97, - 99, - 224, + 100, + 96, 131, 1, 82, 97, 99, - 32, + 160, 130, 1, 81, 97, 100, - 0, + 128, 131, 1, 82, 97, - 99, - 128, + 100, + 0, 130, 1, 81, 97, 100, - 32, + 160, 131, 1, 82, 97, - 99, - 160, + 100, + 32, 130, 1, 81, 97, 100, - 64, + 192, 131, 1, 82, @@ -19104,15 +19180,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 99, - 224, + 100, + 96, 133, 1, 96, 128, 97, - 99, - 224, + 100, + 96, 135, 1, 96, @@ -19124,92 +19200,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 1, - 182, - 146, - 28, - 196, - 195, - 90, - 3, - 214, - 150, - 231, - 84, + 31, + 93, + 105, + 248, + 173, + 199, + 222, + 243, + 83, + 202, + 197, + 48, + 19, + 49, + 246, + 106, + 106, + 161, + 44, + 59, + 220, + 70, 186, - 192, - 110, - 219, - 168, - 24, - 116, - 153, - 37, - 45, - 152, - 218, - 126, - 125, - 64, - 184, - 68, - 242, - 66, - 69, + 133, + 9, + 216, + 28, + 25, + 34, + 148, + 76, + 30, 97, 100, - 96, + 224, 131, 1, 82, 127, - 24, - 29, - 250, - 41, - 72, - 137, - 96, - 26, - 156, - 197, - 116, - 72, - 217, - 102, - 185, - 204, - 96, + 5, + 10, + 53, + 140, + 142, 231, - 121, - 90, - 179, - 54, - 210, - 7, - 141, - 196, - 58, + 73, + 1, + 175, + 214, + 190, + 189, + 218, + 53, + 162, + 91, + 233, + 155, + 166, + 49, + 35, + 42, + 190, + 192, + 187, + 125, + 242, + 52, + 40, + 226, + 25, 235, - 136, - 132, - 132, - 251, 97, - 100, - 128, + 101, + 0, 131, 1, 82, 97, - 78, - 160, + 79, + 32, 130, 1, 81, 97, - 100, - 160, + 101, + 32, 131, 1, 82, @@ -19220,14 +19296,14 @@ pub mod inclusion_verifier { 64, 97, 100, - 96, + 224, 133, 1, 96, 96, 97, 100, - 96, + 224, 135, 1, 96, @@ -19239,50 +19315,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 99, - 224, + 100, + 96, 130, 1, 81, 97, - 100, - 192, + 101, + 64, 131, 1, 82, 97, 100, - 0, + 128, 130, 1, 81, 97, - 100, - 224, + 101, + 96, 131, 1, 82, 97, 100, - 96, + 224, 130, 1, 81, 97, 101, - 0, + 128, 131, 1, 82, 97, - 100, - 128, + 101, + 0, 130, 1, 81, 97, 101, - 32, + 160, 131, 1, 82, @@ -19292,15 +19368,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 100, - 192, + 101, + 64, 133, 1, 96, 128, 97, - 100, - 192, + 101, + 64, 135, 1, 96, @@ -19312,92 +19388,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 15, - 13, - 205, - 170, - 111, - 210, - 243, - 100, - 96, - 55, - 101, - 87, + 29, + 219, 249, - 214, - 180, - 176, - 152, - 91, - 8, - 93, - 45, - 143, - 252, - 167, + 28, + 238, + 237, + 136, + 168, 198, - 196, - 8, - 216, - 86, - 13, - 93, - 8, + 110, + 155, + 248, + 208, + 137, + 179, + 9, + 141, + 192, + 131, + 241, + 87, + 144, + 135, + 7, + 150, + 167, + 38, + 127, + 37, + 207, + 155, + 240, 97, 101, - 64, + 192, 131, 1, 82, 127, + 10, + 180, + 232, 11, - 196, - 231, + 0, + 145, + 205, + 64, + 7, + 2, + 148, 247, - 169, - 39, - 103, - 128, - 147, - 228, - 190, - 43, - 251, 84, - 58, - 183, - 214, - 38, + 229, + 75, + 18, 126, - 233, - 67, - 232, - 237, - 19, - 54, - 154, - 59, - 60, - 158, - 242, - 55, - 121, + 32, + 0, + 87, + 44, + 3, + 68, + 194, + 131, + 138, + 238, + 175, + 37, + 30, + 179, + 145, 97, 101, - 96, + 224, 131, 1, 82, 97, - 78, - 192, + 79, + 64, 130, 1, 81, 97, - 101, - 128, + 102, + 0, 131, 1, 82, @@ -19408,14 +19484,14 @@ pub mod inclusion_verifier { 64, 97, 101, - 64, + 192, 133, 1, 96, 96, 97, 101, - 64, + 192, 135, 1, 96, @@ -19427,50 +19503,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 100, - 192, + 101, + 64, 130, 1, 81, 97, - 101, - 160, + 102, + 32, 131, 1, 82, 97, - 100, - 224, + 101, + 96, 130, 1, 81, 97, - 101, - 192, + 102, + 64, 131, 1, 82, 97, 101, - 64, + 192, 130, 1, 81, 97, - 101, - 224, + 102, + 96, 131, 1, 82, 97, 101, - 96, + 224, 130, 1, 81, 97, 102, - 0, + 128, 131, 1, 82, @@ -19480,15 +19556,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 101, - 160, + 102, + 32, 133, 1, 96, 128, 97, - 101, - 160, + 102, + 32, 135, 1, 96, @@ -19507,7 +19583,7 @@ pub mod inclusion_verifier { 81, 97, 102, - 32, + 160, 131, 1, 82, @@ -19519,19 +19595,19 @@ pub mod inclusion_verifier { 81, 97, 102, - 64, + 192, 131, 1, 82, 97, - 78, - 224, + 79, + 96, 130, 1, 81, 97, 102, - 96, + 224, 131, 1, 82, @@ -19542,14 +19618,14 @@ pub mod inclusion_verifier { 64, 97, 102, - 32, + 160, 133, 1, 96, 96, 97, 102, - 32, + 160, 135, 1, 96, @@ -19561,50 +19637,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 101, - 160, + 102, + 32, 130, 1, 81, 97, - 102, - 128, + 103, + 0, 131, 1, 82, 97, - 101, - 192, + 102, + 64, 130, 1, 81, 97, - 102, - 160, + 103, + 32, 131, 1, 82, 97, 102, - 32, + 160, 130, 1, 81, 97, - 102, - 192, + 103, + 64, 131, 1, 82, 97, 102, - 64, + 192, 130, 1, 81, 97, - 102, - 224, + 103, + 96, 131, 1, 82, @@ -19614,15 +19690,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 102, - 128, + 103, + 0, 133, 1, 96, 128, 97, - 102, - 128, + 103, + 0, 135, 1, 96, @@ -19641,7 +19717,7 @@ pub mod inclusion_verifier { 81, 97, 103, - 0, + 128, 131, 1, 82, @@ -19653,19 +19729,19 @@ pub mod inclusion_verifier { 81, 97, 103, - 32, + 160, 131, 1, 82, 97, 79, - 0, + 128, 130, 1, 81, 97, 103, - 64, + 192, 131, 1, 82, @@ -19676,14 +19752,14 @@ pub mod inclusion_verifier { 64, 97, 103, - 0, + 128, 133, 1, 96, 96, 97, 103, - 0, + 128, 135, 1, 96, @@ -19695,50 +19771,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 102, - 128, + 103, + 0, 130, 1, 81, 97, 103, - 96, + 224, 131, 1, 82, 97, - 102, - 160, + 103, + 32, 130, 1, 81, 97, - 103, - 128, + 104, + 0, 131, 1, 82, 97, 103, - 0, + 128, 130, 1, 81, 97, - 103, - 160, + 104, + 32, 131, 1, 82, 97, 103, - 32, + 160, 130, 1, 81, 97, - 103, - 192, + 104, + 64, 131, 1, 82, @@ -19749,14 +19825,14 @@ pub mod inclusion_verifier { 64, 97, 103, - 96, + 224, 133, 1, 96, 128, 97, 103, - 96, + 224, 135, 1, 96, @@ -19774,8 +19850,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 103, - 224, + 104, + 96, 131, 1, 82, @@ -19787,19 +19863,19 @@ pub mod inclusion_verifier { 81, 97, 104, - 0, + 128, 131, 1, 82, 97, 79, - 32, + 160, 130, 1, 81, 97, 104, - 32, + 160, 131, 1, 82, @@ -19809,15 +19885,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 103, - 224, + 104, + 96, 133, 1, 96, 96, 97, - 103, - 224, + 104, + 96, 135, 1, 96, @@ -19830,49 +19906,49 @@ pub mod inclusion_verifier { 80, 97, 103, - 96, + 224, 130, 1, 81, 97, 104, - 64, + 192, 131, 1, 82, 97, - 103, - 128, + 104, + 0, 130, 1, 81, 97, 104, - 96, + 224, 131, 1, 82, 97, - 103, - 224, + 104, + 96, 130, 1, 81, 97, - 104, - 128, + 105, + 0, 131, 1, 82, 97, 104, - 0, + 128, 130, 1, 81, 97, - 104, - 160, + 105, + 32, 131, 1, 82, @@ -19883,14 +19959,14 @@ pub mod inclusion_verifier { 64, 97, 104, - 64, + 192, 133, 1, 96, 128, 97, 104, - 64, + 192, 135, 1, 96, @@ -19908,8 +19984,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 104, - 192, + 105, + 64, 131, 1, 82, @@ -19920,20 +19996,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 104, - 224, + 105, + 96, 131, 1, 82, 97, 79, - 64, + 192, 130, 1, 81, 97, 105, - 0, + 128, 131, 1, 82, @@ -19943,15 +20019,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 104, - 192, + 105, + 64, 133, 1, 96, 96, 97, - 104, - 192, + 105, + 64, 135, 1, 96, @@ -19964,49 +20040,49 @@ pub mod inclusion_verifier { 80, 97, 104, - 64, + 192, 130, 1, 81, 97, 105, - 32, + 160, 131, 1, 82, 97, 104, - 96, + 224, 130, 1, 81, 97, 105, - 64, + 192, 131, 1, 82, 97, - 104, - 192, + 105, + 64, 130, 1, 81, 97, 105, - 96, + 224, 131, 1, 82, 97, - 104, - 224, + 105, + 96, 130, 1, 81, 97, - 105, - 128, + 106, + 0, 131, 1, 82, @@ -20017,14 +20093,14 @@ pub mod inclusion_verifier { 64, 97, 105, - 32, + 160, 133, 1, 96, 128, 97, 105, - 32, + 160, 135, 1, 96, @@ -20042,8 +20118,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 105, - 160, + 106, + 32, 131, 1, 82, @@ -20054,20 +20130,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 105, - 192, + 106, + 64, 131, 1, 82, 97, 79, - 96, + 224, 130, 1, 81, 97, - 105, - 224, + 106, + 96, 131, 1, 82, @@ -20077,15 +20153,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 105, - 160, + 106, + 32, 133, 1, 96, 96, 97, - 105, - 160, + 106, + 32, 135, 1, 96, @@ -20098,49 +20174,49 @@ pub mod inclusion_verifier { 80, 97, 105, - 32, + 160, 130, 1, 81, 97, 106, - 0, + 128, 131, 1, 82, 97, 105, - 64, + 192, 130, 1, 81, 97, 106, - 32, + 160, 131, 1, 82, 97, - 105, - 160, + 106, + 32, 130, 1, 81, 97, 106, - 64, + 192, 131, 1, 82, 97, - 105, - 192, + 106, + 64, 130, 1, 81, 97, 106, - 96, + 224, 131, 1, 82, @@ -20151,14 +20227,14 @@ pub mod inclusion_verifier { 64, 97, 106, - 0, + 128, 133, 1, 96, 128, 97, 106, - 0, + 128, 135, 1, 96, @@ -20176,8 +20252,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 106, - 128, + 107, + 0, 131, 1, 82, @@ -20188,20 +20264,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 106, - 160, + 107, + 32, 131, 1, 82, 97, - 79, - 128, + 80, + 0, 130, 1, 81, 97, - 106, - 192, + 107, + 64, 131, 1, 82, @@ -20211,15 +20287,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 106, - 128, + 107, + 0, 133, 1, 96, 96, 97, - 106, - 128, + 107, + 0, 135, 1, 96, @@ -20232,49 +20308,49 @@ pub mod inclusion_verifier { 80, 97, 106, - 0, + 128, 130, 1, 81, 97, - 106, - 224, + 107, + 96, 131, 1, 82, 97, 106, - 32, + 160, 130, 1, 81, 97, 107, - 0, + 128, 131, 1, 82, 97, - 106, - 128, + 107, + 0, 130, 1, 81, 97, 107, - 32, + 160, 131, 1, 82, 97, - 106, - 160, + 107, + 32, 130, 1, 81, 97, 107, - 64, + 192, 131, 1, 82, @@ -20284,15 +20360,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 106, - 224, + 107, + 96, 133, 1, 96, 128, 97, - 106, - 224, + 107, + 96, 135, 1, 96, @@ -20311,7 +20387,7 @@ pub mod inclusion_verifier { 81, 97, 107, - 96, + 224, 131, 1, 82, @@ -20322,20 +20398,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 107, - 128, + 108, + 0, 131, 1, 82, 97, - 80, - 128, + 81, + 0, 130, 1, 81, 97, - 107, - 160, + 108, + 32, 131, 1, 82, @@ -20346,14 +20422,14 @@ pub mod inclusion_verifier { 64, 97, 107, - 96, + 224, 133, 1, 96, 96, 97, 107, - 96, + 224, 135, 1, 96, @@ -20365,50 +20441,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 106, - 224, + 107, + 96, 130, 1, 81, 97, - 107, - 192, + 108, + 64, 131, 1, 82, 97, 107, - 0, + 128, 130, 1, 81, 97, - 107, - 224, + 108, + 96, 131, 1, 82, 97, 107, - 96, + 224, 130, 1, 81, 97, 108, - 0, + 128, 131, 1, 82, 97, - 107, - 128, + 108, + 0, 130, 1, 81, 97, 108, - 32, + 160, 131, 1, 82, @@ -20418,15 +20494,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 107, - 192, + 108, + 64, 133, 1, 96, 128, 97, - 107, - 192, + 108, + 64, 135, 1, 96, @@ -20445,7 +20521,7 @@ pub mod inclusion_verifier { 81, 97, 108, - 64, + 192, 131, 1, 82, @@ -20457,19 +20533,19 @@ pub mod inclusion_verifier { 81, 97, 108, - 96, + 224, 131, 1, 82, 97, 82, - 32, + 160, 130, 1, 81, 97, - 108, - 128, + 109, + 0, 131, 1, 82, @@ -20480,14 +20556,14 @@ pub mod inclusion_verifier { 64, 97, 108, - 64, + 192, 133, 1, 96, 96, 97, 108, - 64, + 192, 135, 1, 96, @@ -20499,50 +20575,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 107, - 192, + 108, + 64, 130, 1, 81, 97, - 108, - 160, + 109, + 32, 131, 1, 82, 97, - 107, - 224, + 108, + 96, 130, 1, 81, 97, - 108, - 192, + 109, + 64, 131, 1, 82, 97, 108, - 64, + 192, 130, 1, 81, 97, - 108, - 224, + 109, + 96, 131, 1, 82, 97, 108, - 96, + 224, 130, 1, 81, 97, 109, - 0, + 128, 131, 1, 82, @@ -20552,15 +20628,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 108, - 160, + 109, + 32, 133, 1, 96, 128, 97, - 108, - 160, + 109, + 32, 135, 1, 96, @@ -20579,7 +20655,7 @@ pub mod inclusion_verifier { 81, 97, 109, - 32, + 160, 131, 1, 82, @@ -20591,19 +20667,19 @@ pub mod inclusion_verifier { 81, 97, 109, - 64, + 192, 131, 1, 82, 97, 82, - 64, + 192, 130, 1, 81, 97, 109, - 96, + 224, 131, 1, 82, @@ -20614,14 +20690,14 @@ pub mod inclusion_verifier { 64, 97, 109, - 32, + 160, 133, 1, 96, 96, 97, 109, - 32, + 160, 135, 1, 96, @@ -20633,50 +20709,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 108, - 160, + 109, + 32, 130, 1, 81, 97, - 109, - 128, + 110, + 0, 131, 1, 82, 97, - 108, - 192, + 109, + 64, 130, 1, 81, 97, - 109, - 160, + 110, + 32, 131, 1, 82, 97, 109, - 32, + 160, 130, 1, 81, 97, - 109, - 192, + 110, + 64, 131, 1, 82, 97, 109, - 64, + 192, 130, 1, 81, 97, - 109, - 224, + 110, + 96, 131, 1, 82, @@ -20686,15 +20762,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 109, - 128, + 110, + 0, 133, 1, 96, 128, 97, - 109, - 128, + 110, + 0, 135, 1, 96, @@ -20713,7 +20789,7 @@ pub mod inclusion_verifier { 81, 97, 110, - 0, + 128, 131, 1, 82, @@ -20725,19 +20801,19 @@ pub mod inclusion_verifier { 81, 97, 110, - 32, + 160, 131, 1, 82, 97, 83, - 64, + 192, 130, 1, 81, 97, 110, - 64, + 192, 131, 1, 82, @@ -20748,14 +20824,14 @@ pub mod inclusion_verifier { 64, 97, 110, - 0, + 128, 133, 1, 96, 96, 97, 110, - 0, + 128, 135, 1, 96, @@ -20767,50 +20843,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 109, - 128, + 110, + 0, 130, 1, 81, 97, 110, - 96, + 224, 131, 1, 82, 97, - 109, - 160, + 110, + 32, 130, 1, 81, 97, - 110, - 128, + 111, + 0, 131, 1, 82, 97, 110, - 0, + 128, 130, 1, 81, 97, - 110, - 160, + 111, + 32, 131, 1, 82, 97, 110, - 32, + 160, 130, 1, 81, 97, - 110, - 192, + 111, + 64, 131, 1, 82, @@ -20821,14 +20897,14 @@ pub mod inclusion_verifier { 64, 97, 110, - 96, + 224, 133, 1, 96, 128, 97, 110, - 96, + 224, 135, 1, 96, @@ -20846,8 +20922,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 110, - 224, + 111, + 96, 131, 1, 82, @@ -20859,13 +20935,13 @@ pub mod inclusion_verifier { 81, 97, 111, - 0, + 128, 131, 1, 82, 97, - 83, - 128, + 84, + 0, 130, 1, 81, @@ -20873,7 +20949,7 @@ pub mod inclusion_verifier { 3, 97, 111, - 32, + 160, 131, 1, 82, @@ -20884,15 +20960,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 224, + 111, + 96, 132, 1, 96, 96, 97, - 110, - 224, + 111, + 96, 134, 1, 96, @@ -20905,49 +20981,49 @@ pub mod inclusion_verifier { 80, 97, 110, - 96, + 224, 129, 1, 81, 97, 111, - 64, + 192, 130, 1, 82, 97, - 110, - 128, + 111, + 0, 129, 1, 81, 97, 111, - 96, + 224, 130, 1, 82, 97, - 110, - 224, + 111, + 96, 129, 1, 81, 97, - 111, - 128, + 112, + 0, 130, 1, 82, 97, 111, - 0, + 128, 129, 1, 81, 97, - 111, - 160, + 112, + 32, 130, 1, 82, @@ -20958,14 +21034,14 @@ pub mod inclusion_verifier { 64, 97, 111, - 64, + 192, 132, 1, 96, 128, 97, 111, - 64, + 192, 134, 1, 96, @@ -20983,8 +21059,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 111, - 192, + 112, + 64, 130, 1, 82, @@ -20995,20 +21071,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 111, - 224, + 112, + 96, 130, 1, 82, 97, - 83, - 160, + 84, + 32, 129, 1, 81, 97, 112, - 0, + 128, 130, 1, 82, @@ -21018,15 +21094,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 111, - 192, + 112, + 64, 132, 1, 96, 96, 97, - 111, - 192, + 112, + 64, 134, 1, 96, @@ -21039,49 +21115,49 @@ pub mod inclusion_verifier { 80, 97, 111, - 64, + 192, 129, 1, 81, 97, 112, - 32, + 160, 130, 1, 82, 97, 111, - 96, + 224, 129, 1, 81, 97, 112, - 64, + 192, 130, 1, 82, 97, - 111, - 192, + 112, + 64, 129, 1, 81, 97, 112, - 96, + 224, 130, 1, 82, 97, - 111, - 224, + 112, + 96, 129, 1, 81, 97, - 112, - 128, + 113, + 0, 130, 1, 82, @@ -21092,14 +21168,14 @@ pub mod inclusion_verifier { 64, 97, 112, - 32, + 160, 132, 1, 96, 128, 97, 112, - 32, + 160, 134, 1, 96, @@ -21112,25 +21188,25 @@ pub mod inclusion_verifier { 80, 97, 112, - 32, + 160, 129, 1, 81, 97, - 112, - 160, + 113, + 32, 130, 1, 82, 97, 112, - 64, + 192, 129, 1, 81, 97, - 112, - 192, + 113, + 64, 130, 1, 82, @@ -21168,8 +21244,8 @@ pub mod inclusion_verifier { 18, 194, 97, - 112, - 224, + 113, + 96, 130, 1, 82, @@ -21208,7 +21284,7 @@ pub mod inclusion_verifier { 237, 97, 113, - 0, + 128, 130, 1, 82, @@ -21247,7 +21323,7 @@ pub mod inclusion_verifier { 91, 97, 113, - 32, + 160, 130, 1, 82, @@ -21286,7 +21362,7 @@ pub mod inclusion_verifier { 170, 97, 113, - 64, + 192, 130, 1, 82, @@ -21298,7 +21374,7 @@ pub mod inclusion_verifier { 81, 97, 113, - 96, + 224, 130, 1, 82, @@ -21309,8 +21385,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 113, - 128, + 114, + 0, 130, 1, 82, @@ -21348,8 +21424,8 @@ pub mod inclusion_verifier { 226, 61, 97, - 113, - 160, + 114, + 32, 130, 1, 82, @@ -21387,8 +21463,8 @@ pub mod inclusion_verifier { 247, 158, 97, - 113, - 192, + 114, + 64, 130, 1, 82, @@ -21426,8 +21502,8 @@ pub mod inclusion_verifier { 193, 69, 97, - 113, - 224, + 114, + 96, 130, 1, 82, @@ -21466,7 +21542,7 @@ pub mod inclusion_verifier { 255, 97, 114, - 0, + 128, 130, 1, 82, @@ -21476,16 +21552,16 @@ pub mod inclusion_verifier { 96, 32, 97, - 112, - 160, + 113, + 32, 132, 1, 97, 1, 128, 97, - 112, - 160, + 113, + 32, 134, 1, 96, @@ -21493,8 +21569,8 @@ pub mod inclusion_verifier { 90, 250, 97, - 112, - 160, + 113, + 32, 147, 144, 147, @@ -21522,7 +21598,7 @@ pub mod inclusion_verifier { 128, 97, 114, - 0, + 128, 1, 96, 64, @@ -21530,7 +21606,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 144, + 148, 144, 96, 32, @@ -21601,14 +21677,14 @@ pub mod inclusion_verifier { 21, 97, 84, - 52, + 128, 87, 97, 84, - 52, + 128, 97, - 83, - 245, + 84, + 65, 86, 91, 96, @@ -21629,7 +21705,7 @@ pub mod inclusion_verifier { 18, 97, 84, - 77, + 153, 87, 96, 0, @@ -21652,19 +21728,19 @@ pub mod inclusion_verifier { 21, 97, 84, - 103, + 179, 87, 97, 84, - 103, + 179, 97, - 83, - 245, + 84, + 65, 86, 91, 97, 84, - 122, + 198, 96, 31, 130, @@ -21678,7 +21754,7 @@ pub mod inclusion_verifier { 1, 97, 84, - 11, + 87, 86, 91, 129, @@ -21695,7 +21771,7 @@ pub mod inclusion_verifier { 21, 97, 84, - 143, + 219, 87, 96, 0, @@ -21742,8 +21818,8 @@ pub mod inclusion_verifier { 18, 21, 97, - 84, - 191, + 85, + 11, 87, 96, 0, @@ -21766,8 +21842,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 84, - 215, + 85, + 35, 87, 96, 0, @@ -21786,8 +21862,8 @@ pub mod inclusion_verifier { 1, 18, 97, - 84, - 235, + 85, + 55, 87, 96, 0, @@ -21803,15 +21879,15 @@ pub mod inclusion_verifier { 17, 21, 97, - 84, - 255, + 85, + 75, 87, 97, - 84, - 255, + 85, + 75, 97, - 83, - 245, + 84, + 65, 86, 91, 129, @@ -21820,13 +21896,13 @@ pub mod inclusion_verifier { 27, 97, 85, - 14, + 90, 130, 130, 1, 97, 84, - 11, + 87, 86, 91, 146, @@ -21848,7 +21924,7 @@ pub mod inclusion_verifier { 21, 97, 85, - 40, + 116, 87, 96, 0, @@ -21866,7 +21942,7 @@ pub mod inclusion_verifier { 21, 97, 85, - 70, + 146, 87, 134, 53, @@ -21882,7 +21958,7 @@ pub mod inclusion_verifier { 144, 97, 85, - 45, + 121, 86, 91, 151, @@ -21901,7 +21977,7 @@ pub mod inclusion_verifier { 21, 97, 85, - 93, + 169, 87, 96, 0, @@ -21911,14 +21987,14 @@ pub mod inclusion_verifier { 80, 97, 85, - 106, + 182, 133, 130, 134, 1, 97, 84, - 60, + 136, 86, 91, 145, @@ -22005,38 +22081,38 @@ pub mod inclusion_verifier { 34, 18, 32, - 249, - 100, - 194, - 239, - 242, - 198, - 144, - 115, - 77, - 162, - 82, - 249, - 196, - 197, - 232, - 52, - 110, - 229, - 125, - 79, - 120, - 8, - 64, - 230, - 54, - 248, - 60, - 242, - 21, + 67, + 61, + 67, + 155, + 97, + 108, + 155, + 9, + 132, + 170, 39, - 143, - 103, + 61, + 101, + 208, + 59, + 188, + 145, + 10, + 87, + 92, + 63, + 198, + 42, + 156, + 80, + 151, + 87, + 123, + 27, + 175, + 252, + 213, 100, 115, 111, @@ -22115,7 +22191,7 @@ pub mod inclusion_verifier { 4, 97, 84, - 172, + 248, 86, 91, 97, @@ -22151,8 +22227,8 @@ pub mod inclusion_verifier { 0, 99, 97, - 83, - 213, + 84, + 33, 86, 91, 96, @@ -22163,7 +22239,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 149, + 225, 131, 57, 129, @@ -22183,7 +22259,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 117, + 193, 131, 57, 129, @@ -22209,7 +22285,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 117, + 193, 131, 57, 129, @@ -22227,7 +22303,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 117, + 193, 131, 57, 129, @@ -22247,7 +22323,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 117, + 193, 131, 57, 129, @@ -22322,38 +22398,38 @@ pub mod inclusion_verifier { 1, 82, 127, - 23, - 175, - 181, - 151, - 60, - 64, - 93, - 45, - 110, - 247, - 161, - 187, - 189, - 195, - 82, - 9, - 206, - 144, - 152, - 247, - 97, - 135, - 3, - 174, + 16, + 30, + 50, + 32, + 159, + 188, + 42, + 253, + 218, + 46, + 171, + 8, + 238, + 211, + 227, + 233, + 50, + 62, + 205, + 146, + 229, + 198, + 185, + 80, + 130, 4, - 169, - 51, - 139, - 234, - 235, - 220, - 151, + 185, + 72, + 222, + 26, + 229, + 243, 96, 0, 131, @@ -25226,7 +25302,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 149, + 225, 131, 57, 129, @@ -28002,13 +28078,19 @@ pub mod inclusion_verifier { 128, 97, 6, - 128, + 0, 131, 1, 81, - 96, - 2, - 9, + 130, + 3, + 97, + 6, + 32, + 132, + 1, + 81, + 8, 97, 31, 160, @@ -28017,20 +28099,18 @@ pub mod inclusion_verifier { 82, 128, 97, - 6, - 0, + 31, + 160, 131, 1, 81, - 130, - 3, 97, 6, - 32, + 128, 132, 1, 81, - 8, + 9, 97, 31, 192, @@ -28040,14 +28120,14 @@ pub mod inclusion_verifier { 144, 82, 97, - 31, - 160, + 6, + 0, 131, 1, 81, 130, 145, - 9, + 8, 97, 31, 224, @@ -28057,15 +28137,15 @@ pub mod inclusion_verifier { 128, 97, 6, - 0, + 64, 131, 1, 81, 130, 3, 97, - 6, - 64, + 31, + 224, 132, 1, 81, @@ -28075,33 +28155,68 @@ pub mod inclusion_verifier { 0, 131, 1, + 129, + 144, + 82, + 97, + 30, + 224, + 131, + 1, + 81, + 130, + 145, + 9, + 97, + 32, + 32, + 131, + 1, 82, 128, 97, 32, - 0, + 32, 131, 1, 81, - 130, - 3, 97, 31, - 224, + 128, 132, 1, 81, 8, 97, 32, + 64, + 131, + 1, + 82, + 128, + 97, 32, + 64, + 131, + 1, + 81, + 97, + 4, + 32, + 132, + 1, + 81, + 9, + 97, + 32, + 96, 131, 1, 82, 128, 97, 6, - 96, + 32, 131, 1, 81, @@ -28109,36 +28224,73 @@ pub mod inclusion_verifier { 3, 97, 6, - 32, + 0, 132, 1, 81, 8, 97, 32, - 64, + 128, 131, 1, 82, 128, 97, 32, - 64, + 128, + 131, + 1, + 81, + 97, + 6, + 128, + 132, + 1, + 81, + 9, + 97, + 32, + 160, + 131, + 1, + 129, + 144, + 82, + 97, + 6, + 32, 131, 1, 81, 130, - 3, + 145, + 8, 97, 32, + 192, + 131, + 1, + 82, + 128, + 97, + 6, + 96, + 131, + 1, + 81, + 130, + 3, + 97, 32, + 192, 132, 1, 81, 8, 97, 32, - 96, + 224, 131, 1, 129, @@ -28154,35 +28306,35 @@ pub mod inclusion_verifier { 145, 9, 97, - 32, - 128, + 33, + 0, 131, 1, 82, 128, 97, - 32, - 128, + 33, + 0, 131, 1, 81, 97, - 31, - 128, + 32, + 96, 132, 1, 81, 8, 97, + 33, 32, - 160, 131, 1, 82, 128, 97, + 33, 32, - 160, 131, 1, 81, @@ -28194,8 +28346,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 32, - 192, + 33, + 64, 131, 1, 82, @@ -28214,15 +28366,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 32, - 224, + 33, + 96, 131, 1, 82, 128, 97, - 32, - 224, + 33, + 96, 131, 1, 81, @@ -28235,7 +28387,7 @@ pub mod inclusion_verifier { 9, 97, 33, - 0, + 128, 131, 1, 82, @@ -28255,7 +28407,7 @@ pub mod inclusion_verifier { 8, 97, 33, - 32, + 160, 131, 1, 82, @@ -28270,14 +28422,14 @@ pub mod inclusion_verifier { 3, 97, 33, - 32, + 160, 132, 1, 81, 8, 97, 33, - 64, + 192, 131, 1, 129, @@ -28285,7 +28437,7 @@ pub mod inclusion_verifier { 82, 97, 33, - 0, + 128, 131, 1, 81, @@ -28294,34 +28446,34 @@ pub mod inclusion_verifier { 9, 97, 33, - 96, + 224, 131, 1, 82, 128, 97, 33, - 96, + 224, 131, 1, 81, 97, - 32, - 192, + 33, + 64, 132, 1, 81, 8, 97, - 33, - 128, + 34, + 0, 131, 1, 82, 128, 97, - 33, - 128, + 34, + 0, 131, 1, 81, @@ -28333,8 +28485,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 33, - 160, + 34, + 32, 131, 1, 129, @@ -28342,7 +28494,7 @@ pub mod inclusion_verifier { 82, 97, 33, - 96, + 224, 131, 1, 81, @@ -28350,15 +28502,15 @@ pub mod inclusion_verifier { 145, 8, 97, - 33, - 192, + 34, + 64, 131, 1, 82, 128, 97, - 33, - 192, + 34, + 64, 131, 1, 81, @@ -28370,8 +28522,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 33, - 224, + 34, + 96, 131, 1, 82, @@ -28389,7 +28541,7 @@ pub mod inclusion_verifier { 8, 97, 34, - 0, + 128, 131, 1, 129, @@ -28406,34 +28558,34 @@ pub mod inclusion_verifier { 9, 97, 34, - 32, + 160, 131, 1, 82, 128, 97, 34, - 32, + 160, 131, 1, 81, 97, - 33, - 224, + 34, + 96, 132, 1, 81, 8, 97, 34, - 64, + 192, 131, 1, 82, 128, 97, 34, - 64, + 192, 131, 1, 81, @@ -28446,7 +28598,7 @@ pub mod inclusion_verifier { 9, 97, 34, - 96, + 224, 131, 1, 82, @@ -28461,8 +28613,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 34, - 128, + 35, + 0, 131, 1, 82, @@ -28476,87 +28628,8 @@ pub mod inclusion_verifier { 130, 3, 97, - 34, - 128, - 132, - 1, - 81, - 8, - 97, - 34, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 18, - 64, - 131, - 1, - 81, - 130, - 145, - 9, - 97, - 34, - 192, - 131, - 1, - 82, - 128, - 97, - 34, - 192, - 131, - 1, - 81, - 97, - 34, - 96, - 132, - 1, - 81, - 8, - 97, - 34, - 224, - 131, - 1, - 82, - 128, - 97, - 34, - 224, - 131, - 1, - 81, - 97, - 4, - 32, - 132, - 1, - 81, - 9, - 97, 35, 0, - 131, - 1, - 82, - 128, - 97, - 9, - 96, - 131, - 1, - 81, - 130, - 3, - 97, - 9, - 128, 132, 1, 81, @@ -28570,8 +28643,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 19, - 0, + 18, + 64, 131, 1, 81, @@ -28592,8 +28665,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 35, - 0, + 34, + 224, 132, 1, 81, @@ -28626,86 +28699,94 @@ pub mod inclusion_verifier { 82, 128, 97, - 18, - 64, + 9, + 96, 131, 1, 81, 130, 3, - 96, + 97, + 9, + 128, + 132, 1, + 81, 8, 97, 35, 160, 131, 1, + 129, + 144, 82, - 128, 97, - 18, - 128, + 19, + 0, 131, 1, 81, - 97, - 18, - 96, - 132, - 1, - 81, - 8, + 130, + 145, + 9, 97, 35, 192, 131, 1, - 129, - 144, 82, + 128, 97, - 18, - 160, + 35, + 192, 131, 1, 81, - 130, - 145, + 97, + 35, + 128, + 132, + 1, + 81, 8, 97, 35, 224, 131, 1, - 129, - 144, 82, + 128, 97, - 18, - 192, + 35, + 224, 131, 1, 81, - 130, - 145, - 8, + 97, + 4, + 32, + 132, + 1, + 81, + 9, 97, 36, 0, 131, 1, - 129, - 144, 82, + 128, 97, 18, - 224, + 64, 131, 1, 81, 130, - 145, + 3, + 96, + 1, 8, 97, 36, @@ -28715,16 +28796,14 @@ pub mod inclusion_verifier { 82, 128, 97, - 36, - 32, + 18, + 128, 131, 1, 81, - 130, - 3, 97, - 35, - 160, + 18, + 96, 132, 1, 81, @@ -28734,40 +28813,34 @@ pub mod inclusion_verifier { 64, 131, 1, + 129, + 144, 82, - 128, 97, - 2, - 96, + 18, + 160, 131, 1, 81, - 97, + 130, + 145, 8, - 96, - 132, - 1, - 81, - 9, 97, 36, 96, 131, 1, + 129, + 144, 82, - 128, 97, - 36, - 96, + 18, + 192, 131, 1, 81, - 97, - 6, - 224, - 132, - 1, - 81, + 130, + 145, 8, 97, 36, @@ -28778,8 +28851,8 @@ pub mod inclusion_verifier { 144, 82, 97, - 2, - 192, + 18, + 224, 131, 1, 81, @@ -28794,18 +28867,20 @@ pub mod inclusion_verifier { 82, 128, 97, - 2, - 96, + 36, + 160, 131, 1, 81, + 130, + 3, 97, - 8, - 128, + 36, + 32, 132, 1, 81, - 9, + 8, 97, 36, 192, @@ -28814,34 +28889,37 @@ pub mod inclusion_verifier { 82, 128, 97, - 36, - 192, + 2, + 96, 131, 1, 81, 97, - 6, - 0, + 8, + 96, 132, 1, 81, - 8, + 9, 97, 36, 224, 131, 1, - 129, - 144, 82, + 128, 97, - 2, - 192, + 36, + 224, 131, 1, 81, - 130, - 145, + 97, + 6, + 224, + 132, + 1, + 81, 8, 97, 37, @@ -28852,14 +28930,14 @@ pub mod inclusion_verifier { 144, 82, 97, - 36, - 160, + 2, + 192, 131, 1, 81, 130, 145, - 9, + 8, 97, 37, 32, @@ -28875,7 +28953,7 @@ pub mod inclusion_verifier { 81, 97, 8, - 160, + 128, 132, 1, 81, @@ -28895,7 +28973,7 @@ pub mod inclusion_verifier { 81, 97, 6, - 32, + 0, 132, 1, 81, @@ -28949,7 +29027,7 @@ pub mod inclusion_verifier { 81, 97, 8, - 192, + 160, 132, 1, 81, @@ -28968,8 +29046,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 7, - 0, + 6, + 32, 132, 1, 81, @@ -29013,17 +29091,20 @@ pub mod inclusion_verifier { 32, 131, 1, - 129, - 144, 82, + 128, 97, - 9, - 64, + 2, + 96, 131, 1, 81, - 130, - 145, + 97, + 8, + 192, + 132, + 1, + 81, 9, 97, 38, @@ -29033,54 +29114,52 @@ pub mod inclusion_verifier { 82, 128, 97, - 2, - 96, + 38, + 64, 131, 1, 81, - 96, - 1, - 9, 97, - 38, - 96, - 131, + 7, + 0, + 132, 1, - 82, - 128, + 81, + 8, 97, 38, 96, 131, 1, - 81, + 129, + 144, + 82, 97, - 5, + 2, 192, - 132, + 131, 1, 81, - 9, + 130, + 145, + 8, 97, 38, 128, 131, 1, + 129, + 144, 82, - 128, 97, 38, - 128, + 32, 131, 1, 81, - 97, - 6, - 224, - 132, - 1, - 81, - 8, + 130, + 145, + 9, 97, 38, 160, @@ -29090,14 +29169,14 @@ pub mod inclusion_verifier { 144, 82, 97, - 2, - 192, + 9, + 64, 131, 1, 81, 130, 145, - 8, + 9, 97, 38, 192, @@ -29111,39 +29190,8 @@ pub mod inclusion_verifier { 131, 1, 81, - 127, - 9, - 34, - 107, - 110, - 34, - 198, - 240, - 202, - 100, - 236, - 38, - 170, - 212, - 200, - 110, - 113, - 91, - 95, - 137, - 142, - 94, - 150, - 63, - 37, - 135, - 14, - 86, - 187, - 229, - 51, - 233, - 162, + 96, + 1, 9, 97, 38, @@ -29180,7 +29228,7 @@ pub mod inclusion_verifier { 81, 97, 6, - 0, + 224, 132, 1, 81, @@ -29207,21 +29255,125 @@ pub mod inclusion_verifier { 64, 131, 1, + 82, + 128, + 97, + 2, + 96, + 131, + 1, + 81, + 127, + 9, + 34, + 107, + 110, + 34, + 198, + 240, + 202, + 100, + 236, + 38, + 170, + 212, + 200, + 110, + 113, + 91, + 95, + 137, + 142, + 94, + 150, + 63, + 37, + 135, + 14, + 86, + 187, + 229, + 51, + 233, + 162, + 9, + 97, + 39, + 96, + 131, + 1, + 82, + 128, + 97, + 39, + 96, + 131, + 1, + 81, + 97, + 5, + 192, + 132, + 1, + 81, + 9, + 97, + 39, + 128, + 131, + 1, + 82, + 128, + 97, + 39, + 128, + 131, + 1, + 81, + 97, + 6, + 0, + 132, + 1, + 81, + 8, + 97, + 39, + 160, + 131, + 1, 129, 144, 82, 97, - 38, + 2, 192, 131, 1, 81, 130, 145, + 8, + 97, + 39, + 192, + 131, + 1, + 129, + 144, + 82, + 97, + 39, + 64, + 131, + 1, + 81, + 130, + 145, 9, 97, 39, - 96, + 224, 131, 1, 82, @@ -29267,15 +29419,15 @@ pub mod inclusion_verifier { 43, 9, 97, - 39, - 128, + 40, + 0, 131, 1, 82, 128, 97, - 39, - 128, + 40, + 0, 131, 1, 81, @@ -29287,15 +29439,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 39, - 160, + 40, + 32, 131, 1, 82, 128, 97, - 39, - 160, + 40, + 32, 131, 1, 81, @@ -29307,8 +29459,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 39, - 192, + 40, + 64, 131, 1, 129, @@ -29324,8 +29476,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 39, - 224, + 40, + 96, 131, 1, 129, @@ -29333,7 +29485,7 @@ pub mod inclusion_verifier { 82, 97, 39, - 96, + 224, 131, 1, 81, @@ -29342,7 +29494,7 @@ pub mod inclusion_verifier { 9, 97, 40, - 0, + 128, 131, 1, 82, @@ -29389,14 +29541,14 @@ pub mod inclusion_verifier { 9, 97, 40, - 32, + 160, 131, 1, 82, 128, 97, 40, - 32, + 160, 131, 1, 81, @@ -29409,14 +29561,14 @@ pub mod inclusion_verifier { 9, 97, 40, - 64, + 192, 131, 1, 82, 128, 97, 40, - 64, + 192, 131, 1, 81, @@ -29429,7 +29581,7 @@ pub mod inclusion_verifier { 8, 97, 40, - 96, + 224, 131, 1, 129, @@ -29445,8 +29597,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 40, - 128, + 41, + 0, 131, 1, 129, @@ -29454,7 +29606,7 @@ pub mod inclusion_verifier { 82, 97, 40, - 0, + 128, 131, 1, 81, @@ -29462,8 +29614,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 40, - 160, + 41, + 32, 131, 1, 129, @@ -29479,15 +29631,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 40, - 192, + 41, + 64, 131, 1, 82, 128, 97, - 40, - 192, + 41, + 64, 131, 1, 81, @@ -29495,14 +29647,14 @@ pub mod inclusion_verifier { 3, 97, 38, - 64, + 192, 132, 1, 81, 8, 97, - 40, - 224, + 41, + 96, 131, 1, 129, @@ -29510,7 +29662,7 @@ pub mod inclusion_verifier { 82, 97, 36, - 64, + 192, 131, 1, 81, @@ -29519,34 +29671,34 @@ pub mod inclusion_verifier { 9, 97, 41, - 0, + 128, 131, 1, 82, 128, 97, 41, - 0, + 128, 131, 1, 81, 97, - 35, - 128, + 36, + 0, 132, 1, 81, 8, 97, 41, - 32, + 160, 131, 1, 82, 128, 97, 41, - 32, + 160, 131, 1, 81, @@ -29559,7 +29711,7 @@ pub mod inclusion_verifier { 9, 97, 41, - 64, + 192, 131, 1, 82, @@ -29579,14 +29731,14 @@ pub mod inclusion_verifier { 9, 97, 41, - 96, + 224, 131, 1, 82, 128, 97, 41, - 96, + 224, 131, 1, 81, @@ -29598,8 +29750,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 41, - 128, + 42, + 0, 131, 1, 129, @@ -29615,8 +29767,8 @@ pub mod inclusion_verifier { 145, 8, 97, - 41, - 160, + 42, + 32, 131, 1, 82, @@ -29635,15 +29787,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 41, - 192, + 42, + 64, 131, 1, 82, 128, 97, - 41, - 192, + 42, + 64, 131, 1, 81, @@ -29655,8 +29807,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 41, - 224, + 42, + 96, 131, 1, 129, @@ -29673,15 +29825,15 @@ pub mod inclusion_verifier { 8, 97, 42, - 0, + 128, 131, 1, 129, 144, 82, 97, - 41, - 160, + 42, + 32, 131, 1, 81, @@ -29690,7 +29842,7 @@ pub mod inclusion_verifier { 9, 97, 42, - 32, + 160, 131, 1, 129, @@ -29707,7 +29859,7 @@ pub mod inclusion_verifier { 9, 97, 42, - 64, + 192, 131, 1, 82, @@ -29753,110 +29905,6 @@ pub mod inclusion_verifier { 9, 97, 42, - 96, - 131, - 1, - 82, - 128, - 97, - 42, - 96, - 131, - 1, - 81, - 97, - 5, - 192, - 132, - 1, - 81, - 9, - 97, - 42, - 128, - 131, - 1, - 82, - 128, - 97, - 42, - 128, - 131, - 1, - 81, - 97, - 6, - 128, - 132, - 1, - 81, - 8, - 97, - 42, - 160, - 131, - 1, - 129, - 144, - 82, - 97, - 2, - 192, - 131, - 1, - 81, - 130, - 145, - 8, - 97, - 42, - 192, - 131, - 1, - 82, - 128, - 97, - 2, - 96, - 131, - 1, - 81, - 127, - 46, - 185, - 117, - 13, - 206, - 84, - 95, - 23, - 212, - 146, - 5, - 141, - 210, - 1, - 161, - 37, - 31, - 243, - 217, - 7, - 120, - 100, - 88, - 61, - 68, - 234, - 249, - 190, - 144, - 8, - 105, - 157, - 9, - 97, - 42, 224, 131, 1, @@ -29889,7 +29937,7 @@ pub mod inclusion_verifier { 1, 81, 97, - 19, + 6, 128, 132, 1, @@ -29917,21 +29965,125 @@ pub mod inclusion_verifier { 64, 131, 1, + 82, + 128, + 97, + 2, + 96, + 131, + 1, + 81, + 127, + 46, + 185, + 117, + 13, + 206, + 84, + 95, + 23, + 212, + 146, + 5, + 141, + 210, + 1, + 161, + 37, + 31, + 243, + 217, + 7, + 120, + 100, + 88, + 61, + 68, + 234, + 249, + 190, + 144, + 8, + 105, + 157, + 9, + 97, + 43, + 96, + 131, + 1, + 82, + 128, + 97, + 43, + 96, + 131, + 1, + 81, + 97, + 5, + 192, + 132, + 1, + 81, + 9, + 97, + 43, + 128, + 131, + 1, + 82, + 128, + 97, + 43, + 128, + 131, + 1, + 81, + 97, + 19, + 128, + 132, + 1, + 81, + 8, + 97, + 43, + 160, + 131, + 1, 129, 144, 82, 97, - 42, + 2, + 192, + 131, + 1, + 81, + 130, + 145, + 8, + 97, + 43, 192, 131, 1, + 129, + 144, + 82, + 97, + 43, + 64, + 131, + 1, 81, 130, 145, 9, 97, 43, - 96, + 224, 131, 1, 129, @@ -29947,15 +30099,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 128, + 44, + 0, 131, 1, 82, 128, 97, - 43, - 128, + 44, + 0, 131, 1, 81, @@ -29963,14 +30115,14 @@ pub mod inclusion_verifier { 3, 97, 42, - 64, + 192, 132, 1, 81, 8, 97, - 43, - 160, + 44, + 32, 131, 1, 129, @@ -29978,7 +30130,7 @@ pub mod inclusion_verifier { 82, 97, 36, - 64, + 192, 131, 1, 81, @@ -29986,35 +30138,35 @@ pub mod inclusion_verifier { 145, 9, 97, - 43, - 192, + 44, + 64, 131, 1, 82, 128, 97, - 43, - 192, + 44, + 64, 131, 1, 81, 97, 41, - 64, + 192, 132, 1, 81, 8, 97, - 43, - 224, + 44, + 96, 131, 1, 82, 128, 97, - 43, - 224, + 44, + 96, 131, 1, 81, @@ -30027,7 +30179,7 @@ pub mod inclusion_verifier { 9, 97, 44, - 0, + 128, 131, 1, 82, @@ -30045,7 +30197,7 @@ pub mod inclusion_verifier { 8, 97, 44, - 32, + 160, 131, 1, 129, @@ -30062,34 +30214,34 @@ pub mod inclusion_verifier { 9, 97, 44, - 64, + 192, 131, 1, 82, 128, 97, 44, - 64, + 192, 131, 1, 81, 97, 44, - 0, + 128, 132, 1, 81, 8, 97, 44, - 96, + 224, 131, 1, 82, 128, 97, 44, - 96, + 224, 131, 1, 81, @@ -30101,8 +30253,8 @@ pub mod inclusion_verifier { 81, 9, 97, - 44, - 128, + 45, + 0, 131, 1, 82, @@ -30117,8 +30269,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 44, - 160, + 45, + 32, 131, 1, 82, @@ -30132,15 +30284,15 @@ pub mod inclusion_verifier { 130, 3, 97, - 44, - 160, + 45, + 32, 132, 1, 81, 8, 97, - 44, - 192, + 45, + 64, 131, 1, 129, @@ -30156,35 +30308,35 @@ pub mod inclusion_verifier { 145, 9, 97, - 44, - 224, + 45, + 96, 131, 1, 82, 128, 97, - 44, - 224, + 45, + 96, 131, 1, 81, 97, - 44, - 128, + 45, + 0, 132, 1, 81, 8, 97, 45, - 0, + 128, 131, 1, 82, 128, 97, 45, - 0, + 128, 131, 1, 81, @@ -30197,7 +30349,7 @@ pub mod inclusion_verifier { 9, 97, 45, - 32, + 160, 131, 1, 82, @@ -30217,7 +30369,7 @@ pub mod inclusion_verifier { 8, 97, 45, - 64, + 192, 131, 1, 129, @@ -30234,7 +30386,7 @@ pub mod inclusion_verifier { 9, 97, 45, - 96, + 224, 131, 1, 82, @@ -30253,8 +30405,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 45, - 128, + 46, + 0, 131, 1, 129, @@ -30262,7 +30414,7 @@ pub mod inclusion_verifier { 82, 97, 45, - 96, + 224, 131, 1, 81, @@ -30270,8 +30422,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 45, - 160, + 46, + 32, 131, 1, 82, @@ -30287,15 +30439,15 @@ pub mod inclusion_verifier { 0, 9, 97, - 45, - 192, + 46, + 64, 131, 1, 82, 128, 97, - 45, - 192, + 46, + 64, 131, 1, 81, @@ -30309,8 +30461,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 45, - 224, + 46, + 96, 131, 1, 129, @@ -30327,7 +30479,7 @@ pub mod inclusion_verifier { 9, 97, 46, - 0, + 128, 131, 1, 129, @@ -30344,7 +30496,7 @@ pub mod inclusion_verifier { 8, 97, 46, - 32, + 160, 131, 1, 129, @@ -30361,7 +30513,7 @@ pub mod inclusion_verifier { 9, 97, 46, - 64, + 192, 131, 1, 82, @@ -30381,7 +30533,7 @@ pub mod inclusion_verifier { 8, 97, 46, - 96, + 224, 131, 1, 129, @@ -30389,7 +30541,7 @@ pub mod inclusion_verifier { 82, 97, 46, - 64, + 192, 131, 1, 81, @@ -30397,30 +30549,30 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 128, + 47, + 0, 131, 1, 82, 128, 97, - 46, - 128, + 47, + 0, 131, 1, 81, 130, 3, 97, - 45, - 160, + 46, + 32, 132, 1, 81, 8, 97, - 46, - 160, + 47, + 32, 131, 1, 129, @@ -30428,7 +30580,7 @@ pub mod inclusion_verifier { 82, 97, 36, - 64, + 192, 131, 1, 81, @@ -30436,35 +30588,35 @@ pub mod inclusion_verifier { 145, 9, 97, - 46, - 192, + 47, + 64, 131, 1, 82, 128, 97, - 46, - 192, + 47, + 64, 131, 1, 81, 97, 45, - 32, + 160, 132, 1, 81, 8, 97, - 46, - 224, + 47, + 96, 131, 1, 82, 128, 97, - 46, - 224, + 47, + 96, 131, 1, 81, @@ -30477,7 +30629,7 @@ pub mod inclusion_verifier { 9, 97, 47, - 0, + 128, 131, 1, 82, @@ -30499,7 +30651,7 @@ pub mod inclusion_verifier { 8, 97, 47, - 32, + 160, 131, 1, 129, @@ -30516,34 +30668,34 @@ pub mod inclusion_verifier { 9, 97, 47, - 64, + 192, 131, 1, 82, 128, 97, 47, - 64, + 192, 131, 1, 81, 97, 47, - 0, + 128, 132, 1, 81, 8, 97, 47, - 96, + 224, 131, 1, 82, 128, 97, 47, - 96, + 224, 131, 1, 81, @@ -30555,28 +30707,28 @@ pub mod inclusion_verifier { 81, 9, 97, - 47, - 128, + 48, + 0, 131, 1, 82, 128, 97, 36, - 64, + 192, 131, 1, 81, 97, 47, - 32, + 160, 132, 1, 81, 9, 97, - 47, - 160, + 48, + 32, 131, 1, 82, @@ -30597,16 +30749,16 @@ pub mod inclusion_verifier { 81, 8, 97, - 47, - 192, + 48, + 64, 131, 1, 129, 144, 82, 97, - 47, - 160, + 48, + 32, 131, 1, 81, @@ -30614,28 +30766,28 @@ pub mod inclusion_verifier { 145, 9, 97, - 47, - 224, + 48, + 96, 131, 1, 82, 128, 97, - 47, - 224, + 48, + 96, 131, 1, 81, 97, - 47, - 128, + 48, + 0, 132, 1, 81, 8, 97, 48, - 0, + 128, 131, 1, 82, @@ -30651,7 +30803,7 @@ pub mod inclusion_verifier { 9, 97, 48, - 32, + 160, 131, 1, 129, @@ -30668,7 +30820,7 @@ pub mod inclusion_verifier { 9, 97, 48, - 64, + 192, 131, 1, 129, @@ -30685,7 +30837,7 @@ pub mod inclusion_verifier { 9, 97, 48, - 96, + 224, 131, 1, 129, @@ -30701,8 +30853,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 48, - 128, + 49, + 0, 131, 1, 82, @@ -30717,15 +30869,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 48, - 160, + 49, + 32, 131, 1, 82, 128, 97, 48, - 32, + 160, 131, 1, 81, @@ -30733,15 +30885,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 48, - 192, + 49, + 64, 131, 1, 82, 128, 97, 48, - 64, + 192, 131, 1, 81, @@ -30749,15 +30901,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 48, - 224, + 49, + 96, 131, 1, 82, 128, 97, 48, - 96, + 224, 131, 1, 81, @@ -30766,7 +30918,7 @@ pub mod inclusion_verifier { 9, 97, 49, - 0, + 128, 131, 1, 82, @@ -30779,14 +30931,14 @@ pub mod inclusion_verifier { 81, 97, 48, - 0, + 128, 132, 1, 81, 9, 97, 49, - 32, + 160, 131, 1, 82, @@ -30806,7 +30958,7 @@ pub mod inclusion_verifier { 9, 97, 49, - 64, + 192, 131, 1, 82, @@ -30822,14 +30974,14 @@ pub mod inclusion_verifier { 9, 97, 49, - 96, + 224, 131, 1, 82, 128, 97, 49, - 96, + 224, 131, 1, 81, @@ -30843,8 +30995,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 49, - 128, + 50, + 0, 131, 1, 82, @@ -30890,15 +31042,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 49, - 160, + 50, + 32, 131, 1, 82, 128, 97, - 49, - 160, + 50, + 32, 131, 1, 81, @@ -30912,8 +31064,8 @@ pub mod inclusion_verifier { 81, 8, 97, - 49, - 192, + 50, + 64, 131, 1, 82, @@ -30959,15 +31111,15 @@ pub mod inclusion_verifier { 81, 9, 97, - 49, - 224, + 50, + 96, 131, 1, 82, 128, 97, - 49, - 224, + 50, + 96, 131, 1, 81, @@ -30982,7 +31134,7 @@ pub mod inclusion_verifier { 8, 97, 50, - 0, + 128, 131, 1, 82, @@ -31029,14 +31181,14 @@ pub mod inclusion_verifier { 9, 97, 50, - 32, + 160, 131, 1, 82, 128, 97, 50, - 32, + 160, 131, 1, 81, @@ -31051,7 +31203,7 @@ pub mod inclusion_verifier { 8, 97, 50, - 64, + 192, 131, 1, 82, @@ -31161,7 +31313,7 @@ pub mod inclusion_verifier { 128, 97, 50, - 96, + 224, 132, 1, 82, @@ -31271,8 +31423,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 50, - 128, + 51, + 0, 132, 1, 82, @@ -31379,15 +31531,15 @@ pub mod inclusion_verifier { 9, 8, 97, - 50, - 160, + 51, + 32, 132, 1, 82, 80, 97, - 49, - 128, + 50, + 0, 130, 1, 81, @@ -31397,16 +31549,16 @@ pub mod inclusion_verifier { 1, 9, 97, - 50, - 192, + 51, + 64, 131, 1, 129, 144, 82, 97, - 49, - 192, + 50, + 64, 131, 1, 81, @@ -31414,8 +31566,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 50, - 224, + 51, + 96, 131, 1, 129, @@ -31423,7 +31575,7 @@ pub mod inclusion_verifier { 82, 97, 50, - 64, + 192, 131, 1, 81, @@ -31432,7 +31584,7 @@ pub mod inclusion_verifier { 9, 97, 51, - 0, + 128, 131, 1, 82, @@ -31495,7 +31647,7 @@ pub mod inclusion_verifier { 128, 97, 51, - 32, + 160, 132, 1, 82, @@ -31606,7 +31758,7 @@ pub mod inclusion_verifier { 128, 97, 51, - 64, + 192, 132, 1, 82, @@ -31717,7 +31869,7 @@ pub mod inclusion_verifier { 128, 97, 51, - 96, + 224, 132, 1, 82, @@ -31824,21 +31976,21 @@ pub mod inclusion_verifier { 9, 8, 97, - 51, - 128, + 52, + 0, 132, 1, 82, 80, 97, 50, - 0, + 128, 130, 1, 81, 97, - 50, - 224, + 51, + 96, 131, 1, 81, @@ -31847,8 +31999,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 51, - 160, + 52, + 32, 131, 1, 82, @@ -31957,8 +32109,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 192, + 52, + 64, 132, 1, 82, @@ -32068,8 +32220,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 51, - 224, + 52, + 96, 132, 1, 82, @@ -32180,7 +32332,7 @@ pub mod inclusion_verifier { 128, 97, 52, - 0, + 128, 132, 1, 82, @@ -32288,20 +32440,20 @@ pub mod inclusion_verifier { 8, 97, 52, - 32, + 160, 132, 1, 82, 80, 97, 50, - 64, + 192, 130, 1, 81, 97, - 50, - 192, + 51, + 64, 131, 1, 81, @@ -32311,93 +32463,21 @@ pub mod inclusion_verifier { 9, 97, 52, - 64, + 192, 131, 1, 82, 97, 50, - 96, + 224, 130, 1, 81, 129, 129, 97, - 50, - 128, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 52, - 96, - 132, - 1, - 82, - 129, - 129, - 97, - 50, - 160, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 52, - 128, - 132, - 1, - 82, - 129, - 129, - 97, 51, - 32, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 52, - 160, - 132, - 1, - 82, - 129, - 129, - 97, - 50, - 192, - 133, - 1, - 81, - 9, - 144, - 80, - 128, - 97, - 52, - 192, - 132, - 1, - 82, - 129, - 129, - 97, - 51, - 64, + 0, 133, 1, 81, @@ -32415,7 +32495,7 @@ pub mod inclusion_verifier { 129, 97, 51, - 96, + 32, 133, 1, 81, @@ -32433,7 +32513,7 @@ pub mod inclusion_verifier { 129, 97, 51, - 128, + 160, 133, 1, 81, @@ -32451,7 +32531,7 @@ pub mod inclusion_verifier { 129, 97, 51, - 160, + 64, 133, 1, 81, @@ -32504,8 +32584,8 @@ pub mod inclusion_verifier { 129, 129, 97, - 50, - 224, + 52, + 0, 133, 1, 81, @@ -32523,7 +32603,7 @@ pub mod inclusion_verifier { 129, 97, 52, - 0, + 32, 133, 1, 81, @@ -32541,7 +32621,7 @@ pub mod inclusion_verifier { 129, 97, 52, - 32, + 64, 133, 1, 81, @@ -32559,7 +32639,7 @@ pub mod inclusion_verifier { 129, 97, 52, - 64, + 96, 133, 1, 81, @@ -32573,20 +32653,84 @@ pub mod inclusion_verifier { 132, 1, 82, - 80, + 129, + 129, + 97, + 51, 96, + 133, + 1, + 81, + 9, + 144, + 80, + 128, + 97, + 54, 32, + 132, + 1, + 82, + 129, + 129, + 97, + 52, + 128, + 133, + 1, + 81, + 9, + 144, + 80, + 128, 97, 54, 64, - 131, + 132, 1, 82, + 129, + 129, + 97, + 52, + 160, + 133, + 1, + 81, + 9, + 144, + 80, + 128, + 97, + 54, 96, - 32, + 132, + 1, + 82, + 129, + 129, + 97, + 52, + 192, + 133, + 1, + 81, + 9, + 144, + 80, + 128, 97, 54, + 128, + 132, + 1, + 82, + 80, 96, + 32, + 97, + 54, + 192, 131, 1, 82, @@ -32594,19 +32738,27 @@ pub mod inclusion_verifier { 32, 97, 54, - 128, + 224, 131, 1, 82, + 96, + 32, 97, - 54, + 55, 0, + 131, + 1, + 82, + 97, + 54, + 128, 130, 1, 81, 97, - 54, - 160, + 55, + 32, 131, 1, 82, @@ -32644,8 +32796,8 @@ pub mod inclusion_verifier { 255, 255, 97, - 54, - 192, + 55, + 64, 131, 1, 82, @@ -32657,7 +32809,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 149, + 225, 131, 57, 129, @@ -32665,8 +32817,8 @@ pub mod inclusion_verifier { 145, 82, 97, - 54, - 224, + 55, + 96, 131, 1, 82, @@ -32677,14 +32829,14 @@ pub mod inclusion_verifier { 32, 97, 54, - 32, + 160, 133, 1, 96, 192, 97, 54, - 64, + 192, 135, 1, 96, @@ -32697,7 +32849,7 @@ pub mod inclusion_verifier { 80, 97, 54, - 32, + 160, 130, 1, 81, @@ -32705,7 +32857,7 @@ pub mod inclusion_verifier { 0, 97, 52, - 64, + 192, 132, 1, 81, @@ -32714,15 +32866,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 224, + 54, + 96, 134, 1, 81, 9, 97, 52, - 64, + 192, 133, 1, 82, @@ -32734,7 +32886,7 @@ pub mod inclusion_verifier { 80, 97, 52, - 32, + 160, 132, 1, 81, @@ -32743,15 +32895,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 192, + 54, + 64, 134, 1, 81, 9, 97, 52, - 32, + 160, 133, 1, 82, @@ -32763,7 +32915,7 @@ pub mod inclusion_verifier { 80, 97, 52, - 0, + 128, 132, 1, 81, @@ -32772,15 +32924,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 160, + 54, + 32, 134, 1, 81, 9, 97, 52, - 0, + 128, 133, 1, 82, @@ -32791,8 +32943,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 224, + 51, + 96, 132, 1, 81, @@ -32801,15 +32953,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 53, - 128, + 54, + 0, 134, 1, 81, 9, 97, - 50, - 224, + 51, + 96, 133, 1, 82, @@ -32820,8 +32972,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 51, - 224, + 52, + 96, 132, 1, 81, @@ -32831,14 +32983,14 @@ pub mod inclusion_verifier { 130, 97, 53, - 96, + 224, 134, 1, 81, 9, 97, - 51, - 224, + 52, + 96, 133, 1, 82, @@ -32849,8 +33001,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 51, - 192, + 52, + 64, 132, 1, 81, @@ -32860,14 +33012,14 @@ pub mod inclusion_verifier { 130, 97, 53, - 64, + 192, 134, 1, 81, 9, 97, - 51, - 192, + 52, + 64, 133, 1, 82, @@ -32878,8 +33030,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 51, - 160, + 52, + 32, 132, 1, 81, @@ -32889,14 +33041,14 @@ pub mod inclusion_verifier { 130, 97, 53, - 32, + 160, 134, 1, 81, 9, 97, - 51, - 160, + 52, + 32, 133, 1, 82, @@ -32907,8 +33059,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 51, - 128, + 52, + 0, 132, 1, 81, @@ -32918,14 +33070,14 @@ pub mod inclusion_verifier { 130, 97, 53, - 0, + 128, 134, 1, 81, 9, 97, - 51, - 128, + 52, + 0, 133, 1, 82, @@ -32937,7 +33089,7 @@ pub mod inclusion_verifier { 80, 97, 51, - 96, + 224, 132, 1, 81, @@ -32946,15 +33098,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 224, + 53, + 96, 134, 1, 81, 9, 97, 51, - 96, + 224, 133, 1, 82, @@ -32966,7 +33118,7 @@ pub mod inclusion_verifier { 80, 97, 51, - 64, + 192, 132, 1, 81, @@ -32975,15 +33127,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 192, + 53, + 64, 134, 1, 81, 9, 97, 51, - 64, + 192, 133, 1, 82, @@ -32994,8 +33146,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 192, + 51, + 64, 132, 1, 81, @@ -33004,15 +33156,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 160, + 53, + 32, 134, 1, 81, 9, 97, - 50, - 192, + 51, + 64, 133, 1, 82, @@ -33024,7 +33176,7 @@ pub mod inclusion_verifier { 80, 97, 51, - 32, + 160, 132, 1, 81, @@ -33033,15 +33185,15 @@ pub mod inclusion_verifier { 130, 130, 97, - 52, - 128, + 53, + 0, 134, 1, 81, 9, 97, 51, - 32, + 160, 133, 1, 82, @@ -33052,8 +33204,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 160, + 51, + 32, 132, 1, 81, @@ -33063,14 +33215,14 @@ pub mod inclusion_verifier { 130, 97, 52, - 96, + 224, 134, 1, 81, 9, 97, - 50, - 160, + 51, + 32, 133, 1, 82, @@ -33081,8 +33233,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 50, - 128, + 51, + 0, 132, 1, 81, @@ -33092,14 +33244,14 @@ pub mod inclusion_verifier { 130, 97, 50, - 96, + 224, 134, 1, 81, 9, 97, - 50, - 128, + 51, + 0, 133, 1, 82, @@ -33109,15 +33261,15 @@ pub mod inclusion_verifier { 9, 97, 50, - 96, + 224, 133, 1, 129, 144, 82, 97, - 50, - 128, + 51, + 0, 133, 1, 81, @@ -33135,28 +33287,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 50, - 160, + 51, + 32, 133, 1, 81, 8, 97, 55, - 0, + 128, 132, 1, 82, 80, 97, - 50, - 192, + 51, + 64, 130, 1, 81, 97, 51, - 0, + 128, 131, 1, 81, @@ -33166,47 +33318,47 @@ pub mod inclusion_verifier { 9, 97, 55, - 32, + 160, 131, 1, 82, 97, 51, - 32, + 160, 130, 1, 81, 128, 97, 55, - 64, + 192, 132, 1, 82, 80, 128, 97, - 51, - 160, + 52, + 32, 131, 1, 81, 97, 51, - 0, + 128, 132, 1, 81, 9, 97, 55, - 96, + 224, 131, 1, 82, 97, 51, - 64, + 192, 130, 1, 81, @@ -33214,7 +33366,7 @@ pub mod inclusion_verifier { 129, 97, 51, - 96, + 224, 133, 1, 81, @@ -33224,28 +33376,28 @@ pub mod inclusion_verifier { 129, 129, 97, - 51, - 128, + 52, + 0, 133, 1, 81, 8, 97, - 55, - 128, + 56, + 0, 132, 1, 82, 80, 97, - 50, - 224, + 51, + 96, 130, 1, 81, 97, 51, - 0, + 128, 131, 1, 81, @@ -33254,42 +33406,42 @@ pub mod inclusion_verifier { 144, 9, 97, - 55, - 160, + 56, + 32, 131, 1, 82, 97, - 51, - 192, + 52, + 64, 130, 1, 81, 129, 129, 97, - 51, - 224, + 52, + 96, 133, 1, 81, 8, 97, - 55, - 192, + 56, + 64, 132, 1, 82, 80, 97, 52, - 64, + 192, 130, 1, 81, 97, 51, - 0, + 128, 131, 1, 81, @@ -33298,14 +33450,14 @@ pub mod inclusion_verifier { 144, 9, 97, - 55, - 224, + 56, + 96, 131, 1, 82, 97, 52, - 0, + 128, 130, 1, 81, @@ -33313,27 +33465,27 @@ pub mod inclusion_verifier { 129, 97, 52, - 32, + 160, 133, 1, 81, 8, 97, 56, - 0, + 128, 132, 1, 82, 80, 97, 55, - 0, + 128, 130, 1, 81, 97, 55, - 64, + 192, 131, 1, 81, @@ -33347,15 +33499,15 @@ pub mod inclusion_verifier { 128, 97, 56, - 32, + 160, 132, 1, 82, 129, 129, 97, - 55, - 128, + 56, + 0, 133, 1, 81, @@ -33365,15 +33517,15 @@ pub mod inclusion_verifier { 128, 97, 56, - 64, + 192, 132, 1, 82, 129, 129, 97, - 55, - 192, + 56, + 64, 133, 1, 81, @@ -33383,7 +33535,7 @@ pub mod inclusion_verifier { 128, 97, 56, - 96, + 224, 132, 1, 82, @@ -33391,7 +33543,7 @@ pub mod inclusion_verifier { 129, 97, 56, - 0, + 128, 133, 1, 81, @@ -33400,8 +33552,8 @@ pub mod inclusion_verifier { 80, 128, 97, - 56, - 128, + 57, + 0, 132, 1, 82, @@ -33409,16 +33561,16 @@ pub mod inclusion_verifier { 96, 32, 97, - 56, - 192, + 57, + 64, 131, 1, 82, 96, 32, 97, - 56, - 224, + 57, + 96, 131, 1, 82, @@ -33426,19 +33578,19 @@ pub mod inclusion_verifier { 32, 97, 57, - 0, + 128, 131, 1, 82, 97, - 56, - 128, + 57, + 0, 130, 1, 81, 97, 57, - 32, + 160, 131, 1, 82, @@ -33477,7 +33629,7 @@ pub mod inclusion_verifier { 255, 97, 57, - 64, + 192, 131, 1, 82, @@ -33489,7 +33641,7 @@ pub mod inclusion_verifier { 32, 97, 85, - 149, + 225, 131, 57, 129, @@ -33498,7 +33650,7 @@ pub mod inclusion_verifier { 82, 97, 57, - 96, + 224, 131, 1, 82, @@ -33508,15 +33660,15 @@ pub mod inclusion_verifier { 96, 32, 97, - 56, - 160, + 57, + 32, 133, 1, 96, 192, 97, - 56, - 192, + 57, + 64, 135, 1, 96, @@ -33528,8 +33680,8 @@ pub mod inclusion_verifier { 146, 80, 97, - 56, - 160, + 57, + 32, 130, 1, 81, @@ -33537,7 +33689,7 @@ pub mod inclusion_verifier { 0, 97, 56, - 0, + 128, 132, 1, 81, @@ -33547,14 +33699,14 @@ pub mod inclusion_verifier { 130, 97, 56, - 96, + 224, 134, 1, 81, 9, 97, 56, - 0, + 128, 133, 1, 82, @@ -33565,8 +33717,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 55, - 192, + 56, + 64, 132, 1, 81, @@ -33576,14 +33728,14 @@ pub mod inclusion_verifier { 130, 97, 56, - 64, + 192, 134, 1, 81, 9, 97, - 55, - 192, + 56, + 64, 133, 1, 82, @@ -33594,8 +33746,8 @@ pub mod inclusion_verifier { 145, 80, 97, - 55, - 128, + 56, + 0, 132, 1, 81, @@ -33605,14 +33757,14 @@ pub mod inclusion_verifier { 130, 97, 56, - 32, + 160, 134, 1, 81, 9, 97, - 55, - 128, + 56, + 0, 133, 1, 82, @@ -33624,7 +33776,7 @@ pub mod inclusion_verifier { 80, 97, 55, - 64, + 192, 132, 1, 81, @@ -33634,14 +33786,14 @@ pub mod inclusion_verifier { 130, 97, 55, - 0, + 128, 134, 1, 81, 9, 97, 55, - 64, + 192, 133, 1, 82, @@ -33651,7 +33803,7 @@ pub mod inclusion_verifier { 9, 97, 55, - 0, + 128, 133, 1, 82, @@ -33659,13 +33811,13 @@ pub mod inclusion_verifier { 80, 97, 55, - 64, + 192, 130, 1, 81, 97, 55, - 32, + 160, 131, 1, 81, @@ -33674,68 +33826,68 @@ pub mod inclusion_verifier { 144, 9, 97, - 57, - 128, + 58, + 0, 131, 1, 82, 128, 97, - 55, - 128, + 56, + 0, 131, 1, 81, 97, 55, - 96, + 224, 132, 1, 81, 9, 97, - 57, - 160, + 58, + 32, 131, 1, 82, 128, 97, - 55, - 192, + 56, + 64, 131, 1, 81, 97, - 55, - 160, + 56, + 32, 132, 1, 81, 9, 97, - 57, - 192, + 58, + 64, 131, 1, 82, 128, 97, 56, - 0, + 128, 131, 1, 81, 97, - 55, - 224, + 56, + 96, 132, 1, 81, 9, 97, - 57, - 224, + 58, + 96, 131, 1, 82, @@ -33751,7 +33903,7 @@ pub mod inclusion_verifier { 9, 97, 58, - 0, + 128, 131, 1, 129, @@ -33768,7 +33920,7 @@ pub mod inclusion_verifier { 9, 97, 58, - 32, + 160, 131, 1, 129, @@ -33785,7 +33937,7 @@ pub mod inclusion_verifier { 9, 97, 58, - 64, + 192, 131, 1, 129, @@ -33802,7 +33954,7 @@ pub mod inclusion_verifier { 9, 97, 58, - 96, + 224, 131, 1, 129, @@ -33818,8 +33970,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 128, + 59, + 0, 131, 1, 129, @@ -33835,8 +33987,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 160, + 59, + 32, 131, 1, 129, @@ -33852,8 +34004,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 192, + 59, + 64, 131, 1, 129, @@ -33869,8 +34021,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 58, - 224, + 59, + 96, 131, 1, 129, @@ -33887,7 +34039,7 @@ pub mod inclusion_verifier { 9, 97, 59, - 0, + 128, 131, 1, 129, @@ -33904,7 +34056,7 @@ pub mod inclusion_verifier { 9, 97, 59, - 32, + 160, 131, 1, 129, @@ -33921,7 +34073,7 @@ pub mod inclusion_verifier { 9, 97, 59, - 64, + 192, 131, 1, 129, @@ -33938,7 +34090,7 @@ pub mod inclusion_verifier { 9, 97, 59, - 96, + 224, 131, 1, 129, @@ -33954,8 +34106,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 128, + 60, + 0, 131, 1, 129, @@ -33971,8 +34123,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 160, + 60, + 32, 131, 1, 129, @@ -33988,8 +34140,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 192, + 60, + 64, 131, 1, 129, @@ -34005,8 +34157,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 59, - 224, + 60, + 96, 131, 1, 129, @@ -34023,7 +34175,7 @@ pub mod inclusion_verifier { 9, 97, 60, - 0, + 128, 131, 1, 129, @@ -34040,7 +34192,7 @@ pub mod inclusion_verifier { 9, 97, 60, - 32, + 160, 131, 1, 129, @@ -34057,7 +34209,7 @@ pub mod inclusion_verifier { 9, 97, 60, - 64, + 192, 131, 1, 129, @@ -34074,7 +34226,7 @@ pub mod inclusion_verifier { 9, 97, 60, - 96, + 224, 131, 1, 82, @@ -34089,8 +34241,8 @@ pub mod inclusion_verifier { 128, 9, 97, - 60, - 128, + 61, + 0, 131, 1, 129, @@ -34106,8 +34258,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 60, - 160, + 61, + 32, 131, 1, 129, @@ -34123,8 +34275,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 60, - 192, + 61, + 64, 131, 1, 129, @@ -34140,15 +34292,15 @@ pub mod inclusion_verifier { 145, 9, 97, - 60, - 224, + 61, + 96, 131, 1, 82, 128, 97, 50, - 96, + 224, 131, 1, 81, @@ -34163,8 +34315,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 128, + 51, + 0, 134, 1, 81, @@ -34182,8 +34334,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 160, + 51, + 32, 134, 1, 81, @@ -34197,7 +34349,7 @@ pub mod inclusion_verifier { 8, 97, 61, - 0, + 128, 132, 1, 129, @@ -34205,7 +34357,7 @@ pub mod inclusion_verifier { 82, 97, 55, - 0, + 128, 132, 1, 81, @@ -34216,7 +34368,7 @@ pub mod inclusion_verifier { 9, 97, 61, - 32, + 160, 131, 1, 82, @@ -34225,7 +34377,7 @@ pub mod inclusion_verifier { 1, 97, 61, - 32, + 160, 132, 1, 81, @@ -34234,14 +34386,14 @@ pub mod inclusion_verifier { 9, 97, 61, - 64, + 192, 131, 1, 82, 128, 97, 50, - 96, + 224, 131, 1, 81, @@ -34256,8 +34408,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 128, + 51, + 0, 134, 1, 81, @@ -34275,8 +34427,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 50, - 160, + 51, + 32, 134, 1, 81, @@ -34290,7 +34442,7 @@ pub mod inclusion_verifier { 8, 97, 61, - 96, + 224, 132, 1, 129, @@ -34298,7 +34450,7 @@ pub mod inclusion_verifier { 82, 97, 55, - 0, + 128, 132, 1, 81, @@ -34308,8 +34460,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 61, - 128, + 62, + 0, 131, 1, 129, @@ -34327,8 +34479,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 61, - 160, + 62, + 32, 131, 1, 82, @@ -34343,28 +34495,28 @@ pub mod inclusion_verifier { 1, 9, 97, - 61, - 192, + 62, + 64, 131, 1, 82, 128, 97, - 61, - 160, + 62, + 32, 131, 1, 81, 97, 61, - 64, + 192, 132, 1, 81, 8, 97, - 61, - 224, + 62, + 96, 131, 1, 82, @@ -34372,15 +34524,15 @@ pub mod inclusion_verifier { 96, 1, 97, - 61, - 224, + 62, + 96, 132, 1, 81, 9, 97, 62, - 0, + 128, 131, 1, 82, @@ -34388,22 +34540,22 @@ pub mod inclusion_verifier { 96, 1, 97, - 61, - 192, + 62, + 64, 132, 1, 81, 9, 97, 62, - 32, + 160, 131, 1, 82, 128, 97, 55, - 32, + 160, 131, 1, 81, @@ -34412,14 +34564,14 @@ pub mod inclusion_verifier { 9, 97, 62, - 64, + 192, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -34432,15 +34584,15 @@ pub mod inclusion_verifier { 9, 97, 62, - 96, + 224, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -34448,8 +34600,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 62, - 128, + 63, + 0, 131, 1, 82, @@ -34457,8 +34609,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 62, - 128, + 63, + 0, 132, 1, 81, @@ -34466,8 +34618,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 62, - 160, + 63, + 32, 131, 1, 82, @@ -34476,21 +34628,21 @@ pub mod inclusion_verifier { 1, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 62, - 192, + 63, + 64, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -34502,16 +34654,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 62, - 224, + 63, + 96, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -34520,7 +34672,7 @@ pub mod inclusion_verifier { 9, 97, 63, - 0, + 128, 131, 1, 129, @@ -34539,7 +34691,7 @@ pub mod inclusion_verifier { 9, 97, 63, - 32, + 160, 131, 1, 82, @@ -34552,41 +34704,41 @@ pub mod inclusion_verifier { 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 63, - 64, + 192, 131, 1, 82, 128, 97, 63, - 32, + 160, 131, 1, 81, 97, - 62, - 160, + 63, + 32, 132, 1, 81, 8, 97, 63, - 96, + 224, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -34598,16 +34750,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 63, - 128, + 64, + 0, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -34615,8 +34767,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 63, - 160, + 64, + 32, 131, 1, 129, @@ -34624,7 +34776,7 @@ pub mod inclusion_verifier { 82, 97, 58, - 0, + 128, 131, 1, 81, @@ -34634,55 +34786,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 63, - 192, + 64, + 64, 131, 1, 82, 128, 97, 58, - 0, + 128, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 63, - 224, + 64, + 96, 131, 1, 82, 128, 97, - 63, - 192, + 64, + 64, 131, 1, 81, 97, 63, - 96, + 224, 132, 1, 81, 8, 97, 64, - 0, + 128, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -34695,15 +34847,15 @@ pub mod inclusion_verifier { 9, 97, 64, - 32, + 160, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -34712,7 +34864,7 @@ pub mod inclusion_verifier { 9, 97, 64, - 64, + 192, 131, 1, 129, @@ -34720,7 +34872,7 @@ pub mod inclusion_verifier { 82, 97, 58, - 32, + 160, 131, 1, 81, @@ -34731,54 +34883,54 @@ pub mod inclusion_verifier { 9, 97, 64, - 96, + 224, 131, 1, 82, 128, 97, 58, - 32, + 160, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 64, - 128, + 65, + 0, 131, 1, 82, 128, 97, 64, - 96, + 224, 131, 1, 81, 97, 64, - 0, + 128, 132, 1, 81, 8, 97, - 64, - 160, + 65, + 32, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -34790,16 +34942,16 @@ pub mod inclusion_verifier { 81, 9, 97, + 65, 64, - 192, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -34807,8 +34959,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 64, - 224, + 65, + 96, 131, 1, 129, @@ -34816,7 +34968,7 @@ pub mod inclusion_verifier { 82, 97, 58, - 64, + 192, 131, 1, 81, @@ -34827,54 +34979,54 @@ pub mod inclusion_verifier { 9, 97, 65, - 0, + 128, 131, 1, 82, 128, 97, 58, - 64, + 192, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 65, - 32, + 160, 131, 1, 82, 128, 97, 65, - 0, + 128, 131, 1, 81, 97, - 64, - 160, + 65, + 32, 132, 1, 81, 8, 97, 65, - 64, + 192, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -34887,15 +35039,15 @@ pub mod inclusion_verifier { 9, 97, 65, - 96, + 224, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -34903,8 +35055,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 65, - 128, + 66, + 0, 131, 1, 129, @@ -34912,7 +35064,7 @@ pub mod inclusion_verifier { 82, 97, 58, - 96, + 224, 131, 1, 81, @@ -34922,55 +35074,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 65, - 160, + 66, + 32, 131, 1, 82, 128, 97, 58, - 96, + 224, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 65, - 192, + 66, + 64, 131, 1, 82, 128, 97, - 65, - 160, + 66, + 32, 131, 1, 81, 97, 65, - 64, + 192, 132, 1, 81, 8, 97, - 65, - 224, + 66, + 96, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -34983,15 +35135,15 @@ pub mod inclusion_verifier { 9, 97, 66, - 0, + 128, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -35000,15 +35152,15 @@ pub mod inclusion_verifier { 9, 97, 66, - 32, + 160, 131, 1, 129, 144, 82, 97, - 58, - 128, + 59, + 0, 131, 1, 81, @@ -35019,54 +35171,54 @@ pub mod inclusion_verifier { 9, 97, 66, - 64, + 192, 131, 1, 82, 128, 97, - 58, - 128, + 59, + 0, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 66, - 96, + 224, 131, 1, 82, 128, 97, 66, - 64, + 192, 131, 1, 81, 97, - 65, - 224, + 66, + 96, 132, 1, 81, 8, 97, - 66, - 128, + 67, + 0, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -35078,16 +35230,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 66, - 160, + 67, + 32, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -35095,16 +35247,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 66, - 192, + 67, + 64, 131, 1, 129, 144, 82, 97, - 58, - 160, + 59, + 32, 131, 1, 81, @@ -35114,55 +35266,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 66, - 224, + 67, + 96, 131, 1, 82, 128, 97, - 58, - 160, + 59, + 32, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 67, - 0, + 128, 131, 1, 82, 128, 97, - 66, - 224, + 67, + 96, 131, 1, 81, 97, - 66, - 128, + 67, + 0, 132, 1, 81, 8, 97, 67, - 32, + 160, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -35175,15 +35327,15 @@ pub mod inclusion_verifier { 9, 97, 67, - 64, + 192, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -35192,15 +35344,15 @@ pub mod inclusion_verifier { 9, 97, 67, - 96, + 224, 131, 1, 129, 144, 82, 97, - 58, - 192, + 59, + 64, 131, 1, 81, @@ -35210,55 +35362,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 67, - 128, + 68, + 0, 131, 1, 82, 128, 97, - 58, - 192, + 59, + 64, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 67, - 160, + 68, + 32, 131, 1, 82, 128, 97, - 67, - 128, + 68, + 0, 131, 1, 81, 97, 67, - 32, + 160, 132, 1, 81, 8, 97, - 67, - 192, + 68, + 64, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -35270,16 +35422,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 67, - 224, + 68, + 96, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -35288,15 +35440,15 @@ pub mod inclusion_verifier { 9, 97, 68, - 0, + 128, 131, 1, 129, 144, 82, 97, - 58, - 224, + 59, + 96, 131, 1, 81, @@ -35307,54 +35459,54 @@ pub mod inclusion_verifier { 9, 97, 68, - 32, + 160, 131, 1, 82, 128, 97, - 58, - 224, + 59, + 96, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 68, - 64, + 192, 131, 1, 82, 128, 97, 68, - 32, + 160, 131, 1, 81, 97, - 67, - 192, + 68, + 64, 132, 1, 81, 8, 97, 68, - 96, + 224, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -35366,16 +35518,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 68, - 128, + 69, + 0, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -35383,8 +35535,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 68, - 160, + 69, + 32, 131, 1, 129, @@ -35392,7 +35544,7 @@ pub mod inclusion_verifier { 82, 97, 59, - 0, + 128, 131, 1, 81, @@ -35402,55 +35554,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 68, - 192, + 69, + 64, 131, 1, 82, 128, 97, 59, - 0, + 128, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 68, - 224, + 69, + 96, 131, 1, 82, 128, 97, - 68, - 192, + 69, + 64, 131, 1, 81, 97, 68, - 96, + 224, 132, 1, 81, 8, 97, 69, - 0, + 128, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -35463,15 +35615,15 @@ pub mod inclusion_verifier { 9, 97, 69, - 32, + 160, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -35480,7 +35632,7 @@ pub mod inclusion_verifier { 9, 97, 69, - 64, + 192, 131, 1, 129, @@ -35488,7 +35640,7 @@ pub mod inclusion_verifier { 82, 97, 59, - 32, + 160, 131, 1, 81, @@ -35499,54 +35651,54 @@ pub mod inclusion_verifier { 9, 97, 69, - 96, + 224, 131, 1, 82, 128, 97, 59, - 32, + 160, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 69, - 128, + 70, + 0, 131, 1, 82, 128, 97, 69, - 96, + 224, 131, 1, 81, 97, 69, - 0, + 128, 132, 1, 81, 8, 97, - 69, - 160, + 70, + 32, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -35558,16 +35710,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 69, - 192, + 70, + 64, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -35575,8 +35727,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 69, - 224, + 70, + 96, 131, 1, 129, @@ -35584,7 +35736,7 @@ pub mod inclusion_verifier { 82, 97, 59, - 64, + 192, 131, 1, 81, @@ -35595,54 +35747,54 @@ pub mod inclusion_verifier { 9, 97, 70, - 0, + 128, 131, 1, 82, 128, 97, 59, - 64, + 192, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 70, - 32, + 160, 131, 1, 82, 128, 97, 70, - 0, + 128, 131, 1, 81, 97, - 69, - 160, + 70, + 32, 132, 1, 81, 8, 97, 70, - 64, + 192, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -35655,15 +35807,15 @@ pub mod inclusion_verifier { 9, 97, 70, - 96, + 224, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -35671,8 +35823,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 70, - 128, + 71, + 0, 131, 1, 129, @@ -35680,7 +35832,7 @@ pub mod inclusion_verifier { 82, 97, 59, - 96, + 224, 131, 1, 81, @@ -35690,55 +35842,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 70, - 160, + 71, + 32, 131, 1, 82, 128, 97, 59, - 96, + 224, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 70, - 192, + 71, + 64, 131, 1, 82, 128, 97, - 70, - 160, + 71, + 32, 131, 1, 81, 97, 70, - 64, + 192, 132, 1, 81, 8, 97, - 70, - 224, + 71, + 96, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -35751,15 +35903,15 @@ pub mod inclusion_verifier { 9, 97, 71, - 0, + 128, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -35768,15 +35920,15 @@ pub mod inclusion_verifier { 9, 97, 71, - 32, + 160, 131, 1, 129, 144, 82, 97, - 59, - 128, + 60, + 0, 131, 1, 81, @@ -35787,54 +35939,54 @@ pub mod inclusion_verifier { 9, 97, 71, - 64, + 192, 131, 1, 82, 128, 97, - 59, - 128, + 60, + 0, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 71, - 96, + 224, 131, 1, 82, 128, 97, 71, - 64, + 192, 131, 1, 81, 97, - 70, - 224, + 71, + 96, 132, 1, 81, 8, 97, - 71, - 128, + 72, + 0, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -35846,16 +35998,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 71, - 160, + 72, + 32, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -35863,16 +36015,16 @@ pub mod inclusion_verifier { 145, 9, 97, - 71, - 192, + 72, + 64, 131, 1, 129, 144, 82, 97, - 59, - 160, + 60, + 32, 131, 1, 81, @@ -35882,55 +36034,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 71, - 224, + 72, + 96, 131, 1, 82, 128, 97, - 59, - 160, + 60, + 32, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 72, - 0, + 128, 131, 1, 82, 128, 97, - 71, - 224, + 72, + 96, 131, 1, 81, 97, - 71, - 128, + 72, + 0, 132, 1, 81, 8, 97, 72, - 32, + 160, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -35943,15 +36095,15 @@ pub mod inclusion_verifier { 9, 97, 72, - 64, + 192, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -35960,15 +36112,15 @@ pub mod inclusion_verifier { 9, 97, 72, - 96, + 224, 131, 1, 129, 144, 82, 97, - 59, - 192, + 60, + 64, 131, 1, 81, @@ -35978,55 +36130,55 @@ pub mod inclusion_verifier { 3, 9, 97, - 72, - 128, + 73, + 0, 131, 1, 82, 128, 97, - 59, - 192, + 60, + 64, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 72, - 160, + 73, + 32, 131, 1, 82, 128, 97, - 72, - 128, + 73, + 0, 131, 1, 81, 97, 72, - 32, + 160, 132, 1, 81, 8, 97, - 72, - 192, + 73, + 64, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -36038,16 +36190,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 72, - 224, + 73, + 96, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -36056,15 +36208,15 @@ pub mod inclusion_verifier { 9, 97, 73, - 0, + 128, 131, 1, 129, 144, 82, 97, - 59, - 224, + 60, + 96, 131, 1, 81, @@ -36075,54 +36227,54 @@ pub mod inclusion_verifier { 9, 97, 73, - 32, + 160, 131, 1, 82, 128, 97, - 59, - 224, + 60, + 96, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 73, - 64, + 192, 131, 1, 82, 128, 97, 73, - 32, + 160, 131, 1, 81, 97, - 72, - 192, + 73, + 64, 132, 1, 81, 8, 97, 73, - 96, + 224, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -36134,16 +36286,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 73, - 128, + 74, + 0, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -36151,8 +36303,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 73, - 160, + 74, + 32, 131, 1, 129, @@ -36160,7 +36312,7 @@ pub mod inclusion_verifier { 82, 97, 60, - 0, + 128, 131, 1, 81, @@ -36170,156 +36322,156 @@ pub mod inclusion_verifier { 3, 9, 97, - 73, - 192, + 74, + 64, 131, 1, 82, 128, 97, 60, - 0, + 128, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, - 73, - 224, + 74, + 96, 131, 1, 82, 128, 97, - 73, - 192, + 74, + 64, 131, 1, 81, 97, 73, - 96, + 224, 132, 1, 81, 8, 97, 74, - 0, + 128, 131, 1, 82, 128, 97, 55, - 32, + 160, 131, 1, 81, 97, - 48, - 160, + 49, + 32, 132, 1, 81, 9, 97, 74, - 32, + 160, 131, 1, 82, 128, 97, 55, - 32, + 160, 131, 1, 81, 97, - 48, - 192, + 49, + 64, 132, 1, 81, 9, 97, 74, - 64, + 192, 131, 1, 82, 128, 97, 55, - 32, + 160, 131, 1, 81, 97, - 48, - 224, + 49, + 96, 132, 1, 81, 9, 97, 74, - 96, + 224, 131, 1, 82, 128, 97, 55, - 32, + 160, 131, 1, 81, 97, 49, - 0, + 128, 132, 1, 81, 9, 97, - 74, - 128, + 75, + 0, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, 97, 49, - 32, + 160, 132, 1, 81, 9, 97, - 74, - 160, + 75, + 32, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -36327,8 +36479,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 74, - 192, + 75, + 64, 131, 1, 129, @@ -36336,7 +36488,7 @@ pub mod inclusion_verifier { 82, 97, 60, - 32, + 160, 131, 1, 81, @@ -36346,135 +36498,135 @@ pub mod inclusion_verifier { 3, 9, 97, - 74, - 224, + 75, + 96, 131, 1, 82, 128, 97, 60, - 32, + 160, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 75, - 0, + 128, 131, 1, 82, 128, 97, 60, - 32, + 160, 131, 1, 81, 97, 74, - 32, + 160, 132, 1, 81, 9, 97, 75, - 32, + 160, 131, 1, 82, 128, 97, 60, - 32, + 160, 131, 1, 81, 97, 74, - 64, + 192, 132, 1, 81, 9, 97, 75, - 64, + 192, 131, 1, 82, 128, 97, 60, - 32, + 160, 131, 1, 81, 97, 74, - 96, + 224, 132, 1, 81, 9, 97, 75, - 96, + 224, 131, 1, 82, 128, 97, 60, - 32, + 160, 131, 1, 81, 97, - 74, - 128, + 75, + 0, 132, 1, 81, 9, 97, - 75, - 128, + 76, + 0, 131, 1, 82, 128, 97, - 74, - 224, + 75, + 96, 131, 1, 81, 97, 74, - 0, + 128, 132, 1, 81, 8, 97, - 75, - 160, + 76, + 32, 131, 1, 82, 128, 97, 51, - 32, + 160, 131, 1, 81, @@ -36486,16 +36638,16 @@ pub mod inclusion_verifier { 81, 9, 97, - 75, - 192, + 76, + 64, 131, 1, 129, 144, 82, 97, - 57, - 128, + 58, + 0, 131, 1, 81, @@ -36503,8 +36655,8 @@ pub mod inclusion_verifier { 145, 9, 97, - 75, - 224, + 76, + 96, 131, 1, 129, @@ -36512,7 +36664,7 @@ pub mod inclusion_verifier { 82, 97, 60, - 64, + 192, 131, 1, 81, @@ -36523,47 +36675,47 @@ pub mod inclusion_verifier { 9, 97, 76, - 0, + 128, 131, 1, 82, 128, 97, 60, - 64, + 192, 131, 1, 81, 97, 62, - 64, + 192, 132, 1, 81, 9, 97, 76, - 32, + 160, 131, 1, 82, 128, 97, 76, - 0, + 128, 131, 1, 81, 97, - 75, - 160, + 76, + 32, 132, 1, 81, 8, 97, 76, - 64, + 192, 131, 1, 129, @@ -36580,7 +36732,7 @@ pub mod inclusion_verifier { 9, 97, 76, - 96, + 224, 131, 1, 82, @@ -36592,15 +36744,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 62, - 192, + 63, + 64, 132, 1, 81, 9, 97, - 76, - 128, + 77, + 0, 131, 1, 82, @@ -36613,14 +36765,14 @@ pub mod inclusion_verifier { 81, 97, 63, - 64, + 192, 132, 1, 81, 9, 97, - 76, - 160, + 77, + 32, 131, 1, 82, @@ -36632,15 +36784,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 63, - 224, + 64, + 96, 132, 1, 81, 9, 97, - 76, - 192, + 77, + 64, 131, 1, 82, @@ -36652,15 +36804,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 64, - 128, + 65, + 0, 132, 1, 81, 9, 97, - 76, - 224, + 77, + 96, 131, 1, 82, @@ -36673,14 +36825,14 @@ pub mod inclusion_verifier { 81, 97, 65, - 32, + 160, 132, 1, 81, 9, 97, 77, - 0, + 128, 131, 1, 82, @@ -36692,15 +36844,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 65, - 192, + 66, + 64, 132, 1, 81, 9, 97, 77, - 32, + 160, 131, 1, 82, @@ -36713,14 +36865,14 @@ pub mod inclusion_verifier { 81, 97, 66, - 96, + 224, 132, 1, 81, 9, 97, 77, - 64, + 192, 131, 1, 82, @@ -36733,14 +36885,14 @@ pub mod inclusion_verifier { 81, 97, 67, - 0, + 128, 132, 1, 81, 9, 97, 77, - 96, + 224, 131, 1, 82, @@ -36752,15 +36904,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 67, - 160, + 68, + 32, 132, 1, 81, 9, 97, - 77, - 128, + 78, + 0, 131, 1, 82, @@ -36773,14 +36925,14 @@ pub mod inclusion_verifier { 81, 97, 68, - 64, + 192, 132, 1, 81, 9, 97, - 77, - 160, + 78, + 32, 131, 1, 82, @@ -36792,15 +36944,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 68, - 224, + 69, + 96, 132, 1, 81, 9, 97, - 77, - 192, + 78, + 64, 131, 1, 82, @@ -36812,15 +36964,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 69, - 128, + 70, + 0, 132, 1, 81, 9, 97, - 77, - 224, + 78, + 96, 131, 1, 82, @@ -36833,14 +36985,14 @@ pub mod inclusion_verifier { 81, 97, 70, - 32, + 160, 132, 1, 81, 9, 97, 78, - 0, + 128, 131, 1, 82, @@ -36852,15 +37004,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 70, - 192, + 71, + 64, 132, 1, 81, 9, 97, 78, - 32, + 160, 131, 1, 82, @@ -36873,14 +37025,14 @@ pub mod inclusion_verifier { 81, 97, 71, - 96, + 224, 132, 1, 81, 9, 97, 78, - 64, + 192, 131, 1, 82, @@ -36893,14 +37045,14 @@ pub mod inclusion_verifier { 81, 97, 72, - 0, + 128, 132, 1, 81, 9, 97, 78, - 96, + 224, 131, 1, 82, @@ -36912,15 +37064,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 72, - 160, + 73, + 32, 132, 1, 81, 9, 97, - 78, - 128, + 79, + 0, 131, 1, 82, @@ -36933,14 +37085,14 @@ pub mod inclusion_verifier { 81, 97, 73, - 64, + 192, 132, 1, 81, 9, 97, - 78, - 160, + 79, + 32, 131, 1, 82, @@ -36952,15 +37104,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 73, - 224, + 74, + 96, 132, 1, 81, 9, 97, - 78, - 192, + 79, + 64, 131, 1, 82, @@ -36973,14 +37125,14 @@ pub mod inclusion_verifier { 81, 97, 75, - 0, + 128, 132, 1, 81, 9, 97, - 78, - 224, + 79, + 96, 131, 1, 82, @@ -36993,14 +37145,14 @@ pub mod inclusion_verifier { 81, 97, 75, - 32, + 160, 132, 1, 81, 9, 97, 79, - 0, + 128, 131, 1, 82, @@ -37013,14 +37165,14 @@ pub mod inclusion_verifier { 81, 97, 75, - 64, + 192, 132, 1, 81, 9, 97, 79, - 32, + 160, 131, 1, 82, @@ -37033,14 +37185,14 @@ pub mod inclusion_verifier { 81, 97, 75, - 96, + 224, 132, 1, 81, 9, 97, 79, - 64, + 192, 131, 1, 82, @@ -37052,15 +37204,15 @@ pub mod inclusion_verifier { 1, 81, 97, - 75, - 128, + 76, + 0, 132, 1, 81, 9, 97, 79, - 96, + 224, 131, 1, 82, @@ -37073,41 +37225,41 @@ pub mod inclusion_verifier { 81, 97, 76, - 32, + 160, 132, 1, 81, 9, 97, - 79, - 128, + 80, + 0, 131, 1, 82, 128, 97, 76, - 96, + 224, 131, 1, 81, 97, 62, - 0, + 128, 132, 1, 81, 8, 97, - 79, - 160, + 80, + 32, 131, 1, 82, 128, 97, 55, - 96, + 224, 131, 1, 81, @@ -37115,15 +37267,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 79, - 192, + 80, + 64, 131, 1, 82, 128, 97, 51, - 64, + 192, 131, 1, 81, @@ -37139,7 +37291,7 @@ pub mod inclusion_verifier { 131, 97, 51, - 96, + 224, 134, 1, 81, @@ -37157,8 +37309,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 51, - 128, + 52, + 0, 134, 1, 81, @@ -37171,16 +37323,16 @@ pub mod inclusion_verifier { 9, 8, 97, - 79, - 224, + 80, + 96, 132, 1, 129, 144, 82, 97, - 57, - 160, + 58, + 32, 132, 1, 81, @@ -37191,7 +37343,7 @@ pub mod inclusion_verifier { 9, 97, 80, - 0, + 128, 131, 1, 82, @@ -37200,7 +37352,7 @@ pub mod inclusion_verifier { 1, 97, 80, - 0, + 128, 132, 1, 81, @@ -37209,7 +37361,7 @@ pub mod inclusion_verifier { 9, 97, 80, - 32, + 160, 131, 1, 82, @@ -37217,82 +37369,82 @@ pub mod inclusion_verifier { 96, 1, 97, - 79, - 192, + 80, + 64, 132, 1, 81, 9, 97, 80, - 64, + 192, 131, 1, 82, 128, 97, - 60, - 128, + 61, + 0, 131, 1, 81, 97, 80, - 32, + 160, 132, 1, 81, 9, 97, 80, - 96, + 224, 131, 1, 82, 128, 97, - 60, - 128, + 61, + 0, 131, 1, 81, 97, 80, - 64, + 192, 132, 1, 81, 9, 97, - 80, - 128, + 81, + 0, 131, 1, 82, 128, 97, 80, - 96, + 224, 131, 1, 81, 97, - 79, - 160, + 80, + 32, 132, 1, 81, 8, 97, - 80, - 160, + 81, + 32, 131, 1, 82, 128, 97, - 55, - 160, + 56, + 32, 131, 1, 81, @@ -37300,15 +37452,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 80, - 192, + 81, + 64, 131, 1, 82, 128, 97, - 51, - 192, + 52, + 64, 131, 1, 81, @@ -37323,8 +37475,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 51, - 224, + 52, + 96, 134, 1, 81, @@ -37337,16 +37489,16 @@ pub mod inclusion_verifier { 9, 8, 97, - 80, - 224, + 81, + 96, 132, 1, 129, 144, 82, 97, - 57, - 192, + 58, + 64, 132, 1, 81, @@ -37357,7 +37509,7 @@ pub mod inclusion_verifier { 9, 97, 81, - 0, + 128, 131, 1, 82, @@ -37366,7 +37518,7 @@ pub mod inclusion_verifier { 1, 97, 81, - 0, + 128, 132, 1, 81, @@ -37375,7 +37527,7 @@ pub mod inclusion_verifier { 9, 97, 81, - 32, + 160, 131, 1, 82, @@ -37383,22 +37535,22 @@ pub mod inclusion_verifier { 96, 1, 97, - 80, - 192, + 81, + 64, 132, 1, 81, 9, 97, 81, - 64, + 192, 131, 1, 82, 128, 97, - 51, - 192, + 52, + 64, 131, 1, 81, @@ -37413,8 +37565,8 @@ pub mod inclusion_verifier { 129, 131, 97, - 51, - 224, + 52, + 96, 134, 1, 81, @@ -37428,15 +37580,15 @@ pub mod inclusion_verifier { 8, 97, 81, - 96, + 224, 132, 1, 129, 144, 82, 97, - 57, - 192, + 58, + 64, 132, 1, 81, @@ -37446,8 +37598,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 81, - 128, + 82, + 0, 131, 1, 129, @@ -37465,8 +37617,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 81, - 160, + 82, + 32, 131, 1, 82, @@ -37478,43 +37630,43 @@ pub mod inclusion_verifier { 1, 81, 97, - 80, - 192, + 81, + 64, 132, 1, 81, 9, 97, - 81, - 192, + 82, + 64, 131, 1, 82, 128, 97, - 81, - 160, + 82, + 32, 131, 1, 81, 97, 81, - 32, + 160, 132, 1, 81, 8, 97, - 81, - 224, + 82, + 96, 131, 1, 129, 144, 82, 97, - 60, - 160, + 61, + 32, 131, 1, 81, @@ -37523,74 +37675,74 @@ pub mod inclusion_verifier { 9, 97, 82, - 0, + 128, 131, 1, 82, 128, 97, - 60, - 160, + 61, + 32, 131, 1, 81, 97, 81, - 64, + 192, 132, 1, 81, 9, 97, 82, - 32, + 160, 131, 1, 82, 128, 97, - 60, - 160, + 61, + 32, 131, 1, 81, 97, - 81, - 192, + 82, + 64, 132, 1, 81, 9, 97, 82, - 64, + 192, 131, 1, 82, 128, 97, 82, - 0, + 128, 131, 1, 81, 97, - 80, - 160, + 81, + 32, 132, 1, 81, 8, 97, 82, - 96, + 224, 131, 1, 82, 128, 97, - 55, - 224, + 56, + 96, 131, 1, 81, @@ -37598,15 +37750,15 @@ pub mod inclusion_verifier { 1, 9, 97, - 82, - 128, + 83, + 0, 131, 1, 82, 128, 97, 52, - 0, + 128, 131, 1, 81, @@ -37622,7 +37774,7 @@ pub mod inclusion_verifier { 131, 97, 52, - 32, + 160, 134, 1, 81, @@ -37635,16 +37787,16 @@ pub mod inclusion_verifier { 9, 8, 97, - 82, - 160, + 83, + 32, 132, 1, 129, 144, 82, 97, - 57, - 224, + 58, + 96, 132, 1, 81, @@ -37654,8 +37806,8 @@ pub mod inclusion_verifier { 144, 9, 97, - 82, - 192, + 83, + 64, 131, 1, 82, @@ -37663,8 +37815,8 @@ pub mod inclusion_verifier { 96, 1, 97, - 82, - 192, + 83, + 64, 132, 1, 81, @@ -37672,8 +37824,8 @@ pub mod inclusion_verifier { 3, 9, 97, - 82, - 224, + 83, + 96, 131, 1, 82, @@ -37681,82 +37833,82 @@ pub mod inclusion_verifier { 96, 1, 97, - 82, - 128, + 83, + 0, 132, 1, 81, 9, 97, 83, - 0, + 128, 131, 1, 82, 128, 97, - 60, - 192, + 61, + 64, 131, 1, 81, 97, - 82, - 224, + 83, + 96, 132, 1, 81, 9, 97, 83, - 32, + 160, 131, 1, 82, 128, 97, - 60, - 192, + 61, + 64, 131, 1, 81, 97, 83, - 0, + 128, 132, 1, 81, 9, 97, 83, - 64, + 192, 131, 1, 82, 128, 97, 83, - 32, + 160, 131, 1, 81, 97, 82, - 96, + 224, 132, 1, 81, 8, 97, 83, - 96, + 224, 131, 1, 82, 128, 97, 51, - 0, + 128, 131, 1, 81, @@ -37764,8 +37916,8 @@ pub mod inclusion_verifier { 1, 9, 97, - 83, - 128, + 84, + 0, 131, 1, 82, @@ -37780,16 +37932,16 @@ pub mod inclusion_verifier { 1, 9, 97, - 83, - 160, + 84, + 32, 131, 1, 82, 96, 1, 97, - 83, - 192, + 84, + 64, 131, 1, 129, @@ -37798,20 +37950,20 @@ pub mod inclusion_verifier { 96, 2, 97, - 83, - 224, + 84, + 96, 133, 1, 82, 97, 83, - 96, + 224, 132, 1, 81, 97, 84, - 0, + 128, 133, 1, 82, @@ -37833,26 +37985,26 @@ pub mod inclusion_verifier { 146, 80, 97, - 83, - 192, + 84, + 64, 130, 1, 81, 97, 84, - 32, + 160, 131, 1, 82, 97, - 83, - 224, + 84, + 96, 130, 1, 81, 97, 84, - 64, + 192, 131, 1, 82, @@ -37863,7 +38015,7 @@ pub mod inclusion_verifier { 81, 97, 84, - 96, + 224, 131, 1, 82, @@ -37873,8 +38025,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 84, - 128, + 85, + 0, 131, 1, 82, @@ -37885,14 +38037,14 @@ pub mod inclusion_verifier { 64, 97, 84, - 32, + 160, 133, 1, 96, 128, 97, 84, - 32, + 160, 135, 1, 96, @@ -37909,8 +38061,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 84, - 160, + 85, + 32, 131, 1, 82, @@ -37921,20 +38073,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 84, - 192, + 85, + 64, 131, 1, 82, 97, 62, - 32, + 160, 130, 1, 81, 97, - 84, - 224, + 85, + 96, 131, 1, 82, @@ -37944,15 +38096,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 84, - 160, + 85, + 32, 133, 1, 96, 96, 97, - 84, - 160, + 85, + 32, 135, 1, 96, @@ -37965,49 +38117,49 @@ pub mod inclusion_verifier { 80, 97, 84, - 32, + 160, 130, 1, 81, 97, 85, - 0, + 128, 131, 1, 82, 97, 84, - 64, + 192, 130, 1, 81, 97, 85, - 32, + 160, 131, 1, 82, 97, - 84, - 160, + 85, + 32, 130, 1, 81, 97, 85, - 64, + 192, 131, 1, 82, 97, - 84, - 192, + 85, + 64, 130, 1, 81, 97, 85, - 96, + 224, 131, 1, 82, @@ -38018,14 +38170,14 @@ pub mod inclusion_verifier { 64, 97, 85, - 0, + 128, 133, 1, 96, 128, 97, 85, - 0, + 128, 135, 1, 96, @@ -38043,8 +38195,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 85, - 128, + 86, + 0, 131, 1, 82, @@ -38055,20 +38207,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 85, - 160, + 86, + 32, 131, 1, 82, 97, - 76, - 128, + 77, + 0, 130, 1, 81, 97, - 85, - 192, + 86, + 64, 131, 1, 82, @@ -38078,15 +38230,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 85, - 128, + 86, + 0, 133, 1, 96, 96, 97, - 85, - 128, + 86, + 0, 135, 1, 96, @@ -38099,49 +38251,49 @@ pub mod inclusion_verifier { 80, 97, 85, - 0, + 128, 130, 1, 81, 97, - 85, - 224, + 86, + 96, 131, 1, 82, 97, 85, - 32, + 160, 130, 1, 81, 97, 86, - 0, + 128, 131, 1, 82, 97, - 85, - 128, + 86, + 0, 130, 1, 81, 97, 86, - 32, + 160, 131, 1, 82, 97, - 85, - 160, + 86, + 32, 130, 1, 81, 97, 86, - 64, + 192, 131, 1, 82, @@ -38151,15 +38303,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 85, - 224, + 86, + 96, 133, 1, 96, 128, 97, - 85, - 224, + 86, + 96, 135, 1, 96, @@ -38178,7 +38330,7 @@ pub mod inclusion_verifier { 81, 97, 86, - 96, + 224, 131, 1, 82, @@ -38189,20 +38341,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 86, - 128, + 87, + 0, 131, 1, 82, 97, - 76, - 160, + 77, + 32, 130, 1, 81, 97, - 86, - 160, + 87, + 32, 131, 1, 82, @@ -38213,14 +38365,14 @@ pub mod inclusion_verifier { 64, 97, 86, - 96, + 224, 133, 1, 96, 96, 97, 86, - 96, + 224, 135, 1, 96, @@ -38232,50 +38384,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 85, - 224, + 86, + 96, 130, 1, 81, 97, - 86, - 192, + 87, + 64, 131, 1, 82, 97, 86, - 0, + 128, 130, 1, 81, 97, - 86, - 224, + 87, + 96, 131, 1, 82, 97, 86, - 96, + 224, 130, 1, 81, 97, 87, - 0, + 128, 131, 1, 82, 97, - 86, - 128, + 87, + 0, 130, 1, 81, 97, 87, - 32, + 160, 131, 1, 82, @@ -38285,15 +38437,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 86, - 192, + 87, + 64, 133, 1, 96, 128, 97, - 86, - 192, + 87, + 64, 135, 1, 96, @@ -38305,92 +38457,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 4, - 102, - 17, - 180, - 75, - 180, - 244, - 205, - 143, - 207, - 111, - 130, - 254, - 214, - 65, - 211, - 73, - 97, - 184, - 138, - 96, + 41, + 155, 18, - 223, - 94, - 15, - 68, - 212, - 244, - 2, - 72, - 213, + 230, + 83, + 153, + 220, + 234, + 63, + 30, + 12, + 224, + 70, + 207, + 95, + 147, + 206, 123, + 169, + 247, + 121, + 191, + 163, + 158, + 127, + 12, + 109, + 76, + 25, + 98, + 138, + 144, 97, 87, - 64, + 192, 131, 1, 82, 127, - 37, - 184, - 67, - 83, - 169, - 44, - 55, - 187, - 21, - 100, - 87, - 227, - 27, - 145, - 51, - 220, - 129, - 36, - 94, + 33, + 197, + 119, + 18, + 42, + 61, 31, - 55, - 116, - 184, - 152, - 244, - 28, - 245, + 77, + 1, + 155, + 147, + 231, + 36, + 217, + 129, + 176, + 101, + 62, + 217, + 79, + 73, + 46, + 175, + 236, + 80, + 148, + 82, + 49, + 147, + 95, 154, - 123, - 10, - 223, - 87, + 149, 97, 87, - 96, + 224, 131, 1, 82, 97, - 76, - 192, + 77, + 64, 130, 1, 81, 97, - 87, - 128, + 88, + 0, 131, 1, 82, @@ -38401,14 +38553,14 @@ pub mod inclusion_verifier { 64, 97, 87, - 64, + 192, 133, 1, 96, 96, 97, 87, - 64, + 192, 135, 1, 96, @@ -38420,50 +38572,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 86, - 192, + 87, + 64, 130, 1, 81, 97, - 87, - 160, + 88, + 32, 131, 1, 82, 97, - 86, - 224, + 87, + 96, 130, 1, 81, 97, - 87, - 192, + 88, + 64, 131, 1, 82, 97, 87, - 64, + 192, 130, 1, 81, 97, - 87, - 224, + 88, + 96, 131, 1, 82, 97, 87, - 96, + 224, 130, 1, 81, 97, 88, - 0, + 128, 131, 1, 82, @@ -38473,15 +38625,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 87, - 160, + 88, + 32, 133, 1, 96, 128, 97, - 87, - 160, + 88, + 32, 135, 1, 96, @@ -38493,92 +38645,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 37, - 157, - 169, - 246, - 67, - 24, + 25, + 217, + 34, + 1, + 65, + 190, + 242, + 89, + 33, + 212, + 116, + 198, + 230, + 52, + 208, + 109, + 251, + 125, 121, - 48, - 206, - 18, - 153, + 4, + 229, + 154, + 78, + 196, + 134, + 161, + 72, + 176, + 11, + 253, + 56, 163, - 247, - 0, - 169, - 63, - 23, - 207, - 49, - 41, - 191, - 254, - 24, - 74, - 109, - 225, - 207, - 25, - 240, - 185, - 31, - 126, 97, 88, - 32, + 160, 131, 1, 82, 127, - 41, - 252, - 188, - 5, - 205, - 44, - 1, - 82, - 179, - 235, - 33, - 232, - 253, - 1, - 160, - 11, - 199, - 151, + 47, + 56, + 81, + 30, + 83, + 104, 128, - 242, - 18, - 129, - 89, - 136, - 115, - 251, + 86, + 182, + 147, + 200, + 78, + 246, + 154, + 122, + 226, + 185, + 171, + 72, + 41, + 6, + 220, + 70, + 174, + 157, 149, - 93, - 186, - 35, - 95, - 126, + 34, + 253, + 60, + 224, + 152, + 182, 97, 88, - 64, + 192, 131, 1, 82, 97, - 76, - 224, + 77, + 96, 130, 1, 81, 97, 88, - 96, + 224, 131, 1, 82, @@ -38589,14 +38741,14 @@ pub mod inclusion_verifier { 64, 97, 88, - 32, + 160, 133, 1, 96, 96, 97, 88, - 32, + 160, 135, 1, 96, @@ -38608,50 +38760,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 87, - 160, + 88, + 32, 130, 1, 81, 97, - 88, - 128, + 89, + 0, 131, 1, 82, 97, - 87, - 192, + 88, + 64, 130, 1, 81, 97, - 88, - 160, + 89, + 32, 131, 1, 82, 97, 88, - 32, + 160, 130, 1, 81, 97, - 88, - 192, + 89, + 64, 131, 1, 82, 97, 88, - 64, + 192, 130, 1, 81, 97, - 88, - 224, + 89, + 96, 131, 1, 82, @@ -38661,15 +38813,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 88, - 128, + 89, + 0, 133, 1, 96, 128, 97, - 88, - 128, + 89, + 0, 135, 1, 96, @@ -38681,92 +38833,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 43, - 153, + 23, + 231, 203, - 73, - 202, - 104, - 86, - 38, - 160, - 140, - 0, - 158, - 164, - 66, - 252, - 137, - 90, - 47, - 134, - 204, - 161, - 242, - 159, - 24, - 212, - 183, - 236, - 158, + 106, + 48, + 196, 206, - 147, - 122, - 162, + 154, + 61, + 141, + 230, + 4, + 219, + 175, + 81, + 123, + 31, + 35, + 228, + 64, + 172, + 185, + 231, + 52, + 89, + 56, + 255, + 91, + 36, + 90, + 64, + 62, 97, 89, - 0, + 128, 131, 1, 82, 127, - 32, + 28, + 49, 164, - 92, - 174, - 51, - 243, - 145, - 114, - 5, - 183, + 45, + 125, + 163, + 96, + 204, + 232, + 38, + 46, + 33, + 251, + 154, + 94, + 242, 106, + 35, 235, - 135, - 228, - 9, - 53, - 8, - 64, - 102, + 188, + 246, + 153, + 92, + 202, + 184, + 154, + 238, 64, - 88, - 131, - 155, - 29, - 183, - 111, - 135, - 97, - 219, - 80, - 250, - 200, + 12, + 46, + 153, + 75, 97, 89, - 32, + 160, 131, 1, 82, 97, 77, - 0, + 128, 130, 1, 81, 97, 89, - 64, + 192, 131, 1, 82, @@ -38777,14 +38929,14 @@ pub mod inclusion_verifier { 64, 97, 89, - 0, + 128, 133, 1, 96, 96, 97, 89, - 0, + 128, 135, 1, 96, @@ -38796,50 +38948,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 88, - 128, + 89, + 0, 130, 1, 81, 97, 89, - 96, + 224, 131, 1, 82, 97, - 88, - 160, + 89, + 32, 130, 1, 81, 97, - 89, - 128, + 90, + 0, 131, 1, 82, 97, 89, - 0, + 128, 130, 1, 81, 97, - 89, - 160, + 90, + 32, 131, 1, 82, 97, 89, - 32, + 160, 130, 1, 81, 97, - 89, - 192, + 90, + 64, 131, 1, 82, @@ -38850,14 +39002,14 @@ pub mod inclusion_verifier { 64, 97, 89, - 96, + 224, 133, 1, 96, 128, 97, 89, - 96, + 224, 135, 1, 96, @@ -38869,92 +39021,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 37, - 162, - 101, - 165, - 121, - 66, - 34, - 54, - 87, - 179, - 49, - 108, - 145, - 59, - 255, - 232, - 219, - 14, - 254, - 219, - 237, - 154, - 200, - 120, + 5, + 89, + 28, + 127, + 170, + 44, + 158, + 175, + 28, + 149, + 115, + 168, + 75, + 221, + 236, 48, - 142, - 29, - 99, - 212, - 223, - 97, - 216, + 50, + 25, + 171, + 244, + 150, + 175, + 8, + 153, + 237, + 67, + 136, + 83, + 34, + 125, + 208, + 86, 97, - 89, - 224, + 90, + 96, 131, 1, 82, 127, - 13, - 47, - 121, - 96, + 44, + 250, + 36, + 253, + 229, + 118, + 117, + 11, 64, - 148, - 181, - 63, - 213, - 106, - 149, - 93, - 37, + 54, + 223, + 254, + 64, + 16, + 94, + 107, + 114, + 68, + 246, + 56, + 67, + 236, 116, - 226, - 65, - 173, - 103, - 73, - 138, - 179, - 32, - 242, - 187, - 118, - 72, - 65, - 245, - 201, - 3, - 191, - 249, + 217, + 208, + 170, + 212, + 139, + 164, + 19, + 40, + 124, 97, 90, - 0, + 128, 131, 1, 82, 97, 77, - 32, + 160, 130, 1, 81, 97, 90, - 32, + 160, 131, 1, 82, @@ -38964,15 +39116,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 89, - 224, + 90, + 96, 133, 1, 96, 96, 97, - 89, - 224, + 90, + 96, 135, 1, 96, @@ -38985,49 +39137,49 @@ pub mod inclusion_verifier { 80, 97, 89, - 96, + 224, 130, 1, 81, 97, 90, - 64, + 192, 131, 1, 82, 97, - 89, - 128, + 90, + 0, 130, 1, 81, 97, 90, - 96, + 224, 131, 1, 82, 97, - 89, - 224, + 90, + 96, 130, 1, 81, 97, - 90, - 128, + 91, + 0, 131, 1, 82, 97, 90, - 0, + 128, 130, 1, 81, 97, - 90, - 160, + 91, + 32, 131, 1, 82, @@ -39038,14 +39190,14 @@ pub mod inclusion_verifier { 64, 97, 90, - 64, + 192, 133, 1, 96, 128, 97, 90, - 64, + 192, 135, 1, 96, @@ -39090,8 +39242,8 @@ pub mod inclusion_verifier { 186, 164, 97, - 90, - 192, + 91, + 64, 131, 1, 82, @@ -39129,20 +39281,20 @@ pub mod inclusion_verifier { 39, 192, 97, - 90, - 224, + 91, + 96, 131, 1, 82, 97, 77, - 64, + 192, 130, 1, 81, 97, 91, - 0, + 128, 131, 1, 82, @@ -39152,15 +39304,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 90, - 192, + 91, + 64, 133, 1, 96, 96, 97, - 90, - 192, + 91, + 64, 135, 1, 96, @@ -39173,49 +39325,49 @@ pub mod inclusion_verifier { 80, 97, 90, - 64, + 192, 130, 1, 81, 97, 91, - 32, + 160, 131, 1, 82, 97, 90, - 96, + 224, 130, 1, 81, 97, 91, - 64, + 192, 131, 1, 82, 97, - 90, - 192, + 91, + 64, 130, 1, 81, 97, 91, - 96, + 224, 131, 1, 82, 97, - 90, - 224, + 91, + 96, 130, 1, 81, 97, - 91, - 128, + 92, + 0, 131, 1, 82, @@ -39226,14 +39378,14 @@ pub mod inclusion_verifier { 64, 97, 91, - 32, + 160, 133, 1, 96, 128, 97, 91, - 32, + 160, 135, 1, 96, @@ -39245,92 +39397,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 1, - 96, - 164, - 116, - 162, - 200, - 222, - 86, - 149, - 11, - 190, - 37, - 214, - 240, - 144, - 2, - 169, - 31, + 25, + 32, + 107, + 235, + 197, + 204, + 74, + 91, + 105, 44, + 88, + 188, + 97, + 231, + 174, + 198, + 211, + 251, + 184, + 52, + 78, + 57, + 161, + 51, + 105, + 159, + 116, + 230, + 244, + 14, 194, - 15, - 189, - 177, - 94, - 132, - 19, - 241, - 23, - 110, - 127, - 24, - 101, + 168, 97, - 91, - 160, + 92, + 32, 131, 1, 82, 127, - 29, - 15, - 87, - 151, - 234, - 174, - 168, - 158, - 81, - 25, - 228, + 6, + 120, + 199, + 189, + 209, + 65, + 189, 38, - 13, - 181, - 99, - 96, + 203, + 233, + 51, + 111, + 93, + 207, + 28, 90, - 132, - 208, - 4, - 184, - 239, - 208, - 44, - 81, - 185, - 96, - 191, - 236, + 140, 242, - 14, - 144, + 26, + 89, + 39, + 175, + 209, + 178, + 243, + 147, + 21, + 46, + 224, + 42, + 106, + 120, 97, - 91, - 192, + 92, + 64, 131, 1, 82, 97, 77, - 96, + 224, 130, 1, 81, 97, - 91, - 224, + 92, + 96, 131, 1, 82, @@ -39340,15 +39492,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 91, - 160, + 92, + 32, 133, 1, 96, 96, 97, - 91, - 160, + 92, + 32, 135, 1, 96, @@ -39361,49 +39513,49 @@ pub mod inclusion_verifier { 80, 97, 91, - 32, + 160, 130, 1, 81, 97, 92, - 0, + 128, 131, 1, 82, 97, 91, - 64, + 192, 130, 1, 81, 97, 92, - 32, + 160, 131, 1, 82, 97, - 91, - 160, + 92, + 32, 130, 1, 81, 97, 92, - 64, + 192, 131, 1, 82, 97, - 91, - 192, + 92, + 64, 130, 1, 81, 97, 92, - 96, + 224, 131, 1, 82, @@ -39414,14 +39566,14 @@ pub mod inclusion_verifier { 64, 97, 92, - 0, + 128, 133, 1, 96, 128, 97, 92, - 0, + 128, 135, 1, 96, @@ -39433,92 +39585,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 2, - 182, - 25, - 162, - 162, - 69, - 179, - 112, + 28, + 110, + 35, + 67, + 51, + 55, + 131, + 180, + 244, + 138, + 231, + 210, + 104, + 26, + 251, + 60, + 223, + 106, + 77, + 251, + 200, + 58, + 80, + 12, + 176, + 109, 179, - 49, - 158, - 33, - 224, - 190, - 70, - 114, - 86, - 32, - 147, - 56, - 207, - 149, - 70, - 68, - 123, - 135, + 38, 90, - 39, - 121, - 224, - 16, - 212, + 211, + 229, + 213, 97, - 92, - 128, + 93, + 0, 131, 1, 82, 127, - 7, - 215, - 240, + 26, 61, + 131, + 109, + 67, + 37, + 255, + 48, + 20, + 76, + 30, + 32, + 56, + 164, + 212, + 2, + 95, + 208, 240, - 99, - 69, - 186, - 45, + 26, 242, - 11, - 184, - 103, - 132, - 31, - 96, - 235, - 210, - 93, - 170, - 181, - 170, - 250, - 19, - 221, - 193, - 65, - 49, - 22, - 153, - 104, - 2, + 76, + 253, + 141, + 253, + 84, + 1, + 142, + 100, + 243, + 176, + 152, 97, - 92, - 160, + 93, + 32, 131, 1, 82, 97, - 77, - 128, + 78, + 0, 130, 1, 81, 97, - 92, - 192, + 93, + 64, 131, 1, 82, @@ -39528,15 +39680,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 92, - 128, + 93, + 0, 133, 1, 96, 96, 97, - 92, - 128, + 93, + 0, 135, 1, 96, @@ -39549,49 +39701,49 @@ pub mod inclusion_verifier { 80, 97, 92, - 0, + 128, 130, 1, 81, 97, - 92, - 224, + 93, + 96, 131, 1, 82, 97, 92, - 32, + 160, 130, 1, 81, 97, 93, - 0, + 128, 131, 1, 82, 97, - 92, - 128, + 93, + 0, 130, 1, 81, 97, 93, - 32, + 160, 131, 1, 82, 97, - 92, - 160, + 93, + 32, 130, 1, 81, 97, 93, - 64, + 192, 131, 1, 82, @@ -39601,15 +39753,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 92, - 224, + 93, + 96, 133, 1, 96, 128, 97, - 92, - 224, + 93, + 96, 135, 1, 96, @@ -39655,7 +39807,7 @@ pub mod inclusion_verifier { 107, 97, 93, - 96, + 224, 131, 1, 82, @@ -39693,20 +39845,20 @@ pub mod inclusion_verifier { 240, 151, 97, - 93, - 128, + 94, + 0, 131, 1, 82, 97, - 77, - 160, + 78, + 32, 130, 1, 81, 97, - 93, - 160, + 94, + 32, 131, 1, 82, @@ -39717,14 +39869,14 @@ pub mod inclusion_verifier { 64, 97, 93, - 96, + 224, 133, 1, 96, 96, 97, 93, - 96, + 224, 135, 1, 96, @@ -39736,50 +39888,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 92, - 224, + 93, + 96, 130, 1, 81, 97, - 93, - 192, + 94, + 64, 131, 1, 82, 97, 93, - 0, + 128, 130, 1, 81, 97, - 93, - 224, + 94, + 96, 131, 1, 82, 97, 93, - 96, + 224, 130, 1, 81, 97, 94, - 0, + 128, 131, 1, 82, 97, - 93, - 128, + 94, + 0, 130, 1, 81, 97, 94, - 32, + 160, 131, 1, 82, @@ -39789,15 +39941,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 93, - 192, + 94, + 64, 133, 1, 96, 128, 97, - 93, - 192, + 94, + 64, 135, 1, 96, @@ -39843,7 +39995,7 @@ pub mod inclusion_verifier { 145, 97, 94, - 64, + 192, 131, 1, 82, @@ -39882,19 +40034,19 @@ pub mod inclusion_verifier { 253, 97, 94, - 96, + 224, 131, 1, 82, 97, - 77, - 192, + 78, + 64, 130, 1, 81, 97, - 94, - 128, + 95, + 0, 131, 1, 82, @@ -39905,14 +40057,14 @@ pub mod inclusion_verifier { 64, 97, 94, - 64, + 192, 133, 1, 96, 96, 97, 94, - 64, + 192, 135, 1, 96, @@ -39924,50 +40076,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 93, - 192, + 94, + 64, 130, 1, 81, 97, - 94, - 160, + 95, + 32, 131, 1, 82, 97, - 93, - 224, + 94, + 96, 130, 1, 81, 97, - 94, - 192, + 95, + 64, 131, 1, 82, 97, 94, - 64, + 192, 130, 1, 81, 97, - 94, - 224, + 95, + 96, 131, 1, 82, 97, 94, - 96, + 224, 130, 1, 81, 97, 95, - 0, + 128, 131, 1, 82, @@ -39977,15 +40129,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 94, - 160, + 95, + 32, 133, 1, 96, 128, 97, - 94, - 160, + 95, + 32, 135, 1, 96, @@ -39997,92 +40149,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 19, + 9, + 227, + 48, + 50, + 69, + 227, + 176, + 10, 202, - 246, - 250, - 104, - 122, - 84, - 111, - 209, - 238, - 185, - 224, - 212, - 58, + 137, + 78, 159, - 143, - 233, - 163, - 240, - 83, - 34, - 245, - 237, - 218, - 27, - 149, - 213, - 14, - 131, - 131, - 152, + 186, + 61, 81, + 132, + 255, + 55, + 57, + 198, + 100, + 227, + 99, + 242, + 5, + 212, + 47, + 238, + 227, + 39, + 182, + 170, 97, 95, - 32, + 160, 131, 1, 82, 127, - 34, - 226, - 118, - 135, - 117, - 226, - 217, - 111, - 216, + 19, + 206, 146, - 92, - 72, - 169, - 157, - 242, - 178, + 40, + 60, + 198, + 246, 72, - 203, - 61, - 137, - 58, - 21, - 185, - 220, - 168, - 22, + 189, + 218, + 134, + 24, + 45, + 145, + 133, + 42, + 171, + 92, 96, - 183, + 136, + 171, + 0, + 141, 156, - 195, - 95, - 74, + 219, + 85, + 34, + 252, + 191, + 92, + 98, + 137, 97, 95, - 64, + 192, 131, 1, 82, 97, - 77, - 224, + 78, + 96, 130, 1, 81, 97, 95, - 96, + 224, 131, 1, 82, @@ -40093,14 +40245,14 @@ pub mod inclusion_verifier { 64, 97, 95, - 32, + 160, 133, 1, 96, 96, 97, 95, - 32, + 160, 135, 1, 96, @@ -40112,50 +40264,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 94, - 160, + 95, + 32, 130, 1, 81, 97, - 95, - 128, + 96, + 0, 131, 1, 82, 97, - 94, - 192, + 95, + 64, 130, 1, 81, 97, - 95, - 160, + 96, + 32, 131, 1, 82, 97, 95, - 32, + 160, 130, 1, 81, 97, - 95, - 192, + 96, + 64, 131, 1, 82, 97, 95, - 64, + 192, 130, 1, 81, 97, - 95, - 224, + 96, + 96, 131, 1, 82, @@ -40165,15 +40317,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 95, - 128, + 96, + 0, 133, 1, 96, 128, 97, - 95, - 128, + 96, + 0, 135, 1, 96, @@ -40185,92 +40337,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 25, - 160, - 116, - 220, - 109, - 26, - 15, - 30, - 85, - 137, + 8, 165, - 93, - 156, - 73, - 85, - 207, - 134, - 126, - 40, - 153, - 219, - 253, - 70, + 3, + 231, 161, - 28, - 39, + 102, + 132, 168, - 72, - 4, - 181, - 178, - 57, + 25, + 145, + 219, + 252, + 94, + 200, + 76, + 159, + 75, + 15, + 122, + 80, + 109, + 223, + 38, + 182, + 125, + 48, + 94, + 191, + 192, + 248, + 23, + 67, 97, 96, - 0, + 128, 131, 1, 82, 127, - 38, - 177, - 18, + 8, + 162, + 216, + 225, + 118, + 15, 251, - 89, - 160, - 184, - 117, - 131, - 62, - 82, - 249, - 81, - 179, - 176, - 16, - 130, - 107, 22, + 247, + 1, + 71, + 248, + 180, + 78, + 120, + 28, + 237, + 101, + 161, + 230, + 119, + 167, + 134, + 205, + 216, + 188, 159, - 50, - 13, - 128, - 89, - 127, - 18, - 117, - 84, - 74, - 226, - 72, - 151, + 148, + 123, + 54, + 19, + 28, 97, 96, - 32, + 160, 131, 1, 82, 97, 78, - 0, + 128, 130, 1, 81, 97, 96, - 64, + 192, 131, 1, 82, @@ -40281,14 +40433,14 @@ pub mod inclusion_verifier { 64, 97, 96, - 0, + 128, 133, 1, 96, 96, 97, 96, - 0, + 128, 135, 1, 96, @@ -40300,50 +40452,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 95, - 128, + 96, + 0, 130, 1, 81, 97, 96, - 96, + 224, 131, 1, 82, 97, - 95, - 160, + 96, + 32, 130, 1, 81, 97, - 96, - 128, + 97, + 0, 131, 1, 82, 97, 96, - 0, + 128, 130, 1, 81, 97, - 96, - 160, + 97, + 32, 131, 1, 82, 97, 96, - 32, + 160, 130, 1, 81, 97, - 96, - 192, + 97, + 64, 131, 1, 82, @@ -40354,14 +40506,14 @@ pub mod inclusion_verifier { 64, 97, 96, - 96, + 224, 133, 1, 96, 128, 97, 96, - 96, + 224, 135, 1, 96, @@ -40373,92 +40525,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 28, + 37, + 99, + 43, + 200, + 1, + 44, + 108, + 188, 109, - 246, + 221, + 166, 97, - 40, - 102, + 169, + 114, + 159, + 84, + 76, + 84, + 98, 7, - 157, - 194, - 165, - 37, - 37, + 0, + 195, 132, - 44, - 128, - 37, - 80, - 46, - 181, - 168, - 145, - 60, - 86, - 8, - 54, - 196, - 188, - 122, - 178, - 220, - 51, - 78, + 12, + 1, + 202, + 91, + 87, + 230, + 26, + 31, + 254, + 97, 97, 96, - 224, 131, 1, 82, 127, - 13, - 54, - 254, 43, - 246, - 213, - 130, - 145, - 237, - 3, - 90, - 31, - 9, - 9, - 4, - 99, - 149, - 2, - 33, + 165, + 118, + 76, + 102, 58, - 36, - 73, - 34, - 125, - 21, - 110, - 227, - 248, - 246, - 55, - 46, - 44, + 75, + 40, + 146, + 52, + 60, + 48, + 61, + 160, + 245, + 102, + 78, + 63, + 98, + 13, + 214, + 184, + 81, + 167, + 17, + 120, + 23, + 4, + 41, + 47, + 209, + 26, 97, 97, - 0, + 128, 131, 1, 82, 97, 78, - 32, + 160, 130, 1, 81, 97, 97, - 32, + 160, 131, 1, 82, @@ -40468,15 +40620,15 @@ pub mod inclusion_verifier { 96, 64, 97, + 97, 96, - 224, 133, 1, 96, 96, 97, + 97, 96, - 224, 135, 1, 96, @@ -40489,49 +40641,49 @@ pub mod inclusion_verifier { 80, 97, 96, - 96, + 224, 130, 1, 81, 97, 97, - 64, + 192, 131, 1, 82, 97, - 96, - 128, + 97, + 0, 130, 1, 81, 97, 97, - 96, + 224, 131, 1, 82, 97, + 97, 96, - 224, 130, 1, 81, 97, - 97, - 128, + 98, + 0, 131, 1, 82, 97, 97, - 0, + 128, 130, 1, 81, 97, - 97, - 160, + 98, + 32, 131, 1, 82, @@ -40542,14 +40694,14 @@ pub mod inclusion_verifier { 64, 97, 97, - 64, + 192, 133, 1, 96, 128, 97, 97, - 64, + 192, 135, 1, 96, @@ -40561,92 +40713,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 1, - 173, - 209, - 225, - 77, - 10, - 24, - 128, - 238, - 142, - 131, - 123, + 7, + 207, + 228, + 243, + 21, + 43, + 25, + 150, + 232, + 234, + 253, + 113, + 132, + 81, + 53, + 108, 32, - 80, - 39, - 19, - 208, - 100, - 40, - 213, - 93, - 97, - 254, - 168, - 254, + 68, + 228, + 194, + 57, + 252, + 194, + 158, + 179, 168, - 154, - 113, - 100, - 137, - 113, - 250, - 97, + 29, + 57, + 46, + 27, + 68, + 173, 97, - 192, + 98, + 64, 131, 1, 82, 127, - 18, - 201, - 130, - 70, - 110, - 166, - 220, - 250, - 218, - 58, - 208, + 37, + 86, + 115, 226, - 119, - 254, + 36, + 165, + 148, + 229, + 63, + 213, + 177, + 180, + 220, 212, - 79, - 119, - 4, - 102, - 101, - 13, - 71, + 99, + 41, + 231, + 42, 4, - 144, - 106, - 77, - 52, - 182, - 184, - 216, - 190, - 209, - 97, + 225, + 96, + 86, + 222, + 163, + 213, + 161, + 126, + 49, + 41, + 26, + 153, + 96, 97, - 224, + 98, + 96, 131, 1, 82, 97, 78, - 64, + 192, 130, 1, 81, 97, 98, - 0, + 128, 131, 1, 82, @@ -40656,15 +40808,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 97, - 192, + 98, + 64, 133, 1, 96, 96, 97, - 97, - 192, + 98, + 64, 135, 1, 96, @@ -40677,49 +40829,49 @@ pub mod inclusion_verifier { 80, 97, 97, - 64, + 192, 130, 1, 81, 97, 98, - 32, + 160, 131, 1, 82, 97, 97, - 96, + 224, 130, 1, 81, 97, 98, - 64, + 192, 131, 1, 82, 97, - 97, - 192, + 98, + 64, 130, 1, 81, 97, 98, - 96, + 224, 131, 1, 82, 97, - 97, - 224, + 98, + 96, 130, 1, 81, 97, - 98, - 128, + 99, + 0, 131, 1, 82, @@ -40730,14 +40882,14 @@ pub mod inclusion_verifier { 64, 97, 98, - 32, + 160, 133, 1, 96, 128, 97, 98, - 32, + 160, 135, 1, 96, @@ -40749,92 +40901,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 47, - 174, - 233, - 254, - 78, - 185, - 123, - 55, - 171, - 180, - 253, - 209, - 182, - 4, - 237, - 138, - 207, + 19, + 108, + 177, + 75, + 53, + 31, + 59, + 67, + 181, + 230, + 24, + 197, + 196, + 144, + 34, + 88, + 142, + 221, + 72, 85, - 223, - 10, - 55, - 11, - 207, - 231, - 245, - 97, - 91, - 117, - 152, - 152, - 157, - 122, + 15, + 78, + 125, + 105, + 48, + 148, + 66, + 232, + 184, + 61, + 13, + 34, 97, - 98, - 160, + 99, + 32, 131, 1, 82, 127, - 34, - 105, - 175, - 248, - 108, - 63, - 211, - 88, - 100, - 243, - 226, - 203, - 57, - 219, - 98, - 62, - 1, - 34, - 160, - 91, - 107, - 95, - 120, - 159, - 245, - 116, - 52, - 229, - 87, - 169, - 12, + 14, + 233, + 187, + 223, + 206, + 147, + 129, + 94, + 121, + 170, + 191, + 197, + 236, + 146, + 165, 35, + 70, + 196, + 106, + 69, + 225, + 123, + 197, + 188, + 154, + 216, + 21, + 94, + 152, + 44, + 156, + 172, 97, - 98, - 192, + 99, + 64, 131, 1, 82, 97, 78, - 96, + 224, 130, 1, 81, 97, - 98, - 224, + 99, + 96, 131, 1, 82, @@ -40844,15 +40996,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 98, - 160, + 99, + 32, 133, 1, 96, 96, 97, - 98, - 160, + 99, + 32, 135, 1, 96, @@ -40865,49 +41017,49 @@ pub mod inclusion_verifier { 80, 97, 98, - 32, + 160, 130, 1, 81, 97, 99, - 0, + 128, 131, 1, 82, 97, 98, - 64, + 192, 130, 1, 81, 97, 99, - 32, + 160, 131, 1, 82, 97, - 98, - 160, + 99, + 32, 130, 1, 81, 97, 99, - 64, + 192, 131, 1, 82, 97, - 98, - 192, + 99, + 64, 130, 1, 81, 97, 99, - 96, + 224, 131, 1, 82, @@ -40918,14 +41070,14 @@ pub mod inclusion_verifier { 64, 97, 99, - 0, + 128, 133, 1, 96, 128, 97, 99, - 0, + 128, 135, 1, 96, @@ -40970,8 +41122,8 @@ pub mod inclusion_verifier { 41, 116, 97, - 99, - 128, + 100, + 0, 131, 1, 82, @@ -41009,20 +41161,20 @@ pub mod inclusion_verifier { 25, 227, 97, - 99, - 160, + 100, + 32, 131, 1, 82, 97, - 78, - 128, + 79, + 0, 130, 1, 81, 97, - 99, - 192, + 100, + 64, 131, 1, 82, @@ -41032,15 +41184,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 99, - 128, + 100, + 0, 133, 1, 96, 96, 97, - 99, - 128, + 100, + 0, 135, 1, 96, @@ -41053,49 +41205,49 @@ pub mod inclusion_verifier { 80, 97, 99, - 0, + 128, 130, 1, 81, 97, - 99, - 224, + 100, + 96, 131, 1, 82, 97, 99, - 32, + 160, 130, 1, 81, 97, 100, - 0, + 128, 131, 1, 82, 97, - 99, - 128, + 100, + 0, 130, 1, 81, 97, 100, - 32, + 160, 131, 1, 82, 97, - 99, - 160, + 100, + 32, 130, 1, 81, 97, 100, - 64, + 192, 131, 1, 82, @@ -41105,15 +41257,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 99, - 224, + 100, + 96, 133, 1, 96, 128, 97, - 99, - 224, + 100, + 96, 135, 1, 96, @@ -41125,92 +41277,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 1, - 182, - 146, + 31, + 93, + 105, + 248, + 173, + 199, + 222, + 243, + 83, + 202, + 197, + 48, + 19, + 49, + 246, + 106, + 106, + 161, + 44, + 59, + 220, + 70, + 186, + 133, + 9, + 216, 28, - 196, - 195, - 90, - 3, - 214, - 150, + 25, + 34, + 148, + 76, + 30, + 97, + 100, + 224, + 131, + 1, + 82, + 127, + 5, + 10, + 53, + 140, + 142, 231, - 84, - 186, - 192, - 110, - 219, - 168, - 24, - 116, - 153, - 37, - 45, - 152, + 73, + 1, + 175, + 214, + 190, + 189, 218, - 126, + 53, + 162, + 91, + 233, + 155, + 166, + 49, + 35, + 42, + 190, + 192, + 187, 125, - 64, - 184, - 68, 242, - 66, - 69, - 97, - 100, - 96, - 131, - 1, - 82, - 127, - 24, - 29, - 250, - 41, - 72, - 137, - 96, - 26, - 156, - 197, - 116, - 72, - 217, - 102, - 185, - 204, - 96, - 231, - 121, - 90, - 179, - 54, - 210, - 7, - 141, - 196, - 58, + 52, + 40, + 226, + 25, 235, - 136, - 132, - 132, - 251, 97, - 100, - 128, + 101, + 0, 131, 1, 82, 97, - 78, - 160, + 79, + 32, 130, 1, 81, 97, - 100, - 160, + 101, + 32, 131, 1, 82, @@ -41221,14 +41373,14 @@ pub mod inclusion_verifier { 64, 97, 100, - 96, + 224, 133, 1, 96, 96, 97, 100, - 96, + 224, 135, 1, 96, @@ -41240,50 +41392,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 99, - 224, + 100, + 96, 130, 1, 81, 97, - 100, - 192, + 101, + 64, 131, 1, 82, 97, 100, - 0, + 128, 130, 1, 81, 97, - 100, - 224, + 101, + 96, 131, 1, 82, 97, 100, - 96, + 224, 130, 1, 81, 97, 101, - 0, + 128, 131, 1, 82, 97, - 100, - 128, + 101, + 0, 130, 1, 81, 97, 101, - 32, + 160, 131, 1, 82, @@ -41293,15 +41445,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 100, - 192, + 101, + 64, 133, 1, 96, 128, 97, - 100, - 192, + 101, + 64, 135, 1, 96, @@ -41313,92 +41465,92 @@ pub mod inclusion_verifier { 146, 80, 127, - 15, - 13, - 205, - 170, - 111, - 210, - 243, - 100, - 96, - 55, - 101, - 87, + 29, + 219, 249, - 214, - 180, - 176, - 152, - 91, - 8, - 93, - 45, - 143, - 252, - 167, + 28, + 238, + 237, + 136, + 168, 198, - 196, - 8, - 216, - 86, - 13, - 93, - 8, + 110, + 155, + 248, + 208, + 137, + 179, + 9, + 141, + 192, + 131, + 241, + 87, + 144, + 135, + 7, + 150, + 167, + 38, + 127, + 37, + 207, + 155, + 240, 97, 101, - 64, + 192, 131, 1, 82, 127, + 10, + 180, + 232, 11, - 196, - 231, + 0, + 145, + 205, + 64, + 7, + 2, + 148, 247, - 169, - 39, - 103, - 128, - 147, - 228, - 190, - 43, - 251, 84, - 58, - 183, - 214, - 38, + 229, + 75, + 18, 126, - 233, - 67, - 232, - 237, - 19, - 54, - 154, - 59, - 60, - 158, - 242, - 55, - 121, + 32, + 0, + 87, + 44, + 3, + 68, + 194, + 131, + 138, + 238, + 175, + 37, + 30, + 179, + 145, 97, 101, - 96, + 224, 131, 1, 82, 97, - 78, - 192, + 79, + 64, 130, 1, 81, 97, - 101, - 128, + 102, + 0, 131, 1, 82, @@ -41409,14 +41561,14 @@ pub mod inclusion_verifier { 64, 97, 101, - 64, + 192, 133, 1, 96, 96, 97, 101, - 64, + 192, 135, 1, 96, @@ -41428,50 +41580,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 100, - 192, + 101, + 64, 130, 1, 81, 97, - 101, - 160, + 102, + 32, 131, 1, 82, 97, - 100, - 224, + 101, + 96, 130, 1, 81, 97, - 101, - 192, + 102, + 64, 131, 1, 82, 97, 101, - 64, + 192, 130, 1, 81, 97, - 101, - 224, + 102, + 96, 131, 1, 82, 97, 101, - 96, + 224, 130, 1, 81, 97, 102, - 0, + 128, 131, 1, 82, @@ -41481,15 +41633,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 101, - 160, + 102, + 32, 133, 1, 96, 128, 97, - 101, - 160, + 102, + 32, 135, 1, 96, @@ -41508,7 +41660,7 @@ pub mod inclusion_verifier { 81, 97, 102, - 32, + 160, 131, 1, 82, @@ -41520,19 +41672,19 @@ pub mod inclusion_verifier { 81, 97, 102, - 64, + 192, 131, 1, 82, 97, - 78, - 224, + 79, + 96, 130, 1, 81, 97, 102, - 96, + 224, 131, 1, 82, @@ -41543,14 +41695,14 @@ pub mod inclusion_verifier { 64, 97, 102, - 32, + 160, 133, 1, 96, 96, 97, 102, - 32, + 160, 135, 1, 96, @@ -41562,50 +41714,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 101, - 160, + 102, + 32, 130, 1, 81, 97, - 102, - 128, + 103, + 0, 131, 1, 82, 97, - 101, - 192, + 102, + 64, 130, 1, 81, 97, - 102, - 160, + 103, + 32, 131, 1, 82, 97, 102, - 32, + 160, 130, 1, 81, 97, - 102, - 192, + 103, + 64, 131, 1, 82, 97, 102, - 64, + 192, 130, 1, 81, 97, - 102, - 224, + 103, + 96, 131, 1, 82, @@ -41615,15 +41767,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 102, - 128, + 103, + 0, 133, 1, 96, 128, 97, - 102, - 128, + 103, + 0, 135, 1, 96, @@ -41642,7 +41794,7 @@ pub mod inclusion_verifier { 81, 97, 103, - 0, + 128, 131, 1, 82, @@ -41654,19 +41806,19 @@ pub mod inclusion_verifier { 81, 97, 103, - 32, + 160, 131, 1, 82, 97, 79, - 0, + 128, 130, 1, 81, 97, 103, - 64, + 192, 131, 1, 82, @@ -41677,14 +41829,14 @@ pub mod inclusion_verifier { 64, 97, 103, - 0, + 128, 133, 1, 96, 96, 97, 103, - 0, + 128, 135, 1, 96, @@ -41696,50 +41848,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 102, - 128, + 103, + 0, 130, 1, 81, 97, 103, - 96, + 224, 131, 1, 82, 97, - 102, - 160, + 103, + 32, 130, 1, 81, 97, - 103, - 128, + 104, + 0, 131, 1, 82, 97, 103, - 0, + 128, 130, 1, 81, 97, - 103, - 160, + 104, + 32, 131, 1, 82, 97, 103, - 32, + 160, 130, 1, 81, 97, - 103, - 192, + 104, + 64, 131, 1, 82, @@ -41750,14 +41902,14 @@ pub mod inclusion_verifier { 64, 97, 103, - 96, + 224, 133, 1, 96, 128, 97, 103, - 96, + 224, 135, 1, 96, @@ -41775,8 +41927,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 103, - 224, + 104, + 96, 131, 1, 82, @@ -41788,19 +41940,19 @@ pub mod inclusion_verifier { 81, 97, 104, - 0, + 128, 131, 1, 82, 97, 79, - 32, + 160, 130, 1, 81, 97, 104, - 32, + 160, 131, 1, 82, @@ -41810,15 +41962,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 103, - 224, + 104, + 96, 133, 1, 96, 96, 97, - 103, - 224, + 104, + 96, 135, 1, 96, @@ -41831,49 +41983,49 @@ pub mod inclusion_verifier { 80, 97, 103, - 96, + 224, 130, 1, 81, 97, 104, - 64, + 192, 131, 1, 82, 97, - 103, - 128, + 104, + 0, 130, 1, 81, 97, 104, - 96, + 224, 131, 1, 82, 97, - 103, - 224, + 104, + 96, 130, 1, 81, 97, - 104, - 128, + 105, + 0, 131, 1, 82, 97, 104, - 0, + 128, 130, 1, 81, 97, - 104, - 160, + 105, + 32, 131, 1, 82, @@ -41884,14 +42036,14 @@ pub mod inclusion_verifier { 64, 97, 104, - 64, + 192, 133, 1, 96, 128, 97, 104, - 64, + 192, 135, 1, 96, @@ -41909,8 +42061,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 104, - 192, + 105, + 64, 131, 1, 82, @@ -41921,20 +42073,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 104, - 224, + 105, + 96, 131, 1, 82, 97, 79, - 64, + 192, 130, 1, 81, 97, 105, - 0, + 128, 131, 1, 82, @@ -41944,15 +42096,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 104, - 192, + 105, + 64, 133, 1, 96, 96, 97, - 104, - 192, + 105, + 64, 135, 1, 96, @@ -41965,49 +42117,49 @@ pub mod inclusion_verifier { 80, 97, 104, - 64, + 192, 130, 1, 81, 97, 105, - 32, + 160, 131, 1, 82, 97, 104, - 96, + 224, 130, 1, 81, 97, 105, - 64, + 192, 131, 1, 82, 97, - 104, - 192, + 105, + 64, 130, 1, 81, 97, 105, - 96, + 224, 131, 1, 82, 97, - 104, - 224, + 105, + 96, 130, 1, 81, 97, - 105, - 128, + 106, + 0, 131, 1, 82, @@ -42018,14 +42170,14 @@ pub mod inclusion_verifier { 64, 97, 105, - 32, + 160, 133, 1, 96, 128, 97, 105, - 32, + 160, 135, 1, 96, @@ -42043,8 +42195,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 105, - 160, + 106, + 32, 131, 1, 82, @@ -42055,20 +42207,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 105, - 192, + 106, + 64, 131, 1, 82, 97, 79, - 96, + 224, 130, 1, 81, 97, - 105, - 224, + 106, + 96, 131, 1, 82, @@ -42078,15 +42230,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 105, - 160, + 106, + 32, 133, 1, 96, 96, 97, - 105, - 160, + 106, + 32, 135, 1, 96, @@ -42099,49 +42251,49 @@ pub mod inclusion_verifier { 80, 97, 105, - 32, + 160, 130, 1, 81, 97, 106, - 0, + 128, 131, 1, 82, 97, 105, - 64, + 192, 130, 1, 81, 97, 106, - 32, + 160, 131, 1, 82, 97, - 105, - 160, + 106, + 32, 130, 1, 81, 97, 106, - 64, + 192, 131, 1, 82, 97, - 105, - 192, + 106, + 64, 130, 1, 81, 97, 106, - 96, + 224, 131, 1, 82, @@ -42152,14 +42304,14 @@ pub mod inclusion_verifier { 64, 97, 106, - 0, + 128, 133, 1, 96, 128, 97, 106, - 0, + 128, 135, 1, 96, @@ -42177,8 +42329,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 106, - 128, + 107, + 0, 131, 1, 82, @@ -42189,20 +42341,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 106, - 160, + 107, + 32, 131, 1, 82, 97, - 79, - 128, + 80, + 0, 130, 1, 81, 97, - 106, - 192, + 107, + 64, 131, 1, 82, @@ -42212,15 +42364,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 106, - 128, + 107, + 0, 133, 1, 96, 96, 97, - 106, - 128, + 107, + 0, 135, 1, 96, @@ -42233,49 +42385,49 @@ pub mod inclusion_verifier { 80, 97, 106, - 0, + 128, 130, 1, 81, 97, - 106, - 224, + 107, + 96, 131, 1, 82, 97, 106, - 32, + 160, 130, 1, 81, 97, 107, - 0, + 128, 131, 1, 82, 97, - 106, - 128, + 107, + 0, 130, 1, 81, 97, 107, - 32, + 160, 131, 1, 82, 97, - 106, - 160, + 107, + 32, 130, 1, 81, 97, 107, - 64, + 192, 131, 1, 82, @@ -42285,15 +42437,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 106, - 224, + 107, + 96, 133, 1, 96, 128, 97, - 106, - 224, + 107, + 96, 135, 1, 96, @@ -42312,7 +42464,7 @@ pub mod inclusion_verifier { 81, 97, 107, - 96, + 224, 131, 1, 82, @@ -42323,20 +42475,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 107, - 128, + 108, + 0, 131, 1, 82, 97, - 80, - 128, + 81, + 0, 130, 1, 81, 97, - 107, - 160, + 108, + 32, 131, 1, 82, @@ -42347,14 +42499,14 @@ pub mod inclusion_verifier { 64, 97, 107, - 96, + 224, 133, 1, 96, 96, 97, 107, - 96, + 224, 135, 1, 96, @@ -42366,50 +42518,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 106, - 224, + 107, + 96, 130, 1, 81, 97, - 107, - 192, + 108, + 64, 131, 1, 82, 97, 107, - 0, + 128, 130, 1, 81, 97, - 107, - 224, + 108, + 96, 131, 1, 82, 97, 107, - 96, + 224, 130, 1, 81, 97, 108, - 0, + 128, 131, 1, 82, 97, - 107, - 128, + 108, + 0, 130, 1, 81, 97, 108, - 32, + 160, 131, 1, 82, @@ -42419,15 +42571,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 107, - 192, + 108, + 64, 133, 1, 96, 128, 97, - 107, - 192, + 108, + 64, 135, 1, 96, @@ -42446,7 +42598,7 @@ pub mod inclusion_verifier { 81, 97, 108, - 64, + 192, 131, 1, 82, @@ -42458,19 +42610,19 @@ pub mod inclusion_verifier { 81, 97, 108, - 96, + 224, 131, 1, 82, 97, 82, - 32, + 160, 130, 1, 81, 97, - 108, - 128, + 109, + 0, 131, 1, 82, @@ -42481,14 +42633,14 @@ pub mod inclusion_verifier { 64, 97, 108, - 64, + 192, 133, 1, 96, 96, 97, 108, - 64, + 192, 135, 1, 96, @@ -42500,50 +42652,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 107, - 192, + 108, + 64, 130, 1, 81, 97, - 108, - 160, + 109, + 32, 131, 1, 82, 97, - 107, - 224, + 108, + 96, 130, 1, 81, 97, - 108, - 192, + 109, + 64, 131, 1, 82, 97, 108, - 64, + 192, 130, 1, 81, 97, - 108, - 224, + 109, + 96, 131, 1, 82, 97, 108, - 96, + 224, 130, 1, 81, 97, 109, - 0, + 128, 131, 1, 82, @@ -42553,15 +42705,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 108, - 160, + 109, + 32, 133, 1, 96, 128, 97, - 108, - 160, + 109, + 32, 135, 1, 96, @@ -42580,7 +42732,7 @@ pub mod inclusion_verifier { 81, 97, 109, - 32, + 160, 131, 1, 82, @@ -42592,19 +42744,19 @@ pub mod inclusion_verifier { 81, 97, 109, - 64, + 192, 131, 1, 82, 97, 82, - 64, + 192, 130, 1, 81, 97, 109, - 96, + 224, 131, 1, 82, @@ -42615,14 +42767,14 @@ pub mod inclusion_verifier { 64, 97, 109, - 32, + 160, 133, 1, 96, 96, 97, 109, - 32, + 160, 135, 1, 96, @@ -42634,50 +42786,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 108, - 160, + 109, + 32, 130, 1, 81, 97, - 109, - 128, + 110, + 0, 131, 1, 82, 97, - 108, - 192, + 109, + 64, 130, 1, 81, 97, - 109, - 160, + 110, + 32, 131, 1, 82, 97, 109, - 32, + 160, 130, 1, 81, 97, - 109, - 192, + 110, + 64, 131, 1, 82, 97, 109, - 64, + 192, 130, 1, 81, 97, - 109, - 224, + 110, + 96, 131, 1, 82, @@ -42687,15 +42839,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 109, - 128, + 110, + 0, 133, 1, 96, 128, 97, - 109, - 128, + 110, + 0, 135, 1, 96, @@ -42714,7 +42866,7 @@ pub mod inclusion_verifier { 81, 97, 110, - 0, + 128, 131, 1, 82, @@ -42726,19 +42878,19 @@ pub mod inclusion_verifier { 81, 97, 110, - 32, + 160, 131, 1, 82, 97, 83, - 64, + 192, 130, 1, 81, 97, 110, - 64, + 192, 131, 1, 82, @@ -42749,14 +42901,14 @@ pub mod inclusion_verifier { 64, 97, 110, - 0, + 128, 133, 1, 96, 96, 97, 110, - 0, + 128, 135, 1, 96, @@ -42768,50 +42920,50 @@ pub mod inclusion_verifier { 146, 80, 97, - 109, - 128, + 110, + 0, 130, 1, 81, 97, 110, - 96, + 224, 131, 1, 82, 97, - 109, - 160, + 110, + 32, 130, 1, 81, 97, - 110, - 128, + 111, + 0, 131, 1, 82, 97, 110, - 0, + 128, 130, 1, 81, 97, - 110, - 160, + 111, + 32, 131, 1, 82, 97, 110, - 32, + 160, 130, 1, 81, 97, - 110, - 192, + 111, + 64, 131, 1, 82, @@ -42822,14 +42974,14 @@ pub mod inclusion_verifier { 64, 97, 110, - 96, + 224, 133, 1, 96, 128, 97, 110, - 96, + 224, 135, 1, 96, @@ -42847,8 +42999,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 110, - 224, + 111, + 96, 131, 1, 82, @@ -42860,13 +43012,13 @@ pub mod inclusion_verifier { 81, 97, 111, - 0, + 128, 131, 1, 82, 97, - 83, - 128, + 84, + 0, 130, 1, 81, @@ -42874,7 +43026,7 @@ pub mod inclusion_verifier { 3, 97, 111, - 32, + 160, 131, 1, 82, @@ -42885,15 +43037,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 110, - 224, + 111, + 96, 132, 1, 96, 96, 97, - 110, - 224, + 111, + 96, 134, 1, 96, @@ -42906,49 +43058,49 @@ pub mod inclusion_verifier { 80, 97, 110, - 96, + 224, 129, 1, 81, 97, 111, - 64, + 192, 130, 1, 82, 97, - 110, - 128, + 111, + 0, 129, 1, 81, 97, 111, - 96, + 224, 130, 1, 82, 97, - 110, - 224, + 111, + 96, 129, 1, 81, 97, - 111, - 128, + 112, + 0, 130, 1, 82, 97, 111, - 0, + 128, 129, 1, 81, 97, - 111, - 160, + 112, + 32, 130, 1, 82, @@ -42959,14 +43111,14 @@ pub mod inclusion_verifier { 64, 97, 111, - 64, + 192, 132, 1, 96, 128, 97, 111, - 64, + 192, 134, 1, 96, @@ -42984,8 +43136,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 111, - 192, + 112, + 64, 130, 1, 82, @@ -42996,20 +43148,20 @@ pub mod inclusion_verifier { 1, 81, 97, - 111, - 224, + 112, + 96, 130, 1, 82, 97, - 83, - 160, + 84, + 32, 129, 1, 81, 97, 112, - 0, + 128, 130, 1, 82, @@ -43019,15 +43171,15 @@ pub mod inclusion_verifier { 96, 64, 97, - 111, - 192, + 112, + 64, 132, 1, 96, 96, 97, - 111, - 192, + 112, + 64, 134, 1, 96, @@ -43040,49 +43192,49 @@ pub mod inclusion_verifier { 80, 97, 111, - 64, + 192, 129, 1, 81, 97, 112, - 32, + 160, 130, 1, 82, 97, 111, - 96, + 224, 129, 1, 81, 97, 112, - 64, + 192, 130, 1, 82, 97, - 111, - 192, + 112, + 64, 129, 1, 81, 97, 112, - 96, + 224, 130, 1, 82, 97, - 111, - 224, + 112, + 96, 129, 1, 81, 97, - 112, - 128, + 113, + 0, 130, 1, 82, @@ -43093,14 +43245,14 @@ pub mod inclusion_verifier { 64, 97, 112, - 32, + 160, 132, 1, 96, 128, 97, 112, - 32, + 160, 134, 1, 96, @@ -43113,25 +43265,25 @@ pub mod inclusion_verifier { 80, 97, 112, - 32, + 160, 129, 1, 81, 97, - 112, - 160, + 113, + 32, 130, 1, 82, 97, 112, - 64, + 192, 129, 1, 81, 97, - 112, - 192, + 113, + 64, 130, 1, 82, @@ -43169,8 +43321,8 @@ pub mod inclusion_verifier { 18, 194, 97, - 112, - 224, + 113, + 96, 130, 1, 82, @@ -43209,7 +43361,7 @@ pub mod inclusion_verifier { 237, 97, 113, - 0, + 128, 130, 1, 82, @@ -43248,7 +43400,7 @@ pub mod inclusion_verifier { 91, 97, 113, - 32, + 160, 130, 1, 82, @@ -43287,7 +43439,7 @@ pub mod inclusion_verifier { 170, 97, 113, - 64, + 192, 130, 1, 82, @@ -43299,7 +43451,7 @@ pub mod inclusion_verifier { 81, 97, 113, - 96, + 224, 130, 1, 82, @@ -43310,8 +43462,8 @@ pub mod inclusion_verifier { 1, 81, 97, - 113, - 128, + 114, + 0, 130, 1, 82, @@ -43349,8 +43501,8 @@ pub mod inclusion_verifier { 226, 61, 97, - 113, - 160, + 114, + 32, 130, 1, 82, @@ -43388,8 +43540,8 @@ pub mod inclusion_verifier { 247, 158, 97, - 113, - 192, + 114, + 64, 130, 1, 82, @@ -43427,8 +43579,8 @@ pub mod inclusion_verifier { 193, 69, 97, - 113, - 224, + 114, + 96, 130, 1, 82, @@ -43467,7 +43619,7 @@ pub mod inclusion_verifier { 255, 97, 114, - 0, + 128, 130, 1, 82, @@ -43477,16 +43629,16 @@ pub mod inclusion_verifier { 96, 32, 97, - 112, - 160, + 113, + 32, 132, 1, 97, 1, 128, 97, - 112, - 160, + 113, + 32, 134, 1, 96, @@ -43494,8 +43646,8 @@ pub mod inclusion_verifier { 90, 250, 97, - 112, - 160, + 113, + 32, 147, 144, 147, @@ -43523,7 +43675,7 @@ pub mod inclusion_verifier { 128, 97, 114, - 0, + 128, 1, 96, 64, @@ -43531,7 +43683,7 @@ pub mod inclusion_verifier { 128, 97, 3, - 144, + 148, 144, 96, 32, @@ -43602,14 +43754,14 @@ pub mod inclusion_verifier { 21, 97, 84, - 52, + 128, 87, 97, 84, - 52, + 128, 97, - 83, - 245, + 84, + 65, 86, 91, 96, @@ -43630,7 +43782,7 @@ pub mod inclusion_verifier { 18, 97, 84, - 77, + 153, 87, 96, 0, @@ -43653,19 +43805,19 @@ pub mod inclusion_verifier { 21, 97, 84, - 103, + 179, 87, 97, 84, - 103, + 179, 97, - 83, - 245, + 84, + 65, 86, 91, 97, 84, - 122, + 198, 96, 31, 130, @@ -43679,7 +43831,7 @@ pub mod inclusion_verifier { 1, 97, 84, - 11, + 87, 86, 91, 129, @@ -43696,7 +43848,7 @@ pub mod inclusion_verifier { 21, 97, 84, - 143, + 219, 87, 96, 0, @@ -43743,8 +43895,8 @@ pub mod inclusion_verifier { 18, 21, 97, - 84, - 191, + 85, + 11, 87, 96, 0, @@ -43767,8 +43919,8 @@ pub mod inclusion_verifier { 17, 21, 97, - 84, - 215, + 85, + 35, 87, 96, 0, @@ -43787,8 +43939,8 @@ pub mod inclusion_verifier { 1, 18, 97, - 84, - 235, + 85, + 55, 87, 96, 0, @@ -43804,15 +43956,15 @@ pub mod inclusion_verifier { 17, 21, 97, - 84, - 255, + 85, + 75, 87, 97, - 84, - 255, + 85, + 75, 97, - 83, - 245, + 84, + 65, 86, 91, 129, @@ -43821,13 +43973,13 @@ pub mod inclusion_verifier { 27, 97, 85, - 14, + 90, 130, 130, 1, 97, 84, - 11, + 87, 86, 91, 146, @@ -43849,7 +44001,7 @@ pub mod inclusion_verifier { 21, 97, 85, - 40, + 116, 87, 96, 0, @@ -43867,7 +44019,7 @@ pub mod inclusion_verifier { 21, 97, 85, - 70, + 146, 87, 134, 53, @@ -43883,7 +44035,7 @@ pub mod inclusion_verifier { 144, 97, 85, - 45, + 121, 86, 91, 151, @@ -43902,7 +44054,7 @@ pub mod inclusion_verifier { 21, 97, 85, - 93, + 169, 87, 96, 0, @@ -43912,14 +44064,14 @@ pub mod inclusion_verifier { 80, 97, 85, - 106, + 182, 133, 130, 134, 1, 97, 84, - 60, + 136, 86, 91, 145, @@ -44006,38 +44158,38 @@ pub mod inclusion_verifier { 34, 18, 32, - 249, - 100, - 194, - 239, - 242, - 198, - 144, - 115, - 77, - 162, - 82, - 249, - 196, - 197, - 232, - 52, - 110, - 229, - 125, - 79, - 120, - 8, - 64, - 230, - 54, - 248, - 60, - 242, - 21, + 67, + 61, + 67, + 155, + 97, + 108, + 155, + 9, + 132, + 170, 39, - 143, - 103, + 61, + 101, + 208, + 59, + 188, + 145, + 10, + 87, + 92, + 63, + 198, + 42, + 156, + 80, + 151, + 87, + 123, + 27, + 175, + 252, + 213, 100, 115, 111, diff --git a/backend/src/contracts/generated/summa_contract.rs b/backend/src/contracts/generated/summa_contract.rs index 0b13b519..fe899e90 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\":\"rootBalances\",\"type\":\"uint256[]\",\"components\":[],\"indexed\":false},{\"internalType\":\"struct Summa.Cryptocurrency[]\",\"name\":\"cryptocurrencies\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"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.Cryptocurrency[]\",\"name\":\"cryptocurrencies\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"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\":[]},{\"internalType\":\"uint16\",\"name\":\"mstLevels\",\"type\":\"uint16\",\"components\":[]},{\"internalType\":\"uint16\",\"name\":\"assetsCount\",\"type\":\"uint16\",\"components\":[]},{\"internalType\":\"uint8\",\"name\":\"balanceByteRange\",\"type\":\"uint8\",\"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.Cryptocurrency[]\",\"name\":\"cryptocurrencies\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"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\":[],\"stateMutability\":\"view\",\"type\":\"function\",\"name\":\"config\",\"outputs\":[{\"internalType\":\"uint16\",\"name\":\"mstLevels\",\"type\":\"uint16\",\"components\":[]},{\"internalType\":\"uint16\",\"name\":\"assetsCount\",\"type\":\"uint16\",\"components\":[]},{\"internalType\":\"uint8\",\"name\":\"balanceByteRange\",\"type\":\"uint8\",\"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.Cryptocurrency[]\",\"name\":\"cryptocurrencies\",\"type\":\"tuple[]\",\"components\":[{\"internalType\":\"string\",\"name\":\"name\",\"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")); @@ -25,9 +25,10 @@ pub mod summa { 52, 128, 21, - 97, + 98, 0, - 16, + 0, + 17, 87, 96, 0, @@ -40,15 +41,15 @@ pub mod summa { 81, 98, 0, - 27, - 237, + 28, + 249, 56, 3, 128, 98, 0, - 27, - 237, + 28, + 249, 131, 57, 129, @@ -58,22 +59,26 @@ pub mod summa { 129, 144, 82, - 97, + 98, 0, - 49, + 0, + 52, 145, - 97, + 98, 0, - 155, + 1, + 16, 86, 91, - 97, + 98, 0, - 58, + 0, + 63, 51, - 97, + 98, 0, - 75, + 0, + 168, 86, 91, 96, @@ -84,13 +89,101 @@ pub mod summa { 160, 27, 3, + 147, + 144, + 147, 22, 96, 128, 82, + 96, + 64, + 128, + 81, + 96, + 96, + 129, + 1, + 130, + 82, 97, + 255, + 255, + 147, + 132, + 22, + 128, + 130, + 82, + 146, + 144, + 147, + 22, + 96, + 32, + 132, + 1, + 129, + 144, + 82, + 96, + 255, + 144, + 148, + 22, + 146, + 1, + 130, + 144, + 82, + 96, + 1, + 128, + 84, + 99, + 255, + 255, + 255, + 255, + 25, + 22, + 144, + 145, + 23, + 98, + 1, 0, - 203, + 0, + 144, + 147, + 2, + 146, + 144, + 146, + 23, + 96, + 255, + 96, + 32, + 27, + 25, + 22, + 100, + 1, + 0, + 0, + 0, + 0, + 144, + 145, + 2, + 23, + 144, + 85, + 98, + 0, + 1, + 129, 86, 91, 96, @@ -173,25 +266,54 @@ pub mod summa { 80, 86, 91, + 128, + 81, + 97, + 255, + 255, + 129, + 22, + 129, + 20, + 98, + 0, + 1, + 11, + 87, 96, 0, + 128, + 253, + 91, + 145, + 144, + 80, + 86, + 91, 96, - 32, - 130, - 132, + 0, + 128, + 96, + 0, + 128, + 96, + 128, + 133, + 135, 3, 18, 21, - 97, + 98, 0, - 173, + 1, + 39, 87, 96, 0, 128, 253, 91, - 129, + 132, 81, 96, 1, @@ -205,9 +327,65 @@ pub mod summa { 22, 129, 20, - 97, + 98, 0, - 196, + 1, + 63, + 87, + 96, + 0, + 128, + 253, + 91, + 147, + 80, + 98, + 0, + 1, + 79, + 96, + 32, + 134, + 1, + 98, + 0, + 0, + 248, + 86, + 91, + 146, + 80, + 98, + 0, + 1, + 95, + 96, + 64, + 134, + 1, + 98, + 0, + 0, + 248, + 86, + 91, + 145, + 80, + 96, + 96, + 133, + 1, + 81, + 96, + 255, + 129, + 22, + 129, + 20, + 98, + 0, + 1, + 118, 87, 96, 0, @@ -215,8 +393,12 @@ pub mod summa { 253, 91, 147, + 150, 146, + 149, 80, + 144, + 147, 80, 80, 86, @@ -226,11 +408,11 @@ pub mod summa { 81, 97, 27, - 6, + 92, 98, 0, - 0, - 231, + 1, + 157, 96, 0, 57, @@ -238,12 +420,12 @@ pub mod summa { 0, 97, 11, - 5, + 91, 1, 82, 97, 27, - 6, + 92, 96, 0, 243, @@ -272,7 +454,7 @@ pub mod summa { 16, 97, 0, - 147, + 158, 87, 96, 0, @@ -300,7 +482,7 @@ pub mod summa { 20, 97, 1, - 20, + 105, 87, 128, 99, @@ -311,7 +493,7 @@ pub mod summa { 20, 97, 1, - 55, + 140, 87, 128, 99, @@ -322,7 +504,7 @@ pub mod summa { 20, 97, 1, - 74, + 159, 87, 128, 99, @@ -333,7 +515,7 @@ pub mod summa { 20, 97, 1, - 109, + 194, 87, 128, 99, @@ -344,7 +526,7 @@ pub mod summa { 20, 97, 1, - 128, + 213, 87, 96, 0, @@ -360,7 +542,7 @@ pub mod summa { 20, 97, 0, - 152, + 163, 87, 128, 99, @@ -371,7 +553,7 @@ pub mod summa { 20, 97, 0, - 193, + 204, 87, 128, 99, @@ -382,7 +564,18 @@ pub mod summa { 20, 97, 0, - 239, + 250, + 87, + 128, + 99, + 121, + 80, + 44, + 85, + 20, + 97, + 1, + 4, 87, 128, 99, @@ -392,8 +585,8 @@ pub mod summa { 91, 20, 97, - 0, - 249, + 1, + 78, 87, 91, 96, @@ -403,21 +596,21 @@ pub mod summa { 91, 97, 0, - 171, + 182, 97, 0, - 166, + 177, 54, 96, 4, 97, 17, - 125, + 211, 86, 91, 97, 1, - 147, + 232, 86, 91, 96, @@ -425,12 +618,12 @@ pub mod summa { 81, 97, 0, - 184, + 195, 145, 144, 97, 18, - 81, + 167, 86, 91, 96, @@ -444,20 +637,20 @@ pub mod summa { 91, 97, 0, - 225, + 236, 97, 0, - 207, + 218, 54, 96, 4, 97, 17, - 125, + 211, 86, 91, 96, - 3, + 4, 96, 32, 82, @@ -485,18 +678,92 @@ pub mod summa { 1, 97, 0, - 184, + 195, 86, 91, 97, + 1, + 2, + 97, + 5, + 0, + 86, + 91, 0, - 247, + 91, + 96, + 1, + 84, + 97, + 1, + 42, + 144, 97, + 255, + 255, + 128, + 130, + 22, + 145, + 98, + 1, + 0, + 0, + 129, 4, - 170, + 144, + 145, + 22, + 144, + 100, + 1, + 0, + 0, + 0, + 0, + 144, + 4, + 96, + 255, + 22, + 131, 86, 91, + 96, + 64, + 128, + 81, + 97, + 255, + 255, + 148, + 133, + 22, + 129, + 82, + 147, + 144, + 146, + 22, + 96, + 32, + 132, + 1, + 82, + 96, + 255, + 22, + 144, + 130, + 1, + 82, + 96, + 96, + 1, + 97, 0, + 195, + 86, 91, 96, 0, @@ -522,26 +789,26 @@ pub mod summa { 1, 97, 0, - 184, + 195, 86, 91, 97, 1, - 39, + 124, 97, 1, - 34, + 119, 54, 96, 4, 97, 17, - 125, + 211, 86, 91, 97, - 4, - 190, + 5, + 20, 86, 91, 96, @@ -549,7 +816,7 @@ pub mod summa { 81, 97, 0, - 184, + 195, 148, 147, 146, @@ -557,45 +824,45 @@ pub mod summa { 144, 97, 18, - 107, + 193, 86, 91, 97, - 0, - 247, + 1, + 2, 97, 1, - 69, + 154, 54, 96, 4, 97, - 19, - 234, + 20, + 64, 86, 91, 97, 7, - 30, + 116, 86, 91, 97, 1, - 93, + 178, 97, 1, - 88, + 173, 54, 96, 4, 97, - 21, - 175, + 22, + 5, 86, 91, 97, - 9, - 191, + 10, + 21, 86, 91, 96, @@ -611,50 +878,50 @@ pub mod summa { 1, 97, 0, - 184, + 195, 86, 91, 97, - 0, - 247, + 1, + 2, 97, 1, - 123, + 208, 54, 96, 4, 97, 22, - 28, + 114, 86, 91, 97, 11, - 133, + 219, 86, 91, 97, - 0, - 247, + 1, + 2, 97, 1, - 142, + 227, 54, 96, 4, 97, 23, - 99, + 185, 86, 91, 97, 15, - 81, + 167, 86, 91, 97, - 1, - 190, + 2, + 19, 96, 64, 81, @@ -701,7 +968,7 @@ pub mod summa { 129, 82, 96, - 2, + 3, 96, 32, 82, @@ -712,7 +979,7 @@ pub mod summa { 84, 97, 2, - 21, + 106, 87, 96, 64, @@ -788,7 +1055,7 @@ pub mod summa { 129, 82, 96, - 2, + 3, 96, 32, 82, @@ -798,17 +1065,18 @@ pub mod summa { 32, 84, 96, - 1, + 2, 144, 97, 2, - 50, + 136, 144, - 130, + 96, + 1, 144, 97, 23, - 162, + 248, 86, 91, 129, @@ -817,14 +1085,14 @@ pub mod summa { 16, 97, 2, - 66, + 152, 87, 97, 2, - 66, + 152, 97, - 23, - 187, + 24, + 17, 86, 91, 144, @@ -861,11 +1129,11 @@ pub mod summa { 84, 97, 2, - 107, + 193, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -905,26 +1173,26 @@ pub mod summa { 84, 97, 2, - 151, + 237, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, - 2, - 228, + 3, + 58, 87, 128, 96, 31, 16, 97, - 2, - 185, + 3, + 15, 87, 97, 1, @@ -942,8 +1210,8 @@ pub mod summa { 1, 145, 97, - 2, - 228, + 3, + 58, 86, 91, 130, @@ -976,8 +1244,8 @@ pub mod summa { 131, 17, 97, - 2, - 199, + 3, + 29, 87, 130, 144, @@ -1006,12 +1274,12 @@ pub mod summa { 128, 84, 97, - 2, - 253, + 3, + 83, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -1051,18 +1319,18 @@ pub mod summa { 84, 97, 3, - 41, + 127, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 3, - 118, + 204, 87, 128, 96, @@ -1070,7 +1338,7 @@ pub mod summa { 16, 97, 3, - 75, + 161, 87, 97, 1, @@ -1089,7 +1357,7 @@ pub mod summa { 145, 97, 3, - 118, + 204, 86, 91, 130, @@ -1123,7 +1391,7 @@ pub mod summa { 17, 97, 3, - 89, + 175, 87, 130, 144, @@ -1153,11 +1421,11 @@ pub mod summa { 84, 97, 3, - 143, + 229, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -1196,27 +1464,27 @@ pub mod summa { 128, 84, 97, - 3, - 187, + 4, + 17, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 4, - 8, + 94, 87, 128, 96, 31, 16, 97, - 3, - 221, + 4, + 51, 87, 97, 1, @@ -1235,7 +1503,7 @@ pub mod summa { 145, 97, 4, - 8, + 94, 86, 91, 130, @@ -1268,8 +1536,8 @@ pub mod summa { 131, 17, 97, - 3, - 235, + 4, + 65, 87, 130, 144, @@ -1299,11 +1567,11 @@ pub mod summa { 84, 97, 4, - 33, + 119, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -1343,18 +1611,18 @@ pub mod summa { 84, 97, 4, - 77, + 163, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 4, - 154, + 240, 87, 128, 96, @@ -1362,7 +1630,7 @@ pub mod summa { 16, 97, 4, - 111, + 197, 87, 97, 1, @@ -1381,7 +1649,7 @@ pub mod summa { 145, 97, 4, - 154, + 240, 86, 91, 130, @@ -1415,7 +1683,7 @@ pub mod summa { 17, 97, 4, - 125, + 211, 87, 130, 144, @@ -1444,35 +1712,35 @@ pub mod summa { 86, 91, 97, - 4, - 178, + 5, + 8, 97, - 15, - 202, + 16, + 32, 86, 91, 97, - 4, - 188, + 5, + 18, 96, 0, 97, 16, - 36, + 122, 86, 91, 86, 91, 96, - 1, + 2, 129, 129, 84, 129, 16, 97, - 4, - 206, + 5, + 36, 87, 96, 0, @@ -1506,12 +1774,12 @@ pub mod summa { 128, 84, 97, - 4, - 241, + 5, + 71, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -1551,18 +1819,18 @@ pub mod summa { 84, 97, 5, - 29, + 115, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 5, - 106, + 192, 87, 128, 96, @@ -1570,7 +1838,7 @@ pub mod summa { 16, 97, 5, - 63, + 149, 87, 97, 1, @@ -1589,7 +1857,7 @@ pub mod summa { 145, 97, 5, - 106, + 192, 86, 91, 130, @@ -1623,7 +1891,7 @@ pub mod summa { 17, 97, 5, - 77, + 163, 87, 130, 144, @@ -1649,11 +1917,11 @@ pub mod summa { 84, 97, 5, - 127, + 213, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -1692,27 +1960,27 @@ pub mod summa { 128, 84, 97, - 5, - 171, + 6, + 1, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, - 5, - 248, + 6, + 78, 87, 128, 96, 31, 16, 97, - 5, - 205, + 6, + 35, 87, 97, 1, @@ -1730,8 +1998,8 @@ pub mod summa { 1, 145, 97, - 5, - 248, + 6, + 78, 86, 91, 130, @@ -1764,8 +2032,8 @@ pub mod summa { 131, 17, 97, - 5, - 219, + 6, + 49, 87, 130, 144, @@ -1791,11 +2059,11 @@ pub mod summa { 84, 97, 6, - 13, + 99, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -1835,18 +2103,18 @@ pub mod summa { 84, 97, 6, - 57, + 143, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 6, - 134, + 220, 87, 128, 96, @@ -1854,7 +2122,7 @@ pub mod summa { 16, 97, 6, - 91, + 177, 87, 97, 1, @@ -1873,7 +2141,7 @@ pub mod summa { 145, 97, 6, - 134, + 220, 86, 91, 130, @@ -1907,7 +2175,7 @@ pub mod summa { 17, 97, 6, - 105, + 191, 87, 130, 144, @@ -1933,11 +2201,11 @@ pub mod summa { 84, 97, 6, - 155, + 241, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -1976,27 +2244,27 @@ pub mod summa { 128, 84, 97, - 6, - 199, + 7, + 29, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 7, - 20, + 106, 87, 128, 96, 31, 16, 97, - 6, - 233, + 7, + 63, 87, 97, 1, @@ -2015,7 +2283,7 @@ pub mod summa { 145, 97, 7, - 20, + 106, 86, 91, 130, @@ -2048,8 +2316,8 @@ pub mod summa { 131, 17, 97, - 6, - 247, + 7, + 77, 87, 130, 144, @@ -2073,10 +2341,10 @@ pub mod summa { 91, 97, 7, - 38, + 124, 97, - 15, - 202, + 16, + 32, 86, 91, 96, @@ -2089,7 +2357,7 @@ pub mod summa { 21, 97, 9, - 132, + 218, 87, 96, 0, @@ -2101,14 +2369,14 @@ pub mod summa { 16, 97, 7, - 70, + 156, 87, 97, 7, - 70, + 156, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -2131,12 +2399,12 @@ pub mod summa { 1, 97, 7, - 98, + 184, 145, 144, 97, 24, - 11, + 97, 86, 91, 96, @@ -2169,7 +2437,7 @@ pub mod summa { 129, 82, 96, - 2, + 3, 144, 147, 82, @@ -2182,8 +2450,8 @@ pub mod summa { 128, 21, 97, - 7, - 216, + 8, + 46, 87, 96, 64, @@ -2254,11 +2522,11 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 96, - 1, + 2, 132, 132, 129, @@ -2266,15 +2534,15 @@ pub mod summa { 129, 16, 97, - 7, - 236, + 8, + 66, 87, 97, - 7, - 236, + 8, + 66, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -2319,12 +2587,12 @@ pub mod summa { 144, 97, 8, - 30, + 116, 144, 130, 97, 24, - 118, + 204, 86, 91, 80, @@ -2340,12 +2608,12 @@ pub mod summa { 144, 97, 8, - 51, + 137, 144, 130, 97, 24, - 118, + 204, 86, 91, 80, @@ -2361,12 +2629,12 @@ pub mod summa { 144, 97, 8, - 72, + 158, 144, 130, 97, 24, - 118, + 204, 86, 91, 80, @@ -2382,18 +2650,18 @@ pub mod summa { 144, 97, 8, - 93, + 179, 144, 130, 97, 24, - 118, + 204, 86, 91, 80, 80, 96, - 1, + 2, 84, 96, 0, @@ -2401,7 +2669,7 @@ pub mod summa { 129, 82, 96, - 2, + 3, 96, 32, 82, @@ -2421,14 +2689,14 @@ pub mod summa { 16, 97, 8, - 134, + 220, 87, 97, 8, - 134, + 220, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -2451,8 +2719,8 @@ pub mod summa { 128, 21, 97, - 8, - 194, + 9, + 24, 87, 80, 131, @@ -2462,15 +2730,15 @@ pub mod summa { 129, 16, 97, - 8, - 176, + 9, + 6, 87, 97, - 8, - 176, + 9, + 6, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -2494,8 +2762,8 @@ pub mod summa { 128, 21, 97, - 8, - 237, + 9, + 67, 87, 80, 131, @@ -2505,15 +2773,15 @@ pub mod summa { 129, 16, 97, - 8, - 219, + 9, + 49, 87, 97, - 8, - 219, + 9, + 49, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -2538,7 +2806,7 @@ pub mod summa { 21, 97, 9, - 24, + 110, 87, 80, 131, @@ -2549,14 +2817,14 @@ pub mod summa { 16, 97, 9, - 6, + 92, 87, 97, 9, - 6, + 92, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -2579,7 +2847,7 @@ pub mod summa { 91, 97, 9, - 111, + 197, 87, 96, 64, @@ -2661,7 +2929,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 80, @@ -2670,11 +2938,11 @@ pub mod summa { 128, 97, 9, - 124, + 210, 144, 97, 25, - 54, + 140, 86, 91, 145, @@ -2682,7 +2950,7 @@ pub mod summa { 80, 97, 7, - 41, + 127, 86, 91, 80, @@ -2724,13 +2992,13 @@ pub mod summa { 64, 81, 97, - 9, - 180, + 10, + 10, 145, 144, 97, 25, - 79, + 165, 86, 91, 96, @@ -2754,15 +3022,15 @@ pub mod summa { 129, 16, 97, - 9, - 212, + 10, + 42, 87, 97, - 9, - 212, + 10, + 42, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -2774,7 +3042,7 @@ pub mod summa { 1, 81, 96, - 3, + 4, 96, 0, 132, @@ -2799,7 +3067,7 @@ pub mod summa { 20, 97, 10, - 51, + 137, 87, 96, 64, @@ -2857,7 +3125,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 96, @@ -2869,8 +3137,8 @@ pub mod summa { 16, 21, 97, - 10, - 237, + 11, + 67, 87, 131, 129, @@ -2880,14 +3148,14 @@ pub mod summa { 16, 97, 10, - 81, + 167, 87, 97, 10, - 81, + 167, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -2899,7 +3167,7 @@ pub mod summa { 1, 81, 96, - 3, + 4, 96, 0, 133, @@ -2925,12 +3193,12 @@ pub mod summa { 131, 97, 10, - 124, + 210, 145, 144, 97, 23, - 162, + 248, 86, 91, 129, @@ -2939,14 +3207,14 @@ pub mod summa { 16, 97, 10, - 140, + 226, 87, 97, 10, - 140, + 226, 97, - 23, - 187, + 24, + 17, 86, 91, 144, @@ -2962,8 +3230,8 @@ pub mod summa { 84, 20, 97, - 10, - 219, + 11, + 49, 87, 96, 64, @@ -3025,17 +3293,17 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 128, 97, - 10, - 229, + 11, + 59, 129, 97, 25, - 54, + 140, 86, 91, 145, @@ -3043,7 +3311,7 @@ pub mod summa { 80, 97, 10, - 54, + 140, 86, 91, 80, @@ -3111,7 +3379,7 @@ pub mod summa { 144, 97, 11, - 60, + 146, 144, 134, 144, @@ -3121,8 +3389,8 @@ pub mod summa { 4, 1, 97, - 25, - 236, + 26, + 66, 86, 91, 96, @@ -3142,7 +3410,7 @@ pub mod summa { 21, 97, 11, - 89, + 175, 87, 61, 96, @@ -3182,12 +3450,12 @@ pub mod summa { 144, 97, 11, - 125, + 211, 145, 144, 97, 26, - 17, + 103, 86, 91, 148, @@ -3200,10 +3468,10 @@ pub mod summa { 91, 97, 11, - 141, + 227, 97, - 15, - 202, + 16, + 32, 86, 91, 131, @@ -3211,8 +3479,8 @@ pub mod summa { 0, 3, 97, - 11, - 208, + 12, + 38, 87, 96, 64, @@ -3270,7 +3538,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 129, @@ -3280,7 +3548,7 @@ pub mod summa { 20, 97, 12, - 63, + 149, 87, 96, 64, @@ -3381,7 +3649,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 96, @@ -3402,14 +3670,14 @@ pub mod summa { 21, 97, 12, - 91, + 177, 87, 97, 12, - 91, + 177, 97, - 18, - 195, + 19, + 25, 86, 91, 96, @@ -3435,7 +3703,7 @@ pub mod summa { 21, 97, 12, - 142, + 228, 87, 129, 96, @@ -3458,7 +3726,7 @@ pub mod summa { 129, 97, 12, - 121, + 207, 87, 144, 80, @@ -3483,15 +3751,15 @@ pub mod summa { 17, 21, 97, - 12, - 173, + 13, + 3, 87, 97, - 12, - 173, + 13, + 3, 97, - 18, - 195, + 19, + 25, 86, 91, 96, @@ -3516,8 +3784,8 @@ pub mod summa { 128, 21, 97, - 12, - 224, + 13, + 54, 87, 129, 96, @@ -3539,8 +3807,8 @@ pub mod summa { 144, 129, 97, - 12, - 203, + 13, + 33, 87, 144, 80, @@ -3558,7 +3826,7 @@ pub mod summa { 21, 97, 14, - 134, + 220, 87, 132, 129, @@ -3568,14 +3836,14 @@ pub mod summa { 16, 97, 13, - 1, + 87, 87, 97, 13, - 1, + 87, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -3599,7 +3867,7 @@ pub mod summa { 21, 97, 13, - 61, + 147, 87, 80, 132, @@ -3610,14 +3878,14 @@ pub mod summa { 16, 97, 13, - 43, + 129, 87, 97, 13, - 43, + 129, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -3640,7 +3908,7 @@ pub mod summa { 91, 97, 13, - 130, + 216, 87, 96, 64, @@ -3704,7 +3972,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 133, @@ -3715,14 +3983,14 @@ pub mod summa { 16, 97, 13, - 148, + 234, 87, 97, 13, - 148, + 234, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -3737,8 +4005,8 @@ pub mod summa { 0, 3, 97, - 13, - 253, + 14, + 83, 87, 96, 64, @@ -3827,7 +4095,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 132, @@ -3838,14 +4106,14 @@ pub mod summa { 16, 97, 14, - 15, + 101, 87, 97, 14, - 15, + 101, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -3868,14 +4136,14 @@ pub mod summa { 16, 97, 14, - 45, + 131, 87, 97, 14, - 45, + 131, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -3897,14 +4165,14 @@ pub mod summa { 16, 97, 14, - 74, + 160, 87, 97, 14, - 74, + 160, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -3927,14 +4195,14 @@ pub mod summa { 16, 97, 14, - 104, + 190, 87, 97, 14, - 104, + 190, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -3952,19 +4220,19 @@ pub mod summa { 128, 97, 14, - 126, + 212, 144, 97, 25, - 54, + 140, 86, 91, 145, 80, 80, 97, - 12, - 230, + 13, + 60, 86, 91, 80, @@ -4008,7 +4276,7 @@ pub mod summa { 129, 82, 96, - 3, + 4, 131, 82, 147, @@ -4027,8 +4295,8 @@ pub mod summa { 147, 146, 97, - 14, - 209, + 15, + 39, 146, 96, 1, @@ -4039,7 +4307,7 @@ pub mod summa { 144, 97, 16, - 116, + 202, 86, 91, 80, @@ -4051,8 +4319,8 @@ pub mod summa { 128, 81, 97, - 14, - 237, + 15, + 67, 145, 96, 2, @@ -4066,8 +4334,8 @@ pub mod summa { 1, 144, 97, - 16, - 191, + 17, + 21, 86, 91, 80, @@ -4080,7 +4348,7 @@ pub mod summa { 81, 97, 15, - 9, + 95, 145, 96, 3, @@ -4094,8 +4362,8 @@ pub mod summa { 1, 144, 97, - 16, - 191, + 17, + 21, 86, 91, 80, @@ -4144,14 +4412,14 @@ pub mod summa { 81, 97, 15, - 65, + 151, 147, 146, 145, 144, 97, 26, - 51, + 137, 86, 91, 96, @@ -4172,10 +4440,10 @@ pub mod summa { 91, 97, 15, - 89, + 175, 97, - 15, - 202, + 16, + 32, 86, 91, 96, @@ -4189,8 +4457,8 @@ pub mod summa { 129, 22, 97, - 15, - 190, + 16, + 20, 87, 96, 64, @@ -4276,16 +4544,16 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 97, - 15, - 199, + 16, + 29, 129, 97, 16, - 36, + 122, 86, 91, 80, @@ -4306,8 +4574,8 @@ pub mod summa { 51, 20, 97, - 4, - 188, + 5, + 18, 87, 96, 64, @@ -4378,7 +4646,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 96, @@ -4483,8 +4751,8 @@ pub mod summa { 130, 21, 97, - 16, - 175, + 17, + 5, 87, 145, 96, @@ -4498,8 +4766,8 @@ pub mod summa { 17, 21, 97, - 16, - 175, + 17, + 5, 87, 130, 81, @@ -4517,19 +4785,19 @@ pub mod summa { 144, 97, 16, - 148, + 234, 86, 91, 80, 97, - 16, - 187, + 17, + 17, 146, 145, 80, 97, 17, - 17, + 103, 86, 91, 80, @@ -4559,7 +4827,7 @@ pub mod summa { 21, 97, 17, - 5, + 91, 87, 145, 96, @@ -4574,20 +4842,20 @@ pub mod summa { 21, 97, 17, - 5, + 91, 87, 130, 81, 130, 144, 97, - 16, - 245, + 17, + 75, 144, 130, 97, 24, - 118, + 204, 86, 91, 80, @@ -4602,20 +4870,20 @@ pub mod summa { 1, 144, 97, - 16, - 223, + 17, + 53, 86, 91, 80, 97, - 16, - 187, + 17, + 17, 146, 145, 80, 97, 17, - 38, + 124, 86, 91, 91, @@ -4624,8 +4892,8 @@ pub mod summa { 17, 21, 97, - 16, - 187, + 17, + 17, 87, 96, 0, @@ -4636,7 +4904,7 @@ pub mod summa { 1, 97, 17, - 18, + 104, 86, 91, 128, @@ -4644,19 +4912,19 @@ pub mod summa { 17, 21, 97, - 16, - 187, + 17, + 17, 87, 96, 0, 97, 17, - 58, + 144, 130, 130, 97, 17, - 67, + 153, 86, 91, 80, @@ -4665,7 +4933,7 @@ pub mod summa { 1, 97, 17, - 38, + 124, 86, 91, 80, @@ -4673,11 +4941,11 @@ pub mod summa { 84, 97, 17, - 79, + 165, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 96, @@ -4690,7 +4958,7 @@ pub mod summa { 16, 97, 17, - 95, + 181, 87, 80, 80, @@ -4717,13 +4985,13 @@ pub mod summa { 1, 144, 97, - 15, - 199, + 16, + 29, 145, 144, 97, 17, - 17, + 103, 86, 91, 96, @@ -4737,7 +5005,7 @@ pub mod summa { 21, 97, 17, - 143, + 229, 87, 96, 0, @@ -4759,8 +5027,8 @@ pub mod summa { 16, 21, 97, - 17, - 177, + 18, + 7, 87, 129, 129, @@ -4775,7 +5043,7 @@ pub mod summa { 1, 97, 17, - 153, + 239, 86, 91, 80, @@ -4795,8 +5063,8 @@ pub mod summa { 132, 82, 97, - 17, - 210, + 18, + 40, 129, 96, 32, @@ -4808,7 +5076,7 @@ pub mod summa { 1, 97, 17, - 150, + 236, 86, 91, 96, @@ -4840,16 +5108,16 @@ pub mod summa { 132, 82, 97, - 17, - 251, + 18, + 81, 96, 128, 133, 1, 130, 97, - 17, - 186, + 18, + 16, 86, 91, 144, @@ -4869,12 +5137,12 @@ pub mod summa { 82, 97, 18, - 20, + 106, 130, 130, 97, - 17, - 186, + 18, + 16, 86, 91, 145, @@ -4895,12 +5163,12 @@ pub mod summa { 82, 97, 18, - 46, + 132, 130, 130, 97, - 17, - 186, + 18, + 16, 86, 91, 145, @@ -4921,12 +5189,12 @@ pub mod summa { 82, 97, 18, - 72, + 158, 130, 130, 97, - 17, - 186, + 18, + 16, 86, 91, 149, @@ -4946,15 +5214,15 @@ pub mod summa { 0, 97, 18, - 100, + 186, 96, 32, 131, 1, 132, 97, - 17, - 230, + 18, + 60, 86, 91, 147, @@ -4972,15 +5240,15 @@ pub mod summa { 0, 97, 18, - 126, + 212, 96, 128, 131, 1, 135, 97, - 17, - 186, + 18, + 16, 86, 91, 130, @@ -4993,12 +5261,12 @@ pub mod summa { 82, 97, 18, - 144, + 230, 129, 135, 97, - 17, - 186, + 18, + 16, 86, 91, 144, @@ -5013,12 +5281,12 @@ pub mod summa { 82, 97, 18, - 164, + 250, 129, 134, 97, - 17, - 186, + 18, + 16, 86, 91, 144, @@ -5032,13 +5300,13 @@ pub mod summa { 1, 82, 97, - 18, - 184, + 19, + 14, 129, 133, 97, - 17, - 186, + 18, + 16, 86, 91, 151, @@ -5098,15 +5366,15 @@ pub mod summa { 23, 21, 97, - 18, - 252, + 19, + 82, 87, 97, - 18, - 252, + 19, + 82, 97, - 18, - 195, + 19, + 25, 86, 91, 96, @@ -5139,15 +5407,15 @@ pub mod summa { 23, 21, 97, - 18, - 252, + 19, + 82, 87, 97, - 18, - 252, + 19, + 82, 97, - 18, - 195, + 19, + 25, 86, 91, 96, @@ -5181,14 +5449,14 @@ pub mod summa { 21, 97, 19, - 78, + 164, 87, 97, 19, - 78, + 164, 97, - 18, - 195, + 19, + 25, 86, 91, 96, @@ -5215,14 +5483,14 @@ pub mod summa { 21, 97, 19, - 112, + 198, 87, 97, 19, - 112, + 198, 97, - 18, - 195, + 19, + 25, 86, 91, 80, @@ -5245,7 +5513,7 @@ pub mod summa { 18, 97, 19, - 139, + 225, 87, 96, 0, @@ -5268,19 +5536,19 @@ pub mod summa { 21, 97, 19, - 165, + 251, 87, 97, 19, - 165, + 251, 97, - 18, - 195, + 19, + 25, 86, 91, 97, - 19, - 184, + 20, + 14, 96, 31, 130, @@ -5294,7 +5562,7 @@ pub mod summa { 1, 97, 19, - 37, + 123, 86, 91, 129, @@ -5310,8 +5578,8 @@ pub mod summa { 17, 21, 97, - 19, - 205, + 20, + 35, 87, 96, 0, @@ -5358,8 +5626,8 @@ pub mod summa { 18, 21, 97, - 19, - 253, + 20, + 83, 87, 96, 0, @@ -5383,7 +5651,7 @@ pub mod summa { 21, 97, 20, - 21, + 107, 87, 96, 0, @@ -5403,7 +5671,7 @@ pub mod summa { 18, 97, 20, - 41, + 127, 87, 96, 0, @@ -5414,19 +5682,19 @@ pub mod summa { 53, 97, 20, - 60, + 146, 97, 20, - 55, + 141, 130, 97, 19, - 86, + 172, 86, 91, 97, 19, - 37, + 123, 86, 91, 129, @@ -5453,7 +5721,7 @@ pub mod summa { 21, 97, 20, - 91, + 177, 87, 96, 0, @@ -5470,7 +5738,7 @@ pub mod summa { 21, 97, 21, - 60, + 146, 87, 128, 53, @@ -5480,7 +5748,7 @@ pub mod summa { 21, 97, 20, - 118, + 204, 87, 96, 0, @@ -5502,7 +5770,7 @@ pub mod summa { 21, 97, 20, - 141, + 227, 87, 96, 0, @@ -5512,10 +5780,10 @@ pub mod summa { 91, 97, 20, - 149, + 235, 97, - 18, - 217, + 19, + 47, 86, 91, 136, @@ -5528,7 +5796,7 @@ pub mod summa { 21, 97, 20, - 167, + 253, 87, 96, 0, @@ -5537,8 +5805,8 @@ pub mod summa { 253, 91, 97, - 20, - 181, + 21, + 11, 141, 139, 131, @@ -5547,7 +5815,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 130, @@ -5564,8 +5832,8 @@ pub mod summa { 17, 21, 97, - 20, - 204, + 21, + 34, 87, 96, 0, @@ -5574,8 +5842,8 @@ pub mod summa { 253, 91, 97, - 20, - 218, + 21, + 48, 142, 140, 131, @@ -5584,7 +5852,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 139, @@ -5603,8 +5871,8 @@ pub mod summa { 17, 21, 97, - 20, - 243, + 21, + 73, 87, 96, 0, @@ -5614,7 +5882,7 @@ pub mod summa { 91, 97, 21, - 1, + 87, 143, 141, 131, @@ -5623,7 +5891,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 131, @@ -5644,7 +5912,7 @@ pub mod summa { 21, 97, 21, - 27, + 113, 87, 96, 0, @@ -5654,7 +5922,7 @@ pub mod summa { 91, 97, 21, - 41, + 127, 142, 140, 132, @@ -5663,7 +5931,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 144, @@ -5682,7 +5950,7 @@ pub mod summa { 1, 97, 20, - 95, + 181, 86, 91, 80, @@ -5708,7 +5976,7 @@ pub mod summa { 18, 97, 21, - 90, + 176, 87, 96, 0, @@ -5721,14 +5989,14 @@ pub mod summa { 32, 97, 21, - 106, + 192, 97, 20, - 55, + 141, 131, 97, 19, - 86, + 172, 86, 91, 130, @@ -5755,7 +6023,7 @@ pub mod summa { 21, 97, 21, - 137, + 223, 87, 96, 0, @@ -5772,7 +6040,7 @@ pub mod summa { 21, 97, 21, - 164, + 250, 87, 128, 53, @@ -5786,7 +6054,7 @@ pub mod summa { 1, 97, 21, - 141, + 227, 86, 91, 80, @@ -5813,8 +6081,8 @@ pub mod summa { 18, 21, 97, - 21, - 196, + 22, + 26, 87, 96, 0, @@ -5837,8 +6105,8 @@ pub mod summa { 17, 21, 97, - 21, - 220, + 22, + 50, 87, 96, 0, @@ -5846,15 +6114,15 @@ pub mod summa { 253, 91, 97, - 21, - 232, + 22, + 62, 135, 131, 136, 1, 97, 19, - 122, + 208, 86, 91, 148, @@ -5871,8 +6139,8 @@ pub mod summa { 17, 21, 97, - 21, - 254, + 22, + 84, 87, 96, 0, @@ -5882,14 +6150,14 @@ pub mod summa { 80, 97, 22, - 11, + 97, 134, 130, 135, 1, 97, 21, - 73, + 159, 86, 91, 146, @@ -5924,7 +6192,7 @@ pub mod summa { 21, 97, 22, - 50, + 136, 87, 96, 0, @@ -5955,7 +6223,7 @@ pub mod summa { 21, 97, 22, - 81, + 167, 87, 96, 0, @@ -5964,14 +6232,14 @@ pub mod summa { 91, 97, 22, - 93, + 179, 136, 131, 137, 1, 97, 21, - 73, + 159, 86, 91, 148, @@ -5989,7 +6257,7 @@ pub mod summa { 21, 97, 22, - 115, + 201, 87, 96, 0, @@ -6009,7 +6277,7 @@ pub mod summa { 18, 97, 22, - 135, + 221, 87, 96, 0, @@ -6018,15 +6286,15 @@ pub mod summa { 91, 97, 22, - 148, + 234, 97, 20, - 55, + 141, 131, 53, 97, 19, - 86, + 172, 86, 91, 130, @@ -6052,8 +6320,8 @@ pub mod summa { 17, 21, 97, - 22, - 179, + 23, + 9, 87, 96, 0, @@ -6071,7 +6339,7 @@ pub mod summa { 21, 97, 23, - 79, + 165, 87, 132, 129, @@ -6079,8 +6347,8 @@ pub mod summa { 17, 21, 97, - 22, - 206, + 23, + 36, 87, 96, 0, @@ -6103,8 +6371,8 @@ pub mod summa { 18, 21, 97, - 22, - 230, + 23, + 60, 87, 96, 0, @@ -6112,11 +6380,11 @@ pub mod summa { 253, 91, 97, - 22, - 238, + 23, + 68, 97, 19, - 2, + 88, 86, 91, 96, @@ -6130,7 +6398,7 @@ pub mod summa { 21, 97, 23, - 0, + 86, 87, 96, 0, @@ -6139,7 +6407,7 @@ pub mod summa { 91, 97, 23, - 15, + 101, 143, 96, 32, @@ -6149,7 +6417,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 130, @@ -6166,7 +6434,7 @@ pub mod summa { 21, 97, 23, - 36, + 122, 87, 96, 0, @@ -6175,7 +6443,7 @@ pub mod summa { 91, 97, 23, - 51, + 137, 143, 96, 32, @@ -6185,7 +6453,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 96, @@ -6212,8 +6480,8 @@ pub mod summa { 144, 80, 97, - 22, - 184, + 23, + 14, 86, 91, 80, @@ -6247,7 +6515,7 @@ pub mod summa { 21, 97, 23, - 117, + 203, 87, 96, 0, @@ -6270,7 +6538,7 @@ pub mod summa { 20, 97, 18, - 100, + 186, 87, 96, 0, @@ -6307,15 +6575,15 @@ pub mod summa { 17, 21, 97, - 23, - 181, + 24, + 11, 87, 97, - 23, - 181, + 24, + 11, 97, 23, - 140, + 226, 86, 91, 146, @@ -6356,8 +6624,8 @@ pub mod summa { 22, 128, 97, - 23, - 229, + 24, + 59, 87, 96, 127, @@ -6374,7 +6642,7 @@ pub mod summa { 3, 97, 24, - 5, + 91, 87, 99, 78, @@ -6410,7 +6678,7 @@ pub mod summa { 81, 97, 24, - 29, + 115, 129, 132, 96, @@ -6419,7 +6687,7 @@ pub mod summa { 1, 97, 17, - 150, + 236, 86, 91, 145, @@ -6439,7 +6707,7 @@ pub mod summa { 21, 97, 24, - 113, + 199, 87, 96, 0, @@ -6466,7 +6734,7 @@ pub mod summa { 21, 97, 24, - 78, + 164, 87, 80, 128, @@ -6489,7 +6757,7 @@ pub mod summa { 21, 97, 24, - 109, + 195, 87, 130, 129, @@ -6499,7 +6767,7 @@ pub mod summa { 1, 97, 24, - 90, + 176, 86, 91, 80, @@ -6527,34 +6795,34 @@ pub mod summa { 21, 97, 24, - 144, + 230, 87, 97, 24, - 144, + 230, 97, - 18, - 195, + 19, + 25, 86, 91, 97, 24, - 164, + 250, 129, 97, 24, - 158, + 244, 132, 84, 97, - 23, - 209, + 24, + 39, 86, 91, 132, 97, 24, - 39, + 125, 86, 91, 96, @@ -6569,16 +6837,16 @@ pub mod summa { 129, 20, 97, - 24, - 217, + 25, + 47, 87, 96, 0, 132, 21, 97, - 24, - 193, + 25, + 23, 87, 80, 133, @@ -6607,7 +6875,7 @@ pub mod summa { 85, 97, 24, - 109, + 195, 86, 91, 96, @@ -6632,7 +6900,7 @@ pub mod summa { 21, 97, 25, - 8, + 94, 87, 136, 134, @@ -6653,8 +6921,8 @@ pub mod summa { 132, 1, 97, - 24, - 233, + 25, + 63, 86, 91, 80, @@ -6664,7 +6932,7 @@ pub mod summa { 21, 97, 25, - 38, + 124, 87, 135, 133, @@ -6711,14 +6979,14 @@ pub mod summa { 1, 97, 25, - 72, + 158, 87, 97, 25, - 72, + 158, 97, 23, - 140, + 226, 86, 91, 80, @@ -6773,7 +7041,7 @@ pub mod summa { 21, 97, 25, - 164, + 250, 87, 96, 63, @@ -6786,13 +7054,13 @@ pub mod summa { 82, 97, 25, - 146, + 232, 133, 131, 81, 97, - 17, - 230, + 18, + 60, 86, 91, 148, @@ -6810,7 +7078,7 @@ pub mod summa { 1, 97, 25, - 118, + 204, 86, 91, 80, @@ -6851,8 +7119,8 @@ pub mod summa { 16, 21, 97, - 25, - 225, + 26, + 55, 87, 129, 81, @@ -6870,8 +7138,8 @@ pub mod summa { 1, 1, 97, - 25, - 197, + 26, + 27, 86, 91, 80, @@ -6892,16 +7160,16 @@ pub mod summa { 96, 0, 97, - 25, - 255, + 26, + 85, 96, 64, 131, 1, 133, 97, - 25, - 177, + 26, + 7, 86, 91, 130, @@ -6914,12 +7182,12 @@ pub mod summa { 82, 97, 18, - 72, + 158, 129, 133, 97, - 17, - 186, + 18, + 16, 86, 91, 96, @@ -6933,7 +7201,7 @@ pub mod summa { 21, 97, 26, - 35, + 121, 87, 96, 0, @@ -6949,7 +7217,7 @@ pub mod summa { 20, 97, 18, - 100, + 186, 87, 96, 0, @@ -6971,15 +7239,15 @@ pub mod summa { 82, 97, 26, - 77, + 163, 96, 96, 132, 1, 134, 97, - 25, - 177, + 26, + 7, 86, 91, 96, @@ -7021,8 +7289,8 @@ pub mod summa { 16, 21, 97, - 26, - 191, + 27, + 21, 87, 134, 131, @@ -7042,14 +7310,14 @@ pub mod summa { 82, 97, 26, - 147, + 233, 136, 134, 1, 130, 97, - 17, - 186, + 18, + 16, 86, 91, 145, @@ -7067,13 +7335,13 @@ pub mod summa { 144, 80, 97, - 26, - 171, + 27, + 1, 129, 131, 97, - 17, - 186, + 18, + 16, 86, 91, 150, @@ -7093,7 +7361,7 @@ pub mod summa { 1, 97, 26, - 111, + 197, 86, 91, 80, @@ -7123,38 +7391,38 @@ pub mod summa { 34, 18, 32, - 146, - 153, - 55, + 20, 51, - 122, - 209, - 108, - 97, + 238, + 153, + 39, + 35, + 115, + 182, 114, - 226, - 22, - 59, - 196, - 94, - 211, - 145, + 60, + 37, 63, - 229, - 31, - 142, - 92, - 232, - 202, - 195, - 172, - 128, - 115, - 208, - 21, + 144, + 255, + 224, + 25, + 64, + 136, + 155, + 150, + 65, + 240, + 132, 147, - 237, - 215, + 25, + 242, + 243, + 42, + 54, + 203, + 20, + 90, 100, 115, 111, @@ -7197,7 +7465,7 @@ pub mod summa { 16, 97, 0, - 147, + 158, 87, 96, 0, @@ -7225,7 +7493,7 @@ pub mod summa { 20, 97, 1, - 20, + 105, 87, 128, 99, @@ -7236,7 +7504,7 @@ pub mod summa { 20, 97, 1, - 55, + 140, 87, 128, 99, @@ -7247,7 +7515,7 @@ pub mod summa { 20, 97, 1, - 74, + 159, 87, 128, 99, @@ -7258,7 +7526,7 @@ pub mod summa { 20, 97, 1, - 109, + 194, 87, 128, 99, @@ -7269,7 +7537,7 @@ pub mod summa { 20, 97, 1, - 128, + 213, 87, 96, 0, @@ -7285,7 +7553,7 @@ pub mod summa { 20, 97, 0, - 152, + 163, 87, 128, 99, @@ -7296,7 +7564,7 @@ pub mod summa { 20, 97, 0, - 193, + 204, 87, 128, 99, @@ -7307,7 +7575,18 @@ pub mod summa { 20, 97, 0, - 239, + 250, + 87, + 128, + 99, + 121, + 80, + 44, + 85, + 20, + 97, + 1, + 4, 87, 128, 99, @@ -7317,8 +7596,8 @@ pub mod summa { 91, 20, 97, - 0, - 249, + 1, + 78, 87, 91, 96, @@ -7328,21 +7607,21 @@ pub mod summa { 91, 97, 0, - 171, + 182, 97, 0, - 166, + 177, 54, 96, 4, 97, 17, - 125, + 211, 86, 91, 97, 1, - 147, + 232, 86, 91, 96, @@ -7350,12 +7629,12 @@ pub mod summa { 81, 97, 0, - 184, + 195, 145, 144, 97, 18, - 81, + 167, 86, 91, 96, @@ -7369,20 +7648,20 @@ pub mod summa { 91, 97, 0, - 225, + 236, 97, 0, - 207, + 218, 54, 96, 4, 97, 17, - 125, + 211, 86, 91, 96, - 3, + 4, 96, 32, 82, @@ -7410,18 +7689,92 @@ pub mod summa { 1, 97, 0, - 184, + 195, 86, 91, 97, + 1, + 2, + 97, + 5, + 0, + 86, + 91, 0, - 247, + 91, + 96, + 1, + 84, + 97, + 1, + 42, + 144, 97, + 255, + 255, + 128, + 130, + 22, + 145, + 98, + 1, + 0, + 0, + 129, 4, - 170, + 144, + 145, + 22, + 144, + 100, + 1, + 0, + 0, + 0, + 0, + 144, + 4, + 96, + 255, + 22, + 131, 86, 91, + 96, + 64, + 128, + 81, + 97, + 255, + 255, + 148, + 133, + 22, + 129, + 82, + 147, + 144, + 146, + 22, + 96, + 32, + 132, + 1, + 82, + 96, + 255, + 22, + 144, + 130, + 1, + 82, + 96, + 96, + 1, + 97, 0, + 195, + 86, 91, 96, 0, @@ -7447,26 +7800,26 @@ pub mod summa { 1, 97, 0, - 184, + 195, 86, 91, 97, 1, - 39, + 124, 97, 1, - 34, + 119, 54, 96, 4, 97, 17, - 125, + 211, 86, 91, 97, - 4, - 190, + 5, + 20, 86, 91, 96, @@ -7474,7 +7827,7 @@ pub mod summa { 81, 97, 0, - 184, + 195, 148, 147, 146, @@ -7482,45 +7835,45 @@ pub mod summa { 144, 97, 18, - 107, + 193, 86, 91, 97, - 0, - 247, + 1, + 2, 97, 1, - 69, + 154, 54, 96, 4, 97, - 19, - 234, + 20, + 64, 86, 91, 97, 7, - 30, + 116, 86, 91, 97, 1, - 93, + 178, 97, 1, - 88, + 173, 54, 96, 4, 97, - 21, - 175, + 22, + 5, 86, 91, 97, - 9, - 191, + 10, + 21, 86, 91, 96, @@ -7536,50 +7889,50 @@ pub mod summa { 1, 97, 0, - 184, + 195, 86, 91, 97, - 0, - 247, + 1, + 2, 97, 1, - 123, + 208, 54, 96, 4, 97, 22, - 28, + 114, 86, 91, 97, 11, - 133, + 219, 86, 91, 97, - 0, - 247, + 1, + 2, 97, 1, - 142, + 227, 54, 96, 4, 97, 23, - 99, + 185, 86, 91, 97, 15, - 81, + 167, 86, 91, 97, - 1, - 190, + 2, + 19, 96, 64, 81, @@ -7626,7 +7979,7 @@ pub mod summa { 129, 82, 96, - 2, + 3, 96, 32, 82, @@ -7637,7 +7990,7 @@ pub mod summa { 84, 97, 2, - 21, + 106, 87, 96, 64, @@ -7713,7 +8066,7 @@ pub mod summa { 129, 82, 96, - 2, + 3, 96, 32, 82, @@ -7723,17 +8076,18 @@ pub mod summa { 32, 84, 96, - 1, + 2, 144, 97, 2, - 50, + 136, 144, - 130, + 96, + 1, 144, 97, 23, - 162, + 248, 86, 91, 129, @@ -7742,14 +8096,14 @@ pub mod summa { 16, 97, 2, - 66, + 152, 87, 97, 2, - 66, + 152, 97, - 23, - 187, + 24, + 17, 86, 91, 144, @@ -7786,11 +8140,11 @@ pub mod summa { 84, 97, 2, - 107, + 193, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -7830,26 +8184,26 @@ pub mod summa { 84, 97, 2, - 151, + 237, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, - 2, - 228, + 3, + 58, 87, 128, 96, 31, 16, 97, - 2, - 185, + 3, + 15, 87, 97, 1, @@ -7867,8 +8221,8 @@ pub mod summa { 1, 145, 97, - 2, - 228, + 3, + 58, 86, 91, 130, @@ -7901,8 +8255,8 @@ pub mod summa { 131, 17, 97, - 2, - 199, + 3, + 29, 87, 130, 144, @@ -7931,12 +8285,12 @@ pub mod summa { 128, 84, 97, - 2, - 253, + 3, + 83, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -7976,18 +8330,18 @@ pub mod summa { 84, 97, 3, - 41, + 127, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 3, - 118, + 204, 87, 128, 96, @@ -7995,7 +8349,7 @@ pub mod summa { 16, 97, 3, - 75, + 161, 87, 97, 1, @@ -8014,7 +8368,7 @@ pub mod summa { 145, 97, 3, - 118, + 204, 86, 91, 130, @@ -8048,7 +8402,7 @@ pub mod summa { 17, 97, 3, - 89, + 175, 87, 130, 144, @@ -8078,11 +8432,11 @@ pub mod summa { 84, 97, 3, - 143, + 229, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -8121,27 +8475,27 @@ pub mod summa { 128, 84, 97, - 3, - 187, + 4, + 17, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 4, - 8, + 94, 87, 128, 96, 31, 16, 97, - 3, - 221, + 4, + 51, 87, 97, 1, @@ -8160,7 +8514,7 @@ pub mod summa { 145, 97, 4, - 8, + 94, 86, 91, 130, @@ -8193,8 +8547,8 @@ pub mod summa { 131, 17, 97, - 3, - 235, + 4, + 65, 87, 130, 144, @@ -8224,11 +8578,11 @@ pub mod summa { 84, 97, 4, - 33, + 119, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -8268,18 +8622,18 @@ pub mod summa { 84, 97, 4, - 77, + 163, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 4, - 154, + 240, 87, 128, 96, @@ -8287,7 +8641,7 @@ pub mod summa { 16, 97, 4, - 111, + 197, 87, 97, 1, @@ -8306,7 +8660,7 @@ pub mod summa { 145, 97, 4, - 154, + 240, 86, 91, 130, @@ -8340,7 +8694,7 @@ pub mod summa { 17, 97, 4, - 125, + 211, 87, 130, 144, @@ -8369,35 +8723,35 @@ pub mod summa { 86, 91, 97, - 4, - 178, + 5, + 8, 97, - 15, - 202, + 16, + 32, 86, 91, 97, - 4, - 188, + 5, + 18, 96, 0, 97, 16, - 36, + 122, 86, 91, 86, 91, 96, - 1, + 2, 129, 129, 84, 129, 16, 97, - 4, - 206, + 5, + 36, 87, 96, 0, @@ -8431,12 +8785,12 @@ pub mod summa { 128, 84, 97, - 4, - 241, + 5, + 71, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -8476,18 +8830,18 @@ pub mod summa { 84, 97, 5, - 29, + 115, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 5, - 106, + 192, 87, 128, 96, @@ -8495,7 +8849,7 @@ pub mod summa { 16, 97, 5, - 63, + 149, 87, 97, 1, @@ -8514,7 +8868,7 @@ pub mod summa { 145, 97, 5, - 106, + 192, 86, 91, 130, @@ -8548,7 +8902,7 @@ pub mod summa { 17, 97, 5, - 77, + 163, 87, 130, 144, @@ -8574,11 +8928,11 @@ pub mod summa { 84, 97, 5, - 127, + 213, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -8617,27 +8971,27 @@ pub mod summa { 128, 84, 97, - 5, - 171, + 6, + 1, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, - 5, - 248, + 6, + 78, 87, 128, 96, 31, 16, 97, - 5, - 205, + 6, + 35, 87, 97, 1, @@ -8655,8 +9009,8 @@ pub mod summa { 1, 145, 97, - 5, - 248, + 6, + 78, 86, 91, 130, @@ -8689,8 +9043,8 @@ pub mod summa { 131, 17, 97, - 5, - 219, + 6, + 49, 87, 130, 144, @@ -8716,11 +9070,11 @@ pub mod summa { 84, 97, 6, - 13, + 99, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -8760,18 +9114,18 @@ pub mod summa { 84, 97, 6, - 57, + 143, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 6, - 134, + 220, 87, 128, 96, @@ -8779,7 +9133,7 @@ pub mod summa { 16, 97, 6, - 91, + 177, 87, 97, 1, @@ -8798,7 +9152,7 @@ pub mod summa { 145, 97, 6, - 134, + 220, 86, 91, 130, @@ -8832,7 +9186,7 @@ pub mod summa { 17, 97, 6, - 105, + 191, 87, 130, 144, @@ -8858,11 +9212,11 @@ pub mod summa { 84, 97, 6, - 155, + 241, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, @@ -8901,27 +9255,27 @@ pub mod summa { 128, 84, 97, - 6, - 199, + 7, + 29, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 128, 21, 97, 7, - 20, + 106, 87, 128, 96, 31, 16, 97, - 6, - 233, + 7, + 63, 87, 97, 1, @@ -8940,7 +9294,7 @@ pub mod summa { 145, 97, 7, - 20, + 106, 86, 91, 130, @@ -8973,8 +9327,8 @@ pub mod summa { 131, 17, 97, - 6, - 247, + 7, + 77, 87, 130, 144, @@ -8998,10 +9352,10 @@ pub mod summa { 91, 97, 7, - 38, + 124, 97, - 15, - 202, + 16, + 32, 86, 91, 96, @@ -9014,7 +9368,7 @@ pub mod summa { 21, 97, 9, - 132, + 218, 87, 96, 0, @@ -9026,14 +9380,14 @@ pub mod summa { 16, 97, 7, - 70, + 156, 87, 97, 7, - 70, + 156, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -9056,12 +9410,12 @@ pub mod summa { 1, 97, 7, - 98, + 184, 145, 144, 97, 24, - 11, + 97, 86, 91, 96, @@ -9094,7 +9448,7 @@ pub mod summa { 129, 82, 96, - 2, + 3, 144, 147, 82, @@ -9107,8 +9461,8 @@ pub mod summa { 128, 21, 97, - 7, - 216, + 8, + 46, 87, 96, 64, @@ -9179,11 +9533,11 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 96, - 1, + 2, 132, 132, 129, @@ -9191,15 +9545,15 @@ pub mod summa { 129, 16, 97, - 7, - 236, + 8, + 66, 87, 97, - 7, - 236, + 8, + 66, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -9244,12 +9598,12 @@ pub mod summa { 144, 97, 8, - 30, + 116, 144, 130, 97, 24, - 118, + 204, 86, 91, 80, @@ -9265,12 +9619,12 @@ pub mod summa { 144, 97, 8, - 51, + 137, 144, 130, 97, 24, - 118, + 204, 86, 91, 80, @@ -9286,12 +9640,12 @@ pub mod summa { 144, 97, 8, - 72, + 158, 144, 130, 97, 24, - 118, + 204, 86, 91, 80, @@ -9307,18 +9661,18 @@ pub mod summa { 144, 97, 8, - 93, + 179, 144, 130, 97, 24, - 118, + 204, 86, 91, 80, 80, 96, - 1, + 2, 84, 96, 0, @@ -9326,7 +9680,7 @@ pub mod summa { 129, 82, 96, - 2, + 3, 96, 32, 82, @@ -9346,14 +9700,14 @@ pub mod summa { 16, 97, 8, - 134, + 220, 87, 97, 8, - 134, + 220, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -9376,8 +9730,8 @@ pub mod summa { 128, 21, 97, - 8, - 194, + 9, + 24, 87, 80, 131, @@ -9387,15 +9741,15 @@ pub mod summa { 129, 16, 97, - 8, - 176, + 9, + 6, 87, 97, - 8, - 176, + 9, + 6, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -9419,8 +9773,8 @@ pub mod summa { 128, 21, 97, - 8, - 237, + 9, + 67, 87, 80, 131, @@ -9430,15 +9784,15 @@ pub mod summa { 129, 16, 97, - 8, - 219, + 9, + 49, 87, 97, - 8, - 219, + 9, + 49, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -9463,7 +9817,7 @@ pub mod summa { 21, 97, 9, - 24, + 110, 87, 80, 131, @@ -9474,14 +9828,14 @@ pub mod summa { 16, 97, 9, - 6, + 92, 87, 97, 9, - 6, + 92, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -9504,7 +9858,7 @@ pub mod summa { 91, 97, 9, - 111, + 197, 87, 96, 64, @@ -9586,7 +9940,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 80, @@ -9595,11 +9949,11 @@ pub mod summa { 128, 97, 9, - 124, + 210, 144, 97, 25, - 54, + 140, 86, 91, 145, @@ -9607,7 +9961,7 @@ pub mod summa { 80, 97, 7, - 41, + 127, 86, 91, 80, @@ -9649,13 +10003,13 @@ pub mod summa { 64, 81, 97, - 9, - 180, + 10, + 10, 145, 144, 97, 25, - 79, + 165, 86, 91, 96, @@ -9679,15 +10033,15 @@ pub mod summa { 129, 16, 97, - 9, - 212, + 10, + 42, 87, 97, - 9, - 212, + 10, + 42, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -9699,7 +10053,7 @@ pub mod summa { 1, 81, 96, - 3, + 4, 96, 0, 132, @@ -9724,7 +10078,7 @@ pub mod summa { 20, 97, 10, - 51, + 137, 87, 96, 64, @@ -9782,7 +10136,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 96, @@ -9794,8 +10148,8 @@ pub mod summa { 16, 21, 97, - 10, - 237, + 11, + 67, 87, 131, 129, @@ -9805,14 +10159,14 @@ pub mod summa { 16, 97, 10, - 81, + 167, 87, 97, 10, - 81, + 167, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -9824,7 +10178,7 @@ pub mod summa { 1, 81, 96, - 3, + 4, 96, 0, 133, @@ -9850,12 +10204,12 @@ pub mod summa { 131, 97, 10, - 124, + 210, 145, 144, 97, 23, - 162, + 248, 86, 91, 129, @@ -9864,14 +10218,14 @@ pub mod summa { 16, 97, 10, - 140, + 226, 87, 97, 10, - 140, + 226, 97, - 23, - 187, + 24, + 17, 86, 91, 144, @@ -9887,8 +10241,8 @@ pub mod summa { 84, 20, 97, - 10, - 219, + 11, + 49, 87, 96, 64, @@ -9950,17 +10304,17 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 128, 97, - 10, - 229, + 11, + 59, 129, 97, 25, - 54, + 140, 86, 91, 145, @@ -9968,7 +10322,7 @@ pub mod summa { 80, 97, 10, - 54, + 140, 86, 91, 80, @@ -10036,7 +10390,7 @@ pub mod summa { 144, 97, 11, - 60, + 146, 144, 134, 144, @@ -10046,8 +10400,8 @@ pub mod summa { 4, 1, 97, - 25, - 236, + 26, + 66, 86, 91, 96, @@ -10067,7 +10421,7 @@ pub mod summa { 21, 97, 11, - 89, + 175, 87, 61, 96, @@ -10107,12 +10461,12 @@ pub mod summa { 144, 97, 11, - 125, + 211, 145, 144, 97, 26, - 17, + 103, 86, 91, 148, @@ -10125,10 +10479,10 @@ pub mod summa { 91, 97, 11, - 141, + 227, 97, - 15, - 202, + 16, + 32, 86, 91, 131, @@ -10136,8 +10490,8 @@ pub mod summa { 0, 3, 97, - 11, - 208, + 12, + 38, 87, 96, 64, @@ -10195,7 +10549,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 129, @@ -10205,7 +10559,7 @@ pub mod summa { 20, 97, 12, - 63, + 149, 87, 96, 64, @@ -10306,7 +10660,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 96, @@ -10327,14 +10681,14 @@ pub mod summa { 21, 97, 12, - 91, + 177, 87, 97, 12, - 91, + 177, 97, - 18, - 195, + 19, + 25, 86, 91, 96, @@ -10360,7 +10714,7 @@ pub mod summa { 21, 97, 12, - 142, + 228, 87, 129, 96, @@ -10383,7 +10737,7 @@ pub mod summa { 129, 97, 12, - 121, + 207, 87, 144, 80, @@ -10408,15 +10762,15 @@ pub mod summa { 17, 21, 97, - 12, - 173, + 13, + 3, 87, 97, - 12, - 173, + 13, + 3, 97, - 18, - 195, + 19, + 25, 86, 91, 96, @@ -10441,8 +10795,8 @@ pub mod summa { 128, 21, 97, - 12, - 224, + 13, + 54, 87, 129, 96, @@ -10464,8 +10818,8 @@ pub mod summa { 144, 129, 97, - 12, - 203, + 13, + 33, 87, 144, 80, @@ -10483,7 +10837,7 @@ pub mod summa { 21, 97, 14, - 134, + 220, 87, 132, 129, @@ -10493,14 +10847,14 @@ pub mod summa { 16, 97, 13, - 1, + 87, 87, 97, 13, - 1, + 87, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -10524,7 +10878,7 @@ pub mod summa { 21, 97, 13, - 61, + 147, 87, 80, 132, @@ -10535,14 +10889,14 @@ pub mod summa { 16, 97, 13, - 43, + 129, 87, 97, 13, - 43, + 129, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -10565,7 +10919,7 @@ pub mod summa { 91, 97, 13, - 130, + 216, 87, 96, 64, @@ -10629,7 +10983,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 133, @@ -10640,14 +10994,14 @@ pub mod summa { 16, 97, 13, - 148, + 234, 87, 97, 13, - 148, + 234, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -10662,8 +11016,8 @@ pub mod summa { 0, 3, 97, - 13, - 253, + 14, + 83, 87, 96, 64, @@ -10752,7 +11106,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 132, @@ -10763,14 +11117,14 @@ pub mod summa { 16, 97, 14, - 15, + 101, 87, 97, 14, - 15, + 101, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -10793,14 +11147,14 @@ pub mod summa { 16, 97, 14, - 45, + 131, 87, 97, 14, - 45, + 131, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -10822,14 +11176,14 @@ pub mod summa { 16, 97, 14, - 74, + 160, 87, 97, 14, - 74, + 160, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -10852,14 +11206,14 @@ pub mod summa { 16, 97, 14, - 104, + 190, 87, 97, 14, - 104, + 190, 97, - 23, - 187, + 24, + 17, 86, 91, 96, @@ -10877,19 +11231,19 @@ pub mod summa { 128, 97, 14, - 126, + 212, 144, 97, 25, - 54, + 140, 86, 91, 145, 80, 80, 97, - 12, - 230, + 13, + 60, 86, 91, 80, @@ -10933,7 +11287,7 @@ pub mod summa { 129, 82, 96, - 3, + 4, 131, 82, 147, @@ -10952,8 +11306,8 @@ pub mod summa { 147, 146, 97, - 14, - 209, + 15, + 39, 146, 96, 1, @@ -10964,7 +11318,7 @@ pub mod summa { 144, 97, 16, - 116, + 202, 86, 91, 80, @@ -10976,8 +11330,8 @@ pub mod summa { 128, 81, 97, - 14, - 237, + 15, + 67, 145, 96, 2, @@ -10991,8 +11345,8 @@ pub mod summa { 1, 144, 97, - 16, - 191, + 17, + 21, 86, 91, 80, @@ -11005,7 +11359,7 @@ pub mod summa { 81, 97, 15, - 9, + 95, 145, 96, 3, @@ -11019,8 +11373,8 @@ pub mod summa { 1, 144, 97, - 16, - 191, + 17, + 21, 86, 91, 80, @@ -11069,14 +11423,14 @@ pub mod summa { 81, 97, 15, - 65, + 151, 147, 146, 145, 144, 97, 26, - 51, + 137, 86, 91, 96, @@ -11097,10 +11451,10 @@ pub mod summa { 91, 97, 15, - 89, + 175, 97, - 15, - 202, + 16, + 32, 86, 91, 96, @@ -11114,8 +11468,8 @@ pub mod summa { 129, 22, 97, - 15, - 190, + 16, + 20, 87, 96, 64, @@ -11201,16 +11555,16 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 97, - 15, - 199, + 16, + 29, 129, 97, 16, - 36, + 122, 86, 91, 80, @@ -11231,8 +11585,8 @@ pub mod summa { 51, 20, 97, - 4, - 188, + 5, + 18, 87, 96, 64, @@ -11303,7 +11657,7 @@ pub mod summa { 1, 97, 2, - 12, + 97, 86, 91, 96, @@ -11408,8 +11762,8 @@ pub mod summa { 130, 21, 97, - 16, - 175, + 17, + 5, 87, 145, 96, @@ -11423,8 +11777,8 @@ pub mod summa { 17, 21, 97, - 16, - 175, + 17, + 5, 87, 130, 81, @@ -11442,19 +11796,19 @@ pub mod summa { 144, 97, 16, - 148, + 234, 86, 91, 80, 97, - 16, - 187, + 17, + 17, 146, 145, 80, 97, 17, - 17, + 103, 86, 91, 80, @@ -11484,7 +11838,7 @@ pub mod summa { 21, 97, 17, - 5, + 91, 87, 145, 96, @@ -11499,20 +11853,20 @@ pub mod summa { 21, 97, 17, - 5, + 91, 87, 130, 81, 130, 144, 97, - 16, - 245, + 17, + 75, 144, 130, 97, 24, - 118, + 204, 86, 91, 80, @@ -11527,20 +11881,20 @@ pub mod summa { 1, 144, 97, - 16, - 223, + 17, + 53, 86, 91, 80, 97, - 16, - 187, + 17, + 17, 146, 145, 80, 97, 17, - 38, + 124, 86, 91, 91, @@ -11549,8 +11903,8 @@ pub mod summa { 17, 21, 97, - 16, - 187, + 17, + 17, 87, 96, 0, @@ -11561,7 +11915,7 @@ pub mod summa { 1, 97, 17, - 18, + 104, 86, 91, 128, @@ -11569,19 +11923,19 @@ pub mod summa { 17, 21, 97, - 16, - 187, + 17, + 17, 87, 96, 0, 97, 17, - 58, + 144, 130, 130, 97, 17, - 67, + 153, 86, 91, 80, @@ -11590,7 +11944,7 @@ pub mod summa { 1, 97, 17, - 38, + 124, 86, 91, 80, @@ -11598,11 +11952,11 @@ pub mod summa { 84, 97, 17, - 79, + 165, 144, 97, - 23, - 209, + 24, + 39, 86, 91, 96, @@ -11615,7 +11969,7 @@ pub mod summa { 16, 97, 17, - 95, + 181, 87, 80, 80, @@ -11642,13 +11996,13 @@ pub mod summa { 1, 144, 97, - 15, - 199, + 16, + 29, 145, 144, 97, 17, - 17, + 103, 86, 91, 96, @@ -11662,7 +12016,7 @@ pub mod summa { 21, 97, 17, - 143, + 229, 87, 96, 0, @@ -11684,8 +12038,8 @@ pub mod summa { 16, 21, 97, - 17, - 177, + 18, + 7, 87, 129, 129, @@ -11700,7 +12054,7 @@ pub mod summa { 1, 97, 17, - 153, + 239, 86, 91, 80, @@ -11720,8 +12074,8 @@ pub mod summa { 132, 82, 97, - 17, - 210, + 18, + 40, 129, 96, 32, @@ -11733,7 +12087,7 @@ pub mod summa { 1, 97, 17, - 150, + 236, 86, 91, 96, @@ -11765,16 +12119,16 @@ pub mod summa { 132, 82, 97, - 17, - 251, + 18, + 81, 96, 128, 133, 1, 130, 97, - 17, - 186, + 18, + 16, 86, 91, 144, @@ -11794,12 +12148,12 @@ pub mod summa { 82, 97, 18, - 20, + 106, 130, 130, 97, - 17, - 186, + 18, + 16, 86, 91, 145, @@ -11820,12 +12174,12 @@ pub mod summa { 82, 97, 18, - 46, + 132, 130, 130, 97, - 17, - 186, + 18, + 16, 86, 91, 145, @@ -11846,12 +12200,12 @@ pub mod summa { 82, 97, 18, - 72, + 158, 130, 130, 97, - 17, - 186, + 18, + 16, 86, 91, 149, @@ -11871,15 +12225,15 @@ pub mod summa { 0, 97, 18, - 100, + 186, 96, 32, 131, 1, 132, 97, - 17, - 230, + 18, + 60, 86, 91, 147, @@ -11897,15 +12251,15 @@ pub mod summa { 0, 97, 18, - 126, + 212, 96, 128, 131, 1, 135, 97, - 17, - 186, + 18, + 16, 86, 91, 130, @@ -11918,12 +12272,12 @@ pub mod summa { 82, 97, 18, - 144, + 230, 129, 135, 97, - 17, - 186, + 18, + 16, 86, 91, 144, @@ -11938,12 +12292,12 @@ pub mod summa { 82, 97, 18, - 164, + 250, 129, 134, 97, - 17, - 186, + 18, + 16, 86, 91, 144, @@ -11957,13 +12311,13 @@ pub mod summa { 1, 82, 97, - 18, - 184, + 19, + 14, 129, 133, 97, - 17, - 186, + 18, + 16, 86, 91, 151, @@ -12023,15 +12377,15 @@ pub mod summa { 23, 21, 97, - 18, - 252, + 19, + 82, 87, 97, - 18, - 252, + 19, + 82, 97, - 18, - 195, + 19, + 25, 86, 91, 96, @@ -12064,15 +12418,15 @@ pub mod summa { 23, 21, 97, - 18, - 252, + 19, + 82, 87, 97, - 18, - 252, + 19, + 82, 97, - 18, - 195, + 19, + 25, 86, 91, 96, @@ -12106,14 +12460,14 @@ pub mod summa { 21, 97, 19, - 78, + 164, 87, 97, 19, - 78, + 164, 97, - 18, - 195, + 19, + 25, 86, 91, 96, @@ -12140,14 +12494,14 @@ pub mod summa { 21, 97, 19, - 112, + 198, 87, 97, 19, - 112, + 198, 97, - 18, - 195, + 19, + 25, 86, 91, 80, @@ -12170,7 +12524,7 @@ pub mod summa { 18, 97, 19, - 139, + 225, 87, 96, 0, @@ -12193,19 +12547,19 @@ pub mod summa { 21, 97, 19, - 165, + 251, 87, 97, 19, - 165, + 251, 97, - 18, - 195, + 19, + 25, 86, 91, 97, - 19, - 184, + 20, + 14, 96, 31, 130, @@ -12219,7 +12573,7 @@ pub mod summa { 1, 97, 19, - 37, + 123, 86, 91, 129, @@ -12235,8 +12589,8 @@ pub mod summa { 17, 21, 97, - 19, - 205, + 20, + 35, 87, 96, 0, @@ -12283,8 +12637,8 @@ pub mod summa { 18, 21, 97, - 19, - 253, + 20, + 83, 87, 96, 0, @@ -12308,7 +12662,7 @@ pub mod summa { 21, 97, 20, - 21, + 107, 87, 96, 0, @@ -12328,7 +12682,7 @@ pub mod summa { 18, 97, 20, - 41, + 127, 87, 96, 0, @@ -12339,19 +12693,19 @@ pub mod summa { 53, 97, 20, - 60, + 146, 97, 20, - 55, + 141, 130, 97, 19, - 86, + 172, 86, 91, 97, 19, - 37, + 123, 86, 91, 129, @@ -12378,7 +12732,7 @@ pub mod summa { 21, 97, 20, - 91, + 177, 87, 96, 0, @@ -12395,7 +12749,7 @@ pub mod summa { 21, 97, 21, - 60, + 146, 87, 128, 53, @@ -12405,7 +12759,7 @@ pub mod summa { 21, 97, 20, - 118, + 204, 87, 96, 0, @@ -12427,7 +12781,7 @@ pub mod summa { 21, 97, 20, - 141, + 227, 87, 96, 0, @@ -12437,10 +12791,10 @@ pub mod summa { 91, 97, 20, - 149, + 235, 97, - 18, - 217, + 19, + 47, 86, 91, 136, @@ -12453,7 +12807,7 @@ pub mod summa { 21, 97, 20, - 167, + 253, 87, 96, 0, @@ -12462,8 +12816,8 @@ pub mod summa { 253, 91, 97, - 20, - 181, + 21, + 11, 141, 139, 131, @@ -12472,7 +12826,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 130, @@ -12489,8 +12843,8 @@ pub mod summa { 17, 21, 97, - 20, - 204, + 21, + 34, 87, 96, 0, @@ -12499,8 +12853,8 @@ pub mod summa { 253, 91, 97, - 20, - 218, + 21, + 48, 142, 140, 131, @@ -12509,7 +12863,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 139, @@ -12528,8 +12882,8 @@ pub mod summa { 17, 21, 97, - 20, - 243, + 21, + 73, 87, 96, 0, @@ -12539,7 +12893,7 @@ pub mod summa { 91, 97, 21, - 1, + 87, 143, 141, 131, @@ -12548,7 +12902,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 131, @@ -12569,7 +12923,7 @@ pub mod summa { 21, 97, 21, - 27, + 113, 87, 96, 0, @@ -12579,7 +12933,7 @@ pub mod summa { 91, 97, 21, - 41, + 127, 142, 140, 132, @@ -12588,7 +12942,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 144, @@ -12607,7 +12961,7 @@ pub mod summa { 1, 97, 20, - 95, + 181, 86, 91, 80, @@ -12633,7 +12987,7 @@ pub mod summa { 18, 97, 21, - 90, + 176, 87, 96, 0, @@ -12646,14 +13000,14 @@ pub mod summa { 32, 97, 21, - 106, + 192, 97, 20, - 55, + 141, 131, 97, 19, - 86, + 172, 86, 91, 130, @@ -12680,7 +13034,7 @@ pub mod summa { 21, 97, 21, - 137, + 223, 87, 96, 0, @@ -12697,7 +13051,7 @@ pub mod summa { 21, 97, 21, - 164, + 250, 87, 128, 53, @@ -12711,7 +13065,7 @@ pub mod summa { 1, 97, 21, - 141, + 227, 86, 91, 80, @@ -12738,8 +13092,8 @@ pub mod summa { 18, 21, 97, - 21, - 196, + 22, + 26, 87, 96, 0, @@ -12762,8 +13116,8 @@ pub mod summa { 17, 21, 97, - 21, - 220, + 22, + 50, 87, 96, 0, @@ -12771,15 +13125,15 @@ pub mod summa { 253, 91, 97, - 21, - 232, + 22, + 62, 135, 131, 136, 1, 97, 19, - 122, + 208, 86, 91, 148, @@ -12796,8 +13150,8 @@ pub mod summa { 17, 21, 97, - 21, - 254, + 22, + 84, 87, 96, 0, @@ -12807,14 +13161,14 @@ pub mod summa { 80, 97, 22, - 11, + 97, 134, 130, 135, 1, 97, 21, - 73, + 159, 86, 91, 146, @@ -12849,7 +13203,7 @@ pub mod summa { 21, 97, 22, - 50, + 136, 87, 96, 0, @@ -12880,7 +13234,7 @@ pub mod summa { 21, 97, 22, - 81, + 167, 87, 96, 0, @@ -12889,14 +13243,14 @@ pub mod summa { 91, 97, 22, - 93, + 179, 136, 131, 137, 1, 97, 21, - 73, + 159, 86, 91, 148, @@ -12914,7 +13268,7 @@ pub mod summa { 21, 97, 22, - 115, + 201, 87, 96, 0, @@ -12934,7 +13288,7 @@ pub mod summa { 18, 97, 22, - 135, + 221, 87, 96, 0, @@ -12943,15 +13297,15 @@ pub mod summa { 91, 97, 22, - 148, + 234, 97, 20, - 55, + 141, 131, 53, 97, 19, - 86, + 172, 86, 91, 130, @@ -12977,8 +13331,8 @@ pub mod summa { 17, 21, 97, - 22, - 179, + 23, + 9, 87, 96, 0, @@ -12996,7 +13350,7 @@ pub mod summa { 21, 97, 23, - 79, + 165, 87, 132, 129, @@ -13004,8 +13358,8 @@ pub mod summa { 17, 21, 97, - 22, - 206, + 23, + 36, 87, 96, 0, @@ -13028,8 +13382,8 @@ pub mod summa { 18, 21, 97, - 22, - 230, + 23, + 60, 87, 96, 0, @@ -13037,11 +13391,11 @@ pub mod summa { 253, 91, 97, - 22, - 238, + 23, + 68, 97, 19, - 2, + 88, 86, 91, 96, @@ -13055,7 +13409,7 @@ pub mod summa { 21, 97, 23, - 0, + 86, 87, 96, 0, @@ -13064,7 +13418,7 @@ pub mod summa { 91, 97, 23, - 15, + 101, 143, 96, 32, @@ -13074,7 +13428,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 130, @@ -13091,7 +13445,7 @@ pub mod summa { 21, 97, 23, - 36, + 122, 87, 96, 0, @@ -13100,7 +13454,7 @@ pub mod summa { 91, 97, 23, - 51, + 137, 143, 96, 32, @@ -13110,7 +13464,7 @@ pub mod summa { 1, 97, 19, - 122, + 208, 86, 91, 96, @@ -13137,8 +13491,8 @@ pub mod summa { 144, 80, 97, - 22, - 184, + 23, + 14, 86, 91, 80, @@ -13172,7 +13526,7 @@ pub mod summa { 21, 97, 23, - 117, + 203, 87, 96, 0, @@ -13195,7 +13549,7 @@ pub mod summa { 20, 97, 18, - 100, + 186, 87, 96, 0, @@ -13232,15 +13586,15 @@ pub mod summa { 17, 21, 97, - 23, - 181, + 24, + 11, 87, 97, - 23, - 181, + 24, + 11, 97, 23, - 140, + 226, 86, 91, 146, @@ -13281,8 +13635,8 @@ pub mod summa { 22, 128, 97, - 23, - 229, + 24, + 59, 87, 96, 127, @@ -13299,7 +13653,7 @@ pub mod summa { 3, 97, 24, - 5, + 91, 87, 99, 78, @@ -13335,7 +13689,7 @@ pub mod summa { 81, 97, 24, - 29, + 115, 129, 132, 96, @@ -13344,7 +13698,7 @@ pub mod summa { 1, 97, 17, - 150, + 236, 86, 91, 145, @@ -13364,7 +13718,7 @@ pub mod summa { 21, 97, 24, - 113, + 199, 87, 96, 0, @@ -13391,7 +13745,7 @@ pub mod summa { 21, 97, 24, - 78, + 164, 87, 80, 128, @@ -13414,7 +13768,7 @@ pub mod summa { 21, 97, 24, - 109, + 195, 87, 130, 129, @@ -13424,7 +13778,7 @@ pub mod summa { 1, 97, 24, - 90, + 176, 86, 91, 80, @@ -13452,34 +13806,34 @@ pub mod summa { 21, 97, 24, - 144, + 230, 87, 97, 24, - 144, + 230, 97, - 18, - 195, + 19, + 25, 86, 91, 97, 24, - 164, + 250, 129, 97, 24, - 158, + 244, 132, 84, 97, - 23, - 209, + 24, + 39, 86, 91, 132, 97, 24, - 39, + 125, 86, 91, 96, @@ -13494,16 +13848,16 @@ pub mod summa { 129, 20, 97, - 24, - 217, + 25, + 47, 87, 96, 0, 132, 21, 97, - 24, - 193, + 25, + 23, 87, 80, 133, @@ -13532,7 +13886,7 @@ pub mod summa { 85, 97, 24, - 109, + 195, 86, 91, 96, @@ -13557,7 +13911,7 @@ pub mod summa { 21, 97, 25, - 8, + 94, 87, 136, 134, @@ -13578,8 +13932,8 @@ pub mod summa { 132, 1, 97, - 24, - 233, + 25, + 63, 86, 91, 80, @@ -13589,7 +13943,7 @@ pub mod summa { 21, 97, 25, - 38, + 124, 87, 135, 133, @@ -13636,14 +13990,14 @@ pub mod summa { 1, 97, 25, - 72, + 158, 87, 97, 25, - 72, + 158, 97, 23, - 140, + 226, 86, 91, 80, @@ -13698,7 +14052,7 @@ pub mod summa { 21, 97, 25, - 164, + 250, 87, 96, 63, @@ -13711,13 +14065,13 @@ pub mod summa { 82, 97, 25, - 146, + 232, 133, 131, 81, 97, - 17, - 230, + 18, + 60, 86, 91, 148, @@ -13735,7 +14089,7 @@ pub mod summa { 1, 97, 25, - 118, + 204, 86, 91, 80, @@ -13776,8 +14130,8 @@ pub mod summa { 16, 21, 97, - 25, - 225, + 26, + 55, 87, 129, 81, @@ -13795,8 +14149,8 @@ pub mod summa { 1, 1, 97, - 25, - 197, + 26, + 27, 86, 91, 80, @@ -13817,16 +14171,16 @@ pub mod summa { 96, 0, 97, - 25, - 255, + 26, + 85, 96, 64, 131, 1, 133, 97, - 25, - 177, + 26, + 7, 86, 91, 130, @@ -13839,12 +14193,12 @@ pub mod summa { 82, 97, 18, - 72, + 158, 129, 133, 97, - 17, - 186, + 18, + 16, 86, 91, 96, @@ -13858,7 +14212,7 @@ pub mod summa { 21, 97, 26, - 35, + 121, 87, 96, 0, @@ -13874,7 +14228,7 @@ pub mod summa { 20, 97, 18, - 100, + 186, 87, 96, 0, @@ -13896,15 +14250,15 @@ pub mod summa { 82, 97, 26, - 77, + 163, 96, 96, 132, 1, 134, 97, - 25, - 177, + 26, + 7, 86, 91, 96, @@ -13946,8 +14300,8 @@ pub mod summa { 16, 21, 97, - 26, - 191, + 27, + 21, 87, 134, 131, @@ -13967,14 +14321,14 @@ pub mod summa { 82, 97, 26, - 147, + 233, 136, 134, 1, 130, 97, - 17, - 186, + 18, + 16, 86, 91, 145, @@ -13992,13 +14346,13 @@ pub mod summa { 144, 80, 97, - 26, - 171, + 27, + 1, 129, 131, 97, - 17, - 186, + 18, + 16, 86, 91, 150, @@ -14018,7 +14372,7 @@ pub mod summa { 1, 97, 26, - 111, + 197, 86, 91, 80, @@ -14048,38 +14402,38 @@ pub mod summa { 34, 18, 32, - 146, - 153, - 55, + 20, 51, - 122, - 209, - 108, - 97, + 238, + 153, + 39, + 35, + 115, + 182, 114, - 226, - 22, - 59, - 196, - 94, - 211, - 145, + 60, + 37, 63, - 229, - 31, - 142, - 92, - 232, - 202, - 195, - 172, - 128, - 115, - 208, - 21, + 144, + 255, + 224, + 25, + 64, + 136, + 155, + 150, + 65, + 240, + 132, 147, - 237, - 215, + 25, + 242, + 243, + 42, + 54, + 203, + 20, + 90, 100, 115, 111, @@ -14198,6 +14552,14 @@ pub mod summa { .method_hash([73, 206, 137, 151], p0) .expect("method not found (this should never happen)") } + ///Calls the contract's `config` (0x79502c55) function + pub fn config( + &self, + ) -> ::ethers::contract::builders::ContractCall { + self.0 + .method_hash([121, 80, 44, 85], ()) + .expect("method not found (this should never happen)") + } ///Calls the contract's `getAddressOwnershipProof` (0x19b33968) function pub fn get_address_ownership_proof( &self, @@ -14450,6 +14812,19 @@ pub mod summa { )] #[ethcall(name = "commitments", abi = "commitments(uint256)")] pub struct CommitmentsCall(pub ::ethers::core::types::U256); + ///Container type for all input parameters for the `config` function with signature `config()` and selector `0x79502c55` + #[derive( + Clone, + ::ethers::contract::EthCall, + ::ethers::contract::EthDisplay, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + #[ethcall(name = "config", abi = "config()")] + pub struct ConfigCall; ///Container type for all input parameters for the `getAddressOwnershipProof` function with signature `getAddressOwnershipProof(bytes32)` and selector `0x19b33968` #[derive( Clone, @@ -14573,6 +14948,7 @@ pub mod summa { pub enum SummaCalls { AddressOwnershipProofs(AddressOwnershipProofsCall), Commitments(CommitmentsCall), + Config(ConfigCall), GetAddressOwnershipProof(GetAddressOwnershipProofCall), Owner(OwnerCall), RenounceOwnership(RenounceOwnershipCall), @@ -14596,6 +14972,10 @@ pub mod summa { = ::decode(data) { return Ok(Self::Commitments(decoded)); } + if let Ok(decoded) + = ::decode(data) { + return Ok(Self::Config(decoded)); + } if let Ok(decoded) = ::decode( data, @@ -14648,6 +15028,7 @@ pub mod summa { Self::Commitments(element) => { ::ethers::core::abi::AbiEncode::encode(element) } + Self::Config(element) => ::ethers::core::abi::AbiEncode::encode(element), Self::GetAddressOwnershipProof(element) => { ::ethers::core::abi::AbiEncode::encode(element) } @@ -14677,6 +15058,7 @@ pub mod summa { ::core::fmt::Display::fmt(element, f) } Self::Commitments(element) => ::core::fmt::Display::fmt(element, f), + Self::Config(element) => ::core::fmt::Display::fmt(element, f), Self::GetAddressOwnershipProof(element) => { ::core::fmt::Display::fmt(element, f) } @@ -14703,6 +15085,11 @@ pub mod summa { Self::Commitments(value) } } + impl ::core::convert::From for SummaCalls { + fn from(value: ConfigCall) -> Self { + Self::Config(value) + } + } impl ::core::convert::From for SummaCalls { fn from(value: GetAddressOwnershipProofCall) -> Self { Self::GetAddressOwnershipProof(value) @@ -14769,6 +15156,22 @@ pub mod summa { pub struct CommitmentsReturn { pub mst_root: ::ethers::core::types::U256, } + ///Container type for all return fields from the `config` function with signature `config()` and selector `0x79502c55` + #[derive( + Clone, + ::ethers::contract::EthAbiType, + ::ethers::contract::EthAbiCodec, + Default, + Debug, + PartialEq, + Eq, + Hash + )] + pub struct ConfigReturn { + pub mst_levels: u16, + pub assets_count: u16, + pub balance_byte_range: u8, + } ///Container type for all return fields from the `getAddressOwnershipProof` function with signature `getAddressOwnershipProof(bytes32)` and selector `0x19b33968` #[derive( Clone, diff --git a/backend/src/tests.rs b/backend/src/tests.rs index 753153ea..572641e0 100644 --- a/backend/src/tests.rs +++ b/backend/src/tests.rs @@ -1,6 +1,7 @@ use std::{sync::Arc, time::Duration}; use ethers::{ + abi::Token, prelude::SignerMiddleware, providers::{Http, Middleware, Provider}, signers::{LocalWallet, Signer}, @@ -56,22 +57,35 @@ pub async fn initialize_test_env( .await; } - if block_time != None { + if block_time.is_some() { time::sleep(Duration::from_secs(block_time.unwrap())).await; }; - let inclusion_verifer_contract = InclusionVerifier::deploy(Arc::clone(&client), ()) + let inclusion_verifier_contract = InclusionVerifier::deploy(Arc::clone(&client), ()) .unwrap() .send() .await .unwrap(); - if block_time != None { + if block_time.is_some() { time::sleep(Duration::from_secs(block_time.unwrap())).await; }; + // The number of levels of the Merkle sum tree + let mst_levels = 4; + //The number of cryptocurrency assets per user included in the Merkle sum tree + let assets_count = 2; + // The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree + let balance_byte_range = 14; + + let args: &[Token] = &[ + Token::Address(inclusion_verifier_contract.address()), + Token::Uint(mst_levels.into()), + Token::Uint(assets_count.into()), + Token::Uint(balance_byte_range.into()), + ]; // Deploy Summa contract - let summa_contract = Summa::deploy(Arc::clone(&client), inclusion_verifer_contract.address()) + let summa_contract = Summa::deploy(Arc::clone(&client), args) .unwrap() .send() .await diff --git a/contracts/README.md b/contracts/README.md index 783c12ac..fbeea6c1 100644 --- a/contracts/README.md +++ b/contracts/README.md @@ -39,5 +39,11 @@ npx hardhat coverage npx hardhat run scripts/deploy.ts --network localhost ``` +The following Summa contract parameters are passed to its constructor inside the deployment script: + +- verifier contract address (set automatically after the script deploys the verifier); +- the number of levels of the Merkle sum tree; +- the number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree. + The deployment script writes the latest deployment address for the chain to the [deployments](./../backend/src/contracts/deployments.json) file in the backend project. This data can later be used by the backend module to connect to the deployed contract. The deployment script will copy the contract ABIs from the ./artifacts/src/ to the [backend](./../backend/src/contracts/abi/) module. The backend buildscript will then be able to generate the updated contract interfaces (see the backend [readme](./../backend/README.md)). diff --git a/contracts/scripts/deploy.ts b/contracts/scripts/deploy.ts index 5329c0d3..28b95ab1 100644 --- a/contracts/scripts/deploy.ts +++ b/contracts/scripts/deploy.ts @@ -15,8 +15,17 @@ async function main() { ); await inclusionVerifier.deployed(); + // The number of levels of the Merkle sum tree + const mstLevels = 4; + //The number of cryptocurrency assets per user included in the Merkle sum tree + const assetsCount = 2; + // The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree + const balanceByteRange = 14; const summa = await ethers.deployContract("Summa", [ inclusionVerifier.address, + mstLevels, + assetsCount, + balanceByteRange, ]); await summa.deployed(); diff --git a/contracts/src/InclusionVerifier.sol b/contracts/src/InclusionVerifier.sol index cf3289a9..cb77bddd 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[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), 10713647047137275325514842673052213194938514302175862889195177290473686162583) { 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), 0x046611b44bb4f4cd8fcf6f82fed641d34961b88a6012df5e0f44d4f40248d57b) mstore(add(transcript, 0x5760), 0x25b84353a92c37bb156457e31b9133dc81245e1f3774b898f41cf59a7b0adf57)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), 0x259da9f643187930ce1299a3f700a93f17cf3129bffe184a6de1cf19f0b91f7e) mstore(add(transcript, 0x5840), 0x29fcbc05cd2c0152b3eb21e8fd01a00bc79780f21281598873fb955dba235f7e)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), 0x2b99cb49ca685626a08c009ea442fc895a2f86cca1f29f18d4b7ec9ece937aa2) mstore(add(transcript, 0x5920), 0x20a45cae33f3917205b76aeb87e409350840664058839b1db76f8761db50fac8)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), 0x25a265a57942223657b3316c913bffe8db0efedbed9ac878308e1d63d4df61d8) mstore(add(transcript, 0x5a00), 0x0d2f79604094b53fd56a955d2574e241ad67498ab320f2bb764841f5c903bff9)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), 0x0160a474a2c8de56950bbe25d6f09002a91f2cc20fbdb15e8413f1176e7f1865) mstore(add(transcript, 0x5bc0), 0x1d0f5797eaaea89e5119e4260db563605a84d004b8efd02c51b960bfecf20e90)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), 0x02b619a2a245b370b3319e21e0be467256209338cf9546447b875a2779e010d4) mstore(add(transcript, 0x5ca0), 0x07d7f03df06345ba2df20bb867841f60ebd25daab5aafa13ddc1413116996802)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), 0x203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b) mstore(add(transcript, 0x5d80), 0x04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097)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), 0x20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91) mstore(add(transcript, 0x5e60), 0x2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd)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), 0x13caf6fa687a546fd1eeb9e0d43a9f8fe9a3f05322f5edda1b95d50e83839851) mstore(add(transcript, 0x5f40), 0x22e2768775e2d96fd8925c48a99df2b248cb3d893a15b9dca81660b79cc35f4a)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), 0x19a074dc6d1a0f1e5589a55d9c4955cf867e2899dbfd46a11c27a84804b5b239) mstore(add(transcript, 0x6020), 0x26b112fb59a0b875833e52f951b3b010826b169f320d80597f1275544ae24897)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), 0x1c6df6612866079dc2a52525842c8025502eb5a8913c560836c4bc7ab2dc334e) mstore(add(transcript, 0x6100), 0x0d36fe2bf6d58291ed035a1f090904639502213a2449227d156ee3f8f6372e2c)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), 0x01add1e14d0a1880ee8e837b20502713d06428d55d61fea8fea89a71648971fa) mstore(add(transcript, 0x61e0), 0x12c982466ea6dcfada3ad0e277fed44f770466650d4704906a4d34b6b8d8bed1)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), 0x2faee9fe4eb97b37abb4fdd1b604ed8acf55df0a370bcfe7f5615b7598989d7a) mstore(add(transcript, 0x62c0), 0x2269aff86c3fd35864f3e2cb39db623e0122a05b6b5f789ff57434e557a90c23)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), 0x01b6921cc4c35a03d696e754bac06edba8187499252d98da7e7d40b844f24245) mstore(add(transcript, 0x6480), 0x181dfa294889601a9cc57448d966b9cc60e7795ab336d2078dc43aeb888484fb)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), 0x0f0dcdaa6fd2f36460376557f9d6b4b0985b085d2d8ffca7c6c408d8560d5d08) mstore(add(transcript, 0x6560), 0x0bc4e7f7a927678093e4be2bfb543ab7d6267ee943e8ed13369a3b3c9ef23779)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; } } + bytes32[916] 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), 7290356956133308795219632317546298177560913853825373832110764139479796737523) { 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), addmod(mload(add(transcript, 0x620)), sub(f_q, mload(add(transcript, 0x600))), f_q))mstore(add(transcript, 0x1fc0), mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x1fa0)), f_q))mstore(add(transcript, 0x1fe0), addmod(mload(add(transcript, 0x1fc0)), mload(add(transcript, 0x600)), 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, 0x1ee0)), 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, 0x420)), mload(add(transcript, 0x2040)), f_q))mstore(add(transcript, 0x2080), addmod(mload(add(transcript, 0x600)), sub(f_q, mload(add(transcript, 0x620))), f_q))mstore(add(transcript, 0x20a0), mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x2080)), f_q))mstore(add(transcript, 0x20c0), addmod(mload(add(transcript, 0x20a0)), mload(add(transcript, 0x620)), f_q))mstore(add(transcript, 0x20e0), addmod(mload(add(transcript, 0x20c0)), sub(f_q, mload(add(transcript, 0x660))), f_q))mstore(add(transcript, 0x2100), mulmod(mload(add(transcript, 0x20e0)), mload(add(transcript, 0x1ee0)), f_q))mstore(add(transcript, 0x2120), addmod(mload(add(transcript, 0x2060)), mload(add(transcript, 0x2100)), f_q))mstore(add(transcript, 0x2140), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2120)), f_q))mstore(add(transcript, 0x2160), mulmod(mload(add(transcript, 0x1da0)), mload(add(transcript, 0x1a00)), f_q))mstore(add(transcript, 0x2180), mulmod(mload(add(transcript, 0x1a60)), mload(add(transcript, 0x2160)), f_q))mstore(add(transcript, 0x21a0), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x620)), f_q))mstore(add(transcript, 0x21c0), addmod(mload(add(transcript, 0x21a0)), sub(f_q, mload(add(transcript, 0x680))), f_q))mstore(add(transcript, 0x21e0), mulmod(mload(add(transcript, 0x21c0)), mload(add(transcript, 0x2180)), f_q))mstore(add(transcript, 0x2200), addmod(mload(add(transcript, 0x2140)), mload(add(transcript, 0x21e0)), f_q))mstore(add(transcript, 0x2220), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2200)), f_q))mstore(add(transcript, 0x2240), addmod(mload(add(transcript, 0x2220)), mload(add(transcript, 0x21e0)), f_q))mstore(add(transcript, 0x2260), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2240)), f_q))mstore(add(transcript, 0x2280), addmod(1, sub(f_q, mload(add(transcript, 0x920))), f_q))mstore(add(transcript, 0x22a0), mulmod(mload(add(transcript, 0x2280)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x22c0), addmod(mload(add(transcript, 0x2260)), mload(add(transcript, 0x22a0)), f_q))mstore(add(transcript, 0x22e0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x22c0)), f_q))mstore(add(transcript, 0x2300), mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2320), addmod(mload(add(transcript, 0x2300)), sub(f_q, mload(add(transcript, 0x980))), f_q))mstore(add(transcript, 0x2340), mulmod(mload(add(transcript, 0x2320)), mload(add(transcript, 0x1240)), f_q))mstore(add(transcript, 0x2360), addmod(mload(add(transcript, 0x22e0)), 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(mload(add(transcript, 0x980)), sub(f_q, mload(add(transcript, 0x960))), f_q))mstore(add(transcript, 0x23c0), mulmod(mload(add(transcript, 0x23a0)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x23e0), addmod(mload(add(transcript, 0x2380)), mload(add(transcript, 0x23c0)), f_q))mstore(add(transcript, 0x2400), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x23e0)), f_q))mstore(add(transcript, 0x2420), addmod(1, sub(f_q, mload(add(transcript, 0x1240))), f_q))mstore(add(transcript, 0x2440), addmod(mload(add(transcript, 0x1260)), mload(add(transcript, 0x1280)), f_q))mstore(add(transcript, 0x2460), addmod(mload(add(transcript, 0x2440)), mload(add(transcript, 0x12a0)), f_q))mstore(add(transcript, 0x2480), addmod(mload(add(transcript, 0x2460)), mload(add(transcript, 0x12c0)), f_q))mstore(add(transcript, 0x24a0), addmod(mload(add(transcript, 0x2480)), mload(add(transcript, 0x12e0)), f_q))mstore(add(transcript, 0x24c0), addmod(mload(add(transcript, 0x2420)), sub(f_q, mload(add(transcript, 0x24a0))), f_q))mstore(add(transcript, 0x24e0), mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2500), addmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x24e0)), f_q))mstore(add(transcript, 0x2520), addmod(mload(add(transcript, 0x2500)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2540), mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2560), addmod(mload(add(transcript, 0x600)), 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, 0x8a0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x25e0), addmod(mload(add(transcript, 0x620)), 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, 0x8c0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2660), addmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x2640)), f_q))mstore(add(transcript, 0x2680), addmod(mload(add(transcript, 0x2660)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x26a0), mulmod(mload(add(transcript, 0x2680)), mload(add(transcript, 0x2620)), f_q))mstore(add(transcript, 0x26c0), mulmod(mload(add(transcript, 0x26a0)), mload(add(transcript, 0x940)), f_q))mstore(add(transcript, 0x26e0), mulmod(1, 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, 0x6e0)), 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(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2780), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2760)), f_q))mstore(add(transcript, 0x27a0), addmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x2780)), f_q))mstore(add(transcript, 0x27c0), addmod(mload(add(transcript, 0x27a0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x27e0), mulmod(mload(add(transcript, 0x27c0)), mload(add(transcript, 0x2740)), f_q))mstore(add(transcript, 0x2800), mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2820), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2800)), f_q))mstore(add(transcript, 0x2840), addmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x2820)), f_q))mstore(add(transcript, 0x2860), addmod(mload(add(transcript, 0x2840)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2880), mulmod(mload(add(transcript, 0x2860)), mload(add(transcript, 0x27e0)), f_q))mstore(add(transcript, 0x28a0), mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x28c0), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x28a0)), f_q))mstore(add(transcript, 0x28e0), addmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x28c0)), f_q))mstore(add(transcript, 0x2900), addmod(mload(add(transcript, 0x28e0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2920), mulmod(mload(add(transcript, 0x2900)), mload(add(transcript, 0x2880)), f_q))mstore(add(transcript, 0x2940), mulmod(mload(add(transcript, 0x2920)), mload(add(transcript, 0x920)), f_q))mstore(add(transcript, 0x2960), addmod(mload(add(transcript, 0x26c0)), sub(f_q, mload(add(transcript, 0x2940))), f_q))mstore(add(transcript, 0x2980), mulmod(mload(add(transcript, 0x2960)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x29a0), addmod(mload(add(transcript, 0x2400)), mload(add(transcript, 0x2980)), f_q))mstore(add(transcript, 0x29c0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x29a0)), f_q))mstore(add(transcript, 0x29e0), mulmod(mload(add(transcript, 0x8e0)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2a00), addmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x29e0)), f_q))mstore(add(transcript, 0x2a20), addmod(mload(add(transcript, 0x2a00)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2a40), mulmod(mload(add(transcript, 0x900)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2a60), addmod(mload(add(transcript, 0x1380)), mload(add(transcript, 0x2a40)), f_q))mstore(add(transcript, 0x2a80), addmod(mload(add(transcript, 0x2a60)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2aa0), mulmod(mload(add(transcript, 0x2a80)), mload(add(transcript, 0x2a20)), f_q))mstore(add(transcript, 0x2ac0), mulmod(mload(add(transcript, 0x2aa0)), mload(add(transcript, 0x9a0)), f_q))mstore(add(transcript, 0x2ae0), mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, 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, 0x680)), 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(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2b80), mulmod(mload(add(transcript, 0x5c0)), mload(add(transcript, 0x2b60)), f_q))mstore(add(transcript, 0x2ba0), addmod(mload(add(transcript, 0x1380)), mload(add(transcript, 0x2b80)), f_q))mstore(add(transcript, 0x2bc0), addmod(mload(add(transcript, 0x2ba0)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2be0), mulmod(mload(add(transcript, 0x2bc0)), mload(add(transcript, 0x2b40)), f_q))mstore(add(transcript, 0x2c00), mulmod(mload(add(transcript, 0x2be0)), mload(add(transcript, 0x980)), f_q))mstore(add(transcript, 0x2c20), addmod(mload(add(transcript, 0x2ac0)), sub(f_q, mload(add(transcript, 0x2c00))), f_q))mstore(add(transcript, 0x2c40), mulmod(mload(add(transcript, 0x2c20)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x2c60), addmod(mload(add(transcript, 0x29c0)), 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), addmod(1, sub(f_q, mload(add(transcript, 0x9c0))), f_q))mstore(add(transcript, 0x2cc0), mulmod(mload(add(transcript, 0x2ca0)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x2ce0), addmod(mload(add(transcript, 0x2c80)), mload(add(transcript, 0x2cc0)), f_q))mstore(add(transcript, 0x2d00), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2ce0)), f_q))mstore(add(transcript, 0x2d20), mulmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x9c0)), f_q))mstore(add(transcript, 0x2d40), addmod(mload(add(transcript, 0x2d20)), sub(f_q, mload(add(transcript, 0x9c0))), f_q))mstore(add(transcript, 0x2d60), mulmod(mload(add(transcript, 0x2d40)), mload(add(transcript, 0x1240)), f_q))mstore(add(transcript, 0x2d80), addmod(mload(add(transcript, 0x2d00)), mload(add(transcript, 0x2d60)), f_q))mstore(add(transcript, 0x2da0), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2d80)), f_q))mstore(add(transcript, 0x2dc0), addmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2de0), mulmod(mload(add(transcript, 0x2dc0)), mload(add(transcript, 0x9e0)), f_q))mstore(add(transcript, 0x2e00), addmod(mload(add(transcript, 0xa40)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2e20), mulmod(mload(add(transcript, 0x2e00)), mload(add(transcript, 0x2de0)), f_q))mstore(add(transcript, 0x2e40), mulmod(256, mload(add(transcript, 0x640)), f_q))mstore(add(transcript, 0x2e60), addmod(mload(add(transcript, 0x600)), sub(f_q, mload(add(transcript, 0x2e40))), f_q))mstore(add(transcript, 0x2e80), mulmod(mload(add(transcript, 0x2e60)), mload(add(transcript, 0x780)), f_q))mstore(add(transcript, 0x2ea0), addmod(mload(add(transcript, 0x2e80)), mload(add(transcript, 0x260)), f_q))mstore(add(transcript, 0x2ec0), mulmod(mload(add(transcript, 0x2ea0)), mload(add(transcript, 0x9c0)), f_q))mstore(add(transcript, 0x2ee0), addmod(mload(add(transcript, 0x760)), mload(add(transcript, 0x2c0)), f_q))mstore(add(transcript, 0x2f00), mulmod(mload(add(transcript, 0x2ee0)), mload(add(transcript, 0x2ec0)), f_q))mstore(add(transcript, 0x2f20), addmod(mload(add(transcript, 0x2e20)), sub(f_q, mload(add(transcript, 0x2f00))), f_q))mstore(add(transcript, 0x2f40), mulmod(mload(add(transcript, 0x2f20)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x2f60), addmod(mload(add(transcript, 0x2da0)), 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), addmod(mload(add(transcript, 0xa00)), sub(f_q, mload(add(transcript, 0xa40))), f_q))mstore(add(transcript, 0x2fc0), mulmod(mload(add(transcript, 0x2fa0)), mload(add(transcript, 0x1300)), f_q))mstore(add(transcript, 0x2fe0), addmod(mload(add(transcript, 0x2f80)), mload(add(transcript, 0x2fc0)), f_q))mstore(add(transcript, 0x3000), mulmod(mload(add(transcript, 0x420)), mload(add(transcript, 0x2fe0)), f_q))mstore(add(transcript, 0x3020), mulmod(mload(add(transcript, 0x2fa0)), mload(add(transcript, 0x24c0)), f_q))mstore(add(transcript, 0x3040), addmod(mload(add(transcript, 0xa00)), sub(f_q, mload(add(transcript, 0xa20))), f_q))mstore(add(transcript, 0x3060), mulmod(mload(add(transcript, 0x3040)), mload(add(transcript, 0x3020)), f_q))mstore(add(transcript, 0x3080), addmod(mload(add(transcript, 0x3000)), mload(add(transcript, 0x3060)), f_q))mstore(add(transcript, 0x30a0), mulmod(mload(add(transcript, 0xd40)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x30c0), mulmod(mload(add(transcript, 0x30a0)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x30e0), mulmod(mload(add(transcript, 0x30c0)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3100), mulmod(mload(add(transcript, 0x30e0)), mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3120), mulmod(1, mload(add(transcript, 0xd40)), f_q))mstore(add(transcript, 0x3140), mulmod(1, mload(add(transcript, 0x30a0)), f_q))mstore(add(transcript, 0x3160), mulmod(1, mload(add(transcript, 0x30c0)), f_q))mstore(add(transcript, 0x3180), mulmod(1, mload(add(transcript, 0x30e0)), f_q))mstore(add(transcript, 0x31a0), mulmod(mload(add(transcript, 0x3080)), mload(add(transcript, 0xd60)), f_q))mstore(add(transcript, 0x31c0), mulmod(mload(add(transcript, 0xc00)), mload(add(transcript, 0x5c0)), f_q))mstore(add(transcript, 0x31e0), mulmod(mload(add(transcript, 0x5c0)), 1, 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)), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q))mstore(add(transcript, 0x3240), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x3220))), f_q))mstore(add(transcript, 0x3260), mulmod(mload(add(transcript, 0x5c0)), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q))mstore(add(transcript, 0x3280), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x3260))), f_q))mstore(add(transcript, 0x32a0), mulmod(mload(add(transcript, 0x5c0)), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q))mstore(add(transcript, 0x32c0), addmod(mload(add(transcript, 0xb80)), sub(f_q, mload(add(transcript, 0x32a0))), 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, 0x32e0), 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, 0x3300), 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, 0x3320), result) }mstore(add(transcript, 0x3340), mulmod(1, mload(add(transcript, 0x3200)), f_q))mstore(add(transcript, 0x3360), mulmod(mload(add(transcript, 0x3340)), mload(add(transcript, 0x3240)), f_q))mstore(add(transcript, 0x3380), mulmod(mload(add(transcript, 0x3360)), mload(add(transcript, 0x32c0)), 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, 0x33a0), 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, 0x33c0), 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, 0x33e0), 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, 0x3400), result) }mstore(add(transcript, 0x3420), mulmod(mload(add(transcript, 0x3360)), mload(add(transcript, 0x3280)), 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, 0x3440), 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, 0x3460), 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, 0x3480), 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, 0x34a0), result) }mstore(add(transcript, 0x34c0), mulmod(mload(add(transcript, 0x3340)), mload(add(transcript, 0x32c0)), f_q)){ let prod := mload(add(transcript, 0x32e0)) prod := mulmod(mload(add(transcript, 0x3300)), prod, f_q) mstore(add(transcript, 0x34e0), prod) prod := mulmod(mload(add(transcript, 0x3320)), prod, f_q) mstore(add(transcript, 0x3500), prod) prod := mulmod(mload(add(transcript, 0x33a0)), prod, f_q) mstore(add(transcript, 0x3520), prod) prod := mulmod(mload(add(transcript, 0x3340)), 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, 0x3400)), prod, f_q) mstore(add(transcript, 0x35a0), prod) prod := mulmod(mload(add(transcript, 0x3420)), prod, f_q) mstore(add(transcript, 0x35c0), prod) prod := mulmod(mload(add(transcript, 0x3440)), prod, f_q) mstore(add(transcript, 0x35e0), prod) prod := mulmod(mload(add(transcript, 0x3460)), prod, f_q) mstore(add(transcript, 0x3600), prod) prod := mulmod(mload(add(transcript, 0x3360)), prod, f_q) mstore(add(transcript, 0x3620), prod) prod := mulmod(mload(add(transcript, 0x3480)), prod, f_q) mstore(add(transcript, 0x3640), prod) prod := mulmod(mload(add(transcript, 0x34a0)), prod, f_q) mstore(add(transcript, 0x3660), prod) prod := mulmod(mload(add(transcript, 0x34c0)), prod, f_q) mstore(add(transcript, 0x3680), prod) }mstore(add(transcript, 0x36c0), 32)mstore(add(transcript, 0x36e0), 32)mstore(add(transcript, 0x3700), 32)mstore(add(transcript, 0x3720), mload(add(transcript, 0x3680)))mstore(add(transcript, 0x3740), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x3760), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x36c0), 0xc0, add(transcript, 0x36a0), 0x20), 1), success){ let inv := mload(add(transcript, 0x36a0)) let v v := mload(add(transcript, 0x34c0)) mstore(add(transcript, 0x34c0), mulmod(mload(add(transcript, 0x3660)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x34a0)) mstore(add(transcript, 0x34a0), mulmod(mload(add(transcript, 0x3640)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3480)) mstore(add(transcript, 0x3480), mulmod(mload(add(transcript, 0x3620)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3360)) mstore(add(transcript, 0x3360), mulmod(mload(add(transcript, 0x3600)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3460)) mstore(add(transcript, 0x3460), mulmod(mload(add(transcript, 0x35e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3440)) mstore(add(transcript, 0x3440), mulmod(mload(add(transcript, 0x35c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3420)) mstore(add(transcript, 0x3420), mulmod(mload(add(transcript, 0x35a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3400)) mstore(add(transcript, 0x3400), 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, 0x3340)) mstore(add(transcript, 0x3340), mulmod(mload(add(transcript, 0x3520)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x33a0)) mstore(add(transcript, 0x33a0), mulmod(mload(add(transcript, 0x3500)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3320)) mstore(add(transcript, 0x3320), mulmod(mload(add(transcript, 0x34e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3300)) mstore(add(transcript, 0x3300), mulmod(mload(add(transcript, 0x32e0)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x32e0), inv) }{ let result := mload(add(transcript, 0x32e0))result := addmod(mload(add(transcript, 0x3300)), result, f_q)result := addmod(mload(add(transcript, 0x3320)), result, f_q)mstore(add(transcript, 0x3780), result) }mstore(add(transcript, 0x37a0), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x3340)), f_q)){ let result := mload(add(transcript, 0x33a0))mstore(add(transcript, 0x37c0), result) }mstore(add(transcript, 0x37e0), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x3420)), f_q)){ let result := mload(add(transcript, 0x33c0))result := addmod(mload(add(transcript, 0x33e0)), result, f_q)result := addmod(mload(add(transcript, 0x3400)), result, f_q)mstore(add(transcript, 0x3800), result) }mstore(add(transcript, 0x3820), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x3360)), f_q)){ let result := mload(add(transcript, 0x3440))result := addmod(mload(add(transcript, 0x3460)), result, f_q)mstore(add(transcript, 0x3840), result) }mstore(add(transcript, 0x3860), mulmod(mload(add(transcript, 0x3380)), mload(add(transcript, 0x34c0)), f_q)){ let result := mload(add(transcript, 0x3480))result := addmod(mload(add(transcript, 0x34a0)), result, f_q)mstore(add(transcript, 0x3880), result) }{ let prod := mload(add(transcript, 0x3780)) prod := mulmod(mload(add(transcript, 0x37c0)), prod, f_q) mstore(add(transcript, 0x38a0), prod) prod := mulmod(mload(add(transcript, 0x3800)), prod, f_q) mstore(add(transcript, 0x38c0), prod) prod := mulmod(mload(add(transcript, 0x3840)), prod, f_q) mstore(add(transcript, 0x38e0), prod) prod := mulmod(mload(add(transcript, 0x3880)), prod, f_q) mstore(add(transcript, 0x3900), prod) }mstore(add(transcript, 0x3940), 32)mstore(add(transcript, 0x3960), 32)mstore(add(transcript, 0x3980), 32)mstore(add(transcript, 0x39a0), mload(add(transcript, 0x3900)))mstore(add(transcript, 0x39c0), 21888242871839275222246405745257275088548364400416034343698204186575808495615)mstore(add(transcript, 0x39e0), 21888242871839275222246405745257275088548364400416034343698204186575808495617)success := and(eq(staticcall(gas(), 0x5, add(transcript, 0x3940), 0xc0, add(transcript, 0x3920), 0x20), 1), success){ let inv := mload(add(transcript, 0x3920)) let v v := mload(add(transcript, 0x3880)) mstore(add(transcript, 0x3880), mulmod(mload(add(transcript, 0x38e0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3840)) mstore(add(transcript, 0x3840), mulmod(mload(add(transcript, 0x38c0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x3800)) mstore(add(transcript, 0x3800), mulmod(mload(add(transcript, 0x38a0)), inv, f_q)) inv := mulmod(v, inv, f_q) v := mload(add(transcript, 0x37c0)) mstore(add(transcript, 0x37c0), mulmod(mload(add(transcript, 0x3780)), inv, f_q)) inv := mulmod(v, inv, f_q) mstore(add(transcript, 0x3780), inv) }mstore(add(transcript, 0x3a00), mulmod(mload(add(transcript, 0x37a0)), mload(add(transcript, 0x37c0)), f_q))mstore(add(transcript, 0x3a20), mulmod(mload(add(transcript, 0x37e0)), mload(add(transcript, 0x3800)), f_q))mstore(add(transcript, 0x3a40), mulmod(mload(add(transcript, 0x3820)), mload(add(transcript, 0x3840)), f_q))mstore(add(transcript, 0x3a60), mulmod(mload(add(transcript, 0x3860)), mload(add(transcript, 0x3880)), f_q))mstore(add(transcript, 0x3a80), mulmod(mload(add(transcript, 0xa80)), 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, 0x3c60)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ca0), mulmod(mload(add(transcript, 0x3c80)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3cc0), mulmod(mload(add(transcript, 0x3ca0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3ce0), mulmod(mload(add(transcript, 0x3cc0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3d00), mulmod(mload(add(transcript, 0xae0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3d20), mulmod(mload(add(transcript, 0x3d00)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3d40), mulmod(mload(add(transcript, 0x3d20)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x3d60), mulmod(mload(add(transcript, 0x3d40)), mload(add(transcript, 0xae0)), f_q)){ let result := mulmod(mload(add(transcript, 0x600)), mload(add(transcript, 0x32e0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x640)), mload(add(transcript, 0x3300)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x6c0)), mload(add(transcript, 0x3320)), f_q), result, f_q)mstore(add(transcript, 0x3d80), result) }mstore(add(transcript, 0x3da0), mulmod(mload(add(transcript, 0x3d80)), mload(add(transcript, 0x3780)), f_q))mstore(add(transcript, 0x3dc0), mulmod(sub(f_q, mload(add(transcript, 0x3da0))), 1, f_q)){ let result := mulmod(mload(add(transcript, 0x620)), mload(add(transcript, 0x32e0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x660)), mload(add(transcript, 0x3300)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x6a0)), mload(add(transcript, 0x3320)), f_q), result, f_q)mstore(add(transcript, 0x3de0), result) }mstore(add(transcript, 0x3e00), mulmod(mload(add(transcript, 0x3de0)), mload(add(transcript, 0x3780)), f_q))mstore(add(transcript, 0x3e20), mulmod(sub(f_q, mload(add(transcript, 0x3e00))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3e40), mulmod(1, mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3e60), addmod(mload(add(transcript, 0x3dc0)), mload(add(transcript, 0x3e20)), f_q))mstore(add(transcript, 0x3e80), mulmod(mload(add(transcript, 0x3e60)), 1, f_q))mstore(add(transcript, 0x3ea0), mulmod(mload(add(transcript, 0x3e40)), 1, f_q))mstore(add(transcript, 0x3ec0), mulmod(1, mload(add(transcript, 0x37a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x680)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x3ee0), result) }mstore(add(transcript, 0x3f00), mulmod(mload(add(transcript, 0x3ee0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x3f20), mulmod(sub(f_q, mload(add(transcript, 0x3f00))), 1, f_q))mstore(add(transcript, 0x3f40), mulmod(mload(add(transcript, 0x3ec0)), 1, f_q)){ let result := mulmod(mload(add(transcript, 0xa40)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x3f60), result) }mstore(add(transcript, 0x3f80), mulmod(mload(add(transcript, 0x3f60)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x3fa0), mulmod(sub(f_q, mload(add(transcript, 0x3f80))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3fc0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x3fe0), addmod(mload(add(transcript, 0x3f20)), mload(add(transcript, 0x3fa0)), f_q)){ let result := mulmod(mload(add(transcript, 0x6e0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4000), result) }mstore(add(transcript, 0x4020), mulmod(mload(add(transcript, 0x4000)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4040), mulmod(sub(f_q, mload(add(transcript, 0x4020))), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4060), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3a80)), f_q))mstore(add(transcript, 0x4080), addmod(mload(add(transcript, 0x3fe0)), mload(add(transcript, 0x4040)), f_q)){ let result := mulmod(mload(add(transcript, 0x700)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x40a0), result) }mstore(add(transcript, 0x40c0), mulmod(mload(add(transcript, 0x40a0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x40e0), mulmod(sub(f_q, mload(add(transcript, 0x40c0))), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4100), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3aa0)), f_q))mstore(add(transcript, 0x4120), addmod(mload(add(transcript, 0x4080)), mload(add(transcript, 0x40e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x720)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4140), result) }mstore(add(transcript, 0x4160), mulmod(mload(add(transcript, 0x4140)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4180), mulmod(sub(f_q, mload(add(transcript, 0x4160))), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x41a0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ac0)), f_q))mstore(add(transcript, 0x41c0), addmod(mload(add(transcript, 0x4120)), mload(add(transcript, 0x4180)), f_q)){ let result := mulmod(mload(add(transcript, 0x740)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x41e0), result) }mstore(add(transcript, 0x4200), mulmod(mload(add(transcript, 0x41e0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4220), mulmod(sub(f_q, mload(add(transcript, 0x4200))), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4240), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ae0)), f_q))mstore(add(transcript, 0x4260), addmod(mload(add(transcript, 0x41c0)), mload(add(transcript, 0x4220)), f_q)){ let result := mulmod(mload(add(transcript, 0x760)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4280), result) }mstore(add(transcript, 0x42a0), mulmod(mload(add(transcript, 0x4280)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x42c0), mulmod(sub(f_q, mload(add(transcript, 0x42a0))), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x42e0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b00)), f_q))mstore(add(transcript, 0x4300), addmod(mload(add(transcript, 0x4260)), mload(add(transcript, 0x42c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x780)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4320), result) }mstore(add(transcript, 0x4340), mulmod(mload(add(transcript, 0x4320)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4360), mulmod(sub(f_q, mload(add(transcript, 0x4340))), mload(add(transcript, 0x3b20)), f_q))mstore(add(transcript, 0x4380), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b20)), f_q))mstore(add(transcript, 0x43a0), addmod(mload(add(transcript, 0x4300)), mload(add(transcript, 0x4360)), f_q)){ let result := mulmod(mload(add(transcript, 0x7a0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x43c0), result) }mstore(add(transcript, 0x43e0), mulmod(mload(add(transcript, 0x43c0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4400), mulmod(sub(f_q, mload(add(transcript, 0x43e0))), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4420), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b40)), f_q))mstore(add(transcript, 0x4440), addmod(mload(add(transcript, 0x43a0)), mload(add(transcript, 0x4400)), f_q)){ let result := mulmod(mload(add(transcript, 0x7c0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4460), result) }mstore(add(transcript, 0x4480), mulmod(mload(add(transcript, 0x4460)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x44a0), mulmod(sub(f_q, mload(add(transcript, 0x4480))), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x44c0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b60)), f_q))mstore(add(transcript, 0x44e0), addmod(mload(add(transcript, 0x4440)), mload(add(transcript, 0x44a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x7e0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4500), result) }mstore(add(transcript, 0x4520), mulmod(mload(add(transcript, 0x4500)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4540), mulmod(sub(f_q, mload(add(transcript, 0x4520))), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x4560), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3b80)), f_q))mstore(add(transcript, 0x4580), addmod(mload(add(transcript, 0x44e0)), mload(add(transcript, 0x4540)), f_q)){ let result := mulmod(mload(add(transcript, 0x800)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x45a0), result) }mstore(add(transcript, 0x45c0), mulmod(mload(add(transcript, 0x45a0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x45e0), mulmod(sub(f_q, mload(add(transcript, 0x45c0))), mload(add(transcript, 0x3ba0)), f_q))mstore(add(transcript, 0x4600), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ba0)), f_q))mstore(add(transcript, 0x4620), addmod(mload(add(transcript, 0x4580)), mload(add(transcript, 0x45e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x820)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4640), result) }mstore(add(transcript, 0x4660), mulmod(mload(add(transcript, 0x4640)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4680), mulmod(sub(f_q, mload(add(transcript, 0x4660))), mload(add(transcript, 0x3bc0)), f_q))mstore(add(transcript, 0x46a0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3bc0)), f_q))mstore(add(transcript, 0x46c0), addmod(mload(add(transcript, 0x4620)), mload(add(transcript, 0x4680)), f_q)){ let result := mulmod(mload(add(transcript, 0x860)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x46e0), result) }mstore(add(transcript, 0x4700), mulmod(mload(add(transcript, 0x46e0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4720), mulmod(sub(f_q, mload(add(transcript, 0x4700))), mload(add(transcript, 0x3be0)), f_q))mstore(add(transcript, 0x4740), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3be0)), f_q))mstore(add(transcript, 0x4760), addmod(mload(add(transcript, 0x46c0)), mload(add(transcript, 0x4720)), f_q)){ let result := mulmod(mload(add(transcript, 0x880)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4780), result) }mstore(add(transcript, 0x47a0), mulmod(mload(add(transcript, 0x4780)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x47c0), mulmod(sub(f_q, mload(add(transcript, 0x47a0))), mload(add(transcript, 0x3c00)), f_q))mstore(add(transcript, 0x47e0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c00)), f_q))mstore(add(transcript, 0x4800), addmod(mload(add(transcript, 0x4760)), mload(add(transcript, 0x47c0)), f_q)){ let result := mulmod(mload(add(transcript, 0x8a0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4820), result) }mstore(add(transcript, 0x4840), mulmod(mload(add(transcript, 0x4820)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4860), mulmod(sub(f_q, mload(add(transcript, 0x4840))), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x4880), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c20)), f_q))mstore(add(transcript, 0x48a0), addmod(mload(add(transcript, 0x4800)), mload(add(transcript, 0x4860)), f_q)){ let result := mulmod(mload(add(transcript, 0x8c0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x48c0), result) }mstore(add(transcript, 0x48e0), mulmod(mload(add(transcript, 0x48c0)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4900), mulmod(sub(f_q, mload(add(transcript, 0x48e0))), mload(add(transcript, 0x3c40)), f_q))mstore(add(transcript, 0x4920), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c40)), f_q))mstore(add(transcript, 0x4940), addmod(mload(add(transcript, 0x48a0)), mload(add(transcript, 0x4900)), f_q)){ let result := mulmod(mload(add(transcript, 0x8e0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4960), result) }mstore(add(transcript, 0x4980), mulmod(mload(add(transcript, 0x4960)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x49a0), mulmod(sub(f_q, mload(add(transcript, 0x4980))), mload(add(transcript, 0x3c60)), f_q))mstore(add(transcript, 0x49c0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c60)), f_q))mstore(add(transcript, 0x49e0), addmod(mload(add(transcript, 0x4940)), mload(add(transcript, 0x49a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x900)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4a00), result) }mstore(add(transcript, 0x4a20), mulmod(mload(add(transcript, 0x4a00)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4a40), mulmod(sub(f_q, mload(add(transcript, 0x4a20))), mload(add(transcript, 0x3c80)), f_q))mstore(add(transcript, 0x4a60), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3c80)), f_q))mstore(add(transcript, 0x4a80), addmod(mload(add(transcript, 0x49e0)), mload(add(transcript, 0x4a40)), f_q))mstore(add(transcript, 0x4aa0), mulmod(mload(add(transcript, 0x3120)), mload(add(transcript, 0x37a0)), f_q))mstore(add(transcript, 0x4ac0), mulmod(mload(add(transcript, 0x3140)), mload(add(transcript, 0x37a0)), f_q))mstore(add(transcript, 0x4ae0), mulmod(mload(add(transcript, 0x3160)), mload(add(transcript, 0x37a0)), f_q))mstore(add(transcript, 0x4b00), mulmod(mload(add(transcript, 0x3180)), mload(add(transcript, 0x37a0)), f_q)){ let result := mulmod(mload(add(transcript, 0x31a0)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4b20), result) }mstore(add(transcript, 0x4b40), mulmod(mload(add(transcript, 0x4b20)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4b60), mulmod(sub(f_q, mload(add(transcript, 0x4b40))), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4b80), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4ba0), mulmod(mload(add(transcript, 0x4aa0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4bc0), mulmod(mload(add(transcript, 0x4ac0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4be0), mulmod(mload(add(transcript, 0x4ae0)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4c00), mulmod(mload(add(transcript, 0x4b00)), mload(add(transcript, 0x3ca0)), f_q))mstore(add(transcript, 0x4c20), addmod(mload(add(transcript, 0x4a80)), mload(add(transcript, 0x4b60)), f_q)){ let result := mulmod(mload(add(transcript, 0x840)), mload(add(transcript, 0x33a0)), f_q)mstore(add(transcript, 0x4c40), result) }mstore(add(transcript, 0x4c60), mulmod(mload(add(transcript, 0x4c40)), mload(add(transcript, 0x3a00)), f_q))mstore(add(transcript, 0x4c80), mulmod(sub(f_q, mload(add(transcript, 0x4c60))), mload(add(transcript, 0x3cc0)), f_q))mstore(add(transcript, 0x4ca0), mulmod(mload(add(transcript, 0x3ec0)), mload(add(transcript, 0x3cc0)), f_q))mstore(add(transcript, 0x4cc0), addmod(mload(add(transcript, 0x4c20)), mload(add(transcript, 0x4c80)), f_q))mstore(add(transcript, 0x4ce0), mulmod(mload(add(transcript, 0x4cc0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d00), mulmod(mload(add(transcript, 0x3f40)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d20), mulmod(mload(add(transcript, 0x3fc0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d40), mulmod(mload(add(transcript, 0x4060)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d60), mulmod(mload(add(transcript, 0x4100)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4d80), mulmod(mload(add(transcript, 0x41a0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4da0), mulmod(mload(add(transcript, 0x4240)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4dc0), mulmod(mload(add(transcript, 0x42e0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4de0), mulmod(mload(add(transcript, 0x4380)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e00), mulmod(mload(add(transcript, 0x4420)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e20), mulmod(mload(add(transcript, 0x44c0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e40), mulmod(mload(add(transcript, 0x4560)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e60), mulmod(mload(add(transcript, 0x4600)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4e80), mulmod(mload(add(transcript, 0x46a0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ea0), mulmod(mload(add(transcript, 0x4740)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ec0), mulmod(mload(add(transcript, 0x47e0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4ee0), mulmod(mload(add(transcript, 0x4880)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f00), mulmod(mload(add(transcript, 0x4920)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f20), mulmod(mload(add(transcript, 0x49c0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4f40), mulmod(mload(add(transcript, 0x4a60)), 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, 0x4ba0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4fa0), mulmod(mload(add(transcript, 0x4bc0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4fc0), mulmod(mload(add(transcript, 0x4be0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x4fe0), mulmod(mload(add(transcript, 0x4c00)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x5000), mulmod(mload(add(transcript, 0x4ca0)), mload(add(transcript, 0xae0)), f_q))mstore(add(transcript, 0x5020), addmod(mload(add(transcript, 0x3e80)), mload(add(transcript, 0x4ce0)), f_q))mstore(add(transcript, 0x5040), mulmod(1, mload(add(transcript, 0x37e0)), f_q)){ let result := mulmod(mload(add(transcript, 0x920)), mload(add(transcript, 0x33c0)), f_q)result := addmod(mulmod(mload(add(transcript, 0x940)), mload(add(transcript, 0x33e0)), f_q), result, f_q)result := addmod(mulmod(mload(add(transcript, 0x960)), mload(add(transcript, 0x3400)), f_q), result, f_q)mstore(add(transcript, 0x5060), result) }mstore(add(transcript, 0x5080), mulmod(mload(add(transcript, 0x5060)), mload(add(transcript, 0x3a20)), f_q))mstore(add(transcript, 0x50a0), mulmod(sub(f_q, mload(add(transcript, 0x5080))), 1, f_q))mstore(add(transcript, 0x50c0), mulmod(mload(add(transcript, 0x5040)), 1, f_q))mstore(add(transcript, 0x50e0), mulmod(mload(add(transcript, 0x50a0)), mload(add(transcript, 0x3d00)), f_q))mstore(add(transcript, 0x5100), mulmod(mload(add(transcript, 0x50c0)), mload(add(transcript, 0x3d00)), f_q))mstore(add(transcript, 0x5120), addmod(mload(add(transcript, 0x5020)), mload(add(transcript, 0x50e0)), f_q))mstore(add(transcript, 0x5140), mulmod(1, mload(add(transcript, 0x3820)), f_q)){ let result := mulmod(mload(add(transcript, 0x980)), mload(add(transcript, 0x3440)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9a0)), mload(add(transcript, 0x3460)), f_q), result, f_q)mstore(add(transcript, 0x5160), result) }mstore(add(transcript, 0x5180), mulmod(mload(add(transcript, 0x5160)), mload(add(transcript, 0x3a40)), 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)){ let result := mulmod(mload(add(transcript, 0x9c0)), mload(add(transcript, 0x3440)), f_q)result := addmod(mulmod(mload(add(transcript, 0x9e0)), mload(add(transcript, 0x3460)), f_q), result, f_q)mstore(add(transcript, 0x51e0), result) }mstore(add(transcript, 0x5200), mulmod(mload(add(transcript, 0x51e0)), mload(add(transcript, 0x3a40)), f_q))mstore(add(transcript, 0x5220), mulmod(sub(f_q, mload(add(transcript, 0x5200))), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x5240), mulmod(mload(add(transcript, 0x5140)), mload(add(transcript, 0xa80)), f_q))mstore(add(transcript, 0x5260), addmod(mload(add(transcript, 0x51a0)), mload(add(transcript, 0x5220)), f_q))mstore(add(transcript, 0x5280), mulmod(mload(add(transcript, 0x5260)), mload(add(transcript, 0x3d20)), f_q))mstore(add(transcript, 0x52a0), mulmod(mload(add(transcript, 0x51c0)), mload(add(transcript, 0x3d20)), f_q))mstore(add(transcript, 0x52c0), mulmod(mload(add(transcript, 0x5240)), mload(add(transcript, 0x3d20)), f_q))mstore(add(transcript, 0x52e0), addmod(mload(add(transcript, 0x5120)), mload(add(transcript, 0x5280)), f_q))mstore(add(transcript, 0x5300), mulmod(1, mload(add(transcript, 0x3860)), f_q)){ let result := mulmod(mload(add(transcript, 0xa00)), mload(add(transcript, 0x3480)), f_q)result := addmod(mulmod(mload(add(transcript, 0xa20)), mload(add(transcript, 0x34a0)), f_q), result, f_q)mstore(add(transcript, 0x5320), result) }mstore(add(transcript, 0x5340), mulmod(mload(add(transcript, 0x5320)), mload(add(transcript, 0x3a60)), f_q))mstore(add(transcript, 0x5360), mulmod(sub(f_q, mload(add(transcript, 0x5340))), 1, f_q))mstore(add(transcript, 0x5380), mulmod(mload(add(transcript, 0x5300)), 1, f_q))mstore(add(transcript, 0x53a0), mulmod(mload(add(transcript, 0x5360)), mload(add(transcript, 0x3d40)), f_q))mstore(add(transcript, 0x53c0), mulmod(mload(add(transcript, 0x5380)), mload(add(transcript, 0x3d40)), f_q))mstore(add(transcript, 0x53e0), addmod(mload(add(transcript, 0x52e0)), mload(add(transcript, 0x53a0)), f_q))mstore(add(transcript, 0x5400), mulmod(1, mload(add(transcript, 0x3380)), f_q))mstore(add(transcript, 0x5420), mulmod(1, mload(add(transcript, 0xb80)), f_q))mstore(add(transcript, 0x5440), 0x0000000000000000000000000000000000000000000000000000000000000001) mstore(add(transcript, 0x5460), 0x0000000000000000000000000000000000000000000000000000000000000002)mstore(add(transcript, 0x5480), mload(add(transcript, 0x53e0)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x5440), 0x60, add(transcript, 0x5440), 0x40), 1), success)mstore(add(transcript, 0x54a0), mload(add(transcript, 0x5440))) mstore(add(transcript, 0x54c0), mload(add(transcript, 0x5460)))mstore(add(transcript, 0x54e0), mload(add(transcript, 0xa0))) mstore(add(transcript, 0x5500), mload(add(transcript, 0xc0)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x54a0), 0x80, add(transcript, 0x54a0), 0x40), 1), success)mstore(add(transcript, 0x5520), mload(add(transcript, 0xe0))) mstore(add(transcript, 0x5540), mload(add(transcript, 0x100)))mstore(add(transcript, 0x5560), mload(add(transcript, 0x3ea0)))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), mload(add(transcript, 0x120))) mstore(add(transcript, 0x5620), mload(add(transcript, 0x140)))mstore(add(transcript, 0x5640), mload(add(transcript, 0x4d00)))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), mload(add(transcript, 0x200))) mstore(add(transcript, 0x5700), mload(add(transcript, 0x220)))mstore(add(transcript, 0x5720), mload(add(transcript, 0x4d20)))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), 0x299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a90) mstore(add(transcript, 0x57e0), 0x21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95)mstore(add(transcript, 0x5800), mload(add(transcript, 0x4d40)))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), 0x19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3) mstore(add(transcript, 0x58c0), 0x2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6)mstore(add(transcript, 0x58e0), mload(add(transcript, 0x4d60)))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), 0x17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e) mstore(add(transcript, 0x59a0), 0x1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b)mstore(add(transcript, 0x59c0), mload(add(transcript, 0x4d80)))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), 0x05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056) mstore(add(transcript, 0x5a80), 0x2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c)mstore(add(transcript, 0x5aa0), mload(add(transcript, 0x4da0)))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), 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) mstore(add(transcript, 0x5b60), 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0)mstore(add(transcript, 0x5b80), mload(add(transcript, 0x4dc0)))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), 0x19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8) mstore(add(transcript, 0x5c40), 0x0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78)mstore(add(transcript, 0x5c60), mload(add(transcript, 0x4de0)))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), 0x1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5) mstore(add(transcript, 0x5d20), 0x1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098)mstore(add(transcript, 0x5d40), mload(add(transcript, 0x4e00)))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), 0x203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b) mstore(add(transcript, 0x5e00), 0x04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097)mstore(add(transcript, 0x5e20), mload(add(transcript, 0x4e20)))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), 0x20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91) mstore(add(transcript, 0x5ee0), 0x2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd)mstore(add(transcript, 0x5f00), mload(add(transcript, 0x4e40)))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), 0x09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa) mstore(add(transcript, 0x5fc0), 0x13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289)mstore(add(transcript, 0x5fe0), mload(add(transcript, 0x4e60)))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), 0x08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743) mstore(add(transcript, 0x60a0), 0x08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c)mstore(add(transcript, 0x60c0), mload(add(transcript, 0x4e80)))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), 0x25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe) mstore(add(transcript, 0x6180), 0x2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a)mstore(add(transcript, 0x61a0), mload(add(transcript, 0x4ea0)))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), 0x07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad) mstore(add(transcript, 0x6260), 0x255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960)mstore(add(transcript, 0x6280), mload(add(transcript, 0x4ec0)))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), 0x136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22) mstore(add(transcript, 0x6340), 0x0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac)mstore(add(transcript, 0x6360), mload(add(transcript, 0x4ee0)))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), 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) mstore(add(transcript, 0x6420), 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3)mstore(add(transcript, 0x6440), mload(add(transcript, 0x4f00)))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), 0x1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e) mstore(add(transcript, 0x6500), 0x050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb)mstore(add(transcript, 0x6520), mload(add(transcript, 0x4f20)))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), 0x1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0) mstore(add(transcript, 0x65e0), 0x0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391)mstore(add(transcript, 0x6600), mload(add(transcript, 0x4f40)))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, 0x460))) mstore(add(transcript, 0x66c0), mload(add(transcript, 0x480)))mstore(add(transcript, 0x66e0), mload(add(transcript, 0x4f60)))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, 0x4a0))) mstore(add(transcript, 0x67a0), mload(add(transcript, 0x4c0)))mstore(add(transcript, 0x67c0), mload(add(transcript, 0x4f80)))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, 0x4e0))) mstore(add(transcript, 0x6880), mload(add(transcript, 0x500)))mstore(add(transcript, 0x68a0), mload(add(transcript, 0x4fa0)))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, 0x520))) mstore(add(transcript, 0x6960), mload(add(transcript, 0x540)))mstore(add(transcript, 0x6980), mload(add(transcript, 0x4fc0)))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, 0x560))) mstore(add(transcript, 0x6a40), mload(add(transcript, 0x580)))mstore(add(transcript, 0x6a60), mload(add(transcript, 0x4fe0)))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, 0x3c0))) mstore(add(transcript, 0x6b20), mload(add(transcript, 0x3e0)))mstore(add(transcript, 0x6b40), mload(add(transcript, 0x5000)))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, 0x300))) mstore(add(transcript, 0x6c00), mload(add(transcript, 0x320)))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, 0x340))) mstore(add(transcript, 0x6ce0), mload(add(transcript, 0x360)))mstore(add(transcript, 0x6d00), mload(add(transcript, 0x52a0)))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, 0x380))) mstore(add(transcript, 0x6dc0), mload(add(transcript, 0x3a0)))mstore(add(transcript, 0x6de0), mload(add(transcript, 0x52c0)))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, 0x1c0))) mstore(add(transcript, 0x6ea0), mload(add(transcript, 0x1e0)))mstore(add(transcript, 0x6ec0), mload(add(transcript, 0x53c0)))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, 0xb20))) mstore(add(transcript, 0x6f80), mload(add(transcript, 0xb40)))mstore(add(transcript, 0x6fa0), sub(f_q, mload(add(transcript, 0x5400))))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x6f60), 0x60, add(transcript, 0x6f60), 0x40), 1), success)mstore(add(transcript, 0x6fc0), mload(add(transcript, 0x6ee0))) mstore(add(transcript, 0x6fe0), mload(add(transcript, 0x6f00)))mstore(add(transcript, 0x7000), mload(add(transcript, 0x6f60))) mstore(add(transcript, 0x7020), mload(add(transcript, 0x6f80)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x6fc0), 0x80, add(transcript, 0x6fc0), 0x40), 1), success)mstore(add(transcript, 0x7040), mload(add(transcript, 0xbc0))) mstore(add(transcript, 0x7060), mload(add(transcript, 0xbe0)))mstore(add(transcript, 0x7080), mload(add(transcript, 0x5420)))success := and(eq(staticcall(gas(), 0x7, add(transcript, 0x7040), 0x60, add(transcript, 0x7040), 0x40), 1), success)mstore(add(transcript, 0x70a0), mload(add(transcript, 0x6fc0))) mstore(add(transcript, 0x70c0), mload(add(transcript, 0x6fe0)))mstore(add(transcript, 0x70e0), mload(add(transcript, 0x7040))) mstore(add(transcript, 0x7100), mload(add(transcript, 0x7060)))success := and(eq(staticcall(gas(), 0x6, add(transcript, 0x70a0), 0x80, add(transcript, 0x70a0), 0x40), 1), success)mstore(add(transcript, 0x7120), mload(add(transcript, 0x70a0))) mstore(add(transcript, 0x7140), mload(add(transcript, 0x70c0)))mstore(add(transcript, 0x7160), 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) mstore(add(transcript, 0x7180), 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) mstore(add(transcript, 0x71a0), 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) mstore(add(transcript, 0x71c0), 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa)mstore(add(transcript, 0x71e0), mload(add(transcript, 0xbc0))) mstore(add(transcript, 0x7200), mload(add(transcript, 0xbe0)))mstore(add(transcript, 0x7220), 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) mstore(add(transcript, 0x7240), 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) mstore(add(transcript, 0x7260), 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) mstore(add(transcript, 0x7280), 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff)success := and(eq(staticcall(gas(), 0x8, add(transcript, 0x7120), 0x180, add(transcript, 0x7120), 0x20), 1), success)success := and(eq(mload(add(transcript, 0x7120)), 1), success)} return success; } } diff --git a/contracts/src/InclusionVerifier.yul b/contracts/src/InclusionVerifier.yul index ecedccdf..009e639b 100644 --- a/contracts/src/InclusionVerifier.yul +++ b/contracts/src/InclusionVerifier.yul @@ -35,7 +35,7 @@ mstore(0x40, mod(calldataload(0x20), f_q)) mstore(0x60, mod(calldataload(0x40), f_q)) mstore(0x80, mod(calldataload(0x60), f_q)) -mstore(0x0, 10713647047137275325514842673052213194938514302175862889195177290473686162583) +mstore(0x0, 7290356956133308795219632317546298177560913853825373832110764139479796737523) { let x := calldataload(0x80) @@ -483,241 +483,233 @@ 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(0x1fa0, addmod(mload(0x620), sub(f_q, mload(0x600)), f_q)) +mstore(0x1fc0, mulmod(mload(0x680), mload(0x1fa0), f_q)) +mstore(0x1fe0, addmod(mload(0x1fc0), mload(0x600), f_q)) +mstore(0x2000, addmod(mload(0x1fe0), sub(f_q, mload(0x640)), f_q)) +mstore(0x2020, mulmod(mload(0x2000), mload(0x1ee0), f_q)) +mstore(0x2040, addmod(mload(0x1f80), mload(0x2020), f_q)) +mstore(0x2060, mulmod(mload(0x420), mload(0x2040), f_q)) +mstore(0x2080, addmod(mload(0x600), sub(f_q, mload(0x620)), f_q)) +mstore(0x20a0, mulmod(mload(0x680), mload(0x2080), f_q)) +mstore(0x20c0, addmod(mload(0x20a0), mload(0x620), f_q)) +mstore(0x20e0, addmod(mload(0x20c0), sub(f_q, mload(0x660)), f_q)) +mstore(0x2100, mulmod(mload(0x20e0), mload(0x1ee0), f_q)) +mstore(0x2120, addmod(mload(0x2060), mload(0x2100), f_q)) +mstore(0x2140, mulmod(mload(0x420), mload(0x2120), f_q)) +mstore(0x2160, mulmod(mload(0x1da0), mload(0x1a00), f_q)) +mstore(0x2180, mulmod(mload(0x1a60), mload(0x2160), f_q)) +mstore(0x21a0, addmod(mload(0x600), mload(0x620), f_q)) +mstore(0x21c0, addmod(mload(0x21a0), sub(f_q, mload(0x680)), f_q)) +mstore(0x21e0, mulmod(mload(0x21c0), mload(0x2180), f_q)) +mstore(0x2200, addmod(mload(0x2140), mload(0x21e0), f_q)) +mstore(0x2220, mulmod(mload(0x420), mload(0x2200), f_q)) +mstore(0x2240, addmod(mload(0x2220), mload(0x21e0), 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(0x2280, addmod(1, sub(f_q, mload(0x920)), f_q)) +mstore(0x22a0, mulmod(mload(0x2280), mload(0x1300), f_q)) +mstore(0x22c0, addmod(mload(0x2260), mload(0x22a0), f_q)) +mstore(0x22e0, mulmod(mload(0x420), mload(0x22c0), f_q)) +mstore(0x2300, mulmod(mload(0x980), mload(0x980), f_q)) +mstore(0x2320, addmod(mload(0x2300), sub(f_q, mload(0x980)), f_q)) +mstore(0x2340, mulmod(mload(0x2320), mload(0x1240), f_q)) +mstore(0x2360, addmod(mload(0x22e0), 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(0x23a0, addmod(mload(0x980), sub(f_q, mload(0x960)), f_q)) +mstore(0x23c0, mulmod(mload(0x23a0), mload(0x1300), f_q)) +mstore(0x23e0, addmod(mload(0x2380), mload(0x23c0), f_q)) +mstore(0x2400, mulmod(mload(0x420), mload(0x23e0), f_q)) +mstore(0x2420, addmod(1, sub(f_q, mload(0x1240)), f_q)) +mstore(0x2440, addmod(mload(0x1260), mload(0x1280), f_q)) +mstore(0x2460, addmod(mload(0x2440), mload(0x12a0), f_q)) +mstore(0x2480, addmod(mload(0x2460), mload(0x12c0), f_q)) +mstore(0x24a0, addmod(mload(0x2480), mload(0x12e0), f_q)) +mstore(0x24c0, addmod(mload(0x2420), sub(f_q, mload(0x24a0)), f_q)) +mstore(0x24e0, mulmod(mload(0x860), mload(0x260), f_q)) +mstore(0x2500, addmod(mload(0x6e0), mload(0x24e0), f_q)) +mstore(0x2520, addmod(mload(0x2500), mload(0x2c0), f_q)) +mstore(0x2540, mulmod(mload(0x880), mload(0x260), f_q)) +mstore(0x2560, addmod(mload(0x600), 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(0x25c0, mulmod(mload(0x8a0), mload(0x260), f_q)) +mstore(0x25e0, addmod(mload(0x620), 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(0x2640, mulmod(mload(0x8c0), mload(0x260), f_q)) +mstore(0x2660, addmod(mload(0x700), mload(0x2640), f_q)) +mstore(0x2680, addmod(mload(0x2660), mload(0x2c0), f_q)) +mstore(0x26a0, mulmod(mload(0x2680), mload(0x2620), f_q)) +mstore(0x26c0, mulmod(mload(0x26a0), mload(0x940), f_q)) +mstore(0x26e0, mulmod(1, mload(0x260), f_q)) mstore(0x2700, mulmod(mload(0x5c0), mload(0x26e0), f_q)) -mstore(0x2720, addmod(mload(0x600), mload(0x2700), f_q)) +mstore(0x2720, addmod(mload(0x6e0), 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(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(0x2760, mulmod(4131629893567559867359510883348571134090853742863529169391034518566172092834, mload(0x260), f_q)) +mstore(0x2780, mulmod(mload(0x5c0), mload(0x2760), f_q)) +mstore(0x27a0, addmod(mload(0x600), mload(0x2780), f_q)) +mstore(0x27c0, addmod(mload(0x27a0), mload(0x2c0), f_q)) +mstore(0x27e0, mulmod(mload(0x27c0), mload(0x2740), f_q)) +mstore(0x2800, mulmod(8910878055287538404433155982483128285667088683464058436815641868457422632747, mload(0x260), f_q)) +mstore(0x2820, mulmod(mload(0x5c0), mload(0x2800), f_q)) +mstore(0x2840, addmod(mload(0x620), mload(0x2820), f_q)) +mstore(0x2860, addmod(mload(0x2840), mload(0x2c0), f_q)) +mstore(0x2880, mulmod(mload(0x2860), mload(0x27e0), f_q)) +mstore(0x28a0, mulmod(11166246659983828508719468090013646171463329086121580628794302409516816350802, mload(0x260), f_q)) +mstore(0x28c0, mulmod(mload(0x5c0), mload(0x28a0), f_q)) +mstore(0x28e0, addmod(mload(0x700), mload(0x28c0), f_q)) +mstore(0x2900, addmod(mload(0x28e0), mload(0x2c0), f_q)) +mstore(0x2920, mulmod(mload(0x2900), mload(0x2880), f_q)) +mstore(0x2940, mulmod(mload(0x2920), mload(0x920), f_q)) +mstore(0x2960, addmod(mload(0x26c0), sub(f_q, mload(0x2940)), f_q)) +mstore(0x2980, mulmod(mload(0x2960), mload(0x24c0), f_q)) +mstore(0x29a0, addmod(mload(0x2400), mload(0x2980), f_q)) +mstore(0x29c0, mulmod(mload(0x420), mload(0x29a0), f_q)) +mstore(0x29e0, mulmod(mload(0x8e0), mload(0x260), f_q)) +mstore(0x2a00, addmod(mload(0x680), mload(0x29e0), f_q)) +mstore(0x2a20, addmod(mload(0x2a00), mload(0x2c0), f_q)) +mstore(0x2a40, mulmod(mload(0x900), mload(0x260), f_q)) +mstore(0x2a60, addmod(mload(0x1380), mload(0x2a40), f_q)) +mstore(0x2a80, addmod(mload(0x2a60), mload(0x2c0), f_q)) +mstore(0x2aa0, mulmod(mload(0x2a80), mload(0x2a20), f_q)) +mstore(0x2ac0, mulmod(mload(0x2aa0), mload(0x9a0), f_q)) +mstore(0x2ae0, mulmod(284840088355319032285349970403338060113257071685626700086398481893096618818, mload(0x260), f_q)) mstore(0x2b00, mulmod(mload(0x5c0), mload(0x2ae0), f_q)) -mstore(0x2b20, addmod(mload(0x1380), mload(0x2b00), f_q)) +mstore(0x2b20, addmod(mload(0x680), 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(0x2b60, mulmod(21134065618345176623193549882539580312263652408302468683943992798037078993309, mload(0x260), f_q)) +mstore(0x2b80, mulmod(mload(0x5c0), mload(0x2b60), f_q)) +mstore(0x2ba0, addmod(mload(0x1380), mload(0x2b80), f_q)) +mstore(0x2bc0, addmod(mload(0x2ba0), mload(0x2c0), f_q)) +mstore(0x2be0, mulmod(mload(0x2bc0), mload(0x2b40), f_q)) +mstore(0x2c00, mulmod(mload(0x2be0), mload(0x980), f_q)) +mstore(0x2c20, addmod(mload(0x2ac0), sub(f_q, mload(0x2c00)), f_q)) +mstore(0x2c40, mulmod(mload(0x2c20), mload(0x24c0), f_q)) +mstore(0x2c60, addmod(mload(0x29c0), 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(0x2ca0, addmod(1, sub(f_q, mload(0x9c0)), f_q)) +mstore(0x2cc0, mulmod(mload(0x2ca0), mload(0x1300), f_q)) +mstore(0x2ce0, addmod(mload(0x2c80), mload(0x2cc0), f_q)) +mstore(0x2d00, mulmod(mload(0x420), mload(0x2ce0), f_q)) +mstore(0x2d20, mulmod(mload(0x9c0), mload(0x9c0), f_q)) +mstore(0x2d40, addmod(mload(0x2d20), sub(f_q, mload(0x9c0)), f_q)) +mstore(0x2d60, mulmod(mload(0x2d40), mload(0x1240), f_q)) +mstore(0x2d80, addmod(mload(0x2d00), mload(0x2d60), f_q)) +mstore(0x2da0, mulmod(mload(0x420), mload(0x2d80), f_q)) +mstore(0x2dc0, addmod(mload(0xa00), mload(0x260), f_q)) +mstore(0x2de0, mulmod(mload(0x2dc0), mload(0x9e0), f_q)) +mstore(0x2e00, addmod(mload(0xa40), mload(0x2c0), f_q)) +mstore(0x2e20, mulmod(mload(0x2e00), mload(0x2de0), f_q)) +mstore(0x2e40, mulmod(256, mload(0x640), f_q)) +mstore(0x2e60, addmod(mload(0x600), sub(f_q, mload(0x2e40)), f_q)) +mstore(0x2e80, mulmod(mload(0x2e60), mload(0x780), f_q)) +mstore(0x2ea0, addmod(mload(0x2e80), mload(0x260), f_q)) +mstore(0x2ec0, mulmod(mload(0x2ea0), mload(0x9c0), f_q)) +mstore(0x2ee0, addmod(mload(0x760), mload(0x2c0), f_q)) +mstore(0x2f00, mulmod(mload(0x2ee0), mload(0x2ec0), f_q)) +mstore(0x2f20, addmod(mload(0x2e20), sub(f_q, mload(0x2f00)), f_q)) +mstore(0x2f40, mulmod(mload(0x2f20), mload(0x24c0), f_q)) +mstore(0x2f60, addmod(mload(0x2da0), 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(0x2fa0, addmod(mload(0xa00), sub(f_q, mload(0xa40)), f_q)) +mstore(0x2fc0, mulmod(mload(0x2fa0), mload(0x1300), f_q)) +mstore(0x2fe0, addmod(mload(0x2f80), mload(0x2fc0), f_q)) +mstore(0x3000, mulmod(mload(0x420), mload(0x2fe0), f_q)) +mstore(0x3020, mulmod(mload(0x2fa0), mload(0x24c0), f_q)) +mstore(0x3040, addmod(mload(0xa00), sub(f_q, mload(0xa20)), f_q)) +mstore(0x3060, mulmod(mload(0x3040), mload(0x3020), f_q)) +mstore(0x3080, addmod(mload(0x3000), mload(0x3060), f_q)) +mstore(0x30a0, mulmod(mload(0xd40), mload(0xd40), f_q)) +mstore(0x30c0, mulmod(mload(0x30a0), mload(0xd40), f_q)) +mstore(0x30e0, mulmod(mload(0x30c0), mload(0xd40), f_q)) +mstore(0x3100, mulmod(mload(0x30e0), mload(0xd40), f_q)) +mstore(0x3120, mulmod(1, mload(0xd40), f_q)) +mstore(0x3140, mulmod(1, mload(0x30a0), f_q)) +mstore(0x3160, mulmod(1, mload(0x30c0), f_q)) +mstore(0x3180, mulmod(1, mload(0x30e0), f_q)) +mstore(0x31a0, mulmod(mload(0x3080), mload(0xd60), f_q)) +mstore(0x31c0, mulmod(mload(0xc00), mload(0x5c0), f_q)) +mstore(0x31e0, mulmod(mload(0x5c0), 1, f_q)) mstore(0x3200, addmod(mload(0xb80), sub(f_q, mload(0x31e0)), f_q)) -mstore(0x3220, mulmod(mload(0x5c0), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) +mstore(0x3220, mulmod(mload(0x5c0), 9396103202274256930945606623206526900461945684265495839012435492634193195103, f_q)) mstore(0x3240, addmod(mload(0xb80), sub(f_q, mload(0x3220)), f_q)) +mstore(0x3260, mulmod(mload(0x5c0), 15699029810934084314820646074566828280617789951162923449200398535581206172418, f_q)) +mstore(0x3280, addmod(mload(0xb80), sub(f_q, mload(0x3260)), f_q)) +mstore(0x32a0, mulmod(mload(0x5c0), 19444693496467964793333684482470811869395409953158764080291550423779334624794, f_q)) +mstore(0x32c0, addmod(mload(0xb80), sub(f_q, mload(0x32a0)), f_q)) { 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) +mstore(13024, 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) +mstore(13056, 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(13088, result) } -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)) +mstore(0x3340, mulmod(1, mload(0x3200), f_q)) +mstore(0x3360, mulmod(mload(0x3340), mload(0x3240), f_q)) +mstore(0x3380, mulmod(mload(0x3360), mload(0x32c0), f_q)) { let result := mulmod(mload(0xb80), 1, f_q) result := addmod(mulmod(mload(0x5c0), 21888242871839275222246405745257275088548364400416034343698204186575808495616, f_q), result, f_q) -mstore(13088, result) +mstore(13216, 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) +mstore(13248, 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) +mstore(13280, 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(13312, result) } -mstore(0x33a0, mulmod(mload(0x32e0), mload(0x3200), f_q)) +mstore(0x3420, mulmod(mload(0x3360), mload(0x3280), f_q)) { 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) +mstore(13376, 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) +mstore(13408, 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) +mstore(13440, 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(13472, result) } -mstore(0x3440, mulmod(mload(0x32c0), mload(0x3240), f_q)) +mstore(0x34c0, mulmod(mload(0x3340), mload(0x32c0), f_q)) { - let prod := mload(0x3260) + let prod := mload(0x32e0) - prod := mulmod(mload(0x3280), prod, f_q) - mstore(0x3460, prod) - - prod := mulmod(mload(0x32a0), prod, f_q) - mstore(0x3480, prod) - - prod := mulmod(mload(0x3320), prod, f_q) - mstore(0x34a0, prod) - - prod := mulmod(mload(0x32c0), prod, f_q) - mstore(0x34c0, prod) - - prod := mulmod(mload(0x3340), prod, f_q) + prod := mulmod(mload(0x3300), prod, f_q) mstore(0x34e0, prod) - prod := mulmod(mload(0x3360), prod, f_q) + prod := mulmod(mload(0x3320), prod, f_q) mstore(0x3500, prod) - prod := mulmod(mload(0x3380), prod, f_q) + prod := mulmod(mload(0x33a0), prod, f_q) mstore(0x3520, prod) - prod := mulmod(mload(0x33a0), prod, f_q) + prod := mulmod(mload(0x3340), prod, f_q) mstore(0x3540, prod) prod := mulmod(mload(0x33c0), prod, f_q) @@ -726,174 +718,182 @@ mstore(0x3440, mulmod(mload(0x32c0), mload(0x3240), f_q)) prod := mulmod(mload(0x33e0), prod, f_q) mstore(0x3580, prod) - prod := mulmod(mload(0x32e0), prod, f_q) + prod := mulmod(mload(0x3400), prod, f_q) mstore(0x35a0, prod) - prod := mulmod(mload(0x3400), prod, f_q) + prod := mulmod(mload(0x3420), prod, f_q) mstore(0x35c0, prod) - prod := mulmod(mload(0x3420), prod, f_q) + prod := mulmod(mload(0x3440), prod, f_q) mstore(0x35e0, prod) - prod := mulmod(mload(0x3440), prod, f_q) + prod := mulmod(mload(0x3460), prod, f_q) mstore(0x3600, prod) + prod := mulmod(mload(0x3360), prod, f_q) + mstore(0x3620, prod) + + prod := mulmod(mload(0x3480), prod, f_q) + mstore(0x3640, prod) + + prod := mulmod(mload(0x34a0), prod, f_q) + mstore(0x3660, prod) + + prod := mulmod(mload(0x34c0), prod, f_q) + mstore(0x3680, prod) + } -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) +mstore(0x36c0, 32) +mstore(0x36e0, 32) +mstore(0x3700, 32) +mstore(0x3720, mload(0x3680)) +mstore(0x3740, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x3760, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x36c0, 0xc0, 0x36a0, 0x20), 1), success) { - let inv := mload(0x3620) + let inv := mload(0x36a0) let v - v := mload(0x3440) - mstore(13376, mulmod(mload(0x35e0), inv, f_q)) + v := mload(0x34c0) + mstore(13504, mulmod(mload(0x3660), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3420) - mstore(13344, mulmod(mload(0x35c0), inv, f_q)) + v := mload(0x34a0) + mstore(13472, mulmod(mload(0x3640), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3400) - mstore(13312, mulmod(mload(0x35a0), inv, f_q)) + v := mload(0x3480) + mstore(13440, mulmod(mload(0x3620), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x32e0) - mstore(13024, mulmod(mload(0x3580), inv, f_q)) + v := mload(0x3360) + mstore(13152, mulmod(mload(0x3600), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x33e0) - mstore(13280, mulmod(mload(0x3560), inv, f_q)) + v := mload(0x3460) + mstore(13408, mulmod(mload(0x35e0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x33c0) - mstore(13248, mulmod(mload(0x3540), inv, f_q)) + v := mload(0x3440) + mstore(13376, mulmod(mload(0x35c0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x33a0) - mstore(13216, mulmod(mload(0x3520), inv, f_q)) + v := mload(0x3420) + mstore(13344, mulmod(mload(0x35a0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3380) - mstore(13184, mulmod(mload(0x3500), inv, f_q)) + v := mload(0x3400) + mstore(13312, mulmod(mload(0x3580), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3360) - mstore(13152, mulmod(mload(0x34e0), inv, f_q)) + v := mload(0x33e0) + mstore(13280, mulmod(mload(0x3560), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3340) - mstore(13120, mulmod(mload(0x34c0), inv, f_q)) + v := mload(0x33c0) + mstore(13248, mulmod(mload(0x3540), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x32c0) - mstore(12992, mulmod(mload(0x34a0), inv, f_q)) + v := mload(0x3340) + mstore(13120, mulmod(mload(0x3520), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3320) - mstore(13088, mulmod(mload(0x3480), inv, f_q)) + v := mload(0x33a0) + mstore(13216, mulmod(mload(0x3500), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x32a0) - mstore(12960, mulmod(mload(0x3460), inv, f_q)) + v := mload(0x3320) + mstore(13088, mulmod(mload(0x34e0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3280) - mstore(12928, mulmod(mload(0x3260), inv, f_q)) + v := mload(0x3300) + mstore(13056, mulmod(mload(0x32e0), inv, f_q)) inv := mulmod(v, inv, f_q) - mstore(0x3260, inv) + mstore(0x32e0, inv) } { - let result := mload(0x3260) -result := addmod(mload(0x3280), result, f_q) -result := addmod(mload(0x32a0), result, f_q) -mstore(14080, result) - } -mstore(0x3720, mulmod(mload(0x3300), mload(0x32c0), f_q)) -{ - let result := mload(0x3320) -mstore(14144, result) + let result := mload(0x32e0) +result := addmod(mload(0x3300), result, f_q) +result := addmod(mload(0x3320), result, f_q) +mstore(14208, result) } -mstore(0x3760, mulmod(mload(0x3300), mload(0x33a0), f_q)) +mstore(0x37a0, mulmod(mload(0x3380), mload(0x3340), f_q)) { - let result := mload(0x3340) -result := addmod(mload(0x3360), result, f_q) -result := addmod(mload(0x3380), result, f_q) -mstore(14208, result) + let result := mload(0x33a0) +mstore(14272, result) } -mstore(0x37a0, mulmod(mload(0x3300), mload(0x32e0), f_q)) +mstore(0x37e0, mulmod(mload(0x3380), mload(0x3420), f_q)) { let result := mload(0x33c0) result := addmod(mload(0x33e0), result, f_q) -mstore(14272, result) +result := addmod(mload(0x3400), result, f_q) +mstore(14336, result) } -mstore(0x37e0, mulmod(mload(0x3300), mload(0x3440), f_q)) +mstore(0x3820, mulmod(mload(0x3380), mload(0x3360), f_q)) { - let result := mload(0x3400) -result := addmod(mload(0x3420), result, f_q) -mstore(14336, result) + let result := mload(0x3440) +result := addmod(mload(0x3460), result, f_q) +mstore(14400, result) + } +mstore(0x3860, mulmod(mload(0x3380), mload(0x34c0), f_q)) +{ + let result := mload(0x3480) +result := addmod(mload(0x34a0), result, f_q) +mstore(14464, result) } { - let prod := mload(0x3700) + let prod := mload(0x3780) - prod := mulmod(mload(0x3740), prod, f_q) - mstore(0x3820, prod) - - prod := mulmod(mload(0x3780), prod, f_q) - mstore(0x3840, prod) - prod := mulmod(mload(0x37c0), prod, f_q) - mstore(0x3860, prod) + mstore(0x38a0, prod) prod := mulmod(mload(0x3800), prod, f_q) - mstore(0x3880, prod) + mstore(0x38c0, prod) + + prod := mulmod(mload(0x3840), prod, f_q) + mstore(0x38e0, prod) + + prod := mulmod(mload(0x3880), prod, f_q) + mstore(0x3900, prod) } -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) +mstore(0x3940, 32) +mstore(0x3960, 32) +mstore(0x3980, 32) +mstore(0x39a0, mload(0x3900)) +mstore(0x39c0, 21888242871839275222246405745257275088548364400416034343698204186575808495615) +mstore(0x39e0, 21888242871839275222246405745257275088548364400416034343698204186575808495617) +success := and(eq(staticcall(gas(), 0x5, 0x3940, 0xc0, 0x3920, 0x20), 1), success) { - let inv := mload(0x38a0) + let inv := mload(0x3920) let v - v := mload(0x3800) - mstore(14336, mulmod(mload(0x3860), inv, f_q)) + v := mload(0x3880) + mstore(14464, mulmod(mload(0x38e0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x37c0) - mstore(14272, mulmod(mload(0x3840), inv, f_q)) + v := mload(0x3840) + mstore(14400, mulmod(mload(0x38c0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3780) - mstore(14208, mulmod(mload(0x3820), inv, f_q)) + v := mload(0x3800) + mstore(14336, mulmod(mload(0x38a0), inv, f_q)) inv := mulmod(v, inv, f_q) - v := mload(0x3740) - mstore(14144, mulmod(mload(0x3700), inv, f_q)) + v := mload(0x37c0) + mstore(14272, mulmod(mload(0x3780), inv, f_q)) inv := mulmod(v, inv, f_q) - mstore(0x3700, inv) + mstore(0x3780, inv) } -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(0x3a00, mulmod(mload(0x37a0), mload(0x37c0), f_q)) +mstore(0x3a20, mulmod(mload(0x37e0), mload(0x3800), f_q)) +mstore(0x3a40, mulmod(mload(0x3820), mload(0x3840), f_q)) +mstore(0x3a60, mulmod(mload(0x3860), mload(0x3880), f_q)) +mstore(0x3a80, mulmod(mload(0xa80), 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)) @@ -909,593 +909,597 @@ 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)) +mstore(0x3c80, mulmod(mload(0x3c60), mload(0xa80), f_q)) +mstore(0x3ca0, mulmod(mload(0x3c80), mload(0xa80), f_q)) +mstore(0x3cc0, mulmod(mload(0x3ca0), mload(0xa80), f_q)) +mstore(0x3ce0, mulmod(mload(0x3cc0), mload(0xa80), f_q)) +mstore(0x3d00, mulmod(mload(0xae0), mload(0xae0), f_q)) +mstore(0x3d20, mulmod(mload(0x3d00), mload(0xae0), f_q)) +mstore(0x3d40, mulmod(mload(0x3d20), mload(0xae0), f_q)) +mstore(0x3d60, mulmod(mload(0x3d40), mload(0xae0), f_q)) { - 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) + let result := mulmod(mload(0x600), mload(0x32e0), f_q) +result := addmod(mulmod(mload(0x640), mload(0x3300), f_q), result, f_q) +result := addmod(mulmod(mload(0x6c0), mload(0x3320), f_q), result, f_q) +mstore(15744, result) } -mstore(0x3d20, mulmod(mload(0x3d00), mload(0x3700), f_q)) -mstore(0x3d40, mulmod(sub(f_q, mload(0x3d20)), 1, f_q)) +mstore(0x3da0, mulmod(mload(0x3d80), mload(0x3780), f_q)) +mstore(0x3dc0, mulmod(sub(f_q, mload(0x3da0)), 1, 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(0x620), mload(0x32e0), f_q) +result := addmod(mulmod(mload(0x660), mload(0x3300), f_q), result, f_q) +result := addmod(mulmod(mload(0x6a0), mload(0x3320), f_q), result, f_q) +mstore(15840, result) + } +mstore(0x3e00, mulmod(mload(0x3de0), mload(0x3780), f_q)) +mstore(0x3e20, mulmod(sub(f_q, mload(0x3e00)), mload(0xa80), f_q)) +mstore(0x3e40, mulmod(1, mload(0xa80), f_q)) +mstore(0x3e60, addmod(mload(0x3dc0), mload(0x3e20), f_q)) +mstore(0x3e80, mulmod(mload(0x3e60), 1, f_q)) +mstore(0x3ea0, mulmod(mload(0x3e40), 1, f_q)) +mstore(0x3ec0, mulmod(1, mload(0x37a0), f_q)) { - let result := mulmod(mload(0x680), mload(0x3320), f_q) -mstore(15968, result) + let result := mulmod(mload(0x680), mload(0x33a0), f_q) +mstore(16096, result) } -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)) +mstore(0x3f00, mulmod(mload(0x3ee0), mload(0x3a00), f_q)) +mstore(0x3f20, mulmod(sub(f_q, mload(0x3f00)), 1, f_q)) +mstore(0x3f40, mulmod(mload(0x3ec0), 1, f_q)) { - let result := mulmod(mload(0xa40), mload(0x3320), f_q) -mstore(16096, result) + let result := mulmod(mload(0xa40), mload(0x33a0), f_q) +mstore(16224, result) } -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)) +mstore(0x3f80, mulmod(mload(0x3f60), mload(0x3a00), f_q)) +mstore(0x3fa0, mulmod(sub(f_q, mload(0x3f80)), mload(0xa80), f_q)) +mstore(0x3fc0, mulmod(mload(0x3ec0), mload(0xa80), f_q)) +mstore(0x3fe0, addmod(mload(0x3f20), mload(0x3fa0), f_q)) { - let result := mulmod(mload(0x6e0), mload(0x3320), f_q) -mstore(16256, result) + let result := mulmod(mload(0x6e0), mload(0x33a0), f_q) +mstore(16384, result) } -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)) +mstore(0x4020, mulmod(mload(0x4000), mload(0x3a00), f_q)) +mstore(0x4040, mulmod(sub(f_q, mload(0x4020)), mload(0x3a80), f_q)) +mstore(0x4060, mulmod(mload(0x3ec0), mload(0x3a80), f_q)) +mstore(0x4080, addmod(mload(0x3fe0), mload(0x4040), f_q)) { - let result := mulmod(mload(0x700), mload(0x3320), f_q) -mstore(16416, result) + let result := mulmod(mload(0x700), mload(0x33a0), f_q) +mstore(16544, result) } -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)) +mstore(0x40c0, mulmod(mload(0x40a0), mload(0x3a00), f_q)) +mstore(0x40e0, mulmod(sub(f_q, mload(0x40c0)), mload(0x3aa0), f_q)) +mstore(0x4100, mulmod(mload(0x3ec0), mload(0x3aa0), f_q)) +mstore(0x4120, addmod(mload(0x4080), mload(0x40e0), f_q)) { - let result := mulmod(mload(0x720), mload(0x3320), f_q) -mstore(16576, result) + let result := mulmod(mload(0x720), mload(0x33a0), f_q) +mstore(16704, result) } -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)) +mstore(0x4160, mulmod(mload(0x4140), mload(0x3a00), f_q)) +mstore(0x4180, mulmod(sub(f_q, mload(0x4160)), mload(0x3ac0), f_q)) +mstore(0x41a0, mulmod(mload(0x3ec0), mload(0x3ac0), f_q)) +mstore(0x41c0, addmod(mload(0x4120), mload(0x4180), f_q)) { - let result := mulmod(mload(0x740), mload(0x3320), f_q) -mstore(16736, result) + let result := mulmod(mload(0x740), mload(0x33a0), f_q) +mstore(16864, result) } -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)) +mstore(0x4200, mulmod(mload(0x41e0), mload(0x3a00), f_q)) +mstore(0x4220, mulmod(sub(f_q, mload(0x4200)), mload(0x3ae0), f_q)) +mstore(0x4240, mulmod(mload(0x3ec0), mload(0x3ae0), f_q)) +mstore(0x4260, addmod(mload(0x41c0), mload(0x4220), f_q)) { - let result := mulmod(mload(0x760), mload(0x3320), f_q) -mstore(16896, result) + let result := mulmod(mload(0x760), mload(0x33a0), f_q) +mstore(17024, result) } -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)) +mstore(0x42a0, mulmod(mload(0x4280), mload(0x3a00), f_q)) +mstore(0x42c0, mulmod(sub(f_q, mload(0x42a0)), mload(0x3b00), f_q)) +mstore(0x42e0, mulmod(mload(0x3ec0), mload(0x3b00), f_q)) +mstore(0x4300, addmod(mload(0x4260), mload(0x42c0), f_q)) { - let result := mulmod(mload(0x780), mload(0x3320), f_q) -mstore(17056, result) + let result := mulmod(mload(0x780), mload(0x33a0), f_q) +mstore(17184, result) } -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)) +mstore(0x4340, mulmod(mload(0x4320), mload(0x3a00), f_q)) +mstore(0x4360, mulmod(sub(f_q, mload(0x4340)), mload(0x3b20), f_q)) +mstore(0x4380, mulmod(mload(0x3ec0), mload(0x3b20), f_q)) +mstore(0x43a0, addmod(mload(0x4300), mload(0x4360), f_q)) { - let result := mulmod(mload(0x7a0), mload(0x3320), f_q) -mstore(17216, result) + let result := mulmod(mload(0x7a0), mload(0x33a0), f_q) +mstore(17344, result) } -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)) +mstore(0x43e0, mulmod(mload(0x43c0), mload(0x3a00), f_q)) +mstore(0x4400, mulmod(sub(f_q, mload(0x43e0)), mload(0x3b40), f_q)) +mstore(0x4420, mulmod(mload(0x3ec0), mload(0x3b40), f_q)) +mstore(0x4440, addmod(mload(0x43a0), mload(0x4400), f_q)) { - let result := mulmod(mload(0x7c0), mload(0x3320), f_q) -mstore(17376, result) + let result := mulmod(mload(0x7c0), mload(0x33a0), f_q) +mstore(17504, result) } -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)) +mstore(0x4480, mulmod(mload(0x4460), mload(0x3a00), f_q)) +mstore(0x44a0, mulmod(sub(f_q, mload(0x4480)), mload(0x3b60), f_q)) +mstore(0x44c0, mulmod(mload(0x3ec0), mload(0x3b60), f_q)) +mstore(0x44e0, addmod(mload(0x4440), mload(0x44a0), f_q)) { - let result := mulmod(mload(0x7e0), mload(0x3320), f_q) -mstore(17536, result) + let result := mulmod(mload(0x7e0), mload(0x33a0), f_q) +mstore(17664, result) } -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)) +mstore(0x4520, mulmod(mload(0x4500), mload(0x3a00), f_q)) +mstore(0x4540, mulmod(sub(f_q, mload(0x4520)), mload(0x3b80), f_q)) +mstore(0x4560, mulmod(mload(0x3ec0), mload(0x3b80), f_q)) +mstore(0x4580, addmod(mload(0x44e0), mload(0x4540), f_q)) { - let result := mulmod(mload(0x800), mload(0x3320), f_q) -mstore(17696, result) + let result := mulmod(mload(0x800), mload(0x33a0), f_q) +mstore(17824, result) } -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)) +mstore(0x45c0, mulmod(mload(0x45a0), mload(0x3a00), f_q)) +mstore(0x45e0, mulmod(sub(f_q, mload(0x45c0)), mload(0x3ba0), f_q)) +mstore(0x4600, mulmod(mload(0x3ec0), mload(0x3ba0), f_q)) +mstore(0x4620, addmod(mload(0x4580), mload(0x45e0), f_q)) { - let result := mulmod(mload(0x820), mload(0x3320), f_q) -mstore(17856, result) + let result := mulmod(mload(0x820), mload(0x33a0), f_q) +mstore(17984, result) } -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)) +mstore(0x4660, mulmod(mload(0x4640), mload(0x3a00), f_q)) +mstore(0x4680, mulmod(sub(f_q, mload(0x4660)), mload(0x3bc0), f_q)) +mstore(0x46a0, mulmod(mload(0x3ec0), mload(0x3bc0), f_q)) +mstore(0x46c0, addmod(mload(0x4620), mload(0x4680), f_q)) { - let result := mulmod(mload(0x860), mload(0x3320), f_q) -mstore(18016, result) + let result := mulmod(mload(0x860), mload(0x33a0), f_q) +mstore(18144, result) } -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)) +mstore(0x4700, mulmod(mload(0x46e0), mload(0x3a00), f_q)) +mstore(0x4720, mulmod(sub(f_q, mload(0x4700)), mload(0x3be0), f_q)) +mstore(0x4740, mulmod(mload(0x3ec0), mload(0x3be0), f_q)) +mstore(0x4760, addmod(mload(0x46c0), mload(0x4720), f_q)) { - let result := mulmod(mload(0x880), mload(0x3320), f_q) -mstore(18176, result) + let result := mulmod(mload(0x880), mload(0x33a0), f_q) +mstore(18304, result) } -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)) +mstore(0x47a0, mulmod(mload(0x4780), mload(0x3a00), f_q)) +mstore(0x47c0, mulmod(sub(f_q, mload(0x47a0)), mload(0x3c00), f_q)) +mstore(0x47e0, mulmod(mload(0x3ec0), mload(0x3c00), f_q)) +mstore(0x4800, addmod(mload(0x4760), mload(0x47c0), f_q)) { - let result := mulmod(mload(0x8a0), mload(0x3320), f_q) -mstore(18336, result) + let result := mulmod(mload(0x8a0), mload(0x33a0), f_q) +mstore(18464, result) } -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)) +mstore(0x4840, mulmod(mload(0x4820), mload(0x3a00), f_q)) +mstore(0x4860, mulmod(sub(f_q, mload(0x4840)), mload(0x3c20), f_q)) +mstore(0x4880, mulmod(mload(0x3ec0), mload(0x3c20), f_q)) +mstore(0x48a0, addmod(mload(0x4800), mload(0x4860), f_q)) { - let result := mulmod(mload(0x8c0), mload(0x3320), f_q) -mstore(18496, result) + let result := mulmod(mload(0x8c0), mload(0x33a0), f_q) +mstore(18624, result) } -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(0x48c0), mload(0x3a00), f_q)) +mstore(0x4900, mulmod(sub(f_q, mload(0x48e0)), mload(0x3c40), f_q)) +mstore(0x4920, mulmod(mload(0x3ec0), mload(0x3c40), f_q)) +mstore(0x4940, addmod(mload(0x48a0), mload(0x4900), f_q)) { - let result := mulmod(mload(0x8e0), mload(0x3320), f_q) -mstore(18656, result) + let result := mulmod(mload(0x8e0), mload(0x33a0), f_q) +mstore(18784, 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)) +mstore(0x4980, mulmod(mload(0x4960), mload(0x3a00), f_q)) +mstore(0x49a0, mulmod(sub(f_q, mload(0x4980)), mload(0x3c60), f_q)) +mstore(0x49c0, mulmod(mload(0x3ec0), mload(0x3c60), f_q)) +mstore(0x49e0, addmod(mload(0x4940), mload(0x49a0), 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(0x900), mload(0x33a0), f_q) +mstore(18944, result) + } +mstore(0x4a20, mulmod(mload(0x4a00), mload(0x3a00), f_q)) +mstore(0x4a40, mulmod(sub(f_q, mload(0x4a20)), mload(0x3c80), f_q)) +mstore(0x4a60, mulmod(mload(0x3ec0), mload(0x3c80), f_q)) +mstore(0x4a80, addmod(mload(0x49e0), mload(0x4a40), f_q)) +mstore(0x4aa0, mulmod(mload(0x3120), mload(0x37a0), f_q)) +mstore(0x4ac0, mulmod(mload(0x3140), mload(0x37a0), f_q)) +mstore(0x4ae0, mulmod(mload(0x3160), mload(0x37a0), f_q)) +mstore(0x4b00, mulmod(mload(0x3180), mload(0x37a0), 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(0x31a0), mload(0x33a0), f_q) +mstore(19232, result) + } +mstore(0x4b40, mulmod(mload(0x4b20), mload(0x3a00), f_q)) +mstore(0x4b60, mulmod(sub(f_q, mload(0x4b40)), mload(0x3ca0), f_q)) +mstore(0x4b80, mulmod(mload(0x3ec0), mload(0x3ca0), f_q)) +mstore(0x4ba0, mulmod(mload(0x4aa0), mload(0x3ca0), f_q)) +mstore(0x4bc0, mulmod(mload(0x4ac0), mload(0x3ca0), f_q)) +mstore(0x4be0, mulmod(mload(0x4ae0), mload(0x3ca0), f_q)) +mstore(0x4c00, mulmod(mload(0x4b00), mload(0x3ca0), f_q)) +mstore(0x4c20, addmod(mload(0x4a80), mload(0x4b60), 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)) + let result := mulmod(mload(0x840), mload(0x33a0), f_q) +mstore(19520, result) + } +mstore(0x4c60, mulmod(mload(0x4c40), mload(0x3a00), f_q)) +mstore(0x4c80, mulmod(sub(f_q, mload(0x4c60)), mload(0x3cc0), f_q)) +mstore(0x4ca0, mulmod(mload(0x3ec0), mload(0x3cc0), f_q)) +mstore(0x4cc0, addmod(mload(0x4c20), mload(0x4c80), f_q)) +mstore(0x4ce0, mulmod(mload(0x4cc0), mload(0xae0), f_q)) +mstore(0x4d00, mulmod(mload(0x3f40), mload(0xae0), f_q)) +mstore(0x4d20, mulmod(mload(0x3fc0), mload(0xae0), f_q)) +mstore(0x4d40, mulmod(mload(0x4060), mload(0xae0), f_q)) +mstore(0x4d60, mulmod(mload(0x4100), mload(0xae0), f_q)) +mstore(0x4d80, mulmod(mload(0x41a0), mload(0xae0), f_q)) +mstore(0x4da0, mulmod(mload(0x4240), mload(0xae0), f_q)) +mstore(0x4dc0, mulmod(mload(0x42e0), mload(0xae0), f_q)) +mstore(0x4de0, mulmod(mload(0x4380), mload(0xae0), f_q)) +mstore(0x4e00, mulmod(mload(0x4420), mload(0xae0), f_q)) +mstore(0x4e20, mulmod(mload(0x44c0), mload(0xae0), f_q)) +mstore(0x4e40, mulmod(mload(0x4560), mload(0xae0), f_q)) +mstore(0x4e60, mulmod(mload(0x4600), mload(0xae0), f_q)) +mstore(0x4e80, mulmod(mload(0x46a0), mload(0xae0), f_q)) +mstore(0x4ea0, mulmod(mload(0x4740), mload(0xae0), f_q)) +mstore(0x4ec0, mulmod(mload(0x47e0), mload(0xae0), f_q)) +mstore(0x4ee0, mulmod(mload(0x4880), mload(0xae0), f_q)) +mstore(0x4f00, mulmod(mload(0x4920), mload(0xae0), f_q)) +mstore(0x4f20, mulmod(mload(0x49c0), mload(0xae0), f_q)) +mstore(0x4f40, mulmod(mload(0x4a60), 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(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)) +mstore(0x4f80, mulmod(mload(0x4ba0), mload(0xae0), f_q)) +mstore(0x4fa0, mulmod(mload(0x4bc0), mload(0xae0), f_q)) +mstore(0x4fc0, mulmod(mload(0x4be0), mload(0xae0), f_q)) +mstore(0x4fe0, mulmod(mload(0x4c00), mload(0xae0), f_q)) +mstore(0x5000, mulmod(mload(0x4ca0), mload(0xae0), f_q)) +mstore(0x5020, addmod(mload(0x3e80), mload(0x4ce0), f_q)) +mstore(0x5040, mulmod(1, mload(0x37e0), 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(0x920), mload(0x33c0), f_q) +result := addmod(mulmod(mload(0x940), mload(0x33e0), f_q), result, f_q) +result := addmod(mulmod(mload(0x960), mload(0x3400), f_q), result, f_q) +mstore(20576, result) + } +mstore(0x5080, mulmod(mload(0x5060), mload(0x3a20), f_q)) +mstore(0x50a0, mulmod(sub(f_q, mload(0x5080)), 1, f_q)) +mstore(0x50c0, mulmod(mload(0x5040), 1, f_q)) +mstore(0x50e0, mulmod(mload(0x50a0), mload(0x3d00), f_q)) +mstore(0x5100, mulmod(mload(0x50c0), mload(0x3d00), f_q)) +mstore(0x5120, addmod(mload(0x5020), mload(0x50e0), f_q)) +mstore(0x5140, mulmod(1, mload(0x3820), f_q)) { - let result := mulmod(mload(0x9c0), mload(0x33c0), f_q) -result := addmod(mulmod(mload(0x9e0), mload(0x33e0), f_q), result, f_q) + let result := mulmod(mload(0x980), mload(0x3440), f_q) +result := addmod(mulmod(mload(0x9a0), mload(0x3460), f_q), result, f_q) mstore(20832, result) } -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)) +mstore(0x5180, mulmod(mload(0x5160), mload(0x3a40), f_q)) +mstore(0x51a0, mulmod(sub(f_q, mload(0x5180)), 1, f_q)) +mstore(0x51c0, mulmod(mload(0x5140), 1, f_q)) +{ + let result := mulmod(mload(0x9c0), mload(0x3440), f_q) +result := addmod(mulmod(mload(0x9e0), mload(0x3460), f_q), result, f_q) +mstore(20960, result) + } +mstore(0x5200, mulmod(mload(0x51e0), mload(0x3a40), f_q)) +mstore(0x5220, mulmod(sub(f_q, mload(0x5200)), mload(0xa80), f_q)) +mstore(0x5240, mulmod(mload(0x5140), mload(0xa80), f_q)) +mstore(0x5260, addmod(mload(0x51a0), mload(0x5220), f_q)) +mstore(0x5280, mulmod(mload(0x5260), mload(0x3d20), f_q)) +mstore(0x52a0, mulmod(mload(0x51c0), mload(0x3d20), f_q)) +mstore(0x52c0, mulmod(mload(0x5240), mload(0x3d20), f_q)) +mstore(0x52e0, addmod(mload(0x5120), mload(0x5280), f_q)) +mstore(0x5300, mulmod(1, mload(0x3860), 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)) -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, 0x046611b44bb4f4cd8fcf6f82fed641d34961b88a6012df5e0f44d4f40248d57b) - mstore(0x5760, 0x25b84353a92c37bb156457e31b9133dc81245e1f3774b898f41cf59a7b0adf57) -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, 0x259da9f643187930ce1299a3f700a93f17cf3129bffe184a6de1cf19f0b91f7e) - mstore(0x5840, 0x29fcbc05cd2c0152b3eb21e8fd01a00bc79780f21281598873fb955dba235f7e) -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, 0x2b99cb49ca685626a08c009ea442fc895a2f86cca1f29f18d4b7ec9ece937aa2) - mstore(0x5920, 0x20a45cae33f3917205b76aeb87e409350840664058839b1db76f8761db50fac8) -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, 0x25a265a57942223657b3316c913bffe8db0efedbed9ac878308e1d63d4df61d8) - mstore(0x5a00, 0x0d2f79604094b53fd56a955d2574e241ad67498ab320f2bb764841f5c903bff9) -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, 0x0160a474a2c8de56950bbe25d6f09002a91f2cc20fbdb15e8413f1176e7f1865) - mstore(0x5bc0, 0x1d0f5797eaaea89e5119e4260db563605a84d004b8efd02c51b960bfecf20e90) -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, 0x02b619a2a245b370b3319e21e0be467256209338cf9546447b875a2779e010d4) - mstore(0x5ca0, 0x07d7f03df06345ba2df20bb867841f60ebd25daab5aafa13ddc1413116996802) -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, 0x203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b) - mstore(0x5d80, 0x04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097) -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, 0x20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91) - mstore(0x5e60, 0x2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd) -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, 0x13caf6fa687a546fd1eeb9e0d43a9f8fe9a3f05322f5edda1b95d50e83839851) - mstore(0x5f40, 0x22e2768775e2d96fd8925c48a99df2b248cb3d893a15b9dca81660b79cc35f4a) -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, 0x19a074dc6d1a0f1e5589a55d9c4955cf867e2899dbfd46a11c27a84804b5b239) - mstore(0x6020, 0x26b112fb59a0b875833e52f951b3b010826b169f320d80597f1275544ae24897) -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, 0x1c6df6612866079dc2a52525842c8025502eb5a8913c560836c4bc7ab2dc334e) - mstore(0x6100, 0x0d36fe2bf6d58291ed035a1f090904639502213a2449227d156ee3f8f6372e2c) -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, 0x01add1e14d0a1880ee8e837b20502713d06428d55d61fea8fea89a71648971fa) - mstore(0x61e0, 0x12c982466ea6dcfada3ad0e277fed44f770466650d4704906a4d34b6b8d8bed1) -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, 0x2faee9fe4eb97b37abb4fdd1b604ed8acf55df0a370bcfe7f5615b7598989d7a) - mstore(0x62c0, 0x2269aff86c3fd35864f3e2cb39db623e0122a05b6b5f789ff57434e557a90c23) -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, 0x01b6921cc4c35a03d696e754bac06edba8187499252d98da7e7d40b844f24245) - mstore(0x6480, 0x181dfa294889601a9cc57448d966b9cc60e7795ab336d2078dc43aeb888484fb) -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, 0x0f0dcdaa6fd2f36460376557f9d6b4b0985b085d2d8ffca7c6c408d8560d5d08) - mstore(0x6560, 0x0bc4e7f7a927678093e4be2bfb543ab7d6267ee943e8ed13369a3b3c9ef23779) -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) + let result := mulmod(mload(0xa00), mload(0x3480), f_q) +result := addmod(mulmod(mload(0xa20), mload(0x34a0), f_q), result, f_q) +mstore(21280, result) + } +mstore(0x5340, mulmod(mload(0x5320), mload(0x3a60), f_q)) +mstore(0x5360, mulmod(sub(f_q, mload(0x5340)), 1, f_q)) +mstore(0x5380, mulmod(mload(0x5300), 1, f_q)) +mstore(0x53a0, mulmod(mload(0x5360), mload(0x3d40), f_q)) +mstore(0x53c0, mulmod(mload(0x5380), mload(0x3d40), f_q)) +mstore(0x53e0, addmod(mload(0x52e0), mload(0x53a0), f_q)) +mstore(0x5400, mulmod(1, mload(0x3380), f_q)) +mstore(0x5420, mulmod(1, mload(0xb80), f_q)) +mstore(0x5440, 0x0000000000000000000000000000000000000000000000000000000000000001) + mstore(0x5460, 0x0000000000000000000000000000000000000000000000000000000000000002) +mstore(0x5480, mload(0x53e0)) +success := and(eq(staticcall(gas(), 0x7, 0x5440, 0x60, 0x5440, 0x40), 1), success) +mstore(0x54a0, mload(0x5440)) + mstore(0x54c0, mload(0x5460)) +mstore(0x54e0, mload(0xa0)) + mstore(0x5500, mload(0xc0)) +success := and(eq(staticcall(gas(), 0x6, 0x54a0, 0x80, 0x54a0, 0x40), 1), success) +mstore(0x5520, mload(0xe0)) + mstore(0x5540, mload(0x100)) +mstore(0x5560, mload(0x3ea0)) +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, mload(0x120)) + mstore(0x5620, mload(0x140)) +mstore(0x5640, mload(0x4d00)) +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, mload(0x200)) + mstore(0x5700, mload(0x220)) +mstore(0x5720, mload(0x4d20)) +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, 0x299b12e65399dcea3f1e0ce046cf5f93ce7ba9f779bfa39e7f0c6d4c19628a90) + mstore(0x57e0, 0x21c577122a3d1f4d019b93e724d981b0653ed94f492eafec50945231935f9a95) +mstore(0x5800, mload(0x4d40)) +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, 0x19d9220141bef25921d474c6e634d06dfb7d7904e59a4ec486a148b00bfd38a3) + mstore(0x58c0, 0x2f38511e53688056b693c84ef69a7ae2b9ab482906dc46ae9d9522fd3ce098b6) +mstore(0x58e0, mload(0x4d60)) +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, 0x17e7cb6a30c4ce9a3d8de604dbaf517b1f23e440acb9e7345938ff5b245a403e) + mstore(0x59a0, 0x1c31a42d7da360cce8262e21fb9a5ef26a23ebbcf6995ccab89aee400c2e994b) +mstore(0x59c0, mload(0x4d80)) +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, 0x05591c7faa2c9eaf1c9573a84bddec303219abf496af0899ed438853227dd056) + mstore(0x5a80, 0x2cfa24fde576750b4036dffe40105e6b7244f63843ec74d9d0aad48ba413287c) +mstore(0x5aa0, mload(0x4da0)) +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, 0x22e1cdbfffcfcf4f18cf4342edf1fb26c3b6e52ace3d5fadcf5cc2614333baa4) + mstore(0x5b60, 0x0e28df72dcc69cc6442d72f693661997480a913ac353890efd63a873959727c0) +mstore(0x5b80, mload(0x4dc0)) +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, 0x19206bebc5cc4a5b692c58bc61e7aec6d3fbb8344e39a133699f74e6f40ec2a8) + mstore(0x5c40, 0x0678c7bdd141bd26cbe9336f5dcf1c5a8cf21a5927afd1b2f393152ee02a6a78) +mstore(0x5c60, mload(0x4de0)) +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, 0x1c6e2343333783b4f48ae7d2681afb3cdf6a4dfbc83a500cb06db3265ad3e5d5) + mstore(0x5d20, 0x1a3d836d4325ff30144c1e2038a4d4025fd0f01af24cfd8dfd54018e64f3b098) +mstore(0x5d40, mload(0x4e00)) +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, 0x203b21a648fbfb96459640bbc5b41852dd1efc1209c89b635ba638dcb929da6b) + mstore(0x5e00, 0x04e7002f06f2091a44afcd311e93c22f46dd9f3207b5bcc34f0ca7652098f097) +mstore(0x5e20, mload(0x4e20)) +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, 0x20ab7490b42f3f7b2b0bbe601a09d72ee93f924801d597f48cf2d443751d5f91) + mstore(0x5ee0, 0x2bca2f1762946a05fb1632550c6cb12c02d18d9bee5bdd4212ca7342888720fd) +mstore(0x5f00, mload(0x4e40)) +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, 0x09e3303245e3b00aca894e9fba3d5184ff3739c664e363f205d42feee327b6aa) + mstore(0x5fc0, 0x13ce92283cc6f648bdda86182d91852aab5c6088ab008d9cdb5522fcbf5c6289) +mstore(0x5fe0, mload(0x4e60)) +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, 0x08a503e7a16684a81991dbfc5ec84c9f4b0f7a506ddf26b67d305ebfc0f81743) + mstore(0x60a0, 0x08a2d8e1760ffb16f70147f8b44e781ced65a1e677a786cdd8bc9f947b36131c) +mstore(0x60c0, mload(0x4e80)) +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, 0x25632bc8012c6cbc6ddda661a9729f544c54620700c3840c01ca5b57e61a1ffe) + mstore(0x6180, 0x2ba5764c663a4b2892343c303da0f5664e3f620dd6b851a711781704292fd11a) +mstore(0x61a0, mload(0x4ea0)) +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, 0x07cfe4f3152b1996e8eafd718451356c2044e4c239fcc29eb3a81d392e1b44ad) + mstore(0x6260, 0x255673e224a594e53fd5b1b4dcd46329e72a04e16056dea3d5a17e31291a9960) +mstore(0x6280, mload(0x4ec0)) +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, 0x136cb14b351f3b43b5e618c5c49022588edd48550f4e7d69309442e8b83d0d22) + mstore(0x6340, 0x0ee9bbdfce93815e79aabfc5ec92a52346c46a45e17bc5bc9ad8155e982c9cac) +mstore(0x6360, mload(0x4ee0)) +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, 0x0743ea40f14084db2673217283aa053f986896ee7c181f52118442e99c452974) + mstore(0x6420, 0x0203e3493a2594ece57d22cc75dd081ac68271ec7c758153cfd2152bfb5c19e3) +mstore(0x6440, mload(0x4f00)) +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, 0x1f5d69f8adc7def353cac5301331f66a6aa12c3bdc46ba8509d81c1922944c1e) + mstore(0x6500, 0x050a358c8ee74901afd6bebdda35a25be99ba631232abec0bb7df23428e219eb) +mstore(0x6520, mload(0x4f20)) +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, 0x1ddbf91ceeed88a8c66e9bf8d089b3098dc083f15790870796a7267f25cf9bf0) + mstore(0x65e0, 0x0ab4e80b0091cd40070294f754e54b127e2000572c0344c2838aeeaf251eb391) +mstore(0x6600, mload(0x4f40)) +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(0x460)) + mstore(0x66c0, mload(0x480)) +mstore(0x66e0, mload(0x4f60)) +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(0x4a0)) + mstore(0x67a0, mload(0x4c0)) +mstore(0x67c0, mload(0x4f80)) +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(0x4e0)) + mstore(0x6880, mload(0x500)) +mstore(0x68a0, mload(0x4fa0)) +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(0x520)) + mstore(0x6960, mload(0x540)) +mstore(0x6980, mload(0x4fc0)) +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(0x560)) + mstore(0x6a40, mload(0x580)) +mstore(0x6a60, mload(0x4fe0)) +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(0x3c0)) + mstore(0x6b20, mload(0x3e0)) +mstore(0x6b40, mload(0x5000)) +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(0x300)) + mstore(0x6c00, mload(0x320)) +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(0x340)) + mstore(0x6ce0, mload(0x360)) +mstore(0x6d00, mload(0x52a0)) +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(0x380)) + mstore(0x6dc0, mload(0x3a0)) +mstore(0x6de0, mload(0x52c0)) +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(0x1c0)) + mstore(0x6ea0, mload(0x1e0)) +mstore(0x6ec0, mload(0x53c0)) +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(0xb20)) + mstore(0x6f80, mload(0xb40)) +mstore(0x6fa0, sub(f_q, mload(0x5400))) +success := and(eq(staticcall(gas(), 0x7, 0x6f60, 0x60, 0x6f60, 0x40), 1), success) +mstore(0x6fc0, mload(0x6ee0)) + mstore(0x6fe0, mload(0x6f00)) +mstore(0x7000, mload(0x6f60)) + mstore(0x7020, mload(0x6f80)) +success := and(eq(staticcall(gas(), 0x6, 0x6fc0, 0x80, 0x6fc0, 0x40), 1), success) +mstore(0x7040, mload(0xbc0)) + mstore(0x7060, mload(0xbe0)) +mstore(0x7080, mload(0x5420)) +success := and(eq(staticcall(gas(), 0x7, 0x7040, 0x60, 0x7040, 0x40), 1), success) +mstore(0x70a0, mload(0x6fc0)) + mstore(0x70c0, mload(0x6fe0)) +mstore(0x70e0, mload(0x7040)) + mstore(0x7100, mload(0x7060)) +success := and(eq(staticcall(gas(), 0x6, 0x70a0, 0x80, 0x70a0, 0x40), 1), success) +mstore(0x7120, mload(0x70a0)) + mstore(0x7140, mload(0x70c0)) +mstore(0x7160, 0x198e9393920d483a7260bfb731fb5d25f1aa493335a9e71297e485b7aef312c2) + mstore(0x7180, 0x1800deef121f1e76426a00665e5c4479674322d4f75edadd46debd5cd992f6ed) + mstore(0x71a0, 0x090689d0585ff075ec9e99ad690c3395bc4b313370b38ef355acdadcd122975b) + mstore(0x71c0, 0x12c85ea5db8c6deb4aab71808dcb408fe3d1e7690c43d37b4ce6cc0166fa7daa) +mstore(0x71e0, mload(0xbc0)) + mstore(0x7200, mload(0xbe0)) +mstore(0x7220, 0x26186a2d65ee4d2f9c9a5b91f86597d35f192cd120caf7e935d8443d1938e23d) + mstore(0x7240, 0x30441fd1b5d3370482c42152a8899027716989a6996c2535bc9f7fee8aaef79e) + mstore(0x7260, 0x16f363f103c80d7bbc8ad3c6867e0822bbc6000be91a4689755c7df40221c145) + mstore(0x7280, 0x2b1cbb3e521edf5a622d82762a44a5e63f1e50b332d71154a4a7958d6011deff) +success := and(eq(staticcall(gas(), 0x8, 0x7120, 0x180, 0x7120, 0x20), 1), success) +success := and(eq(mload(0x7120), 1), success) if not(success) { revert(0, 0) } return(0, 0) diff --git a/contracts/src/Summa.sol b/contracts/src/Summa.sol index f8c2e7c2..aaaae3e2 100644 --- a/contracts/src/Summa.sol +++ b/contracts/src/Summa.sol @@ -9,6 +9,17 @@ import "@openzeppelin/contracts/access/Ownable.sol"; import "./interfaces/IVerifier.sol"; contract Summa is Ownable { + /** + * @dev Struct representing the configuration of the Summa instance + * @param mstLevels The number of levels of the Merkle sum tree + * @param assetsCount The number of cryptocurrency assets per user included in the Merkle sum tree + * @param balanceByteRange The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree + */ + struct SummaConfig { + uint16 mstLevels; + uint16 assetsCount; + uint8 balanceByteRange; + } /** * @dev Struct representing an address ownership proof submitted by the CEX * @param cexAddress The address owned by the CEX (submitted as a string, as it can be a non-EVM address) @@ -47,6 +58,9 @@ contract Summa is Ownable { string[] blockchainNames; } + // Summa configuration + SummaConfig public config; + // User inclusion proof verifier IVerifier private immutable inclusionVerifier; @@ -81,8 +95,14 @@ contract Summa is Ownable { Cryptocurrency[] cryptocurrencies ); - constructor(IVerifier _inclusionVerifier) { + constructor( + IVerifier _inclusionVerifier, + uint16 mstLevels, + uint16 assetsCount, + uint8 balanceByteRange + ) { inclusionVerifier = _inclusionVerifier; + config = SummaConfig(mstLevels, assetsCount, balanceByteRange); } /** diff --git a/contracts/test/Summa.ts b/contracts/test/Summa.ts index 65c21f1c..b70b1e4f 100644 --- a/contracts/test/Summa.ts +++ b/contracts/test/Summa.ts @@ -59,6 +59,9 @@ describe("Summa Contract", () => { const summa = await ethers.deployContract("Summa", [ inclusionVerifier.address, + 4, // The number of levels of the Merkle sum tree + 2, // The number of cryptocurrency assets per user included in the Merkle sum tree + 14, // The number of bytes used to represent the balance of a cryptocurrency in the Merkle sum tree ]); await summa.deployed(); diff --git a/zk_prover/examples/inclusion_proof_solidity_calldata.json b/zk_prover/examples/inclusion_proof_solidity_calldata.json index 8cc02e35..92709698 100644 --- a/zk_prover/examples/inclusion_proof_solidity_calldata.json +++ b/zk_prover/examples/inclusion_proof_solidity_calldata.json @@ -1,5 +1,5 @@ { - "proof": "0x1c7a5d502a29a2c3c3e2d2d518ec2a8543c19bdce5135bbe59e14ef5d178efe9139c3838b4b11d607cc8ee22c32509d3d14227953cb313518d80be18655af6ba245790f70d7dcf5f046fb8580dfc9b13cd24f332e7f2cfc17f591aa3d69f11f4252f8e212b1ccc58ab58aba219d55b5e2f595e357ad30f0dc7d4675c2bdd2d780cacd8f89bcc10d41525a0395a64086b74826bb451a851f1d0379f4764b735400794ffe274246e09667ec9a321c8e9367fe1a4fa3ba21bfded36795e6e9d09bb1524bafd5994754519bdafef12f7191e50df6b1a6dce272ffcefa1d436119e1b057250dfa475092a7f9aafdec82ec0fecc9cc9b3bea3858fbc890bc41d013d402fd44923523a328647a94dedca98ba214ed7369079b114aa1ec4e8ba322628c91b648bc0336a5643a58a00ba809f772e7afaff4e857f25eac8c9458303fb2a5b18961ab5f9e67915a387d986b3b07efb1ecbdde42e4cbe8e3d5af03a59952ac61356f8dcbae85a0978509355d663eb844c5acd48726310c8415c7a3aafe6535a1b0e9765adcb39bc4afdfced654cad6f397d9892ee1ae503884c1db9a0c168af2797b4f4dee6f03f476b01941ceecad88cf3036b0f706d5b7cab16b0a3f71b440bb7c5afaedcd7c00b29aa45261b7e85e76a5777e8c0560439c5a121fa2c3bdd0395ac07afde7f5d1c0cdf752434721295767f238f178d6812bd28b99444047b121546f5a344aaca511e65d52de324bf27e51f432d511af05eb95f37e43aef0f1659bab2049626661782686ad5468d094cd7e301e580754f398ebec01867db1023333e83253fae9f8412781499ec436e0368bdff9da07288e96cc38606bc1f6d227f325d5a1c8757441d2d84a3b2f5afd7092d17df5525edea2b8f0dd69012af063061290aa7ec3ab913d1cf2869be3e739b3d3deacbb6a0f81a185ad42d8d8801147c4f8346d59f98cb77e8b8240988911e89ec7fdb53ad9848f721cf7167eb30124b79fdec15f3993c137462ba73410e3299530163790f0fc433adb808cfc928d38ff9793b82f359d27367c29d4d426e9dff1bc6a4391249df6a478818ac7910c7b98cca67e4bfb8b51e5b1060c3645cb9190abc407ccdd7f556fcb21730d9106a526538708a8202297cf5d454b7b49060b7c5de6d3fc199b376fc071b22830304cdc209c8dcd6f387ca9508e682ed717adba04c0c94e15cfb023f3a32739e1e8803aeb32c8b5dcc0ff1f49c734a50df27ba77beb4b25ed51ecc7642dae797051cfa5298b0c5928587dd3db85d4f701df82f32ea95aef6b8f349f289775cb12657e6d4996793f259ff15db0c84474a130613f1c261908972cd62e8ff8e69730e001a12ce4d710e0367c7f10206852aac0ed64c2b1354ab7030e97e2ccc914729427f7619b8b5f3174c4beed8666b7bc4edfdf9347fc2e48eabd43ddbde5b1b22545e1acd6f2b75161ad7520d8789d8732a4b716c01327c8f04cd05807fe98e0a7c235e358c069e583dca4a1a4651652f33305b2552c2f7233e7c876f55702c2f430c3236e25d642849059e3b3ac44decdbc041bdb3dc40953ba1cc6c3ca73b03dc19085ce3281e342c51f5331e245209afd51743d14495adec32c3679de8962deef6d7a950f0512ab3e7f5fb324b68315bf321d77a0b3d79c943fe1791174f2091f458d2e8a0e0524f4439e8d5f1a9a6ae80337942661f316ae6b619be2c1f2e71f83a586b6de95226f7fe5dc1b24bc82d2ea56d06e37d9f63008388ab9f1311d69721625f59ce4b2047b54ca06f42eaf9745919f8b1da480ad2931a1e63261ec10afd1ef6c9403c088dc958773610059645fab6b09b621adffa689fb6fb822cd3c726bc692e33c6bbb255f6238b9083e802817c59203e294494abf57813340898377954dd72fc368ea59cc7c75cbd098954b58498fcb1cca5d7552ae808e501c30108153b1ee4f77511ba5cff4e5578347413b9a0e9a5317bd194c04797bf11ec726054bda2d4103ab9831ea235f8eef31a6a4103eaed66a22b957bd6ca9c108948fe9c61f804148229c49be669e36e605c75800d69bfac1e856e6c54e72605c473b79cd7ac2883dd5a2bb83ce384c62e4a77ebf210444754645a983acb422214fbbf18f0c418257539a0e113cd1dd974111f23d9cb76f07bd92278321b060ce9a08de60fe584ad879d145cbfd0402776b572b37b8103410c277ca4bbc7201f694bf1f66c90b081200be85f0421c92573660273d303034d7ba80b996eb79230194ca93f1f565261aaa7e2dc4ac5be538503af632c9f3129f6a91e984fc7522d28537a9b256610ee029d6a3741445c939e7801a24c2b2e8a7f3b57d29137d92af9029cda44a25342151145dac9d679e9187c6efe4913ce3b8279f8b9962a1e06698d5777ca294f3d234b86bec1ffb670d61a51c6e9b7015e2a67ff59348df422fba53644e696f92bac9513b14a512c5ad1323cf02c2212af25c31dea96565016af135a3067869dfafa1f72de025b129fc79173da2c2b39ad8c2c01928ee8b92409600b405fb6980cc5cdf0b2b91756cad269889b924c7518a6d822f87193800bc0da2d76c38c1b7604293523827f0356dc594d7a442dba34a5a82a521a38bd11e98aab00ca4a7862552cb7621b5910b449a1ae1a12b26c6d94c7845ccc7d8229232baf261186ee10d14f6b1fb56464090dc1392cbd945609a9fa67beecb7041c015398c138b2359ddfe16745071076693338adba97cc636d71f04b2e0d44ba2a7b0447db18d72189fa27d174d1b379070aefbe30a6522f099025e8562de1a91a9ff2fa4564862f66f1bc37aac344ce2eb6a137b53bf76dce07c3ba31cf4d8c1b784c93768215706873f7c934b39aee003210f81527fd8c1c4845f39830adac02f4ab84229a373628b681f40e0c145277e2aae03438c155079fe26455f031631b0b835dbc2c654236708eb9831082be7976a05dc924ada3e44ebf6043074406248e34900dfc647ed17480f698e93556f2ce5a0cee266378a39fce8e20dd2c6c", + "proof": "0x1e94df5c9e64286482e5050d12f10c53aa607cacd84fcd3a408737cead3693ad0f8e478f584318016f885c0e4be56a1636097d8b7424d64855de037d349fd92825862131d1648f278249284b604b4f5d93dfc50d0004f8474bf569f972b113650da88dc30d36b0ae248d8754d55662af2c7aac4ba1c86372785af882100e61d217bd21ad7a8819c037ef132f2a340dd8fcf4c5b5dd661bf1844993c6ec82dfd92b91b7f6fb83a72a5262b18f8f324c425dffa7ad2b23a285c1b1bdb1c8bde4030f42e31819c3537ff954577c47ae8a0747a8a8390bfed8faa59188112f61216e1549c7aeeb46d2963adde4bd51d844784d449fdd54c75fdbb713dd8fd8764a1607159a94b280978d855eb0a11c7a578b6ea07c6d6d0c97350e18b5e8d36927372d79f80df140bc930b5678f407342dd9067a82fe9c75e4113754fc19310e4757289e2025af670afc8aafc721d3e66834c4867a1d1dbd63359f7b5b354f9f93e327550e310805831e15dfa2376775d7e66c47747a89e4494fdb4d8e72a6476e2e2c741d4eed06fcb84ca69d7aee5bcdb9963187e098fedb7d5f405a31febb6bc3106004d8dad642cc32ff95aab5fc3330d8dc260197db3ba080fb2ebb1bf238351ffdfa4e5035ebf3e987f6d3da44ee87ee96d16e6a187d6a9b3bb28fc1570492240ee384c6682c222540ecbc3d6f4d1cba8f403d28ca6e1a395e64dd4527665c08810e1fb264f8ce06552f268fea148055c1f5729c207dd576ca28765b4cc0900155eefd6fd19255a20eacbbaf3c87a7b62dffa5b73c046bad798f27c6623fe610290fc95e4a0073e52b3b5708aac83f505e15940956abe3db3d2f312bbc01ea0577ffc2ecd8e5f1326a255af26d19adbddf7f495843ab0bf1957693530ec9410d47037d00345c5743c63fb3c6fbd771823d63558584fc4f6fe571d449ae1bb62fbf0906b43c8b81d657380606f2e6012e081fe1a702380875161832e19e9eb22df226ad3769820128866d631b0c366ad69ae7df6039bacc0856444abb45587e2841231df7c4edd7b664087d46b39a53c3cc010466169d3c4b1f6bf3b80cf7661c7b1c59e43a04d737851b448273a1c9f41680c8b024921541a08ed2b737ba8e25a921838b6d2730e8058c91ef25d2251a6d09e3056eed5f0948418ad2e106ec14f7100b366d055525317cb40ed75d9bda85c8fd98cd29f0a93aa6f90539334119f762877fbf7f4f2a6b6f9a10145f709257104b9ae2dec184a7c1df8275159f2d2fd9fff812ec5fc42f93c472e617fc1563e813dc6cd6ca7cdbfb41bea2a72e228ecbf9bab2c50e5304b664772db087ac2a53d45d8a4b8c63f55335ee644ef52fd5f9b6e746b25bb6cd19e744d76cd1414ebe8d6b5fde6b468cca5107819a6d05ba9c2c1091a4eb1d79629636ca3400a3b69a781ba8ecbc7f59779634e5ae132f250945ffd72ade50063fb5a07dc6f56c3ff1cae9ae3d1c2bf201258bf79f1329ed689867a7e51e0d50920019f42a45f1b812b8f4de5a47ecabe2f32c20384f16e94dc9c5f78799506b33b59723e7dc5386bc31002eb3867b50ded5b92658de12f0e914b260e8f61a1184842721087c79021c54283e68635b0cb0cd9aa7d6bf0a145ade522e4faa01a78eca82f4ad4660745a05ab763007c402b6ee8a9e73a30f3e4dc893d23caf4fc757ebe0de6123978dea5bee1648833f6c60c413a250461d8cf808b8922b6ae123ba013b570cb4ab6fe663d1170d6859972496534965a40e5c2dfaabae417a4468039254f1107b358691045edff5154b2c88cdc99e770a0a4dda09ffc7d86bff1c6bdb1ae00a0ac582cb2c0110327ded5e85524cb9257a11825499dbc673b3d771b00a33480190425999ca32f3d8dd40c950ab81f6dc662a51907294f6687dcc481c02cf15914cd073eeba34113a52f2e04dccc79e6b401d485d4fff8488abd6b5eb1c7bf74a3ee86b2f7c07c1e93bd08e9ea5dc62566b2078fec5aea206f3dc10b9e7afdf448e0089d47006beb576b244aa692b961dde236f7ab501573043b9ae540c63bd80688ade75b29939f0b58145e0c6171da4dc29f6e6bc99aab9e2a2c95d2049a5081a7e1f617ab947f89a6d7e242bd546dfa50ebb5a4c63e3d88ba029db0a8f43f88e55d365ed589ea83df35e0c1098b80f2d0fe7960a8b16c190c9fc70a01aa7b0fc48c1b9bf3c02d0e73f3a0a3f40c4a47b2580c46f97a5ae8d92ce9d7c04d4a3c532e0585a706121a2ff2a447026b05c9b16c0ed803fe1c901e0e92899f9ca4a4aa1207c9e94cc11647793e4df7d809eb214d54b9e5052eb2fcf087abc5e14a6fa9018bb445e622651e0202060f4d92ca22231adfacf0e4feda0dfc1c4f51c54b401b6a95a696b1796c24ab0949e3120d311ab9d6e2a30f1a20e147490b61683674cdc926e8ce8665c8c9c2dff8cd5ccfd2e96ce6ef75f0bfe0c4edbd192b0a5dcd672a4e18119f5bbeb38a542b1b8ccc111294bfa7bc3ff716b4496dfc23ebdaf113d0b29a1266fcf3b5c81fadd4a91cd1221117b444b3f63414069ff07237707db17728f39cca47506702b091ce6830e2dd956d03068cd2fba7314c65f231475288e147754408534d19eea99a58469331d0149d618165409b780bb02759a92f08372beb9764a3c1e5e517902dab8000409ddfd38080e91bb0d01d218380020d24050975a27d354bf512dd785754a486218b02373e541d2bf55ce1b77c8912c0135a2c0775686f7c6734b8627cb93f72d2950397efe6daa89cbaef859e7dd639fe91c94f422eeec53065ba6ed8f78dfa72d1105af9e61d70ecb7ecea72e275d7dbce40fce85c795e3c20ae719251abd33061ca0cc43ec1421947e6a285a1f40790386d19fed65f26875a6656b282193ef10a7a763e61584de359c71f9dceae78189ff2272024b4cf141f58a7e94ec3c121150de85e9401461b0ffd26bb373e2dd4865572dd298b5f92babc182f8e229682d454f436f48d2857b8739b904cff81f5d5f3bb3088e9d2510140753fbc59900", "public_inputs": [ "0xe113acd03b98f0bab0ef6f577245d5d008cbcc19ef2dab3608aa4f37f72a407", "0x18d6ab953235a811edffa4cead74ea045e7cd2085771a2269d59dca054c955b1", diff --git a/zk_prover/prints/mst-inclusion-layout.png b/zk_prover/prints/mst-inclusion-layout.png index c2477faefc942ceabfe9d75e1a44c388cb5f0657..84679e6299b03632a53fcfdbed5f681b9abe1626 100644 GIT binary patch delta 74498 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 =C*3vOEcv6BFKxqGv(u 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 delta 63323 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 J!n { config: MerkleSumTreeConfig, @@ -59,14 +61,18 @@ impl MerkleSumTreeChip { let element_l_next = meta.query_advice(col_a, Rotation::next()); let element_r_next = meta.query_advice(col_b, Rotation::next()); - let swap_constraint = s - * ((swap_bit - * Expression::Constant(Fp::from(2)) - * (element_r_cur.clone() - element_l_cur.clone()) - - (element_l_next - element_l_cur)) - - (element_r_cur - element_r_next)); + // element_l_next = (element_r_cur - element_l_cur)*s + element_l_cur + let swap_constraint_1 = s.clone() + * ((element_r_cur.clone() - element_l_cur.clone()) * swap_bit.clone() + + element_l_cur.clone() + - element_l_next); + + // element_r_next = (element_l_cur - element_r_cur)*s + element_r_cur + let swap_constraint_2 = s + * ((element_l_cur - element_r_cur.clone()) * swap_bit + element_r_cur + - element_r_next); - vec![swap_constraint] + vec![swap_constraint_1, swap_constraint_2] }); meta.create_gate("sum constraint", |meta| { diff --git a/zk_prover/src/chips/range/range_check.rs b/zk_prover/src/chips/range/range_check.rs index 2d8bb7b7..cb835764 100644 --- a/zk_prover/src/chips/range/range_check.rs +++ b/zk_prover/src/chips/range/range_check.rs @@ -17,18 +17,16 @@ use super::utils::decompose_fp_to_bytes; /// # Fields /// /// * `z`: Advice column for the value to be checked and its running sum. -/// * `range`: Fixed column for the lookup table. It contains the values from 0 to 2^8 - 1. /// * `lookup_enable_selector`: Selector to enable the lookup check. /// /// Patterned after [halo2_gadgets](https://github.com/privacy-scaling-explorations/halo2/blob/main/halo2_gadgets/src/utilities/decompose_running_sum.rs) #[derive(Debug, Copy, Clone)] pub struct RangeCheckConfig { z: Column, - range: Column, lookup_enable_selector: Selector, } -/// Helper chip that verfiies that the value witnessed in a given cell lies within a given range defined by N_BYTES. +/// Helper chip that verifies that the value witnessed in a given cell lies within a given range defined by N_BYTES. /// For example, Let's say we want to constraint 0x1f2f3f4f to be within the range N_BYTES=4. /// /// `z(0) = 0x1f2f3f4f` @@ -47,8 +45,8 @@ pub struct RangeCheckConfig { /// /// The column z contains the witnessed value to be checked at offset 0 /// At offset i, the column z contains the value z(i+1) = (z(i) - k(i)) / 2^8 (shift right by 8 bits) where k(i) is the i-th decomposition big-endian of `value` -/// The contraints that are enforced are: -/// - z(i) - 2^8⋅z(i+1) ∈ lookup_u8 (enabled by lookup_enable_selector at offset [0, N_BYTES - 1]) +/// The constraints that are enforced are: +/// - z(i) - 2^8⋅z(i+1) ∈ lookup_u8_table (enabled by lookup_enable_selector at offset [0, N_BYTES - 1]) /// - z(N_BYTES) == 0 #[derive(Debug, Clone)] pub struct RangeCheckChip { @@ -61,13 +59,15 @@ impl RangeCheckChip { } /// Configures the Range Chip + /// Note: the lookup table should be loaded with values from `0` to `2^8 - 1` otherwise the range check will fail. pub fn configure( meta: &mut ConstraintSystem, z: Column, - range: Column, + lookup_u8_table: Column, lookup_enable_selector: Selector, ) -> RangeCheckConfig { - meta.annotate_lookup_any_column(range, || "LOOKUP_MAXBITS_RANGE"); + + meta.annotate_lookup_any_column(lookup_u8_table, || "LOOKUP_MAXBITS_RANGE"); meta.lookup_any( "range u8 check for difference between each interstitial running sum output", @@ -76,7 +76,7 @@ impl RangeCheckChip { let z_next = meta.query_advice(z, Rotation::next()); let lookup_enable_selector = meta.query_selector(lookup_enable_selector); - let u8_range = meta.query_fixed(range, Rotation::cur()); + let u8_range = meta.query_fixed(lookup_u8_table, Rotation::cur()); let diff = z_cur - z_next * Expression::Constant(Fp::from(1 << 8)); @@ -86,7 +86,6 @@ impl RangeCheckChip { RangeCheckConfig { z, - range, lookup_enable_selector, } } @@ -153,24 +152,4 @@ impl RangeCheckChip { }, ) } - - /// Loads the lookup table with values from `0` to `2^8 - 1` - pub fn load(&self, layouter: &mut impl Layouter) -> Result<(), Error> { - let range = 1 << (8); - - layouter.assign_region( - || format!("load range check table of {} bits", 8), - |mut region| { - for i in 0..range { - region.assign_fixed( - || "assign cell in fixed column", - self.config.range, - i, - || Value::known(Fp::from(i as u64)), - )?; - } - Ok(()) - }, - ) - } } diff --git a/zk_prover/src/chips/range/tests.rs b/zk_prover/src/chips/range/tests.rs index 54f6fccc..07cc5768 100644 --- a/zk_prover/src/chips/range/tests.rs +++ b/zk_prover/src/chips/range/tests.rs @@ -1,8 +1,11 @@ -use crate::chips::range::range_check::{RangeCheckChip, RangeCheckConfig}; +use crate::{ + chips::range::range_check::{RangeCheckChip, RangeCheckConfig}, + circuits::traits::CircuitBase, +}; use halo2_proofs::{ circuit::{AssignedCell, Layouter, SimpleFloorPlanner, Value}, halo2curves::bn256::Fr as Fp, - plonk::{Advice, Circuit, Column, ConstraintSystem, Error, Selector}, + plonk::{Advice, Circuit, Column, ConstraintSystem, Error, Fixed, Selector}, poly::Rotation, }; @@ -88,6 +91,7 @@ impl AddChip { pub struct TestConfig { pub addchip_config: AddConfig, pub range_check_config: RangeCheckConfig, + pub lookup_u8_table: Column, } // The test circuit takes two inputs a and b. @@ -99,6 +103,9 @@ struct TestCircuit { pub b: Fp, } +/// Inherit the `CircuitBase` trait for the `TestCircuit` struct. +impl CircuitBase for TestCircuit {} + impl Circuit for TestCircuit { type Config = TestConfig; type FloorPlanner = SimpleFloorPlanner; @@ -109,7 +116,7 @@ impl Circuit for TestCircuit { fn configure(meta: &mut ConstraintSystem) -> Self::Config { let z = meta.advice_column(); - let range = meta.fixed_column(); + let lookup_u8_table = meta.fixed_column(); let a = meta.advice_column(); let b = meta.advice_column(); @@ -127,7 +134,7 @@ impl Circuit for TestCircuit { let lookup_enable_selector = meta.complex_selector(); let range_check_config = - RangeCheckChip::::configure(meta, z, range, lookup_enable_selector); + RangeCheckChip::::configure(meta, z, lookup_u8_table, lookup_enable_selector); let addchip_config = AddChip::configure(meta, a, b, c, add_selector); @@ -135,6 +142,7 @@ impl Circuit for TestCircuit { TestConfig { addchip_config, range_check_config, + lookup_u8_table, } } } @@ -149,12 +157,12 @@ impl Circuit for TestCircuit { let (a_cell, b_cell, c_cell) = addchip.assign(self.a, self.b, layouter.namespace(|| "add chip"))?; + // Load the lookup table + self.load(&mut layouter, config.lookup_u8_table)?; + // Initiate the range check chip let range_chip = RangeCheckChip::construct(config.range_check_config); - // Load the lookup table - range_chip.load(&mut layouter)?; - // check range on a, b and c range_chip.assign( layouter.namespace(|| "checking value a is in range"), diff --git a/zk_prover/src/circuits/merkle_sum_tree.rs b/zk_prover/src/circuits/merkle_sum_tree.rs index 75a37c30..7771c7bd 100644 --- a/zk_prover/src/circuits/merkle_sum_tree.rs +++ b/zk_prover/src/circuits/merkle_sum_tree.rs @@ -16,7 +16,7 @@ use snark_verifier_sdk::CircuitExt; /// /// # Type Parameters /// -/// * `LEVELS`: The number of levels of the merkle sum tree +/// * `LEVELS`: The number of levels of the merkle sum tree. In particular, it indicates the number of hashing operations that are performed from the leaf to the root. For example a tree with 16 entries has 4 levels. /// * `N_ASSETS`: The number of assets for which the solvency is verified. /// * `N_BYTES`: The number of bytes in which the balances should lie /// @@ -130,6 +130,7 @@ where range_check_config: RangeCheckConfig, instance: Column, advices: [Column; 3], + fixed_columns: [Column; 5], } impl MstInclusionConfig @@ -200,6 +201,7 @@ where range_check_config, instance, advices, + fixed_columns, } } } @@ -290,8 +292,8 @@ where config.instance, )?; - // load range check chip - range_check_chip.load(&mut layouter)?; + // load lookup table for range check + self.load(&mut layouter, config.fixed_columns[4])?; for level in 0..LEVELS { let namespace_prefix = format!("level {}", level); @@ -340,6 +342,29 @@ where sibling_hasher_input, )?; + // For level 0, perform range check on the leaf node balances and on the sibling node balances + for asset in 0..N_ASSETS { + // Each balance cell is constrained to be within the range defined by N_BYTES + range_check_chip.assign( + layouter.namespace(|| { + format!( + "{}: asset {}: range check leaf balance", + namespace_prefix, asset + ) + }), + ¤t_balances[asset], + )?; + range_check_chip.assign( + layouter.namespace(|| { + format!( + "{}: asset {}: range check sibling balance", + namespace_prefix, asset + ) + }), + &sibling_balances[asset], + )?; + } + sibling_hash = computed_sibling_hash; } // Other levels @@ -393,6 +418,20 @@ where sibling_hasher_input, )?; + // For other levels, only perform range on the sibling node balances. Any risk of overflow of the `current_balances` will be checked during verification + for asset in 0..N_ASSETS { + // Each balance cell is constrained to be within the range defined by N_BYTES + range_check_chip.assign( + layouter.namespace(|| { + format!( + "{}: asset {}: range check sibling balance", + namespace_prefix, asset + ) + }), + &sibling_balances[asset], + )?; + } + sibling_hash = computed_sibling_hash; }; @@ -432,26 +471,6 @@ where &swap_bit_level, )?; - // Each balance cell is constrained to be within the range defined by N_BYTES - range_check_chip.assign( - layouter.namespace(|| { - format!( - "{}: asset {}: range check left balance", - namespace_prefix, asset - ) - }), - &left_balance, - )?; - range_check_chip.assign( - layouter.namespace(|| { - format!( - "{}: asset {}: range check right balance", - namespace_prefix, asset - ) - }), - &right_balance, - )?; - next_balances.push(next_balance); left_balances.push(left_balance); right_balances.push(right_balance); @@ -498,12 +517,6 @@ where 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)?; - } - Ok(()) } } diff --git a/zk_prover/src/circuits/tests.rs b/zk_prover/src/circuits/tests.rs index 9b35d33f..a04c29af 100644 --- a/zk_prover/src/circuits/tests.rs +++ b/zk_prover/src/circuits/tests.rs @@ -113,7 +113,7 @@ mod test { VerifyFailure::Permutation { column: (Any::advice(), 0).into(), location: FailureLocation::InRegion { - region: (127, "permute state").into(), + region: (121, "permute state").into(), offset: 36 } }, @@ -189,29 +189,29 @@ mod test { VerifyFailure::Permutation { column: (Any::advice(), 0).into(), location: FailureLocation::InRegion { - region: (22, "assign nodes hashes per merkle tree level").into(), + region: (26, "assign nodes hashes per merkle tree level").into(), offset: 0 } }, VerifyFailure::Permutation { column: (Any::advice(), 0).into(), location: FailureLocation::InRegion { - region: (127, "permute state").into(), + region: (121, "permute state").into(), offset: 36 } }, VerifyFailure::Permutation { - column: (Any::advice(), 0).into(), + column: (Any::advice(), 2).into(), location: FailureLocation::InRegion { - region: (128, "assign value to perform range check").into(), - offset: 0 + region: (111, "assign nodes balances per asset").into(), + offset: 1 } }, VerifyFailure::Permutation { - column: (Any::advice(), 0).into(), + column: (Any::advice(), 2).into(), location: FailureLocation::InRegion { - region: (129, "assign value to perform range check").into(), - offset: 0 + region: (112, "assign nodes balances per asset").into(), + offset: 1 } }, VerifyFailure::Permutation { @@ -260,7 +260,7 @@ mod test { VerifyFailure::Permutation { column: (Any::advice(), 0).into(), location: FailureLocation::InRegion { - region: (22, "assign nodes hashes per merkle tree level").into(), + region: (26, "assign nodes hashes per merkle tree level").into(), offset: 0 } }, @@ -299,7 +299,7 @@ mod test { VerifyFailure::ConstraintNotSatisfied { constraint: ((6, "bool constraint").into(), 0, "").into(), location: FailureLocation::InRegion { - region: (22, "assign nodes hashes per merkle tree level").into(), + region: (26, "assign nodes hashes per merkle tree level").into(), offset: 0 }, cell_values: vec![(((Any::advice(), 2).into(), 0).into(), "0x2".to_string()),] @@ -307,7 +307,7 @@ mod test { VerifyFailure::ConstraintNotSatisfied { constraint: ((6, "bool constraint").into(), 0, "").into(), location: FailureLocation::InRegion { - region: (23, "assign nodes balances per asset").into(), + region: (27, "assign nodes balances per asset").into(), offset: 0 }, cell_values: vec![(((Any::advice(), 2).into(), 0).into(), "0x2".to_string()),] @@ -315,7 +315,7 @@ mod test { VerifyFailure::ConstraintNotSatisfied { constraint: ((6, "bool constraint").into(), 0, "").into(), location: FailureLocation::InRegion { - region: (26, "assign nodes balances per asset").into(), + region: (28, "assign nodes balances per asset").into(), offset: 0 }, cell_values: vec![(((Any::advice(), 2).into(), 0).into(), "0x2".to_string()),] @@ -323,7 +323,7 @@ mod test { VerifyFailure::ConstraintNotSatisfied { constraint: ((7, "swap constraint").into(), 0, "").into(), location: FailureLocation::InRegion { - region: (22, "assign nodes hashes per merkle tree level").into(), + region: (26, "assign nodes hashes per merkle tree level").into(), offset: 0 }, cell_values: vec![ @@ -342,6 +342,26 @@ mod test { "0x17ef9d8ee0e2c8470814651413b71009a607a020214f749687384a7b7a7eb67a" .to_string() ), + (((Any::advice(), 2).into(), 0).into(), "0x2".to_string()), + ] + }, + VerifyFailure::ConstraintNotSatisfied { + constraint: ((7, "swap constraint").into(), 1, "").into(), + location: FailureLocation::InRegion { + region: (26, "assign nodes hashes per merkle tree level").into(), + offset: 0 + }, + cell_values: vec![ + ( + ((Any::advice(), 0).into(), 0).into(), + "0xe113acd03b98f0bab0ef6f577245d5d008cbcc19ef2dab3608aa4f37f72a407" + .to_string() + ), + ( + ((Any::advice(), 1).into(), 0).into(), + "0x17ef9d8ee0e2c8470814651413b71009a607a020214f749687384a7b7a7eb67a" + .to_string() + ), ( ((Any::advice(), 1).into(), 1).into(), "0xe113acd03b98f0bab0ef6f577245d5d008cbcc19ef2dab3608aa4f37f72a407" @@ -353,13 +373,25 @@ mod test { VerifyFailure::ConstraintNotSatisfied { constraint: ((7, "swap constraint").into(), 0, "").into(), location: FailureLocation::InRegion { - region: (23, "assign nodes balances per asset").into(), + region: (27, "assign nodes balances per asset").into(), offset: 0 }, cell_values: vec![ (((Any::advice(), 0).into(), 0).into(), "0x2e70".to_string()), (((Any::advice(), 0).into(), 1).into(), "0x108ef".to_string()), (((Any::advice(), 1).into(), 0).into(), "0x108ef".to_string()), + (((Any::advice(), 2).into(), 0).into(), "0x2".to_string()), + ] + }, + VerifyFailure::ConstraintNotSatisfied { + constraint: ((7, "swap constraint").into(), 1, "").into(), + location: FailureLocation::InRegion { + region: (27, "assign nodes balances per asset").into(), + offset: 0 + }, + cell_values: vec![ + (((Any::advice(), 0).into(), 0).into(), "0x2e70".to_string()), + (((Any::advice(), 1).into(), 0).into(), "0x108ef".to_string()), (((Any::advice(), 1).into(), 1).into(), "0x2e70".to_string()), (((Any::advice(), 2).into(), 0).into(), "0x2".to_string()), ] @@ -367,13 +399,25 @@ mod test { VerifyFailure::ConstraintNotSatisfied { constraint: ((7, "swap constraint").into(), 0, "").into(), location: FailureLocation::InRegion { - region: (26, "assign nodes balances per asset").into(), + region: (28, "assign nodes balances per asset").into(), offset: 0 }, cell_values: vec![ (((Any::advice(), 0).into(), 0).into(), "0xa0cb".to_string()), (((Any::advice(), 0).into(), 1).into(), "0x48db".to_string()), (((Any::advice(), 1).into(), 0).into(), "0x48db".to_string()), + (((Any::advice(), 2).into(), 0).into(), "0x2".to_string()), + ] + }, + VerifyFailure::ConstraintNotSatisfied { + constraint: ((7, "swap constraint").into(), 1, "").into(), + location: FailureLocation::InRegion { + region: (28, "assign nodes balances per asset").into(), + offset: 0 + }, + cell_values: vec![ + (((Any::advice(), 0).into(), 0).into(), "0xa0cb".to_string()), + (((Any::advice(), 1).into(), 0).into(), "0x48db".to_string()), (((Any::advice(), 1).into(), 1).into(), "0xa0cb".to_string()), (((Any::advice(), 2).into(), 0).into(), "0x2".to_string()), ] @@ -381,7 +425,7 @@ mod test { VerifyFailure::Permutation { column: (Any::advice(), 0).into(), location: FailureLocation::InRegion { - region: (127, "permute state").into(), + region: (121, "permute state").into(), offset: 36 } }, @@ -420,7 +464,7 @@ mod test { VerifyFailure::Permutation { column: (Any::advice(), 0).into(), location: FailureLocation::InRegion { - region: (127, "permute state").into(), + region: (121, "permute state").into(), offset: 36 } }, diff --git a/zk_prover/src/circuits/traits.rs b/zk_prover/src/circuits/traits.rs index 61d3d3de..359b3f5b 100644 --- a/zk_prover/src/circuits/traits.rs +++ b/zk_prover/src/circuits/traits.rs @@ -1,6 +1,6 @@ use halo2_proofs::circuit::{Layouter, Value}; use halo2_proofs::halo2curves::bn256::Fr as Fp; -use halo2_proofs::plonk::{Advice, Column, Error}; +use halo2_proofs::plonk::{Advice, Column, Error, Fixed}; use halo2_proofs::{circuit::AssignedCell, plonk::Instance}; /// Trait containing common methods for all circuits @@ -30,4 +30,24 @@ pub trait CircuitBase { |mut region| region.assign_advice(|| "value", advice_col, 0, || Value::known(value)), ) } + + /// Loads the lookup table with values from `0` to `2^8 - 1` + fn load(&self, layouter: &mut impl Layouter, column: Column) -> Result<(), Error> { + let range = 1 << 8; + + layouter.assign_region( + || format!("load range check table of {} bits", 8), + |mut region| { + for i in 0..range { + region.assign_fixed( + || "assign cell in fixed column", + column, + i, + || Value::known(Fp::from(i as u64)), + )?; + } + Ok(()) + }, + ) + } } diff --git a/zk_prover/src/circuits/utils.rs b/zk_prover/src/circuits/utils.rs index 7971a2e4..80525204 100644 --- a/zk_prover/src/circuits/utils.rs +++ b/zk_prover/src/circuits/utils.rs @@ -225,7 +225,7 @@ fn fix_verifier_sol(yul_code_path: PathBuf) -> Result()?; let transcript_addr = format!("{:#x}", addr_as_num); transcript_addrs.push(addr_as_num); line = line.replace( @@ -238,7 +238,7 @@ fn fix_verifier_sol(yul_code_path: PathBuf) -> Result()?; let transcript_addr = format!("{:#x}", addr_as_num); transcript_addrs.push(addr_as_num); line = line.replace( diff --git a/zk_prover/src/merkle_sum_tree/utils/csv_parser.rs b/zk_prover/src/merkle_sum_tree/utils/csv_parser.rs index bf77f0db..9df4100e 100644 --- a/zk_prover/src/merkle_sum_tree/utils/csv_parser.rs +++ b/zk_prover/src/merkle_sum_tree/utils/csv_parser.rs @@ -30,7 +30,7 @@ pub fn parse_csv_to_entries, const N_ASSETS: usize, const N_BYTES } let mut entries = Vec::new(); - let mut balances_acc: Vec = vec![BigUint::from(0 as usize); N_ASSETS]; + let mut balances_acc: Vec = vec![BigUint::from(0_usize); N_ASSETS]; for result in rdr.deserialize() { let record: HashMap = result?; @@ -63,7 +63,7 @@ pub fn parse_csv_to_entries, const N_ASSETS: usize, const N_BYTES // Iterate through the balance accumulator and throw error if any balance is not in range 0, 2 ^ (8 * N_BYTES): for balance in balances_acc { - if balance >= BigUint::from(2 as usize).pow(8 * N_BYTES as u32) { + if balance >= BigUint::from(2_usize).pow(8 * N_BYTES as u32) { return Err( "Accumulated balance is not in the expected range, proof generation will fail!" .into(),