From 818eb959e78f724122c6b388c98a1d9c14c9c25d Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Thu, 2 Nov 2023 09:42:47 +0900 Subject: [PATCH 1/7] Modify ts in compiler and add tsc compile. --- packages/compiler/Cargo.toml | 2 +- packages/compiler/package.json | 11 +-- packages/compiler/src/circom.rs | 4 ++ packages/compiler/src/gen_circom.ts | 24 ++++--- packages/compiler/src/lib.rs | 1 + packages/compiler/src/regex.ts | 61 ++++++++-------- packages/compiler/tsconfig.json | 104 ++++++++++++++++++++++++++++ tsconfig.json | 5 +- 8 files changed, 164 insertions(+), 48 deletions(-) create mode 100644 packages/compiler/tsconfig.json diff --git a/packages/compiler/Cargo.toml b/packages/compiler/Cargo.toml index b6c0242..3aa40ca 100644 --- a/packages/compiler/Cargo.toml +++ b/packages/compiler/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "zk-regex-compiler" -version = "1.0.5" +version = "1.0.6" authors = [ "Javier Su ", "Kata Choi ", diff --git a/packages/compiler/package.json b/packages/compiler/package.json index edc9a2e..31a0381 100644 --- a/packages/compiler/package.json +++ b/packages/compiler/package.json @@ -1,6 +1,6 @@ { "name": "@zk-email/zk-regex-compiler", - "version": "1.0.5", + "version": "1.0.6", "description": "a compiler to generate a regex verification circuit in circom from a user-defined regex. Please check [zk-regex](https://github.com/zkemail/zk-regex/tree/main) for the detail.", "main": "index.node", "contributors": [ @@ -14,19 +14,20 @@ "url": "git+https://github.com/zkemail/zk-regex.git" }, "scripts": { - "build": "cargo-cp-artifact -nc index.node -- cargo build --message-format=json-render-diagnostics", + "build": "npx tsc && cargo-cp-artifact -nc index.node -- cargo build --message-format=json-render-diagnostics", "build-debug": "npm run build --", "build-release": "npm run build -- --release", - "install": "node-pre-gyp install --fallback-to-build=false || npm run build-release", + "install": "npx tsc && node-pre-gyp install --fallback-to-build=false || npm run build-release", "test": "cargo test", "package": "node-pre-gyp package", "upload-binary": "npm run package && node-pre-gyp-github publish" }, "license": "MIT", "dependencies": { - "cargo-cp-artifact": "^0.1", "@mapbox/node-pre-gyp": "^1.0", - "node-pre-gyp-github": "https://github.com/ultamatt/node-pre-gyp-github.git" + "cargo-cp-artifact": "^0.1", + "node-pre-gyp-github": "https://github.com/ultamatt/node-pre-gyp-github.git", + "typescript": "^5.2.2" }, "binary": { "module_name": "index", diff --git a/packages/compiler/src/circom.rs b/packages/compiler/src/circom.rs index 4b6c6eb..1dbd5ff 100644 --- a/packages/compiler/src/circom.rs +++ b/packages/compiler/src/circom.rs @@ -25,6 +25,10 @@ impl RegexAndDFA { let circom = gen_circom_allstr(&self.dfa_val, template_name)?; if gen_substrs { self.add_substrs_constraints(circom_path, circom)?; + } else { + let mut circom_file = File::create(circom_path)?; + write!(circom_file, "{}", circom)?; + circom_file.flush()?; } Ok(()) } diff --git a/packages/compiler/src/gen_circom.ts b/packages/compiler/src/gen_circom.ts index 55ee615..c34164a 100644 --- a/packages/compiler/src/gen_circom.ts +++ b/packages/compiler/src/gen_circom.ts @@ -16,7 +16,7 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { to_init_graph.push([]); } - let accept_nodes: Set = new Set(); + const accept_nodes: Set = new Set(); for (let i = 0; i < N; i++) { const node = graph_json[i]; for (let k in node.edges) { @@ -43,21 +43,22 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { if (init_going_state !== null) { for (const [going_state, chars] of Object.entries(to_init_graph)) { + const going_state_num = Number(going_state); if (chars.length === 0) { continue; } - if (rev_graph[going_state][init_going_state] == null) { - rev_graph[going_state][init_going_state] = []; + if (rev_graph[going_state_num][init_going_state] == null) { + rev_graph[going_state_num][init_going_state] = []; } - rev_graph[going_state][init_going_state] = rev_graph[going_state][init_going_state].concat(chars); + rev_graph[going_state_num][init_going_state] = rev_graph[going_state_num][init_going_state].concat(chars); } } - if (accept_nodes[0] === null) { - throw new Error("accept node must not be 0"); + if (accept_nodes.size === 0) { + throw new Error("accept node must exist"); } - accept_nodes.add([...accept_nodes][0]); - if (accept_nodes.size !== 1) { + const accept_nodes_array = [...accept_nodes]; + if (accept_nodes_array.length !== 1) { throw new Error("the size of accept nodes must be one"); } @@ -80,8 +81,9 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { for (let i = 1; i < N; i++) { const outputs: number[] = []; // let is_negates = []; - for (let prev_i of Object.keys(rev_graph[i])) { - const k = rev_graph[i][prev_i]; + for (const prev_i of Object.keys(rev_graph[i])) { + const prev_i_num = Number(prev_i); + const k = rev_graph[i][prev_i_num]; k.sort((a, b) => Number(a) - Number(b)); const eq_outputs: [string, number][] = []; let vals: Set = new Set(k); @@ -270,7 +272,7 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { lines = declarations.concat(init_code).concat(lines); - const accept_node: number = accept_nodes[0]; + const accept_node: number = accept_nodes_array[0]; const accept_lines = [""]; accept_lines.push("\tcomponent final_state_result = MultiOR(num_bytes+1);"); accept_lines.push("\tfor (var i = 0; i <= num_bytes; i++) {"); diff --git a/packages/compiler/src/lib.rs b/packages/compiler/src/lib.rs index a0b650b..b9d8f64 100644 --- a/packages/compiler/src/lib.rs +++ b/packages/compiler/src/lib.rs @@ -89,6 +89,7 @@ impl DecomposedRegexConfig { all_regex += &config.regex_def; } let dfa_val = regex_to_dfa(&all_regex)?; + println!("dfa_val {:?}", dfa_val); let substrs_defs = self.extract_substr_ids(&dfa_val)?; Ok(RegexAndDFA { // max_byte_size: self.max_byte_size, diff --git a/packages/compiler/src/regex.ts b/packages/compiler/src/regex.ts index 551aba1..109b9f8 100644 --- a/packages/compiler/src/regex.ts +++ b/packages/compiler/src/regex.ts @@ -14,12 +14,12 @@ type CusNode = { type?: string; sub?: CusNode; parts?: CusNode[]; - text?: string; + text?: string | [string]; begin: number; end: number; } -type NfaEdge = [string, NfaNode]; +type NfaEdge = [string | [string], NfaNode]; type NfaNode = { type: string; @@ -33,10 +33,11 @@ type DfaNode = { id: string | number; key: string, items: NfaNode[], - symbols: string[], + symbols: (string | [string])[], type: string, edges: DfaEdge[], - trans: Record; + trans: { [key: string | [string]]: DfaNode }, + // trans: Record; nature: number; }; @@ -61,7 +62,7 @@ type DfaNode = { */ function parseRegex(text: string): CusNode | string { 'use strict'; - function parseSub(text: string, begin: number, end: number, first: boolean): CusNode | string { + function parseSub(text: (string | [string])[], begin: number, end: number, first: boolean): CusNode | string { var i: number, sub: CusNode | string, last: number = 0, @@ -205,16 +206,16 @@ function parseRegex(text: string): CusNode | string { return node; } - let char: string = ''; - let new_text: string = ''; + let char: string | [string]; + let new_text: (string | [string])[] = []; let i: number = 0; let is_in_brancket: boolean = false; - let brancket_text: string = ''; + let brancket_text: (string | [string])[] = []; while (i < text.length) { char = text[i]; if (text[i] == '\\') { - char = text[i + 1]; + char = [text[i + 1]]; // new_text.push([text[i + 1]]); i += 1; } @@ -224,7 +225,7 @@ function parseRegex(text: string): CusNode | string { return `Error: unexpected [ at ${i}.`; } is_in_brancket = true; - brancket_text = ''; + brancket_text = []; // new_text.push(char); i += 1; } else if (char === ']') { @@ -234,11 +235,10 @@ function parseRegex(text: string): CusNode | string { is_in_brancket = false; if (brancket_text[0] === '^') { - brancket_text = brancket_text.slice(1); - let rev_text: string = ''; - let code_char: string = ''; - const brancket_text_array: string[] = brancket_text.split(''); - const brancket_text_jsons: string[] = brancket_text_array.map((c) => JSON.stringify(c)); + brancket_text.shift(); + let rev_text: (string | [string])[] = []; + let code_char: string | [string] = ''; + const brancket_text_jsons = brancket_text.map(val => JSON.stringify(val)); for (let idx = 0; idx < 255; idx++) { code_char = String.fromCodePoint(idx); @@ -257,26 +257,26 @@ function parseRegex(text: string): CusNode | string { '|', '-' ].indexOf(code_char) != -1) { - code_char = code_char[0]; + code_char = [code_char]; } if (brancket_text_jsons.indexOf(JSON.stringify(code_char)) === -1) { - rev_text += code_char; + rev_text.push(code_char); } } brancket_text = rev_text; } - new_text += '('; + new_text.push('('); for (const c of brancket_text) { - new_text += c; - new_text += '|'; + new_text.push(c); + new_text.push('|'); } new_text = new_text.slice(0, -1); - new_text += ')'; + new_text.push(')'); i += 1; } else if (is_in_brancket) { if (!Array.isArray(char) && ['(', ')', '[', '*', '+', '?', 'ϵ'].includes(char)) { @@ -288,10 +288,10 @@ function parseRegex(text: string): CusNode | string { } // new_text.push(char); // new_text.push('|'); - brancket_text += char; + brancket_text.push(char); i += 1; } else { - new_text += char; + new_text.push(char); i += 1; } } @@ -392,7 +392,7 @@ function nfaToDfa(nfa: NfaNode): DfaNode { function getClosure(nodes: NfaNode[]): DfaNode { const closure: NfaNode[] = []; const stack: NfaNode[] = []; - const symbols: string[] = []; + const symbols: (string | [string])[] = []; let type = ''; let top: NfaNode | string; @@ -447,7 +447,7 @@ function nfaToDfa(nfa: NfaNode): DfaNode { }; } - function getClosedMove(closure: DfaNode, symbol: string): DfaNode { + function getClosedMove(closure: DfaNode, symbol: string | [string]): DfaNode { const nexts: NfaNode[] = []; for (const node of closure.items) { @@ -514,7 +514,7 @@ function nfaToDfa(nfa: NfaNode): DfaNode { * @param {object} dfa @see nfaToDfa(), the function assumes that the given DFA is valid. * @return {object} dfa Returns the first element of the minimum DFA. */ -function minDfa(dfa) { +function minDfa(dfa: DfaNode) { 'use strict'; function getReverseEdges(start: DfaNode): [string[], Record, Record>] { const symbols: Record = {}; // The input alphabet @@ -724,8 +724,8 @@ function minDfa(dfa) { }); Object.keys(edges).forEach((from) => { - Object.keys(edges[from]).forEach((to) => { - const symbol = JSON.stringify(Object.keys(edges[from][to]).sort()); + Object.keys(edges[Number(from)]).forEach((to) => { + const symbol = JSON.stringify(Object.keys(edges[Number(from)][Number(to)]).sort()); nodes[parseInt(from)].symbols.push(symbol); nodes[parseInt(from)].edges.push([symbol, nodes[parseInt(to)]]); nodes[parseInt(from)].trans[symbol] = nodes[parseInt(to)]; @@ -767,12 +767,13 @@ function toNature(col: string): number { function regexToDfa(regex: string): string { const nfa = regexToNfa(regex); - + console.log(nfa); if (typeof nfa === 'string') { return nfa; } const dfa = minDfa(nfaToDfa(nfa)); + console.log(dfa); const states: Record = {}; const nodes: DfaNode[] = []; const stack: DfaNode[] = [dfa]; @@ -809,7 +810,7 @@ function regexToDfa(regex: string): string { } graph[node.nature - 1] = curr; } - // console.log(`graph: ${JSON.stringify(graph, null, 2)}`); + console.log(`graph: ${JSON.stringify(graph, null, 2)}`); return JSON.stringify(graph); } diff --git a/packages/compiler/tsconfig.json b/packages/compiler/tsconfig.json new file mode 100644 index 0000000..7db0f2c --- /dev/null +++ b/packages/compiler/tsconfig.json @@ -0,0 +1,104 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig to read more about this file */ + /* Projects */ + // "incremental": true, /* Save .tsbuildinfo files to allow for incremental compilation of projects. */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./.tsbuildinfo", /* Specify the path to .tsbuildinfo incremental compilation file. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects. */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + /* Language and Environment */ + "target": "ES2020", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for legacy experimental decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'. */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using 'jsx: react-jsx*'. */ + // "reactNamespace": "", /* Specify the object invoked for 'createElement'. This only applies when targeting 'react' JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + // "moduleDetection": "auto", /* Control what method is used to detect module-format JS files. */ + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node10", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like './node_modules/@types'. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */ + // "allowImportingTsExtensions": true, /* Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set. */ + // "resolvePackageJsonExports": true, /* Use the package.json 'exports' field when resolving package imports. */ + // "resolvePackageJsonImports": true, /* Use the package.json 'imports' field when resolving imports. */ + // "customConditions": [], /* Conditions to set in addition to the resolver-specific defaults when resolving imports. */ + // "resolveJsonModule": true, /* Enable importing .json files. */ + // "allowArbitraryExtensions": true, /* Enable importing files with any extension, provided a declaration file is present. */ + // "noResolve": true, /* Disallow 'import's, 'require's or ''s from expanding the number of files TypeScript should add to a project. */ + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the 'checkJS' option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from 'node_modules'. Only applicable with 'allowJs'. */ + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If 'declaration' is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types. */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have '@internal' in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like '__extends' in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing 'const enum' declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "verbatimModuleSyntax": true, /* Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied 'any' type. */ + // "strictNullChecks": true, /* When type checking, take into account 'null' and 'undefined'. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for 'bind', 'call', and 'apply' methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when 'this' is given the type 'any'. */ + // "useUnknownInCatchVariables": true, /* Default catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read. */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Add 'undefined' to a type when accessed using an index. */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type. */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + }, + "include": [ + "src/**/*" + ], +} \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index fae6584..795450d 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -9,5 +9,8 @@ "skipLibCheck": true, "forceConsistentCasingInFileNames": true }, - "include": ["./scripts", "./test"] + "include": [ + "./scripts", + "./test" + ] } \ No newline at end of file From 7489dea580235a9d273829872c5bf0aee6bb4ff7 Mon Sep 17 00:00:00 2001 From: SneakY-NickY Date: Fri, 3 Nov 2023 17:48:51 +0100 Subject: [PATCH 2/7] Possible fix --- packages/compiler/src/regex.ts | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/packages/compiler/src/regex.ts b/packages/compiler/src/regex.ts index 109b9f8..3764266 100644 --- a/packages/compiler/src/regex.ts +++ b/packages/compiler/src/regex.ts @@ -27,7 +27,7 @@ type NfaNode = { id?: string | number; }; -type DfaEdge = [string, DfaNode]; +type DfaEdge = [string | [string], DfaNode]; type DfaNode = { id: string | number; @@ -36,8 +36,7 @@ type DfaNode = { symbols: (string | [string])[], type: string, edges: DfaEdge[], - trans: { [key: string | [string]]: DfaNode }, - // trans: Record; + trans: Record; nature: number; }; @@ -500,7 +499,7 @@ function nfaToDfa(nfa: NfaNode): DfaNode { queue.push(closure); } - top.trans[top.symbols[i]] = states[closure.key]; + top.trans[top.symbols[i] as string] = states[closure.key]; top.edges.push([top.symbols[i], states[closure.key]]); } } @@ -526,7 +525,7 @@ function minDfa(dfa: DfaNode) { const queue: DfaNode[] = [start]; let front = 0; let top: DfaNode; - let symbol: string; + let symbol: string | [string]; let next: DfaNode; while (front < queue.length) { @@ -535,21 +534,22 @@ function minDfa(dfa: DfaNode) { idMap[top.id] = top; for (symbol of top.symbols) { - if (!(symbol in symbols)) { - symbols[symbol] = true; + const symbolString = symbol as string; + if (!(symbolString in symbols)) { + symbols[symbolString] = true; } - next = top.trans[symbol]; + next = top.trans[symbolString]; if (!(next.id in revEdges)) { revEdges[next.id] = {}; } - if (!(symbol in revEdges[next.id])) { - revEdges[next.id][symbol] = []; + if (!(symbolString in revEdges[next.id])) { + revEdges[next.id][symbolString] = []; } - revEdges[next.id][symbol].push(top.id); + revEdges[next.id][symbolString].push(top.id); if (!(next.id in visited)) { visited[next.id] = true; @@ -786,8 +786,8 @@ function regexToDfa(regex: string): string { top.nature = toNature(top.id.toString()); nodes.push(top); for (const [symbol, node] of top.edges) { - if (symbol !== 'ϵ' && !symbols.includes(symbol)) { - symbols.push(symbol); + if (symbol !== 'ϵ' && !symbols.includes(symbol as string)) { + symbols.push(symbol as string); } stack.push(node); } From 64ca70fc21236d00846ce79c766229535facebea Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Thu, 23 Nov 2023 02:40:24 +0900 Subject: [PATCH 3/7] Remove console.log and print. --- .../circuits/common/email_addr_regex.circom | 552 ++-- .../common/email_addr_with_name_regex.circom | 2358 ++++++++++++----- .../circuits/common/email_domain_regex.circom | 552 ++-- packages/compiler/src/lib.rs | 2 +- packages/compiler/src/regex.ts | 6 +- 5 files changed, 2391 insertions(+), 1079 deletions(-) diff --git a/packages/circom/circuits/common/email_addr_regex.circom b/packages/circom/circuits/common/email_addr_regex.circom index 8a35b5a..d606da7 100644 --- a/packages/circom/circuits/common/email_addr_regex.circom +++ b/packages/circom/circuits/common/email_addr_regex.circom @@ -13,9 +13,9 @@ template EmailAddrRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[72][num_bytes]; - component lt[20][num_bytes]; - component and[15][num_bytes]; + component eq[131][num_bytes]; + component lt[12][num_bytes]; + component and[11][num_bytes]; component multi_or[6][num_bytes]; signal states[num_bytes+1][4]; component state_changed[num_bytes]; @@ -147,42 +147,6 @@ template EmailAddrRegex(msg_bytes) { multi_or[0][i].in[24] <== eq[22][i].out; multi_or[0][i].in[25] <== eq[23][i].out; and[2][i].b <== multi_or[0][i].out; - lt[4][i] = LessEqThan(8); - lt[4][i].in[0] <== 65; - lt[4][i].in[1] <== in[i]; - lt[5][i] = LessEqThan(8); - lt[5][i].in[0] <== in[i]; - lt[5][i].in[1] <== 90; - and[3][i] = AND(); - and[3][i].a <== lt[4][i].out; - and[3][i].b <== lt[5][i].out; - lt[6][i] = LessEqThan(8); - lt[6][i].in[0] <== 94; - lt[6][i].in[1] <== in[i]; - lt[7][i] = LessEqThan(8); - lt[7][i].in[0] <== in[i]; - lt[7][i].in[1] <== 126; - and[4][i] = AND(); - and[4][i].a <== lt[6][i].out; - and[4][i].b <== lt[7][i].out; - lt[8][i] = LessEqThan(8); - lt[8][i].in[0] <== 65; - lt[8][i].in[1] <== in[i]; - lt[9][i] = LessEqThan(8); - lt[9][i].in[0] <== in[i]; - lt[9][i].in[1] <== 90; - and[5][i] = AND(); - and[5][i].a <== lt[8][i].out; - and[5][i].b <== lt[9][i].out; - lt[10][i] = LessEqThan(8); - lt[10][i].in[0] <== 95; - lt[10][i].in[1] <== in[i]; - lt[11][i] = LessEqThan(8); - lt[11][i].in[0] <== in[i]; - lt[11][i].in[1] <== 126; - and[6][i] = AND(); - and[6][i].a <== lt[10][i].out; - and[6][i].b <== lt[11][i].out; eq[24][i] = IsEqual(); eq[24][i].in[0] <== in[i]; eq[24][i].in[1] <== 33; @@ -252,197 +216,429 @@ template EmailAddrRegex(msg_bytes) { eq[46][i] = IsEqual(); eq[46][i].in[0] <== in[i]; eq[46][i].in[1] <== 63; - and[7][i] = AND(); - and[7][i].a <== states[i][1]; - multi_or[1][i] = MultiOR(27); - multi_or[1][i].in[0] <== and[3][i].out; - multi_or[1][i].in[1] <== and[4][i].out; - multi_or[1][i].in[2] <== and[5][i].out; - multi_or[1][i].in[3] <== and[6][i].out; - multi_or[1][i].in[4] <== eq[24][i].out; - multi_or[1][i].in[5] <== eq[25][i].out; - multi_or[1][i].in[6] <== eq[26][i].out; - multi_or[1][i].in[7] <== eq[27][i].out; - multi_or[1][i].in[8] <== eq[28][i].out; - multi_or[1][i].in[9] <== eq[29][i].out; - multi_or[1][i].in[10] <== eq[30][i].out; - multi_or[1][i].in[11] <== eq[31][i].out; - multi_or[1][i].in[12] <== eq[32][i].out; - multi_or[1][i].in[13] <== eq[33][i].out; - multi_or[1][i].in[14] <== eq[34][i].out; - multi_or[1][i].in[15] <== eq[35][i].out; - multi_or[1][i].in[16] <== eq[36][i].out; - multi_or[1][i].in[17] <== eq[37][i].out; - multi_or[1][i].in[18] <== eq[38][i].out; - multi_or[1][i].in[19] <== eq[39][i].out; - multi_or[1][i].in[20] <== eq[40][i].out; - multi_or[1][i].in[21] <== eq[41][i].out; - multi_or[1][i].in[22] <== eq[42][i].out; - multi_or[1][i].in[23] <== eq[43][i].out; - multi_or[1][i].in[24] <== eq[44][i].out; - multi_or[1][i].in[25] <== eq[45][i].out; - multi_or[1][i].in[26] <== eq[46][i].out; - and[7][i].b <== multi_or[1][i].out; - multi_or[2][i] = MultiOR(2); - multi_or[2][i].in[0] <== and[2][i].out; - multi_or[2][i].in[1] <== and[7][i].out; - states[i+1][1] <== multi_or[2][i].out; - state_changed[i].in[0] <== states[i+1][1]; eq[47][i] = IsEqual(); eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 64; - and[8][i] = AND(); - and[8][i].a <== states[i][1]; - and[8][i].b <== eq[47][i].out; - states[i+1][2] <== and[8][i].out; - state_changed[i].in[1] <== states[i+1][2]; - lt[12][i] = LessEqThan(8); - lt[12][i].in[0] <== 65; - lt[12][i].in[1] <== in[i]; - lt[13][i] = LessEqThan(8); - lt[13][i].in[0] <== in[i]; - lt[13][i].in[1] <== 90; - and[9][i] = AND(); - and[9][i].a <== lt[12][i].out; - and[9][i].b <== lt[13][i].out; - lt[14][i] = LessEqThan(8); - lt[14][i].in[0] <== 97; - lt[14][i].in[1] <== in[i]; - lt[15][i] = LessEqThan(8); - lt[15][i].in[0] <== in[i]; - lt[15][i].in[1] <== 122; - and[10][i] = AND(); - and[10][i].a <== lt[14][i].out; - and[10][i].b <== lt[15][i].out; + eq[47][i].in[1] <== 65; eq[48][i] = IsEqual(); eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 45; + eq[48][i].in[1] <== 66; eq[49][i] = IsEqual(); eq[49][i].in[0] <== in[i]; - eq[49][i].in[1] <== 46; + eq[49][i].in[1] <== 67; eq[50][i] = IsEqual(); eq[50][i].in[0] <== in[i]; - eq[50][i].in[1] <== 48; + eq[50][i].in[1] <== 68; eq[51][i] = IsEqual(); eq[51][i].in[0] <== in[i]; - eq[51][i].in[1] <== 49; + eq[51][i].in[1] <== 69; eq[52][i] = IsEqual(); eq[52][i].in[0] <== in[i]; - eq[52][i].in[1] <== 50; + eq[52][i].in[1] <== 70; eq[53][i] = IsEqual(); eq[53][i].in[0] <== in[i]; - eq[53][i].in[1] <== 51; + eq[53][i].in[1] <== 71; eq[54][i] = IsEqual(); eq[54][i].in[0] <== in[i]; - eq[54][i].in[1] <== 52; + eq[54][i].in[1] <== 72; eq[55][i] = IsEqual(); eq[55][i].in[0] <== in[i]; - eq[55][i].in[1] <== 53; + eq[55][i].in[1] <== 73; eq[56][i] = IsEqual(); eq[56][i].in[0] <== in[i]; - eq[56][i].in[1] <== 54; + eq[56][i].in[1] <== 74; eq[57][i] = IsEqual(); eq[57][i].in[0] <== in[i]; - eq[57][i].in[1] <== 55; + eq[57][i].in[1] <== 75; eq[58][i] = IsEqual(); eq[58][i].in[0] <== in[i]; - eq[58][i].in[1] <== 56; + eq[58][i].in[1] <== 76; eq[59][i] = IsEqual(); eq[59][i].in[0] <== in[i]; - eq[59][i].in[1] <== 57; - and[11][i] = AND(); - and[11][i].a <== states[i][2]; - multi_or[3][i] = MultiOR(14); - multi_or[3][i].in[0] <== and[9][i].out; - multi_or[3][i].in[1] <== and[10][i].out; - multi_or[3][i].in[2] <== eq[48][i].out; - multi_or[3][i].in[3] <== eq[49][i].out; - multi_or[3][i].in[4] <== eq[50][i].out; - multi_or[3][i].in[5] <== eq[51][i].out; - multi_or[3][i].in[6] <== eq[52][i].out; - multi_or[3][i].in[7] <== eq[53][i].out; - multi_or[3][i].in[8] <== eq[54][i].out; - multi_or[3][i].in[9] <== eq[55][i].out; - multi_or[3][i].in[10] <== eq[56][i].out; - multi_or[3][i].in[11] <== eq[57][i].out; - multi_or[3][i].in[12] <== eq[58][i].out; - multi_or[3][i].in[13] <== eq[59][i].out; - and[11][i].b <== multi_or[3][i].out; - lt[16][i] = LessEqThan(8); - lt[16][i].in[0] <== 65; - lt[16][i].in[1] <== in[i]; - lt[17][i] = LessEqThan(8); - lt[17][i].in[0] <== in[i]; - lt[17][i].in[1] <== 90; - and[12][i] = AND(); - and[12][i].a <== lt[16][i].out; - and[12][i].b <== lt[17][i].out; - lt[18][i] = LessEqThan(8); - lt[18][i].in[0] <== 97; - lt[18][i].in[1] <== in[i]; - lt[19][i] = LessEqThan(8); - lt[19][i].in[0] <== in[i]; - lt[19][i].in[1] <== 122; - and[13][i] = AND(); - and[13][i].a <== lt[18][i].out; - and[13][i].b <== lt[19][i].out; + eq[59][i].in[1] <== 77; eq[60][i] = IsEqual(); eq[60][i].in[0] <== in[i]; - eq[60][i].in[1] <== 45; + eq[60][i].in[1] <== 78; eq[61][i] = IsEqual(); eq[61][i].in[0] <== in[i]; - eq[61][i].in[1] <== 46; + eq[61][i].in[1] <== 79; eq[62][i] = IsEqual(); eq[62][i].in[0] <== in[i]; - eq[62][i].in[1] <== 48; + eq[62][i].in[1] <== 80; eq[63][i] = IsEqual(); eq[63][i].in[0] <== in[i]; - eq[63][i].in[1] <== 49; + eq[63][i].in[1] <== 81; eq[64][i] = IsEqual(); eq[64][i].in[0] <== in[i]; - eq[64][i].in[1] <== 50; + eq[64][i].in[1] <== 82; eq[65][i] = IsEqual(); eq[65][i].in[0] <== in[i]; - eq[65][i].in[1] <== 51; + eq[65][i].in[1] <== 83; eq[66][i] = IsEqual(); eq[66][i].in[0] <== in[i]; - eq[66][i].in[1] <== 52; + eq[66][i].in[1] <== 84; eq[67][i] = IsEqual(); eq[67][i].in[0] <== in[i]; - eq[67][i].in[1] <== 53; + eq[67][i].in[1] <== 85; eq[68][i] = IsEqual(); eq[68][i].in[0] <== in[i]; - eq[68][i].in[1] <== 54; + eq[68][i].in[1] <== 86; eq[69][i] = IsEqual(); eq[69][i].in[0] <== in[i]; - eq[69][i].in[1] <== 55; + eq[69][i].in[1] <== 87; eq[70][i] = IsEqual(); eq[70][i].in[0] <== in[i]; - eq[70][i].in[1] <== 56; + eq[70][i].in[1] <== 88; eq[71][i] = IsEqual(); eq[71][i].in[0] <== in[i]; - eq[71][i].in[1] <== 57; - and[14][i] = AND(); - and[14][i].a <== states[i][3]; + eq[71][i].in[1] <== 89; + eq[72][i] = IsEqual(); + eq[72][i].in[0] <== in[i]; + eq[72][i].in[1] <== 90; + eq[73][i] = IsEqual(); + eq[73][i].in[0] <== in[i]; + eq[73][i].in[1] <== 94; + eq[74][i] = IsEqual(); + eq[74][i].in[0] <== in[i]; + eq[74][i].in[1] <== 95; + eq[75][i] = IsEqual(); + eq[75][i].in[0] <== in[i]; + eq[75][i].in[1] <== 96; + eq[76][i] = IsEqual(); + eq[76][i].in[0] <== in[i]; + eq[76][i].in[1] <== 97; + eq[77][i] = IsEqual(); + eq[77][i].in[0] <== in[i]; + eq[77][i].in[1] <== 98; + eq[78][i] = IsEqual(); + eq[78][i].in[0] <== in[i]; + eq[78][i].in[1] <== 99; + eq[79][i] = IsEqual(); + eq[79][i].in[0] <== in[i]; + eq[79][i].in[1] <== 100; + eq[80][i] = IsEqual(); + eq[80][i].in[0] <== in[i]; + eq[80][i].in[1] <== 101; + eq[81][i] = IsEqual(); + eq[81][i].in[0] <== in[i]; + eq[81][i].in[1] <== 102; + eq[82][i] = IsEqual(); + eq[82][i].in[0] <== in[i]; + eq[82][i].in[1] <== 103; + eq[83][i] = IsEqual(); + eq[83][i].in[0] <== in[i]; + eq[83][i].in[1] <== 104; + eq[84][i] = IsEqual(); + eq[84][i].in[0] <== in[i]; + eq[84][i].in[1] <== 105; + eq[85][i] = IsEqual(); + eq[85][i].in[0] <== in[i]; + eq[85][i].in[1] <== 106; + eq[86][i] = IsEqual(); + eq[86][i].in[0] <== in[i]; + eq[86][i].in[1] <== 107; + eq[87][i] = IsEqual(); + eq[87][i].in[0] <== in[i]; + eq[87][i].in[1] <== 108; + eq[88][i] = IsEqual(); + eq[88][i].in[0] <== in[i]; + eq[88][i].in[1] <== 109; + eq[89][i] = IsEqual(); + eq[89][i].in[0] <== in[i]; + eq[89][i].in[1] <== 110; + eq[90][i] = IsEqual(); + eq[90][i].in[0] <== in[i]; + eq[90][i].in[1] <== 111; + eq[91][i] = IsEqual(); + eq[91][i].in[0] <== in[i]; + eq[91][i].in[1] <== 112; + eq[92][i] = IsEqual(); + eq[92][i].in[0] <== in[i]; + eq[92][i].in[1] <== 113; + eq[93][i] = IsEqual(); + eq[93][i].in[0] <== in[i]; + eq[93][i].in[1] <== 114; + eq[94][i] = IsEqual(); + eq[94][i].in[0] <== in[i]; + eq[94][i].in[1] <== 115; + eq[95][i] = IsEqual(); + eq[95][i].in[0] <== in[i]; + eq[95][i].in[1] <== 116; + eq[96][i] = IsEqual(); + eq[96][i].in[0] <== in[i]; + eq[96][i].in[1] <== 117; + eq[97][i] = IsEqual(); + eq[97][i].in[0] <== in[i]; + eq[97][i].in[1] <== 118; + eq[98][i] = IsEqual(); + eq[98][i].in[0] <== in[i]; + eq[98][i].in[1] <== 119; + eq[99][i] = IsEqual(); + eq[99][i].in[0] <== in[i]; + eq[99][i].in[1] <== 120; + eq[100][i] = IsEqual(); + eq[100][i].in[0] <== in[i]; + eq[100][i].in[1] <== 121; + eq[101][i] = IsEqual(); + eq[101][i].in[0] <== in[i]; + eq[101][i].in[1] <== 122; + eq[102][i] = IsEqual(); + eq[102][i].in[0] <== in[i]; + eq[102][i].in[1] <== 123; + eq[103][i] = IsEqual(); + eq[103][i].in[0] <== in[i]; + eq[103][i].in[1] <== 124; + eq[104][i] = IsEqual(); + eq[104][i].in[0] <== in[i]; + eq[104][i].in[1] <== 125; + eq[105][i] = IsEqual(); + eq[105][i].in[0] <== in[i]; + eq[105][i].in[1] <== 126; + and[3][i] = AND(); + and[3][i].a <== states[i][1]; + multi_or[1][i] = MultiOR(82); + multi_or[1][i].in[0] <== eq[24][i].out; + multi_or[1][i].in[1] <== eq[25][i].out; + multi_or[1][i].in[2] <== eq[26][i].out; + multi_or[1][i].in[3] <== eq[27][i].out; + multi_or[1][i].in[4] <== eq[28][i].out; + multi_or[1][i].in[5] <== eq[29][i].out; + multi_or[1][i].in[6] <== eq[30][i].out; + multi_or[1][i].in[7] <== eq[31][i].out; + multi_or[1][i].in[8] <== eq[32][i].out; + multi_or[1][i].in[9] <== eq[33][i].out; + multi_or[1][i].in[10] <== eq[34][i].out; + multi_or[1][i].in[11] <== eq[35][i].out; + multi_or[1][i].in[12] <== eq[36][i].out; + multi_or[1][i].in[13] <== eq[37][i].out; + multi_or[1][i].in[14] <== eq[38][i].out; + multi_or[1][i].in[15] <== eq[39][i].out; + multi_or[1][i].in[16] <== eq[40][i].out; + multi_or[1][i].in[17] <== eq[41][i].out; + multi_or[1][i].in[18] <== eq[42][i].out; + multi_or[1][i].in[19] <== eq[43][i].out; + multi_or[1][i].in[20] <== eq[44][i].out; + multi_or[1][i].in[21] <== eq[45][i].out; + multi_or[1][i].in[22] <== eq[46][i].out; + multi_or[1][i].in[23] <== eq[47][i].out; + multi_or[1][i].in[24] <== eq[48][i].out; + multi_or[1][i].in[25] <== eq[49][i].out; + multi_or[1][i].in[26] <== eq[50][i].out; + multi_or[1][i].in[27] <== eq[51][i].out; + multi_or[1][i].in[28] <== eq[52][i].out; + multi_or[1][i].in[29] <== eq[53][i].out; + multi_or[1][i].in[30] <== eq[54][i].out; + multi_or[1][i].in[31] <== eq[55][i].out; + multi_or[1][i].in[32] <== eq[56][i].out; + multi_or[1][i].in[33] <== eq[57][i].out; + multi_or[1][i].in[34] <== eq[58][i].out; + multi_or[1][i].in[35] <== eq[59][i].out; + multi_or[1][i].in[36] <== eq[60][i].out; + multi_or[1][i].in[37] <== eq[61][i].out; + multi_or[1][i].in[38] <== eq[62][i].out; + multi_or[1][i].in[39] <== eq[63][i].out; + multi_or[1][i].in[40] <== eq[64][i].out; + multi_or[1][i].in[41] <== eq[65][i].out; + multi_or[1][i].in[42] <== eq[66][i].out; + multi_or[1][i].in[43] <== eq[67][i].out; + multi_or[1][i].in[44] <== eq[68][i].out; + multi_or[1][i].in[45] <== eq[69][i].out; + multi_or[1][i].in[46] <== eq[70][i].out; + multi_or[1][i].in[47] <== eq[71][i].out; + multi_or[1][i].in[48] <== eq[72][i].out; + multi_or[1][i].in[49] <== eq[73][i].out; + multi_or[1][i].in[50] <== eq[74][i].out; + multi_or[1][i].in[51] <== eq[75][i].out; + multi_or[1][i].in[52] <== eq[76][i].out; + multi_or[1][i].in[53] <== eq[77][i].out; + multi_or[1][i].in[54] <== eq[78][i].out; + multi_or[1][i].in[55] <== eq[79][i].out; + multi_or[1][i].in[56] <== eq[80][i].out; + multi_or[1][i].in[57] <== eq[81][i].out; + multi_or[1][i].in[58] <== eq[82][i].out; + multi_or[1][i].in[59] <== eq[83][i].out; + multi_or[1][i].in[60] <== eq[84][i].out; + multi_or[1][i].in[61] <== eq[85][i].out; + multi_or[1][i].in[62] <== eq[86][i].out; + multi_or[1][i].in[63] <== eq[87][i].out; + multi_or[1][i].in[64] <== eq[88][i].out; + multi_or[1][i].in[65] <== eq[89][i].out; + multi_or[1][i].in[66] <== eq[90][i].out; + multi_or[1][i].in[67] <== eq[91][i].out; + multi_or[1][i].in[68] <== eq[92][i].out; + multi_or[1][i].in[69] <== eq[93][i].out; + multi_or[1][i].in[70] <== eq[94][i].out; + multi_or[1][i].in[71] <== eq[95][i].out; + multi_or[1][i].in[72] <== eq[96][i].out; + multi_or[1][i].in[73] <== eq[97][i].out; + multi_or[1][i].in[74] <== eq[98][i].out; + multi_or[1][i].in[75] <== eq[99][i].out; + multi_or[1][i].in[76] <== eq[100][i].out; + multi_or[1][i].in[77] <== eq[101][i].out; + multi_or[1][i].in[78] <== eq[102][i].out; + multi_or[1][i].in[79] <== eq[103][i].out; + multi_or[1][i].in[80] <== eq[104][i].out; + multi_or[1][i].in[81] <== eq[105][i].out; + and[3][i].b <== multi_or[1][i].out; + multi_or[2][i] = MultiOR(2); + multi_or[2][i].in[0] <== and[2][i].out; + multi_or[2][i].in[1] <== and[3][i].out; + states[i+1][1] <== multi_or[2][i].out; + state_changed[i].in[0] <== states[i+1][1]; + eq[106][i] = IsEqual(); + eq[106][i].in[0] <== in[i]; + eq[106][i].in[1] <== 64; + and[4][i] = AND(); + and[4][i].a <== states[i][1]; + and[4][i].b <== eq[106][i].out; + states[i+1][2] <== and[4][i].out; + state_changed[i].in[1] <== states[i+1][2]; + lt[4][i] = LessEqThan(8); + lt[4][i].in[0] <== 65; + lt[4][i].in[1] <== in[i]; + lt[5][i] = LessEqThan(8); + lt[5][i].in[0] <== in[i]; + lt[5][i].in[1] <== 90; + and[5][i] = AND(); + and[5][i].a <== lt[4][i].out; + and[5][i].b <== lt[5][i].out; + lt[6][i] = LessEqThan(8); + lt[6][i].in[0] <== 97; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessEqThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 122; + and[6][i] = AND(); + and[6][i].a <== lt[6][i].out; + and[6][i].b <== lt[7][i].out; + eq[107][i] = IsEqual(); + eq[107][i].in[0] <== in[i]; + eq[107][i].in[1] <== 45; + eq[108][i] = IsEqual(); + eq[108][i].in[0] <== in[i]; + eq[108][i].in[1] <== 46; + eq[109][i] = IsEqual(); + eq[109][i].in[0] <== in[i]; + eq[109][i].in[1] <== 48; + eq[110][i] = IsEqual(); + eq[110][i].in[0] <== in[i]; + eq[110][i].in[1] <== 49; + eq[111][i] = IsEqual(); + eq[111][i].in[0] <== in[i]; + eq[111][i].in[1] <== 50; + eq[112][i] = IsEqual(); + eq[112][i].in[0] <== in[i]; + eq[112][i].in[1] <== 51; + eq[113][i] = IsEqual(); + eq[113][i].in[0] <== in[i]; + eq[113][i].in[1] <== 52; + eq[114][i] = IsEqual(); + eq[114][i].in[0] <== in[i]; + eq[114][i].in[1] <== 53; + eq[115][i] = IsEqual(); + eq[115][i].in[0] <== in[i]; + eq[115][i].in[1] <== 54; + eq[116][i] = IsEqual(); + eq[116][i].in[0] <== in[i]; + eq[116][i].in[1] <== 55; + eq[117][i] = IsEqual(); + eq[117][i].in[0] <== in[i]; + eq[117][i].in[1] <== 56; + eq[118][i] = IsEqual(); + eq[118][i].in[0] <== in[i]; + eq[118][i].in[1] <== 57; + and[7][i] = AND(); + and[7][i].a <== states[i][2]; + multi_or[3][i] = MultiOR(14); + multi_or[3][i].in[0] <== and[5][i].out; + multi_or[3][i].in[1] <== and[6][i].out; + multi_or[3][i].in[2] <== eq[107][i].out; + multi_or[3][i].in[3] <== eq[108][i].out; + multi_or[3][i].in[4] <== eq[109][i].out; + multi_or[3][i].in[5] <== eq[110][i].out; + multi_or[3][i].in[6] <== eq[111][i].out; + multi_or[3][i].in[7] <== eq[112][i].out; + multi_or[3][i].in[8] <== eq[113][i].out; + multi_or[3][i].in[9] <== eq[114][i].out; + multi_or[3][i].in[10] <== eq[115][i].out; + multi_or[3][i].in[11] <== eq[116][i].out; + multi_or[3][i].in[12] <== eq[117][i].out; + multi_or[3][i].in[13] <== eq[118][i].out; + and[7][i].b <== multi_or[3][i].out; + lt[8][i] = LessEqThan(8); + lt[8][i].in[0] <== 65; + lt[8][i].in[1] <== in[i]; + lt[9][i] = LessEqThan(8); + lt[9][i].in[0] <== in[i]; + lt[9][i].in[1] <== 90; + and[8][i] = AND(); + and[8][i].a <== lt[8][i].out; + and[8][i].b <== lt[9][i].out; + lt[10][i] = LessEqThan(8); + lt[10][i].in[0] <== 97; + lt[10][i].in[1] <== in[i]; + lt[11][i] = LessEqThan(8); + lt[11][i].in[0] <== in[i]; + lt[11][i].in[1] <== 122; + and[9][i] = AND(); + and[9][i].a <== lt[10][i].out; + and[9][i].b <== lt[11][i].out; + eq[119][i] = IsEqual(); + eq[119][i].in[0] <== in[i]; + eq[119][i].in[1] <== 45; + eq[120][i] = IsEqual(); + eq[120][i].in[0] <== in[i]; + eq[120][i].in[1] <== 46; + eq[121][i] = IsEqual(); + eq[121][i].in[0] <== in[i]; + eq[121][i].in[1] <== 48; + eq[122][i] = IsEqual(); + eq[122][i].in[0] <== in[i]; + eq[122][i].in[1] <== 49; + eq[123][i] = IsEqual(); + eq[123][i].in[0] <== in[i]; + eq[123][i].in[1] <== 50; + eq[124][i] = IsEqual(); + eq[124][i].in[0] <== in[i]; + eq[124][i].in[1] <== 51; + eq[125][i] = IsEqual(); + eq[125][i].in[0] <== in[i]; + eq[125][i].in[1] <== 52; + eq[126][i] = IsEqual(); + eq[126][i].in[0] <== in[i]; + eq[126][i].in[1] <== 53; + eq[127][i] = IsEqual(); + eq[127][i].in[0] <== in[i]; + eq[127][i].in[1] <== 54; + eq[128][i] = IsEqual(); + eq[128][i].in[0] <== in[i]; + eq[128][i].in[1] <== 55; + eq[129][i] = IsEqual(); + eq[129][i].in[0] <== in[i]; + eq[129][i].in[1] <== 56; + eq[130][i] = IsEqual(); + eq[130][i].in[0] <== in[i]; + eq[130][i].in[1] <== 57; + and[10][i] = AND(); + and[10][i].a <== states[i][3]; multi_or[4][i] = MultiOR(14); - multi_or[4][i].in[0] <== and[12][i].out; - multi_or[4][i].in[1] <== and[13][i].out; - multi_or[4][i].in[2] <== eq[60][i].out; - multi_or[4][i].in[3] <== eq[61][i].out; - multi_or[4][i].in[4] <== eq[62][i].out; - multi_or[4][i].in[5] <== eq[63][i].out; - multi_or[4][i].in[6] <== eq[64][i].out; - multi_or[4][i].in[7] <== eq[65][i].out; - multi_or[4][i].in[8] <== eq[66][i].out; - multi_or[4][i].in[9] <== eq[67][i].out; - multi_or[4][i].in[10] <== eq[68][i].out; - multi_or[4][i].in[11] <== eq[69][i].out; - multi_or[4][i].in[12] <== eq[70][i].out; - multi_or[4][i].in[13] <== eq[71][i].out; - and[14][i].b <== multi_or[4][i].out; + multi_or[4][i].in[0] <== and[8][i].out; + multi_or[4][i].in[1] <== and[9][i].out; + multi_or[4][i].in[2] <== eq[119][i].out; + multi_or[4][i].in[3] <== eq[120][i].out; + multi_or[4][i].in[4] <== eq[121][i].out; + multi_or[4][i].in[5] <== eq[122][i].out; + multi_or[4][i].in[6] <== eq[123][i].out; + multi_or[4][i].in[7] <== eq[124][i].out; + multi_or[4][i].in[8] <== eq[125][i].out; + multi_or[4][i].in[9] <== eq[126][i].out; + multi_or[4][i].in[10] <== eq[127][i].out; + multi_or[4][i].in[11] <== eq[128][i].out; + multi_or[4][i].in[12] <== eq[129][i].out; + multi_or[4][i].in[13] <== eq[130][i].out; + and[10][i].b <== multi_or[4][i].out; multi_or[5][i] = MultiOR(2); - multi_or[5][i].in[0] <== and[11][i].out; - multi_or[5][i].in[1] <== and[14][i].out; + multi_or[5][i].in[0] <== and[7][i].out; + multi_or[5][i].in[1] <== and[10][i].out; states[i+1][3] <== multi_or[5][i].out; state_changed[i].in[2] <== states[i+1][3]; states[i+1][0] <== 1 - state_changed[i].out; diff --git a/packages/circom/circuits/common/email_addr_with_name_regex.circom b/packages/circom/circuits/common/email_addr_with_name_regex.circom index 648056c..2c3249d 100644 --- a/packages/circom/circuits/common/email_addr_with_name_regex.circom +++ b/packages/circom/circuits/common/email_addr_with_name_regex.circom @@ -13,9 +13,9 @@ template EmailAddrWithNameRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[209][num_bytes]; - component lt[48][num_bytes]; - component and[43][num_bytes]; + component eq[449][num_bytes]; + component lt[40][num_bytes]; + component and[39][num_bytes]; component multi_or[15][num_bytes]; signal states[num_bytes+1][7]; component state_changed[num_bytes]; @@ -41,7 +41,7 @@ template EmailAddrWithNameRegex(msg_bytes) { lt[2][i].in[1] <== in[i]; lt[3][i] = LessEqThan(8); lt[3][i].in[0] <== in[i]; - lt[3][i].in[1] <== 254; + lt[3][i].in[1] <== 255; and[1][i] = AND(); and[1][i].a <== lt[2][i].out; and[1][i].b <== lt[3][i].out; @@ -81,12 +81,9 @@ template EmailAddrWithNameRegex(msg_bytes) { eq[11][i] = IsEqual(); eq[11][i].in[0] <== in[i]; eq[11][i].in[1] <== 12; - eq[12][i] = IsEqual(); - eq[12][i].in[0] <== in[i]; - eq[12][i].in[1] <== 255; and[2][i] = AND(); and[2][i].a <== states[i][0]; - multi_or[0][i] = MultiOR(15); + multi_or[0][i] = MultiOR(14); multi_or[0][i].in[0] <== and[0][i].out; multi_or[0][i].in[1] <== and[1][i].out; multi_or[0][i].in[2] <== eq[0][i].out; @@ -101,1114 +98,2037 @@ template EmailAddrWithNameRegex(msg_bytes) { multi_or[0][i].in[11] <== eq[9][i].out; multi_or[0][i].in[12] <== eq[10][i].out; multi_or[0][i].in[13] <== eq[11][i].out; - multi_or[0][i].in[14] <== eq[12][i].out; and[2][i].b <== multi_or[0][i].out; - lt[4][i] = LessEqThan(8); - lt[4][i].in[0] <== 14; - lt[4][i].in[1] <== in[i]; - lt[5][i] = LessEqThan(8); - lt[5][i].in[0] <== in[i]; - lt[5][i].in[1] <== 59; - and[3][i] = AND(); - and[3][i].a <== lt[4][i].out; - and[3][i].b <== lt[5][i].out; - lt[6][i] = LessEqThan(8); - lt[6][i].in[0] <== 61; - lt[6][i].in[1] <== in[i]; - lt[7][i] = LessEqThan(8); - lt[7][i].in[0] <== in[i]; - lt[7][i].in[1] <== 254; - and[4][i] = AND(); - and[4][i].a <== lt[6][i].out; - and[4][i].b <== lt[7][i].out; - lt[8][i] = LessEqThan(8); - lt[8][i].in[0] <== 14; - lt[8][i].in[1] <== in[i]; - lt[9][i] = LessEqThan(8); - lt[9][i].in[0] <== in[i]; - lt[9][i].in[1] <== 93; - and[5][i] = AND(); - and[5][i].a <== lt[8][i].out; - and[5][i].b <== lt[9][i].out; - lt[10][i] = LessEqThan(8); - lt[10][i].in[0] <== 95; - lt[10][i].in[1] <== in[i]; - lt[11][i] = LessEqThan(8); - lt[11][i].in[0] <== in[i]; - lt[11][i].in[1] <== 254; - and[6][i] = AND(); - and[6][i].a <== lt[10][i].out; - and[6][i].b <== lt[11][i].out; + eq[12][i] = IsEqual(); + eq[12][i].in[0] <== in[i]; + eq[12][i].in[1] <== 0; eq[13][i] = IsEqual(); eq[13][i].in[0] <== in[i]; - eq[13][i].in[1] <== 0; + eq[13][i].in[1] <== 1; eq[14][i] = IsEqual(); eq[14][i].in[0] <== in[i]; - eq[14][i].in[1] <== 1; + eq[14][i].in[1] <== 2; eq[15][i] = IsEqual(); eq[15][i].in[0] <== in[i]; - eq[15][i].in[1] <== 2; + eq[15][i].in[1] <== 3; eq[16][i] = IsEqual(); eq[16][i].in[0] <== in[i]; - eq[16][i].in[1] <== 3; + eq[16][i].in[1] <== 4; eq[17][i] = IsEqual(); eq[17][i].in[0] <== in[i]; - eq[17][i].in[1] <== 4; + eq[17][i].in[1] <== 5; eq[18][i] = IsEqual(); eq[18][i].in[0] <== in[i]; - eq[18][i].in[1] <== 5; + eq[18][i].in[1] <== 6; eq[19][i] = IsEqual(); eq[19][i].in[0] <== in[i]; - eq[19][i].in[1] <== 6; + eq[19][i].in[1] <== 7; eq[20][i] = IsEqual(); eq[20][i].in[0] <== in[i]; - eq[20][i].in[1] <== 7; + eq[20][i].in[1] <== 8; eq[21][i] = IsEqual(); eq[21][i].in[0] <== in[i]; - eq[21][i].in[1] <== 8; + eq[21][i].in[1] <== 9; eq[22][i] = IsEqual(); eq[22][i].in[0] <== in[i]; - eq[22][i].in[1] <== 9; + eq[22][i].in[1] <== 11; eq[23][i] = IsEqual(); eq[23][i].in[0] <== in[i]; - eq[23][i].in[1] <== 11; + eq[23][i].in[1] <== 12; eq[24][i] = IsEqual(); eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 12; - and[7][i] = AND(); - and[7][i].a <== states[i][1]; - multi_or[1][i] = MultiOR(16); - multi_or[1][i].in[0] <== and[3][i].out; - multi_or[1][i].in[1] <== and[4][i].out; - multi_or[1][i].in[2] <== and[5][i].out; - multi_or[1][i].in[3] <== and[6][i].out; - multi_or[1][i].in[4] <== eq[13][i].out; - multi_or[1][i].in[5] <== eq[14][i].out; - multi_or[1][i].in[6] <== eq[15][i].out; - multi_or[1][i].in[7] <== eq[16][i].out; - multi_or[1][i].in[8] <== eq[17][i].out; - multi_or[1][i].in[9] <== eq[18][i].out; - multi_or[1][i].in[10] <== eq[19][i].out; - multi_or[1][i].in[11] <== eq[20][i].out; - multi_or[1][i].in[12] <== eq[21][i].out; - multi_or[1][i].in[13] <== eq[22][i].out; - multi_or[1][i].in[14] <== eq[23][i].out; - multi_or[1][i].in[15] <== eq[24][i].out; - and[7][i].b <== multi_or[1][i].out; - lt[12][i] = LessEqThan(8); - lt[12][i].in[0] <== 14; - lt[12][i].in[1] <== in[i]; - lt[13][i] = LessEqThan(8); - lt[13][i].in[0] <== in[i]; - lt[13][i].in[1] <== 44; - and[8][i] = AND(); - and[8][i].a <== lt[12][i].out; - and[8][i].b <== lt[13][i].out; - lt[14][i] = LessEqThan(8); - lt[14][i].in[0] <== 123; - lt[14][i].in[1] <== in[i]; - lt[15][i] = LessEqThan(8); - lt[15][i].in[0] <== in[i]; - lt[15][i].in[1] <== 254; - and[9][i] = AND(); - and[9][i].a <== lt[14][i].out; - and[9][i].b <== lt[15][i].out; + eq[24][i].in[1] <== 14; eq[25][i] = IsEqual(); eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 0; + eq[25][i].in[1] <== 15; eq[26][i] = IsEqual(); eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 1; + eq[26][i].in[1] <== 16; eq[27][i] = IsEqual(); eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 2; + eq[27][i].in[1] <== 17; eq[28][i] = IsEqual(); eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 3; + eq[28][i].in[1] <== 18; eq[29][i] = IsEqual(); eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 4; + eq[29][i].in[1] <== 19; eq[30][i] = IsEqual(); eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 5; + eq[30][i].in[1] <== 20; eq[31][i] = IsEqual(); eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 6; + eq[31][i].in[1] <== 21; eq[32][i] = IsEqual(); eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 7; + eq[32][i].in[1] <== 22; eq[33][i] = IsEqual(); eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 8; + eq[33][i].in[1] <== 23; eq[34][i] = IsEqual(); eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 9; + eq[34][i].in[1] <== 24; eq[35][i] = IsEqual(); eq[35][i].in[0] <== in[i]; - eq[35][i].in[1] <== 11; + eq[35][i].in[1] <== 25; eq[36][i] = IsEqual(); eq[36][i].in[0] <== in[i]; - eq[36][i].in[1] <== 12; + eq[36][i].in[1] <== 26; eq[37][i] = IsEqual(); eq[37][i].in[0] <== in[i]; - eq[37][i].in[1] <== 47; + eq[37][i].in[1] <== 27; eq[38][i] = IsEqual(); eq[38][i].in[0] <== in[i]; - eq[38][i].in[1] <== 58; + eq[38][i].in[1] <== 28; eq[39][i] = IsEqual(); eq[39][i].in[0] <== in[i]; - eq[39][i].in[1] <== 59; + eq[39][i].in[1] <== 29; eq[40][i] = IsEqual(); eq[40][i].in[0] <== in[i]; - eq[40][i].in[1] <== 61; + eq[40][i].in[1] <== 30; eq[41][i] = IsEqual(); eq[41][i].in[0] <== in[i]; - eq[41][i].in[1] <== 63; + eq[41][i].in[1] <== 31; eq[42][i] = IsEqual(); eq[42][i].in[0] <== in[i]; - eq[42][i].in[1] <== 64; + eq[42][i].in[1] <== 32; eq[43][i] = IsEqual(); eq[43][i].in[0] <== in[i]; - eq[43][i].in[1] <== 91; + eq[43][i].in[1] <== 33; eq[44][i] = IsEqual(); eq[44][i].in[0] <== in[i]; - eq[44][i].in[1] <== 92; + eq[44][i].in[1] <== 34; eq[45][i] = IsEqual(); eq[45][i].in[0] <== in[i]; - eq[45][i].in[1] <== 93; + eq[45][i].in[1] <== 35; eq[46][i] = IsEqual(); eq[46][i].in[0] <== in[i]; - eq[46][i].in[1] <== 94; + eq[46][i].in[1] <== 36; eq[47][i] = IsEqual(); eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 96; - and[10][i] = AND(); - and[10][i].a <== states[i][2]; - multi_or[2][i] = MultiOR(25); - multi_or[2][i].in[0] <== and[8][i].out; - multi_or[2][i].in[1] <== and[9][i].out; - multi_or[2][i].in[2] <== eq[25][i].out; - multi_or[2][i].in[3] <== eq[26][i].out; - multi_or[2][i].in[4] <== eq[27][i].out; - multi_or[2][i].in[5] <== eq[28][i].out; - multi_or[2][i].in[6] <== eq[29][i].out; - multi_or[2][i].in[7] <== eq[30][i].out; - multi_or[2][i].in[8] <== eq[31][i].out; - multi_or[2][i].in[9] <== eq[32][i].out; - multi_or[2][i].in[10] <== eq[33][i].out; - multi_or[2][i].in[11] <== eq[34][i].out; - multi_or[2][i].in[12] <== eq[35][i].out; - multi_or[2][i].in[13] <== eq[36][i].out; - multi_or[2][i].in[14] <== eq[37][i].out; - multi_or[2][i].in[15] <== eq[38][i].out; - multi_or[2][i].in[16] <== eq[39][i].out; - multi_or[2][i].in[17] <== eq[40][i].out; - multi_or[2][i].in[18] <== eq[41][i].out; - multi_or[2][i].in[19] <== eq[42][i].out; - multi_or[2][i].in[20] <== eq[43][i].out; - multi_or[2][i].in[21] <== eq[44][i].out; - multi_or[2][i].in[22] <== eq[45][i].out; - multi_or[2][i].in[23] <== eq[46][i].out; - multi_or[2][i].in[24] <== eq[47][i].out; - and[10][i].b <== multi_or[2][i].out; - lt[16][i] = LessEqThan(8); - lt[16][i].in[0] <== 14; - lt[16][i].in[1] <== in[i]; - lt[17][i] = LessEqThan(8); - lt[17][i].in[0] <== in[i]; - lt[17][i].in[1] <== 59; - and[11][i] = AND(); - and[11][i].a <== lt[16][i].out; - and[11][i].b <== lt[17][i].out; - lt[18][i] = LessEqThan(8); - lt[18][i].in[0] <== 61; - lt[18][i].in[1] <== in[i]; - lt[19][i] = LessEqThan(8); - lt[19][i].in[0] <== in[i]; - lt[19][i].in[1] <== 254; - and[12][i] = AND(); - and[12][i].a <== lt[18][i].out; - and[12][i].b <== lt[19][i].out; + eq[47][i].in[1] <== 37; eq[48][i] = IsEqual(); eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 0; + eq[48][i].in[1] <== 38; eq[49][i] = IsEqual(); eq[49][i].in[0] <== in[i]; - eq[49][i].in[1] <== 1; + eq[49][i].in[1] <== 39; eq[50][i] = IsEqual(); eq[50][i].in[0] <== in[i]; - eq[50][i].in[1] <== 2; + eq[50][i].in[1] <== 40; eq[51][i] = IsEqual(); eq[51][i].in[0] <== in[i]; - eq[51][i].in[1] <== 3; + eq[51][i].in[1] <== 41; eq[52][i] = IsEqual(); eq[52][i].in[0] <== in[i]; - eq[52][i].in[1] <== 4; + eq[52][i].in[1] <== 42; eq[53][i] = IsEqual(); eq[53][i].in[0] <== in[i]; - eq[53][i].in[1] <== 5; + eq[53][i].in[1] <== 43; eq[54][i] = IsEqual(); eq[54][i].in[0] <== in[i]; - eq[54][i].in[1] <== 6; + eq[54][i].in[1] <== 44; eq[55][i] = IsEqual(); eq[55][i].in[0] <== in[i]; - eq[55][i].in[1] <== 7; + eq[55][i].in[1] <== 45; eq[56][i] = IsEqual(); eq[56][i].in[0] <== in[i]; - eq[56][i].in[1] <== 8; + eq[56][i].in[1] <== 46; eq[57][i] = IsEqual(); eq[57][i].in[0] <== in[i]; - eq[57][i].in[1] <== 9; + eq[57][i].in[1] <== 47; eq[58][i] = IsEqual(); eq[58][i].in[0] <== in[i]; - eq[58][i].in[1] <== 11; + eq[58][i].in[1] <== 48; eq[59][i] = IsEqual(); eq[59][i].in[0] <== in[i]; - eq[59][i].in[1] <== 12; - and[13][i] = AND(); - and[13][i].a <== states[i][3]; - multi_or[3][i] = MultiOR(14); - multi_or[3][i].in[0] <== and[11][i].out; - multi_or[3][i].in[1] <== and[12][i].out; - multi_or[3][i].in[2] <== eq[48][i].out; - multi_or[3][i].in[3] <== eq[49][i].out; - multi_or[3][i].in[4] <== eq[50][i].out; - multi_or[3][i].in[5] <== eq[51][i].out; - multi_or[3][i].in[6] <== eq[52][i].out; - multi_or[3][i].in[7] <== eq[53][i].out; - multi_or[3][i].in[8] <== eq[54][i].out; - multi_or[3][i].in[9] <== eq[55][i].out; - multi_or[3][i].in[10] <== eq[56][i].out; - multi_or[3][i].in[11] <== eq[57][i].out; - multi_or[3][i].in[12] <== eq[58][i].out; - multi_or[3][i].in[13] <== eq[59][i].out; - and[13][i].b <== multi_or[3][i].out; - lt[20][i] = LessEqThan(8); - lt[20][i].in[0] <== 14; - lt[20][i].in[1] <== in[i]; - lt[21][i] = LessEqThan(8); - lt[21][i].in[0] <== in[i]; - lt[21][i].in[1] <== 32; - and[14][i] = AND(); - and[14][i].a <== lt[20][i].out; - and[14][i].b <== lt[21][i].out; - lt[22][i] = LessEqThan(8); - lt[22][i].in[0] <== 127; - lt[22][i].in[1] <== in[i]; - lt[23][i] = LessEqThan(8); - lt[23][i].in[0] <== in[i]; - lt[23][i].in[1] <== 254; - and[15][i] = AND(); - and[15][i].a <== lt[22][i].out; - and[15][i].b <== lt[23][i].out; + eq[59][i].in[1] <== 49; eq[60][i] = IsEqual(); eq[60][i].in[0] <== in[i]; - eq[60][i].in[1] <== 0; + eq[60][i].in[1] <== 50; eq[61][i] = IsEqual(); eq[61][i].in[0] <== in[i]; - eq[61][i].in[1] <== 1; + eq[61][i].in[1] <== 51; eq[62][i] = IsEqual(); eq[62][i].in[0] <== in[i]; - eq[62][i].in[1] <== 2; + eq[62][i].in[1] <== 52; eq[63][i] = IsEqual(); eq[63][i].in[0] <== in[i]; - eq[63][i].in[1] <== 3; + eq[63][i].in[1] <== 53; eq[64][i] = IsEqual(); eq[64][i].in[0] <== in[i]; - eq[64][i].in[1] <== 4; + eq[64][i].in[1] <== 54; eq[65][i] = IsEqual(); eq[65][i].in[0] <== in[i]; - eq[65][i].in[1] <== 5; + eq[65][i].in[1] <== 55; eq[66][i] = IsEqual(); eq[66][i].in[0] <== in[i]; - eq[66][i].in[1] <== 6; + eq[66][i].in[1] <== 56; eq[67][i] = IsEqual(); eq[67][i].in[0] <== in[i]; - eq[67][i].in[1] <== 7; + eq[67][i].in[1] <== 57; eq[68][i] = IsEqual(); eq[68][i].in[0] <== in[i]; - eq[68][i].in[1] <== 8; + eq[68][i].in[1] <== 58; eq[69][i] = IsEqual(); eq[69][i].in[0] <== in[i]; - eq[69][i].in[1] <== 9; + eq[69][i].in[1] <== 59; eq[70][i] = IsEqual(); eq[70][i].in[0] <== in[i]; - eq[70][i].in[1] <== 11; + eq[70][i].in[1] <== 60; eq[71][i] = IsEqual(); eq[71][i].in[0] <== in[i]; - eq[71][i].in[1] <== 12; + eq[71][i].in[1] <== 61; eq[72][i] = IsEqual(); eq[72][i].in[0] <== in[i]; - eq[72][i].in[1] <== 34; + eq[72][i].in[1] <== 62; eq[73][i] = IsEqual(); eq[73][i].in[0] <== in[i]; - eq[73][i].in[1] <== 40; + eq[73][i].in[1] <== 63; eq[74][i] = IsEqual(); eq[74][i].in[0] <== in[i]; - eq[74][i].in[1] <== 41; + eq[74][i].in[1] <== 64; eq[75][i] = IsEqual(); eq[75][i].in[0] <== in[i]; - eq[75][i].in[1] <== 44; + eq[75][i].in[1] <== 65; eq[76][i] = IsEqual(); eq[76][i].in[0] <== in[i]; - eq[76][i].in[1] <== 58; + eq[76][i].in[1] <== 66; eq[77][i] = IsEqual(); eq[77][i].in[0] <== in[i]; - eq[77][i].in[1] <== 59; + eq[77][i].in[1] <== 67; eq[78][i] = IsEqual(); eq[78][i].in[0] <== in[i]; - eq[78][i].in[1] <== 62; + eq[78][i].in[1] <== 68; eq[79][i] = IsEqual(); eq[79][i].in[0] <== in[i]; - eq[79][i].in[1] <== 64; + eq[79][i].in[1] <== 69; eq[80][i] = IsEqual(); eq[80][i].in[0] <== in[i]; - eq[80][i].in[1] <== 91; + eq[80][i].in[1] <== 70; eq[81][i] = IsEqual(); eq[81][i].in[0] <== in[i]; - eq[81][i].in[1] <== 92; + eq[81][i].in[1] <== 71; eq[82][i] = IsEqual(); eq[82][i].in[0] <== in[i]; - eq[82][i].in[1] <== 93; - and[16][i] = AND(); - and[16][i].a <== states[i][4]; - multi_or[4][i] = MultiOR(25); - multi_or[4][i].in[0] <== and[14][i].out; - multi_or[4][i].in[1] <== and[15][i].out; - multi_or[4][i].in[2] <== eq[60][i].out; - multi_or[4][i].in[3] <== eq[61][i].out; - multi_or[4][i].in[4] <== eq[62][i].out; - multi_or[4][i].in[5] <== eq[63][i].out; - multi_or[4][i].in[6] <== eq[64][i].out; - multi_or[4][i].in[7] <== eq[65][i].out; - multi_or[4][i].in[8] <== eq[66][i].out; - multi_or[4][i].in[9] <== eq[67][i].out; - multi_or[4][i].in[10] <== eq[68][i].out; - multi_or[4][i].in[11] <== eq[69][i].out; - multi_or[4][i].in[12] <== eq[70][i].out; - multi_or[4][i].in[13] <== eq[71][i].out; - multi_or[4][i].in[14] <== eq[72][i].out; - multi_or[4][i].in[15] <== eq[73][i].out; - multi_or[4][i].in[16] <== eq[74][i].out; - multi_or[4][i].in[17] <== eq[75][i].out; - multi_or[4][i].in[18] <== eq[76][i].out; - multi_or[4][i].in[19] <== eq[77][i].out; - multi_or[4][i].in[20] <== eq[78][i].out; - multi_or[4][i].in[21] <== eq[79][i].out; - multi_or[4][i].in[22] <== eq[80][i].out; - multi_or[4][i].in[23] <== eq[81][i].out; - multi_or[4][i].in[24] <== eq[82][i].out; - and[16][i].b <== multi_or[4][i].out; - lt[24][i] = LessEqThan(8); - lt[24][i].in[0] <== 14; - lt[24][i].in[1] <== in[i]; - lt[25][i] = LessEqThan(8); - lt[25][i].in[0] <== in[i]; - lt[25][i].in[1] <== 32; - and[17][i] = AND(); - and[17][i].a <== lt[24][i].out; - and[17][i].b <== lt[25][i].out; - lt[26][i] = LessEqThan(8); - lt[26][i].in[0] <== 127; - lt[26][i].in[1] <== in[i]; - lt[27][i] = LessEqThan(8); - lt[27][i].in[0] <== in[i]; - lt[27][i].in[1] <== 254; - and[18][i] = AND(); - and[18][i].a <== lt[26][i].out; - and[18][i].b <== lt[27][i].out; + eq[82][i].in[1] <== 72; eq[83][i] = IsEqual(); eq[83][i].in[0] <== in[i]; - eq[83][i].in[1] <== 0; + eq[83][i].in[1] <== 73; eq[84][i] = IsEqual(); eq[84][i].in[0] <== in[i]; - eq[84][i].in[1] <== 1; + eq[84][i].in[1] <== 74; eq[85][i] = IsEqual(); eq[85][i].in[0] <== in[i]; - eq[85][i].in[1] <== 2; + eq[85][i].in[1] <== 75; eq[86][i] = IsEqual(); eq[86][i].in[0] <== in[i]; - eq[86][i].in[1] <== 3; + eq[86][i].in[1] <== 76; eq[87][i] = IsEqual(); eq[87][i].in[0] <== in[i]; - eq[87][i].in[1] <== 4; + eq[87][i].in[1] <== 77; eq[88][i] = IsEqual(); eq[88][i].in[0] <== in[i]; - eq[88][i].in[1] <== 5; + eq[88][i].in[1] <== 78; eq[89][i] = IsEqual(); eq[89][i].in[0] <== in[i]; - eq[89][i].in[1] <== 6; + eq[89][i].in[1] <== 79; eq[90][i] = IsEqual(); eq[90][i].in[0] <== in[i]; - eq[90][i].in[1] <== 7; + eq[90][i].in[1] <== 80; eq[91][i] = IsEqual(); eq[91][i].in[0] <== in[i]; - eq[91][i].in[1] <== 8; + eq[91][i].in[1] <== 81; eq[92][i] = IsEqual(); eq[92][i].in[0] <== in[i]; - eq[92][i].in[1] <== 9; + eq[92][i].in[1] <== 82; eq[93][i] = IsEqual(); eq[93][i].in[0] <== in[i]; - eq[93][i].in[1] <== 11; + eq[93][i].in[1] <== 83; eq[94][i] = IsEqual(); eq[94][i].in[0] <== in[i]; - eq[94][i].in[1] <== 12; + eq[94][i].in[1] <== 84; eq[95][i] = IsEqual(); eq[95][i].in[0] <== in[i]; - eq[95][i].in[1] <== 34; + eq[95][i].in[1] <== 85; eq[96][i] = IsEqual(); eq[96][i].in[0] <== in[i]; - eq[96][i].in[1] <== 40; + eq[96][i].in[1] <== 86; eq[97][i] = IsEqual(); eq[97][i].in[0] <== in[i]; - eq[97][i].in[1] <== 41; + eq[97][i].in[1] <== 87; eq[98][i] = IsEqual(); eq[98][i].in[0] <== in[i]; - eq[98][i].in[1] <== 44; + eq[98][i].in[1] <== 88; eq[99][i] = IsEqual(); eq[99][i].in[0] <== in[i]; - eq[99][i].in[1] <== 58; + eq[99][i].in[1] <== 89; eq[100][i] = IsEqual(); eq[100][i].in[0] <== in[i]; - eq[100][i].in[1] <== 59; + eq[100][i].in[1] <== 90; eq[101][i] = IsEqual(); eq[101][i].in[0] <== in[i]; - eq[101][i].in[1] <== 62; + eq[101][i].in[1] <== 91; eq[102][i] = IsEqual(); eq[102][i].in[0] <== in[i]; - eq[102][i].in[1] <== 91; + eq[102][i].in[1] <== 92; eq[103][i] = IsEqual(); eq[103][i].in[0] <== in[i]; - eq[103][i].in[1] <== 92; + eq[103][i].in[1] <== 93; eq[104][i] = IsEqual(); eq[104][i].in[0] <== in[i]; - eq[104][i].in[1] <== 93; - and[19][i] = AND(); - and[19][i].a <== states[i][5]; - multi_or[5][i] = MultiOR(24); - multi_or[5][i].in[0] <== and[17][i].out; - multi_or[5][i].in[1] <== and[18][i].out; - multi_or[5][i].in[2] <== eq[83][i].out; - multi_or[5][i].in[3] <== eq[84][i].out; - multi_or[5][i].in[4] <== eq[85][i].out; - multi_or[5][i].in[5] <== eq[86][i].out; - multi_or[5][i].in[6] <== eq[87][i].out; - multi_or[5][i].in[7] <== eq[88][i].out; - multi_or[5][i].in[8] <== eq[89][i].out; - multi_or[5][i].in[9] <== eq[90][i].out; - multi_or[5][i].in[10] <== eq[91][i].out; - multi_or[5][i].in[11] <== eq[92][i].out; - multi_or[5][i].in[12] <== eq[93][i].out; - multi_or[5][i].in[13] <== eq[94][i].out; - multi_or[5][i].in[14] <== eq[95][i].out; - multi_or[5][i].in[15] <== eq[96][i].out; - multi_or[5][i].in[16] <== eq[97][i].out; - multi_or[5][i].in[17] <== eq[98][i].out; - multi_or[5][i].in[18] <== eq[99][i].out; - multi_or[5][i].in[19] <== eq[100][i].out; - multi_or[5][i].in[20] <== eq[101][i].out; - multi_or[5][i].in[21] <== eq[102][i].out; - multi_or[5][i].in[22] <== eq[103][i].out; - multi_or[5][i].in[23] <== eq[104][i].out; - and[19][i].b <== multi_or[5][i].out; - lt[28][i] = LessEqThan(8); - lt[28][i].in[0] <== 14; - lt[28][i].in[1] <== in[i]; - lt[29][i] = LessEqThan(8); - lt[29][i].in[0] <== in[i]; - lt[29][i].in[1] <== 44; - and[20][i] = AND(); - and[20][i].a <== lt[28][i].out; - and[20][i].b <== lt[29][i].out; - lt[30][i] = LessEqThan(8); - lt[30][i].in[0] <== 123; - lt[30][i].in[1] <== in[i]; - lt[31][i] = LessEqThan(8); - lt[31][i].in[0] <== in[i]; - lt[31][i].in[1] <== 254; - and[21][i] = AND(); - and[21][i].a <== lt[30][i].out; - and[21][i].b <== lt[31][i].out; + eq[104][i].in[1] <== 94; eq[105][i] = IsEqual(); eq[105][i].in[0] <== in[i]; - eq[105][i].in[1] <== 0; + eq[105][i].in[1] <== 95; eq[106][i] = IsEqual(); eq[106][i].in[0] <== in[i]; - eq[106][i].in[1] <== 1; + eq[106][i].in[1] <== 96; eq[107][i] = IsEqual(); eq[107][i].in[0] <== in[i]; - eq[107][i].in[1] <== 2; + eq[107][i].in[1] <== 97; eq[108][i] = IsEqual(); eq[108][i].in[0] <== in[i]; - eq[108][i].in[1] <== 3; + eq[108][i].in[1] <== 98; eq[109][i] = IsEqual(); eq[109][i].in[0] <== in[i]; - eq[109][i].in[1] <== 4; + eq[109][i].in[1] <== 99; eq[110][i] = IsEqual(); eq[110][i].in[0] <== in[i]; - eq[110][i].in[1] <== 5; + eq[110][i].in[1] <== 100; eq[111][i] = IsEqual(); eq[111][i].in[0] <== in[i]; - eq[111][i].in[1] <== 6; + eq[111][i].in[1] <== 101; eq[112][i] = IsEqual(); eq[112][i].in[0] <== in[i]; - eq[112][i].in[1] <== 7; + eq[112][i].in[1] <== 102; eq[113][i] = IsEqual(); eq[113][i].in[0] <== in[i]; - eq[113][i].in[1] <== 8; + eq[113][i].in[1] <== 103; eq[114][i] = IsEqual(); eq[114][i].in[0] <== in[i]; - eq[114][i].in[1] <== 9; + eq[114][i].in[1] <== 104; eq[115][i] = IsEqual(); eq[115][i].in[0] <== in[i]; - eq[115][i].in[1] <== 11; + eq[115][i].in[1] <== 105; eq[116][i] = IsEqual(); eq[116][i].in[0] <== in[i]; - eq[116][i].in[1] <== 12; + eq[116][i].in[1] <== 106; eq[117][i] = IsEqual(); eq[117][i].in[0] <== in[i]; - eq[117][i].in[1] <== 47; + eq[117][i].in[1] <== 107; eq[118][i] = IsEqual(); eq[118][i].in[0] <== in[i]; - eq[118][i].in[1] <== 58; + eq[118][i].in[1] <== 108; eq[119][i] = IsEqual(); eq[119][i].in[0] <== in[i]; - eq[119][i].in[1] <== 59; + eq[119][i].in[1] <== 109; eq[120][i] = IsEqual(); eq[120][i].in[0] <== in[i]; - eq[120][i].in[1] <== 61; + eq[120][i].in[1] <== 110; eq[121][i] = IsEqual(); eq[121][i].in[0] <== in[i]; - eq[121][i].in[1] <== 62; + eq[121][i].in[1] <== 111; eq[122][i] = IsEqual(); eq[122][i].in[0] <== in[i]; - eq[122][i].in[1] <== 63; + eq[122][i].in[1] <== 112; eq[123][i] = IsEqual(); eq[123][i].in[0] <== in[i]; - eq[123][i].in[1] <== 64; + eq[123][i].in[1] <== 113; eq[124][i] = IsEqual(); eq[124][i].in[0] <== in[i]; - eq[124][i].in[1] <== 91; + eq[124][i].in[1] <== 114; eq[125][i] = IsEqual(); eq[125][i].in[0] <== in[i]; - eq[125][i].in[1] <== 92; + eq[125][i].in[1] <== 115; eq[126][i] = IsEqual(); eq[126][i].in[0] <== in[i]; - eq[126][i].in[1] <== 93; + eq[126][i].in[1] <== 116; eq[127][i] = IsEqual(); eq[127][i].in[0] <== in[i]; - eq[127][i].in[1] <== 94; + eq[127][i].in[1] <== 117; eq[128][i] = IsEqual(); eq[128][i].in[0] <== in[i]; - eq[128][i].in[1] <== 96; - and[22][i] = AND(); - and[22][i].a <== states[i][6]; - multi_or[6][i] = MultiOR(26); - multi_or[6][i].in[0] <== and[20][i].out; - multi_or[6][i].in[1] <== and[21][i].out; - multi_or[6][i].in[2] <== eq[105][i].out; - multi_or[6][i].in[3] <== eq[106][i].out; - multi_or[6][i].in[4] <== eq[107][i].out; - multi_or[6][i].in[5] <== eq[108][i].out; - multi_or[6][i].in[6] <== eq[109][i].out; - multi_or[6][i].in[7] <== eq[110][i].out; - multi_or[6][i].in[8] <== eq[111][i].out; - multi_or[6][i].in[9] <== eq[112][i].out; - multi_or[6][i].in[10] <== eq[113][i].out; - multi_or[6][i].in[11] <== eq[114][i].out; - multi_or[6][i].in[12] <== eq[115][i].out; - multi_or[6][i].in[13] <== eq[116][i].out; - multi_or[6][i].in[14] <== eq[117][i].out; - multi_or[6][i].in[15] <== eq[118][i].out; - multi_or[6][i].in[16] <== eq[119][i].out; - multi_or[6][i].in[17] <== eq[120][i].out; - multi_or[6][i].in[18] <== eq[121][i].out; - multi_or[6][i].in[19] <== eq[122][i].out; - multi_or[6][i].in[20] <== eq[123][i].out; - multi_or[6][i].in[21] <== eq[124][i].out; - multi_or[6][i].in[22] <== eq[125][i].out; - multi_or[6][i].in[23] <== eq[126][i].out; - multi_or[6][i].in[24] <== eq[127][i].out; - multi_or[6][i].in[25] <== eq[128][i].out; - and[22][i].b <== multi_or[6][i].out; - multi_or[7][i] = MultiOR(7); - multi_or[7][i].in[0] <== and[2][i].out; - multi_or[7][i].in[1] <== and[7][i].out; - multi_or[7][i].in[2] <== and[10][i].out; - multi_or[7][i].in[3] <== and[13][i].out; - multi_or[7][i].in[4] <== and[16][i].out; - multi_or[7][i].in[5] <== and[19][i].out; - multi_or[7][i].in[6] <== and[22][i].out; - states[i+1][1] <== multi_or[7][i].out; - state_changed[i].in[0] <== states[i+1][1]; - lt[32][i] = LessEqThan(8); - lt[32][i].in[0] <== 65; - lt[32][i].in[1] <== in[i]; - lt[33][i] = LessEqThan(8); - lt[33][i].in[0] <== in[i]; - lt[33][i].in[1] <== 90; - and[23][i] = AND(); - and[23][i].a <== lt[32][i].out; - and[23][i].b <== lt[33][i].out; - lt[34][i] = LessEqThan(8); - lt[34][i].in[0] <== 97; - lt[34][i].in[1] <== in[i]; - lt[35][i] = LessEqThan(8); - lt[35][i].in[0] <== in[i]; - lt[35][i].in[1] <== 122; - and[24][i] = AND(); - and[24][i].a <== lt[34][i].out; - and[24][i].b <== lt[35][i].out; + eq[128][i].in[1] <== 118; eq[129][i] = IsEqual(); eq[129][i].in[0] <== in[i]; - eq[129][i].in[1] <== 45; + eq[129][i].in[1] <== 119; eq[130][i] = IsEqual(); eq[130][i].in[0] <== in[i]; - eq[130][i].in[1] <== 46; + eq[130][i].in[1] <== 120; eq[131][i] = IsEqual(); eq[131][i].in[0] <== in[i]; - eq[131][i].in[1] <== 48; + eq[131][i].in[1] <== 121; eq[132][i] = IsEqual(); eq[132][i].in[0] <== in[i]; - eq[132][i].in[1] <== 49; + eq[132][i].in[1] <== 122; eq[133][i] = IsEqual(); eq[133][i].in[0] <== in[i]; - eq[133][i].in[1] <== 50; + eq[133][i].in[1] <== 123; eq[134][i] = IsEqual(); eq[134][i].in[0] <== in[i]; - eq[134][i].in[1] <== 51; + eq[134][i].in[1] <== 124; eq[135][i] = IsEqual(); eq[135][i].in[0] <== in[i]; - eq[135][i].in[1] <== 52; + eq[135][i].in[1] <== 125; eq[136][i] = IsEqual(); eq[136][i].in[0] <== in[i]; - eq[136][i].in[1] <== 53; + eq[136][i].in[1] <== 126; eq[137][i] = IsEqual(); eq[137][i].in[0] <== in[i]; - eq[137][i].in[1] <== 54; + eq[137][i].in[1] <== 127; eq[138][i] = IsEqual(); eq[138][i].in[0] <== in[i]; - eq[138][i].in[1] <== 55; + eq[138][i].in[1] <== 128; eq[139][i] = IsEqual(); eq[139][i].in[0] <== in[i]; - eq[139][i].in[1] <== 56; + eq[139][i].in[1] <== 129; eq[140][i] = IsEqual(); eq[140][i].in[0] <== in[i]; - eq[140][i].in[1] <== 57; + eq[140][i].in[1] <== 130; eq[141][i] = IsEqual(); eq[141][i].in[0] <== in[i]; - eq[141][i].in[1] <== 95; - and[25][i] = AND(); - and[25][i].a <== states[i][2]; - multi_or[8][i] = MultiOR(15); - multi_or[8][i].in[0] <== and[23][i].out; - multi_or[8][i].in[1] <== and[24][i].out; - multi_or[8][i].in[2] <== eq[129][i].out; - multi_or[8][i].in[3] <== eq[130][i].out; - multi_or[8][i].in[4] <== eq[131][i].out; - multi_or[8][i].in[5] <== eq[132][i].out; - multi_or[8][i].in[6] <== eq[133][i].out; - multi_or[8][i].in[7] <== eq[134][i].out; - multi_or[8][i].in[8] <== eq[135][i].out; - multi_or[8][i].in[9] <== eq[136][i].out; - multi_or[8][i].in[10] <== eq[137][i].out; - multi_or[8][i].in[11] <== eq[138][i].out; - multi_or[8][i].in[12] <== eq[139][i].out; - multi_or[8][i].in[13] <== eq[140][i].out; - multi_or[8][i].in[14] <== eq[141][i].out; - and[25][i].b <== multi_or[8][i].out; - lt[36][i] = LessEqThan(8); - lt[36][i].in[0] <== 65; - lt[36][i].in[1] <== in[i]; - lt[37][i] = LessEqThan(8); - lt[37][i].in[0] <== in[i]; - lt[37][i].in[1] <== 90; - and[26][i] = AND(); - and[26][i].a <== lt[36][i].out; - and[26][i].b <== lt[37][i].out; - lt[38][i] = LessEqThan(8); - lt[38][i].in[0] <== 97; - lt[38][i].in[1] <== in[i]; - lt[39][i] = LessEqThan(8); - lt[39][i].in[0] <== in[i]; - lt[39][i].in[1] <== 122; - and[27][i] = AND(); - and[27][i].a <== lt[38][i].out; - and[27][i].b <== lt[39][i].out; + eq[141][i].in[1] <== 131; eq[142][i] = IsEqual(); eq[142][i].in[0] <== in[i]; - eq[142][i].in[1] <== 45; + eq[142][i].in[1] <== 132; eq[143][i] = IsEqual(); eq[143][i].in[0] <== in[i]; - eq[143][i].in[1] <== 46; + eq[143][i].in[1] <== 133; eq[144][i] = IsEqual(); eq[144][i].in[0] <== in[i]; - eq[144][i].in[1] <== 48; + eq[144][i].in[1] <== 134; eq[145][i] = IsEqual(); eq[145][i].in[0] <== in[i]; - eq[145][i].in[1] <== 49; + eq[145][i].in[1] <== 135; eq[146][i] = IsEqual(); eq[146][i].in[0] <== in[i]; - eq[146][i].in[1] <== 50; + eq[146][i].in[1] <== 136; eq[147][i] = IsEqual(); eq[147][i].in[0] <== in[i]; - eq[147][i].in[1] <== 51; + eq[147][i].in[1] <== 137; eq[148][i] = IsEqual(); eq[148][i].in[0] <== in[i]; - eq[148][i].in[1] <== 52; + eq[148][i].in[1] <== 138; eq[149][i] = IsEqual(); eq[149][i].in[0] <== in[i]; - eq[149][i].in[1] <== 53; + eq[149][i].in[1] <== 139; eq[150][i] = IsEqual(); eq[150][i].in[0] <== in[i]; - eq[150][i].in[1] <== 54; + eq[150][i].in[1] <== 140; eq[151][i] = IsEqual(); eq[151][i].in[0] <== in[i]; - eq[151][i].in[1] <== 55; + eq[151][i].in[1] <== 141; eq[152][i] = IsEqual(); eq[152][i].in[0] <== in[i]; - eq[152][i].in[1] <== 56; + eq[152][i].in[1] <== 142; eq[153][i] = IsEqual(); eq[153][i].in[0] <== in[i]; - eq[153][i].in[1] <== 57; + eq[153][i].in[1] <== 143; eq[154][i] = IsEqual(); eq[154][i].in[0] <== in[i]; - eq[154][i].in[1] <== 95; - and[28][i] = AND(); - and[28][i].a <== states[i][6]; - multi_or[9][i] = MultiOR(15); - multi_or[9][i].in[0] <== and[26][i].out; - multi_or[9][i].in[1] <== and[27][i].out; - multi_or[9][i].in[2] <== eq[142][i].out; - multi_or[9][i].in[3] <== eq[143][i].out; - multi_or[9][i].in[4] <== eq[144][i].out; - multi_or[9][i].in[5] <== eq[145][i].out; - multi_or[9][i].in[6] <== eq[146][i].out; - multi_or[9][i].in[7] <== eq[147][i].out; - multi_or[9][i].in[8] <== eq[148][i].out; - multi_or[9][i].in[9] <== eq[149][i].out; - multi_or[9][i].in[10] <== eq[150][i].out; - multi_or[9][i].in[11] <== eq[151][i].out; - multi_or[9][i].in[12] <== eq[152][i].out; - multi_or[9][i].in[13] <== eq[153][i].out; - multi_or[9][i].in[14] <== eq[154][i].out; - and[28][i].b <== multi_or[9][i].out; - multi_or[10][i] = MultiOR(2); - multi_or[10][i].in[0] <== and[25][i].out; - multi_or[10][i].in[1] <== and[28][i].out; - states[i+1][2] <== multi_or[10][i].out; - state_changed[i].in[1] <== states[i+1][2]; + eq[154][i].in[1] <== 144; eq[155][i] = IsEqual(); eq[155][i].in[0] <== in[i]; - eq[155][i].in[1] <== 62; - and[29][i] = AND(); - and[29][i].a <== states[i][2]; - and[29][i].b <== eq[155][i].out; - states[i+1][3] <== and[29][i].out; - state_changed[i].in[2] <== states[i+1][3]; + eq[155][i].in[1] <== 145; eq[156][i] = IsEqual(); eq[156][i].in[0] <== in[i]; - eq[156][i].in[1] <== 60; - and[30][i] = AND(); - and[30][i].a <== states[i][1]; - and[30][i].b <== eq[156][i].out; + eq[156][i].in[1] <== 146; eq[157][i] = IsEqual(); eq[157][i].in[0] <== in[i]; - eq[157][i].in[1] <== 60; - and[31][i] = AND(); - and[31][i].a <== states[i][2]; - and[31][i].b <== eq[157][i].out; + eq[157][i].in[1] <== 147; eq[158][i] = IsEqual(); eq[158][i].in[0] <== in[i]; - eq[158][i].in[1] <== 60; - and[32][i] = AND(); - and[32][i].a <== states[i][3]; - and[32][i].b <== eq[158][i].out; + eq[158][i].in[1] <== 148; eq[159][i] = IsEqual(); eq[159][i].in[0] <== in[i]; - eq[159][i].in[1] <== 60; - and[33][i] = AND(); - and[33][i].a <== states[i][4]; - and[33][i].b <== eq[159][i].out; + eq[159][i].in[1] <== 149; eq[160][i] = IsEqual(); eq[160][i].in[0] <== in[i]; - eq[160][i].in[1] <== 60; - and[34][i] = AND(); - and[34][i].a <== states[i][5]; - and[34][i].b <== eq[160][i].out; + eq[160][i].in[1] <== 150; eq[161][i] = IsEqual(); eq[161][i].in[0] <== in[i]; - eq[161][i].in[1] <== 60; - and[35][i] = AND(); - and[35][i].a <== states[i][6]; - and[35][i].b <== eq[161][i].out; - multi_or[11][i] = MultiOR(6); - multi_or[11][i].in[0] <== and[30][i].out; - multi_or[11][i].in[1] <== and[31][i].out; - multi_or[11][i].in[2] <== and[32][i].out; - multi_or[11][i].in[3] <== and[33][i].out; - multi_or[11][i].in[4] <== and[34][i].out; - multi_or[11][i].in[5] <== and[35][i].out; - states[i+1][4] <== multi_or[11][i].out; - state_changed[i].in[3] <== states[i+1][4]; - lt[40][i] = LessEqThan(8); - lt[40][i].in[0] <== 65; - lt[40][i].in[1] <== in[i]; - lt[41][i] = LessEqThan(8); - lt[41][i].in[0] <== in[i]; - lt[41][i].in[1] <== 90; - and[36][i] = AND(); - and[36][i].a <== lt[40][i].out; - and[36][i].b <== lt[41][i].out; - lt[42][i] = LessEqThan(8); - lt[42][i].in[0] <== 94; - lt[42][i].in[1] <== in[i]; - lt[43][i] = LessEqThan(8); - lt[43][i].in[0] <== in[i]; - lt[43][i].in[1] <== 126; - and[37][i] = AND(); - and[37][i].a <== lt[42][i].out; - and[37][i].b <== lt[43][i].out; + eq[161][i].in[1] <== 151; eq[162][i] = IsEqual(); eq[162][i].in[0] <== in[i]; - eq[162][i].in[1] <== 33; + eq[162][i].in[1] <== 152; eq[163][i] = IsEqual(); eq[163][i].in[0] <== in[i]; - eq[163][i].in[1] <== 35; + eq[163][i].in[1] <== 153; eq[164][i] = IsEqual(); eq[164][i].in[0] <== in[i]; - eq[164][i].in[1] <== 36; + eq[164][i].in[1] <== 154; eq[165][i] = IsEqual(); eq[165][i].in[0] <== in[i]; - eq[165][i].in[1] <== 37; + eq[165][i].in[1] <== 155; eq[166][i] = IsEqual(); eq[166][i].in[0] <== in[i]; - eq[166][i].in[1] <== 38; + eq[166][i].in[1] <== 156; eq[167][i] = IsEqual(); eq[167][i].in[0] <== in[i]; - eq[167][i].in[1] <== 39; + eq[167][i].in[1] <== 157; eq[168][i] = IsEqual(); eq[168][i].in[0] <== in[i]; - eq[168][i].in[1] <== 42; + eq[168][i].in[1] <== 158; eq[169][i] = IsEqual(); eq[169][i].in[0] <== in[i]; - eq[169][i].in[1] <== 43; + eq[169][i].in[1] <== 159; eq[170][i] = IsEqual(); eq[170][i].in[0] <== in[i]; - eq[170][i].in[1] <== 45; + eq[170][i].in[1] <== 160; eq[171][i] = IsEqual(); eq[171][i].in[0] <== in[i]; - eq[171][i].in[1] <== 46; + eq[171][i].in[1] <== 161; eq[172][i] = IsEqual(); eq[172][i].in[0] <== in[i]; - eq[172][i].in[1] <== 47; + eq[172][i].in[1] <== 162; eq[173][i] = IsEqual(); eq[173][i].in[0] <== in[i]; - eq[173][i].in[1] <== 48; + eq[173][i].in[1] <== 163; eq[174][i] = IsEqual(); eq[174][i].in[0] <== in[i]; - eq[174][i].in[1] <== 49; + eq[174][i].in[1] <== 164; eq[175][i] = IsEqual(); eq[175][i].in[0] <== in[i]; - eq[175][i].in[1] <== 50; + eq[175][i].in[1] <== 165; eq[176][i] = IsEqual(); eq[176][i].in[0] <== in[i]; - eq[176][i].in[1] <== 51; + eq[176][i].in[1] <== 166; eq[177][i] = IsEqual(); eq[177][i].in[0] <== in[i]; - eq[177][i].in[1] <== 52; + eq[177][i].in[1] <== 167; eq[178][i] = IsEqual(); eq[178][i].in[0] <== in[i]; - eq[178][i].in[1] <== 53; + eq[178][i].in[1] <== 168; eq[179][i] = IsEqual(); eq[179][i].in[0] <== in[i]; - eq[179][i].in[1] <== 54; + eq[179][i].in[1] <== 169; eq[180][i] = IsEqual(); eq[180][i].in[0] <== in[i]; - eq[180][i].in[1] <== 55; + eq[180][i].in[1] <== 170; eq[181][i] = IsEqual(); eq[181][i].in[0] <== in[i]; - eq[181][i].in[1] <== 56; + eq[181][i].in[1] <== 171; eq[182][i] = IsEqual(); eq[182][i].in[0] <== in[i]; - eq[182][i].in[1] <== 57; + eq[182][i].in[1] <== 172; eq[183][i] = IsEqual(); eq[183][i].in[0] <== in[i]; - eq[183][i].in[1] <== 61; + eq[183][i].in[1] <== 173; eq[184][i] = IsEqual(); eq[184][i].in[0] <== in[i]; - eq[184][i].in[1] <== 63; - and[38][i] = AND(); - and[38][i].a <== states[i][4]; - multi_or[12][i] = MultiOR(25); - multi_or[12][i].in[0] <== and[36][i].out; - multi_or[12][i].in[1] <== and[37][i].out; - multi_or[12][i].in[2] <== eq[162][i].out; - multi_or[12][i].in[3] <== eq[163][i].out; - multi_or[12][i].in[4] <== eq[164][i].out; - multi_or[12][i].in[5] <== eq[165][i].out; - multi_or[12][i].in[6] <== eq[166][i].out; - multi_or[12][i].in[7] <== eq[167][i].out; - multi_or[12][i].in[8] <== eq[168][i].out; - multi_or[12][i].in[9] <== eq[169][i].out; - multi_or[12][i].in[10] <== eq[170][i].out; - multi_or[12][i].in[11] <== eq[171][i].out; - multi_or[12][i].in[12] <== eq[172][i].out; - multi_or[12][i].in[13] <== eq[173][i].out; - multi_or[12][i].in[14] <== eq[174][i].out; - multi_or[12][i].in[15] <== eq[175][i].out; - multi_or[12][i].in[16] <== eq[176][i].out; - multi_or[12][i].in[17] <== eq[177][i].out; - multi_or[12][i].in[18] <== eq[178][i].out; - multi_or[12][i].in[19] <== eq[179][i].out; - multi_or[12][i].in[20] <== eq[180][i].out; - multi_or[12][i].in[21] <== eq[181][i].out; - multi_or[12][i].in[22] <== eq[182][i].out; - multi_or[12][i].in[23] <== eq[183][i].out; - multi_or[12][i].in[24] <== eq[184][i].out; - and[38][i].b <== multi_or[12][i].out; - lt[44][i] = LessEqThan(8); - lt[44][i].in[0] <== 65; - lt[44][i].in[1] <== in[i]; - lt[45][i] = LessEqThan(8); - lt[45][i].in[0] <== in[i]; - lt[45][i].in[1] <== 90; - and[39][i] = AND(); - and[39][i].a <== lt[44][i].out; - and[39][i].b <== lt[45][i].out; - lt[46][i] = LessEqThan(8); - lt[46][i].in[0] <== 94; - lt[46][i].in[1] <== in[i]; - lt[47][i] = LessEqThan(8); - lt[47][i].in[0] <== in[i]; - lt[47][i].in[1] <== 126; - and[40][i] = AND(); - and[40][i].a <== lt[46][i].out; - and[40][i].b <== lt[47][i].out; + eq[184][i].in[1] <== 174; eq[185][i] = IsEqual(); eq[185][i].in[0] <== in[i]; - eq[185][i].in[1] <== 33; + eq[185][i].in[1] <== 175; eq[186][i] = IsEqual(); eq[186][i].in[0] <== in[i]; - eq[186][i].in[1] <== 35; + eq[186][i].in[1] <== 176; eq[187][i] = IsEqual(); eq[187][i].in[0] <== in[i]; - eq[187][i].in[1] <== 36; + eq[187][i].in[1] <== 177; eq[188][i] = IsEqual(); eq[188][i].in[0] <== in[i]; - eq[188][i].in[1] <== 37; + eq[188][i].in[1] <== 178; eq[189][i] = IsEqual(); eq[189][i].in[0] <== in[i]; - eq[189][i].in[1] <== 38; + eq[189][i].in[1] <== 179; eq[190][i] = IsEqual(); eq[190][i].in[0] <== in[i]; - eq[190][i].in[1] <== 39; + eq[190][i].in[1] <== 180; eq[191][i] = IsEqual(); eq[191][i].in[0] <== in[i]; - eq[191][i].in[1] <== 42; + eq[191][i].in[1] <== 181; eq[192][i] = IsEqual(); eq[192][i].in[0] <== in[i]; - eq[192][i].in[1] <== 43; + eq[192][i].in[1] <== 182; eq[193][i] = IsEqual(); eq[193][i].in[0] <== in[i]; - eq[193][i].in[1] <== 45; + eq[193][i].in[1] <== 183; eq[194][i] = IsEqual(); eq[194][i].in[0] <== in[i]; - eq[194][i].in[1] <== 46; + eq[194][i].in[1] <== 184; eq[195][i] = IsEqual(); eq[195][i].in[0] <== in[i]; - eq[195][i].in[1] <== 47; + eq[195][i].in[1] <== 185; eq[196][i] = IsEqual(); eq[196][i].in[0] <== in[i]; - eq[196][i].in[1] <== 48; + eq[196][i].in[1] <== 186; eq[197][i] = IsEqual(); eq[197][i].in[0] <== in[i]; - eq[197][i].in[1] <== 49; + eq[197][i].in[1] <== 187; eq[198][i] = IsEqual(); eq[198][i].in[0] <== in[i]; - eq[198][i].in[1] <== 50; + eq[198][i].in[1] <== 188; eq[199][i] = IsEqual(); eq[199][i].in[0] <== in[i]; - eq[199][i].in[1] <== 51; + eq[199][i].in[1] <== 189; eq[200][i] = IsEqual(); eq[200][i].in[0] <== in[i]; - eq[200][i].in[1] <== 52; + eq[200][i].in[1] <== 190; eq[201][i] = IsEqual(); eq[201][i].in[0] <== in[i]; - eq[201][i].in[1] <== 53; + eq[201][i].in[1] <== 191; eq[202][i] = IsEqual(); eq[202][i].in[0] <== in[i]; - eq[202][i].in[1] <== 54; + eq[202][i].in[1] <== 192; eq[203][i] = IsEqual(); eq[203][i].in[0] <== in[i]; - eq[203][i].in[1] <== 55; + eq[203][i].in[1] <== 193; eq[204][i] = IsEqual(); eq[204][i].in[0] <== in[i]; - eq[204][i].in[1] <== 56; + eq[204][i].in[1] <== 194; eq[205][i] = IsEqual(); eq[205][i].in[0] <== in[i]; - eq[205][i].in[1] <== 57; + eq[205][i].in[1] <== 195; eq[206][i] = IsEqual(); eq[206][i].in[0] <== in[i]; - eq[206][i].in[1] <== 61; + eq[206][i].in[1] <== 196; eq[207][i] = IsEqual(); eq[207][i].in[0] <== in[i]; - eq[207][i].in[1] <== 63; - and[41][i] = AND(); - and[41][i].a <== states[i][5]; - multi_or[13][i] = MultiOR(25); - multi_or[13][i].in[0] <== and[39][i].out; - multi_or[13][i].in[1] <== and[40][i].out; - multi_or[13][i].in[2] <== eq[185][i].out; - multi_or[13][i].in[3] <== eq[186][i].out; - multi_or[13][i].in[4] <== eq[187][i].out; - multi_or[13][i].in[5] <== eq[188][i].out; - multi_or[13][i].in[6] <== eq[189][i].out; - multi_or[13][i].in[7] <== eq[190][i].out; - multi_or[13][i].in[8] <== eq[191][i].out; - multi_or[13][i].in[9] <== eq[192][i].out; - multi_or[13][i].in[10] <== eq[193][i].out; - multi_or[13][i].in[11] <== eq[194][i].out; - multi_or[13][i].in[12] <== eq[195][i].out; - multi_or[13][i].in[13] <== eq[196][i].out; - multi_or[13][i].in[14] <== eq[197][i].out; - multi_or[13][i].in[15] <== eq[198][i].out; - multi_or[13][i].in[16] <== eq[199][i].out; - multi_or[13][i].in[17] <== eq[200][i].out; - multi_or[13][i].in[18] <== eq[201][i].out; - multi_or[13][i].in[19] <== eq[202][i].out; - multi_or[13][i].in[20] <== eq[203][i].out; - multi_or[13][i].in[21] <== eq[204][i].out; - multi_or[13][i].in[22] <== eq[205][i].out; - multi_or[13][i].in[23] <== eq[206][i].out; - multi_or[13][i].in[24] <== eq[207][i].out; - and[41][i].b <== multi_or[13][i].out; - multi_or[14][i] = MultiOR(2); - multi_or[14][i].in[0] <== and[38][i].out; - multi_or[14][i].in[1] <== and[41][i].out; - states[i+1][5] <== multi_or[14][i].out; - state_changed[i].in[4] <== states[i+1][5]; + eq[207][i].in[1] <== 197; eq[208][i] = IsEqual(); eq[208][i].in[0] <== in[i]; - eq[208][i].in[1] <== 64; - and[42][i] = AND(); - and[42][i].a <== states[i][5]; - and[42][i].b <== eq[208][i].out; - states[i+1][6] <== and[42][i].out; + eq[208][i].in[1] <== 198; + eq[209][i] = IsEqual(); + eq[209][i].in[0] <== in[i]; + eq[209][i].in[1] <== 199; + eq[210][i] = IsEqual(); + eq[210][i].in[0] <== in[i]; + eq[210][i].in[1] <== 200; + eq[211][i] = IsEqual(); + eq[211][i].in[0] <== in[i]; + eq[211][i].in[1] <== 201; + eq[212][i] = IsEqual(); + eq[212][i].in[0] <== in[i]; + eq[212][i].in[1] <== 202; + eq[213][i] = IsEqual(); + eq[213][i].in[0] <== in[i]; + eq[213][i].in[1] <== 203; + eq[214][i] = IsEqual(); + eq[214][i].in[0] <== in[i]; + eq[214][i].in[1] <== 204; + eq[215][i] = IsEqual(); + eq[215][i].in[0] <== in[i]; + eq[215][i].in[1] <== 205; + eq[216][i] = IsEqual(); + eq[216][i].in[0] <== in[i]; + eq[216][i].in[1] <== 206; + eq[217][i] = IsEqual(); + eq[217][i].in[0] <== in[i]; + eq[217][i].in[1] <== 207; + eq[218][i] = IsEqual(); + eq[218][i].in[0] <== in[i]; + eq[218][i].in[1] <== 208; + eq[219][i] = IsEqual(); + eq[219][i].in[0] <== in[i]; + eq[219][i].in[1] <== 209; + eq[220][i] = IsEqual(); + eq[220][i].in[0] <== in[i]; + eq[220][i].in[1] <== 210; + eq[221][i] = IsEqual(); + eq[221][i].in[0] <== in[i]; + eq[221][i].in[1] <== 211; + eq[222][i] = IsEqual(); + eq[222][i].in[0] <== in[i]; + eq[222][i].in[1] <== 212; + eq[223][i] = IsEqual(); + eq[223][i].in[0] <== in[i]; + eq[223][i].in[1] <== 213; + eq[224][i] = IsEqual(); + eq[224][i].in[0] <== in[i]; + eq[224][i].in[1] <== 214; + eq[225][i] = IsEqual(); + eq[225][i].in[0] <== in[i]; + eq[225][i].in[1] <== 215; + eq[226][i] = IsEqual(); + eq[226][i].in[0] <== in[i]; + eq[226][i].in[1] <== 216; + eq[227][i] = IsEqual(); + eq[227][i].in[0] <== in[i]; + eq[227][i].in[1] <== 217; + eq[228][i] = IsEqual(); + eq[228][i].in[0] <== in[i]; + eq[228][i].in[1] <== 218; + eq[229][i] = IsEqual(); + eq[229][i].in[0] <== in[i]; + eq[229][i].in[1] <== 219; + eq[230][i] = IsEqual(); + eq[230][i].in[0] <== in[i]; + eq[230][i].in[1] <== 220; + eq[231][i] = IsEqual(); + eq[231][i].in[0] <== in[i]; + eq[231][i].in[1] <== 221; + eq[232][i] = IsEqual(); + eq[232][i].in[0] <== in[i]; + eq[232][i].in[1] <== 222; + eq[233][i] = IsEqual(); + eq[233][i].in[0] <== in[i]; + eq[233][i].in[1] <== 223; + eq[234][i] = IsEqual(); + eq[234][i].in[0] <== in[i]; + eq[234][i].in[1] <== 224; + eq[235][i] = IsEqual(); + eq[235][i].in[0] <== in[i]; + eq[235][i].in[1] <== 225; + eq[236][i] = IsEqual(); + eq[236][i].in[0] <== in[i]; + eq[236][i].in[1] <== 226; + eq[237][i] = IsEqual(); + eq[237][i].in[0] <== in[i]; + eq[237][i].in[1] <== 227; + eq[238][i] = IsEqual(); + eq[238][i].in[0] <== in[i]; + eq[238][i].in[1] <== 228; + eq[239][i] = IsEqual(); + eq[239][i].in[0] <== in[i]; + eq[239][i].in[1] <== 229; + eq[240][i] = IsEqual(); + eq[240][i].in[0] <== in[i]; + eq[240][i].in[1] <== 230; + eq[241][i] = IsEqual(); + eq[241][i].in[0] <== in[i]; + eq[241][i].in[1] <== 231; + eq[242][i] = IsEqual(); + eq[242][i].in[0] <== in[i]; + eq[242][i].in[1] <== 232; + eq[243][i] = IsEqual(); + eq[243][i].in[0] <== in[i]; + eq[243][i].in[1] <== 233; + eq[244][i] = IsEqual(); + eq[244][i].in[0] <== in[i]; + eq[244][i].in[1] <== 234; + eq[245][i] = IsEqual(); + eq[245][i].in[0] <== in[i]; + eq[245][i].in[1] <== 235; + eq[246][i] = IsEqual(); + eq[246][i].in[0] <== in[i]; + eq[246][i].in[1] <== 236; + eq[247][i] = IsEqual(); + eq[247][i].in[0] <== in[i]; + eq[247][i].in[1] <== 237; + eq[248][i] = IsEqual(); + eq[248][i].in[0] <== in[i]; + eq[248][i].in[1] <== 238; + eq[249][i] = IsEqual(); + eq[249][i].in[0] <== in[i]; + eq[249][i].in[1] <== 239; + eq[250][i] = IsEqual(); + eq[250][i].in[0] <== in[i]; + eq[250][i].in[1] <== 240; + eq[251][i] = IsEqual(); + eq[251][i].in[0] <== in[i]; + eq[251][i].in[1] <== 241; + eq[252][i] = IsEqual(); + eq[252][i].in[0] <== in[i]; + eq[252][i].in[1] <== 242; + eq[253][i] = IsEqual(); + eq[253][i].in[0] <== in[i]; + eq[253][i].in[1] <== 243; + eq[254][i] = IsEqual(); + eq[254][i].in[0] <== in[i]; + eq[254][i].in[1] <== 244; + eq[255][i] = IsEqual(); + eq[255][i].in[0] <== in[i]; + eq[255][i].in[1] <== 245; + eq[256][i] = IsEqual(); + eq[256][i].in[0] <== in[i]; + eq[256][i].in[1] <== 246; + eq[257][i] = IsEqual(); + eq[257][i].in[0] <== in[i]; + eq[257][i].in[1] <== 247; + eq[258][i] = IsEqual(); + eq[258][i].in[0] <== in[i]; + eq[258][i].in[1] <== 248; + eq[259][i] = IsEqual(); + eq[259][i].in[0] <== in[i]; + eq[259][i].in[1] <== 249; + eq[260][i] = IsEqual(); + eq[260][i].in[0] <== in[i]; + eq[260][i].in[1] <== 250; + eq[261][i] = IsEqual(); + eq[261][i].in[0] <== in[i]; + eq[261][i].in[1] <== 251; + eq[262][i] = IsEqual(); + eq[262][i].in[0] <== in[i]; + eq[262][i].in[1] <== 252; + eq[263][i] = IsEqual(); + eq[263][i].in[0] <== in[i]; + eq[263][i].in[1] <== 253; + eq[264][i] = IsEqual(); + eq[264][i].in[0] <== in[i]; + eq[264][i].in[1] <== 254; + and[3][i] = AND(); + and[3][i].a <== states[i][1]; + multi_or[1][i] = MultiOR(253); + multi_or[1][i].in[0] <== eq[12][i].out; + multi_or[1][i].in[1] <== eq[13][i].out; + multi_or[1][i].in[2] <== eq[14][i].out; + multi_or[1][i].in[3] <== eq[15][i].out; + multi_or[1][i].in[4] <== eq[16][i].out; + multi_or[1][i].in[5] <== eq[17][i].out; + multi_or[1][i].in[6] <== eq[18][i].out; + multi_or[1][i].in[7] <== eq[19][i].out; + multi_or[1][i].in[8] <== eq[20][i].out; + multi_or[1][i].in[9] <== eq[21][i].out; + multi_or[1][i].in[10] <== eq[22][i].out; + multi_or[1][i].in[11] <== eq[23][i].out; + multi_or[1][i].in[12] <== eq[24][i].out; + multi_or[1][i].in[13] <== eq[25][i].out; + multi_or[1][i].in[14] <== eq[26][i].out; + multi_or[1][i].in[15] <== eq[27][i].out; + multi_or[1][i].in[16] <== eq[28][i].out; + multi_or[1][i].in[17] <== eq[29][i].out; + multi_or[1][i].in[18] <== eq[30][i].out; + multi_or[1][i].in[19] <== eq[31][i].out; + multi_or[1][i].in[20] <== eq[32][i].out; + multi_or[1][i].in[21] <== eq[33][i].out; + multi_or[1][i].in[22] <== eq[34][i].out; + multi_or[1][i].in[23] <== eq[35][i].out; + multi_or[1][i].in[24] <== eq[36][i].out; + multi_or[1][i].in[25] <== eq[37][i].out; + multi_or[1][i].in[26] <== eq[38][i].out; + multi_or[1][i].in[27] <== eq[39][i].out; + multi_or[1][i].in[28] <== eq[40][i].out; + multi_or[1][i].in[29] <== eq[41][i].out; + multi_or[1][i].in[30] <== eq[42][i].out; + multi_or[1][i].in[31] <== eq[43][i].out; + multi_or[1][i].in[32] <== eq[44][i].out; + multi_or[1][i].in[33] <== eq[45][i].out; + multi_or[1][i].in[34] <== eq[46][i].out; + multi_or[1][i].in[35] <== eq[47][i].out; + multi_or[1][i].in[36] <== eq[48][i].out; + multi_or[1][i].in[37] <== eq[49][i].out; + multi_or[1][i].in[38] <== eq[50][i].out; + multi_or[1][i].in[39] <== eq[51][i].out; + multi_or[1][i].in[40] <== eq[52][i].out; + multi_or[1][i].in[41] <== eq[53][i].out; + multi_or[1][i].in[42] <== eq[54][i].out; + multi_or[1][i].in[43] <== eq[55][i].out; + multi_or[1][i].in[44] <== eq[56][i].out; + multi_or[1][i].in[45] <== eq[57][i].out; + multi_or[1][i].in[46] <== eq[58][i].out; + multi_or[1][i].in[47] <== eq[59][i].out; + multi_or[1][i].in[48] <== eq[60][i].out; + multi_or[1][i].in[49] <== eq[61][i].out; + multi_or[1][i].in[50] <== eq[62][i].out; + multi_or[1][i].in[51] <== eq[63][i].out; + multi_or[1][i].in[52] <== eq[64][i].out; + multi_or[1][i].in[53] <== eq[65][i].out; + multi_or[1][i].in[54] <== eq[66][i].out; + multi_or[1][i].in[55] <== eq[67][i].out; + multi_or[1][i].in[56] <== eq[68][i].out; + multi_or[1][i].in[57] <== eq[69][i].out; + multi_or[1][i].in[58] <== eq[70][i].out; + multi_or[1][i].in[59] <== eq[71][i].out; + multi_or[1][i].in[60] <== eq[72][i].out; + multi_or[1][i].in[61] <== eq[73][i].out; + multi_or[1][i].in[62] <== eq[74][i].out; + multi_or[1][i].in[63] <== eq[75][i].out; + multi_or[1][i].in[64] <== eq[76][i].out; + multi_or[1][i].in[65] <== eq[77][i].out; + multi_or[1][i].in[66] <== eq[78][i].out; + multi_or[1][i].in[67] <== eq[79][i].out; + multi_or[1][i].in[68] <== eq[80][i].out; + multi_or[1][i].in[69] <== eq[81][i].out; + multi_or[1][i].in[70] <== eq[82][i].out; + multi_or[1][i].in[71] <== eq[83][i].out; + multi_or[1][i].in[72] <== eq[84][i].out; + multi_or[1][i].in[73] <== eq[85][i].out; + multi_or[1][i].in[74] <== eq[86][i].out; + multi_or[1][i].in[75] <== eq[87][i].out; + multi_or[1][i].in[76] <== eq[88][i].out; + multi_or[1][i].in[77] <== eq[89][i].out; + multi_or[1][i].in[78] <== eq[90][i].out; + multi_or[1][i].in[79] <== eq[91][i].out; + multi_or[1][i].in[80] <== eq[92][i].out; + multi_or[1][i].in[81] <== eq[93][i].out; + multi_or[1][i].in[82] <== eq[94][i].out; + multi_or[1][i].in[83] <== eq[95][i].out; + multi_or[1][i].in[84] <== eq[96][i].out; + multi_or[1][i].in[85] <== eq[97][i].out; + multi_or[1][i].in[86] <== eq[98][i].out; + multi_or[1][i].in[87] <== eq[99][i].out; + multi_or[1][i].in[88] <== eq[100][i].out; + multi_or[1][i].in[89] <== eq[101][i].out; + multi_or[1][i].in[90] <== eq[102][i].out; + multi_or[1][i].in[91] <== eq[103][i].out; + multi_or[1][i].in[92] <== eq[104][i].out; + multi_or[1][i].in[93] <== eq[105][i].out; + multi_or[1][i].in[94] <== eq[106][i].out; + multi_or[1][i].in[95] <== eq[107][i].out; + multi_or[1][i].in[96] <== eq[108][i].out; + multi_or[1][i].in[97] <== eq[109][i].out; + multi_or[1][i].in[98] <== eq[110][i].out; + multi_or[1][i].in[99] <== eq[111][i].out; + multi_or[1][i].in[100] <== eq[112][i].out; + multi_or[1][i].in[101] <== eq[113][i].out; + multi_or[1][i].in[102] <== eq[114][i].out; + multi_or[1][i].in[103] <== eq[115][i].out; + multi_or[1][i].in[104] <== eq[116][i].out; + multi_or[1][i].in[105] <== eq[117][i].out; + multi_or[1][i].in[106] <== eq[118][i].out; + multi_or[1][i].in[107] <== eq[119][i].out; + multi_or[1][i].in[108] <== eq[120][i].out; + multi_or[1][i].in[109] <== eq[121][i].out; + multi_or[1][i].in[110] <== eq[122][i].out; + multi_or[1][i].in[111] <== eq[123][i].out; + multi_or[1][i].in[112] <== eq[124][i].out; + multi_or[1][i].in[113] <== eq[125][i].out; + multi_or[1][i].in[114] <== eq[126][i].out; + multi_or[1][i].in[115] <== eq[127][i].out; + multi_or[1][i].in[116] <== eq[128][i].out; + multi_or[1][i].in[117] <== eq[129][i].out; + multi_or[1][i].in[118] <== eq[130][i].out; + multi_or[1][i].in[119] <== eq[131][i].out; + multi_or[1][i].in[120] <== eq[132][i].out; + multi_or[1][i].in[121] <== eq[133][i].out; + multi_or[1][i].in[122] <== eq[134][i].out; + multi_or[1][i].in[123] <== eq[135][i].out; + multi_or[1][i].in[124] <== eq[136][i].out; + multi_or[1][i].in[125] <== eq[137][i].out; + multi_or[1][i].in[126] <== eq[138][i].out; + multi_or[1][i].in[127] <== eq[139][i].out; + multi_or[1][i].in[128] <== eq[140][i].out; + multi_or[1][i].in[129] <== eq[141][i].out; + multi_or[1][i].in[130] <== eq[142][i].out; + multi_or[1][i].in[131] <== eq[143][i].out; + multi_or[1][i].in[132] <== eq[144][i].out; + multi_or[1][i].in[133] <== eq[145][i].out; + multi_or[1][i].in[134] <== eq[146][i].out; + multi_or[1][i].in[135] <== eq[147][i].out; + multi_or[1][i].in[136] <== eq[148][i].out; + multi_or[1][i].in[137] <== eq[149][i].out; + multi_or[1][i].in[138] <== eq[150][i].out; + multi_or[1][i].in[139] <== eq[151][i].out; + multi_or[1][i].in[140] <== eq[152][i].out; + multi_or[1][i].in[141] <== eq[153][i].out; + multi_or[1][i].in[142] <== eq[154][i].out; + multi_or[1][i].in[143] <== eq[155][i].out; + multi_or[1][i].in[144] <== eq[156][i].out; + multi_or[1][i].in[145] <== eq[157][i].out; + multi_or[1][i].in[146] <== eq[158][i].out; + multi_or[1][i].in[147] <== eq[159][i].out; + multi_or[1][i].in[148] <== eq[160][i].out; + multi_or[1][i].in[149] <== eq[161][i].out; + multi_or[1][i].in[150] <== eq[162][i].out; + multi_or[1][i].in[151] <== eq[163][i].out; + multi_or[1][i].in[152] <== eq[164][i].out; + multi_or[1][i].in[153] <== eq[165][i].out; + multi_or[1][i].in[154] <== eq[166][i].out; + multi_or[1][i].in[155] <== eq[167][i].out; + multi_or[1][i].in[156] <== eq[168][i].out; + multi_or[1][i].in[157] <== eq[169][i].out; + multi_or[1][i].in[158] <== eq[170][i].out; + multi_or[1][i].in[159] <== eq[171][i].out; + multi_or[1][i].in[160] <== eq[172][i].out; + multi_or[1][i].in[161] <== eq[173][i].out; + multi_or[1][i].in[162] <== eq[174][i].out; + multi_or[1][i].in[163] <== eq[175][i].out; + multi_or[1][i].in[164] <== eq[176][i].out; + multi_or[1][i].in[165] <== eq[177][i].out; + multi_or[1][i].in[166] <== eq[178][i].out; + multi_or[1][i].in[167] <== eq[179][i].out; + multi_or[1][i].in[168] <== eq[180][i].out; + multi_or[1][i].in[169] <== eq[181][i].out; + multi_or[1][i].in[170] <== eq[182][i].out; + multi_or[1][i].in[171] <== eq[183][i].out; + multi_or[1][i].in[172] <== eq[184][i].out; + multi_or[1][i].in[173] <== eq[185][i].out; + multi_or[1][i].in[174] <== eq[186][i].out; + multi_or[1][i].in[175] <== eq[187][i].out; + multi_or[1][i].in[176] <== eq[188][i].out; + multi_or[1][i].in[177] <== eq[189][i].out; + multi_or[1][i].in[178] <== eq[190][i].out; + multi_or[1][i].in[179] <== eq[191][i].out; + multi_or[1][i].in[180] <== eq[192][i].out; + multi_or[1][i].in[181] <== eq[193][i].out; + multi_or[1][i].in[182] <== eq[194][i].out; + multi_or[1][i].in[183] <== eq[195][i].out; + multi_or[1][i].in[184] <== eq[196][i].out; + multi_or[1][i].in[185] <== eq[197][i].out; + multi_or[1][i].in[186] <== eq[198][i].out; + multi_or[1][i].in[187] <== eq[199][i].out; + multi_or[1][i].in[188] <== eq[200][i].out; + multi_or[1][i].in[189] <== eq[201][i].out; + multi_or[1][i].in[190] <== eq[202][i].out; + multi_or[1][i].in[191] <== eq[203][i].out; + multi_or[1][i].in[192] <== eq[204][i].out; + multi_or[1][i].in[193] <== eq[205][i].out; + multi_or[1][i].in[194] <== eq[206][i].out; + multi_or[1][i].in[195] <== eq[207][i].out; + multi_or[1][i].in[196] <== eq[208][i].out; + multi_or[1][i].in[197] <== eq[209][i].out; + multi_or[1][i].in[198] <== eq[210][i].out; + multi_or[1][i].in[199] <== eq[211][i].out; + multi_or[1][i].in[200] <== eq[212][i].out; + multi_or[1][i].in[201] <== eq[213][i].out; + multi_or[1][i].in[202] <== eq[214][i].out; + multi_or[1][i].in[203] <== eq[215][i].out; + multi_or[1][i].in[204] <== eq[216][i].out; + multi_or[1][i].in[205] <== eq[217][i].out; + multi_or[1][i].in[206] <== eq[218][i].out; + multi_or[1][i].in[207] <== eq[219][i].out; + multi_or[1][i].in[208] <== eq[220][i].out; + multi_or[1][i].in[209] <== eq[221][i].out; + multi_or[1][i].in[210] <== eq[222][i].out; + multi_or[1][i].in[211] <== eq[223][i].out; + multi_or[1][i].in[212] <== eq[224][i].out; + multi_or[1][i].in[213] <== eq[225][i].out; + multi_or[1][i].in[214] <== eq[226][i].out; + multi_or[1][i].in[215] <== eq[227][i].out; + multi_or[1][i].in[216] <== eq[228][i].out; + multi_or[1][i].in[217] <== eq[229][i].out; + multi_or[1][i].in[218] <== eq[230][i].out; + multi_or[1][i].in[219] <== eq[231][i].out; + multi_or[1][i].in[220] <== eq[232][i].out; + multi_or[1][i].in[221] <== eq[233][i].out; + multi_or[1][i].in[222] <== eq[234][i].out; + multi_or[1][i].in[223] <== eq[235][i].out; + multi_or[1][i].in[224] <== eq[236][i].out; + multi_or[1][i].in[225] <== eq[237][i].out; + multi_or[1][i].in[226] <== eq[238][i].out; + multi_or[1][i].in[227] <== eq[239][i].out; + multi_or[1][i].in[228] <== eq[240][i].out; + multi_or[1][i].in[229] <== eq[241][i].out; + multi_or[1][i].in[230] <== eq[242][i].out; + multi_or[1][i].in[231] <== eq[243][i].out; + multi_or[1][i].in[232] <== eq[244][i].out; + multi_or[1][i].in[233] <== eq[245][i].out; + multi_or[1][i].in[234] <== eq[246][i].out; + multi_or[1][i].in[235] <== eq[247][i].out; + multi_or[1][i].in[236] <== eq[248][i].out; + multi_or[1][i].in[237] <== eq[249][i].out; + multi_or[1][i].in[238] <== eq[250][i].out; + multi_or[1][i].in[239] <== eq[251][i].out; + multi_or[1][i].in[240] <== eq[252][i].out; + multi_or[1][i].in[241] <== eq[253][i].out; + multi_or[1][i].in[242] <== eq[254][i].out; + multi_or[1][i].in[243] <== eq[255][i].out; + multi_or[1][i].in[244] <== eq[256][i].out; + multi_or[1][i].in[245] <== eq[257][i].out; + multi_or[1][i].in[246] <== eq[258][i].out; + multi_or[1][i].in[247] <== eq[259][i].out; + multi_or[1][i].in[248] <== eq[260][i].out; + multi_or[1][i].in[249] <== eq[261][i].out; + multi_or[1][i].in[250] <== eq[262][i].out; + multi_or[1][i].in[251] <== eq[263][i].out; + multi_or[1][i].in[252] <== eq[264][i].out; + and[3][i].b <== multi_or[1][i].out; + lt[4][i] = LessEqThan(8); + lt[4][i].in[0] <== 14; + lt[4][i].in[1] <== in[i]; + lt[5][i] = LessEqThan(8); + lt[5][i].in[0] <== in[i]; + lt[5][i].in[1] <== 32; + and[4][i] = AND(); + and[4][i].a <== lt[4][i].out; + and[4][i].b <== lt[5][i].out; + lt[6][i] = LessEqThan(8); + lt[6][i].in[0] <== 127; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessEqThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 254; + and[5][i] = AND(); + and[5][i].a <== lt[6][i].out; + and[5][i].b <== lt[7][i].out; + eq[265][i] = IsEqual(); + eq[265][i].in[0] <== in[i]; + eq[265][i].in[1] <== 0; + eq[266][i] = IsEqual(); + eq[266][i].in[0] <== in[i]; + eq[266][i].in[1] <== 1; + eq[267][i] = IsEqual(); + eq[267][i].in[0] <== in[i]; + eq[267][i].in[1] <== 2; + eq[268][i] = IsEqual(); + eq[268][i].in[0] <== in[i]; + eq[268][i].in[1] <== 3; + eq[269][i] = IsEqual(); + eq[269][i].in[0] <== in[i]; + eq[269][i].in[1] <== 4; + eq[270][i] = IsEqual(); + eq[270][i].in[0] <== in[i]; + eq[270][i].in[1] <== 5; + eq[271][i] = IsEqual(); + eq[271][i].in[0] <== in[i]; + eq[271][i].in[1] <== 6; + eq[272][i] = IsEqual(); + eq[272][i].in[0] <== in[i]; + eq[272][i].in[1] <== 7; + eq[273][i] = IsEqual(); + eq[273][i].in[0] <== in[i]; + eq[273][i].in[1] <== 8; + eq[274][i] = IsEqual(); + eq[274][i].in[0] <== in[i]; + eq[274][i].in[1] <== 9; + eq[275][i] = IsEqual(); + eq[275][i].in[0] <== in[i]; + eq[275][i].in[1] <== 11; + eq[276][i] = IsEqual(); + eq[276][i].in[0] <== in[i]; + eq[276][i].in[1] <== 12; + eq[277][i] = IsEqual(); + eq[277][i].in[0] <== in[i]; + eq[277][i].in[1] <== 34; + eq[278][i] = IsEqual(); + eq[278][i].in[0] <== in[i]; + eq[278][i].in[1] <== 40; + eq[279][i] = IsEqual(); + eq[279][i].in[0] <== in[i]; + eq[279][i].in[1] <== 41; + eq[280][i] = IsEqual(); + eq[280][i].in[0] <== in[i]; + eq[280][i].in[1] <== 44; + eq[281][i] = IsEqual(); + eq[281][i].in[0] <== in[i]; + eq[281][i].in[1] <== 58; + eq[282][i] = IsEqual(); + eq[282][i].in[0] <== in[i]; + eq[282][i].in[1] <== 59; + eq[283][i] = IsEqual(); + eq[283][i].in[0] <== in[i]; + eq[283][i].in[1] <== 62; + eq[284][i] = IsEqual(); + eq[284][i].in[0] <== in[i]; + eq[284][i].in[1] <== 91; + eq[285][i] = IsEqual(); + eq[285][i].in[0] <== in[i]; + eq[285][i].in[1] <== 92; + eq[286][i] = IsEqual(); + eq[286][i].in[0] <== in[i]; + eq[286][i].in[1] <== 93; + and[6][i] = AND(); + and[6][i].a <== states[i][2]; + multi_or[2][i] = MultiOR(24); + multi_or[2][i].in[0] <== and[4][i].out; + multi_or[2][i].in[1] <== and[5][i].out; + multi_or[2][i].in[2] <== eq[265][i].out; + multi_or[2][i].in[3] <== eq[266][i].out; + multi_or[2][i].in[4] <== eq[267][i].out; + multi_or[2][i].in[5] <== eq[268][i].out; + multi_or[2][i].in[6] <== eq[269][i].out; + multi_or[2][i].in[7] <== eq[270][i].out; + multi_or[2][i].in[8] <== eq[271][i].out; + multi_or[2][i].in[9] <== eq[272][i].out; + multi_or[2][i].in[10] <== eq[273][i].out; + multi_or[2][i].in[11] <== eq[274][i].out; + multi_or[2][i].in[12] <== eq[275][i].out; + multi_or[2][i].in[13] <== eq[276][i].out; + multi_or[2][i].in[14] <== eq[277][i].out; + multi_or[2][i].in[15] <== eq[278][i].out; + multi_or[2][i].in[16] <== eq[279][i].out; + multi_or[2][i].in[17] <== eq[280][i].out; + multi_or[2][i].in[18] <== eq[281][i].out; + multi_or[2][i].in[19] <== eq[282][i].out; + multi_or[2][i].in[20] <== eq[283][i].out; + multi_or[2][i].in[21] <== eq[284][i].out; + multi_or[2][i].in[22] <== eq[285][i].out; + multi_or[2][i].in[23] <== eq[286][i].out; + and[6][i].b <== multi_or[2][i].out; + lt[8][i] = LessEqThan(8); + lt[8][i].in[0] <== 14; + lt[8][i].in[1] <== in[i]; + lt[9][i] = LessEqThan(8); + lt[9][i].in[0] <== in[i]; + lt[9][i].in[1] <== 44; + and[7][i] = AND(); + and[7][i].a <== lt[8][i].out; + and[7][i].b <== lt[9][i].out; + lt[10][i] = LessEqThan(8); + lt[10][i].in[0] <== 123; + lt[10][i].in[1] <== in[i]; + lt[11][i] = LessEqThan(8); + lt[11][i].in[0] <== in[i]; + lt[11][i].in[1] <== 254; + and[8][i] = AND(); + and[8][i].a <== lt[10][i].out; + and[8][i].b <== lt[11][i].out; + eq[287][i] = IsEqual(); + eq[287][i].in[0] <== in[i]; + eq[287][i].in[1] <== 0; + eq[288][i] = IsEqual(); + eq[288][i].in[0] <== in[i]; + eq[288][i].in[1] <== 1; + eq[289][i] = IsEqual(); + eq[289][i].in[0] <== in[i]; + eq[289][i].in[1] <== 2; + eq[290][i] = IsEqual(); + eq[290][i].in[0] <== in[i]; + eq[290][i].in[1] <== 3; + eq[291][i] = IsEqual(); + eq[291][i].in[0] <== in[i]; + eq[291][i].in[1] <== 4; + eq[292][i] = IsEqual(); + eq[292][i].in[0] <== in[i]; + eq[292][i].in[1] <== 5; + eq[293][i] = IsEqual(); + eq[293][i].in[0] <== in[i]; + eq[293][i].in[1] <== 6; + eq[294][i] = IsEqual(); + eq[294][i].in[0] <== in[i]; + eq[294][i].in[1] <== 7; + eq[295][i] = IsEqual(); + eq[295][i].in[0] <== in[i]; + eq[295][i].in[1] <== 8; + eq[296][i] = IsEqual(); + eq[296][i].in[0] <== in[i]; + eq[296][i].in[1] <== 9; + eq[297][i] = IsEqual(); + eq[297][i].in[0] <== in[i]; + eq[297][i].in[1] <== 11; + eq[298][i] = IsEqual(); + eq[298][i].in[0] <== in[i]; + eq[298][i].in[1] <== 12; + eq[299][i] = IsEqual(); + eq[299][i].in[0] <== in[i]; + eq[299][i].in[1] <== 47; + eq[300][i] = IsEqual(); + eq[300][i].in[0] <== in[i]; + eq[300][i].in[1] <== 58; + eq[301][i] = IsEqual(); + eq[301][i].in[0] <== in[i]; + eq[301][i].in[1] <== 59; + eq[302][i] = IsEqual(); + eq[302][i].in[0] <== in[i]; + eq[302][i].in[1] <== 61; + eq[303][i] = IsEqual(); + eq[303][i].in[0] <== in[i]; + eq[303][i].in[1] <== 63; + eq[304][i] = IsEqual(); + eq[304][i].in[0] <== in[i]; + eq[304][i].in[1] <== 64; + eq[305][i] = IsEqual(); + eq[305][i].in[0] <== in[i]; + eq[305][i].in[1] <== 91; + eq[306][i] = IsEqual(); + eq[306][i].in[0] <== in[i]; + eq[306][i].in[1] <== 92; + eq[307][i] = IsEqual(); + eq[307][i].in[0] <== in[i]; + eq[307][i].in[1] <== 93; + eq[308][i] = IsEqual(); + eq[308][i].in[0] <== in[i]; + eq[308][i].in[1] <== 94; + eq[309][i] = IsEqual(); + eq[309][i].in[0] <== in[i]; + eq[309][i].in[1] <== 96; + and[9][i] = AND(); + and[9][i].a <== states[i][3]; + multi_or[3][i] = MultiOR(25); + multi_or[3][i].in[0] <== and[7][i].out; + multi_or[3][i].in[1] <== and[8][i].out; + multi_or[3][i].in[2] <== eq[287][i].out; + multi_or[3][i].in[3] <== eq[288][i].out; + multi_or[3][i].in[4] <== eq[289][i].out; + multi_or[3][i].in[5] <== eq[290][i].out; + multi_or[3][i].in[6] <== eq[291][i].out; + multi_or[3][i].in[7] <== eq[292][i].out; + multi_or[3][i].in[8] <== eq[293][i].out; + multi_or[3][i].in[9] <== eq[294][i].out; + multi_or[3][i].in[10] <== eq[295][i].out; + multi_or[3][i].in[11] <== eq[296][i].out; + multi_or[3][i].in[12] <== eq[297][i].out; + multi_or[3][i].in[13] <== eq[298][i].out; + multi_or[3][i].in[14] <== eq[299][i].out; + multi_or[3][i].in[15] <== eq[300][i].out; + multi_or[3][i].in[16] <== eq[301][i].out; + multi_or[3][i].in[17] <== eq[302][i].out; + multi_or[3][i].in[18] <== eq[303][i].out; + multi_or[3][i].in[19] <== eq[304][i].out; + multi_or[3][i].in[20] <== eq[305][i].out; + multi_or[3][i].in[21] <== eq[306][i].out; + multi_or[3][i].in[22] <== eq[307][i].out; + multi_or[3][i].in[23] <== eq[308][i].out; + multi_or[3][i].in[24] <== eq[309][i].out; + and[9][i].b <== multi_or[3][i].out; + lt[12][i] = LessEqThan(8); + lt[12][i].in[0] <== 14; + lt[12][i].in[1] <== in[i]; + lt[13][i] = LessEqThan(8); + lt[13][i].in[0] <== in[i]; + lt[13][i].in[1] <== 59; + and[10][i] = AND(); + and[10][i].a <== lt[12][i].out; + and[10][i].b <== lt[13][i].out; + lt[14][i] = LessEqThan(8); + lt[14][i].in[0] <== 61; + lt[14][i].in[1] <== in[i]; + lt[15][i] = LessEqThan(8); + lt[15][i].in[0] <== in[i]; + lt[15][i].in[1] <== 254; + and[11][i] = AND(); + and[11][i].a <== lt[14][i].out; + and[11][i].b <== lt[15][i].out; + eq[310][i] = IsEqual(); + eq[310][i].in[0] <== in[i]; + eq[310][i].in[1] <== 0; + eq[311][i] = IsEqual(); + eq[311][i].in[0] <== in[i]; + eq[311][i].in[1] <== 1; + eq[312][i] = IsEqual(); + eq[312][i].in[0] <== in[i]; + eq[312][i].in[1] <== 2; + eq[313][i] = IsEqual(); + eq[313][i].in[0] <== in[i]; + eq[313][i].in[1] <== 3; + eq[314][i] = IsEqual(); + eq[314][i].in[0] <== in[i]; + eq[314][i].in[1] <== 4; + eq[315][i] = IsEqual(); + eq[315][i].in[0] <== in[i]; + eq[315][i].in[1] <== 5; + eq[316][i] = IsEqual(); + eq[316][i].in[0] <== in[i]; + eq[316][i].in[1] <== 6; + eq[317][i] = IsEqual(); + eq[317][i].in[0] <== in[i]; + eq[317][i].in[1] <== 7; + eq[318][i] = IsEqual(); + eq[318][i].in[0] <== in[i]; + eq[318][i].in[1] <== 8; + eq[319][i] = IsEqual(); + eq[319][i].in[0] <== in[i]; + eq[319][i].in[1] <== 9; + eq[320][i] = IsEqual(); + eq[320][i].in[0] <== in[i]; + eq[320][i].in[1] <== 11; + eq[321][i] = IsEqual(); + eq[321][i].in[0] <== in[i]; + eq[321][i].in[1] <== 12; + and[12][i] = AND(); + and[12][i].a <== states[i][4]; + multi_or[4][i] = MultiOR(14); + multi_or[4][i].in[0] <== and[10][i].out; + multi_or[4][i].in[1] <== and[11][i].out; + multi_or[4][i].in[2] <== eq[310][i].out; + multi_or[4][i].in[3] <== eq[311][i].out; + multi_or[4][i].in[4] <== eq[312][i].out; + multi_or[4][i].in[5] <== eq[313][i].out; + multi_or[4][i].in[6] <== eq[314][i].out; + multi_or[4][i].in[7] <== eq[315][i].out; + multi_or[4][i].in[8] <== eq[316][i].out; + multi_or[4][i].in[9] <== eq[317][i].out; + multi_or[4][i].in[10] <== eq[318][i].out; + multi_or[4][i].in[11] <== eq[319][i].out; + multi_or[4][i].in[12] <== eq[320][i].out; + multi_or[4][i].in[13] <== eq[321][i].out; + and[12][i].b <== multi_or[4][i].out; + lt[16][i] = LessEqThan(8); + lt[16][i].in[0] <== 14; + lt[16][i].in[1] <== in[i]; + lt[17][i] = LessEqThan(8); + lt[17][i].in[0] <== in[i]; + lt[17][i].in[1] <== 32; + and[13][i] = AND(); + and[13][i].a <== lt[16][i].out; + and[13][i].b <== lt[17][i].out; + lt[18][i] = LessEqThan(8); + lt[18][i].in[0] <== 127; + lt[18][i].in[1] <== in[i]; + lt[19][i] = LessEqThan(8); + lt[19][i].in[0] <== in[i]; + lt[19][i].in[1] <== 254; + and[14][i] = AND(); + and[14][i].a <== lt[18][i].out; + and[14][i].b <== lt[19][i].out; + eq[322][i] = IsEqual(); + eq[322][i].in[0] <== in[i]; + eq[322][i].in[1] <== 0; + eq[323][i] = IsEqual(); + eq[323][i].in[0] <== in[i]; + eq[323][i].in[1] <== 1; + eq[324][i] = IsEqual(); + eq[324][i].in[0] <== in[i]; + eq[324][i].in[1] <== 2; + eq[325][i] = IsEqual(); + eq[325][i].in[0] <== in[i]; + eq[325][i].in[1] <== 3; + eq[326][i] = IsEqual(); + eq[326][i].in[0] <== in[i]; + eq[326][i].in[1] <== 4; + eq[327][i] = IsEqual(); + eq[327][i].in[0] <== in[i]; + eq[327][i].in[1] <== 5; + eq[328][i] = IsEqual(); + eq[328][i].in[0] <== in[i]; + eq[328][i].in[1] <== 6; + eq[329][i] = IsEqual(); + eq[329][i].in[0] <== in[i]; + eq[329][i].in[1] <== 7; + eq[330][i] = IsEqual(); + eq[330][i].in[0] <== in[i]; + eq[330][i].in[1] <== 8; + eq[331][i] = IsEqual(); + eq[331][i].in[0] <== in[i]; + eq[331][i].in[1] <== 9; + eq[332][i] = IsEqual(); + eq[332][i].in[0] <== in[i]; + eq[332][i].in[1] <== 11; + eq[333][i] = IsEqual(); + eq[333][i].in[0] <== in[i]; + eq[333][i].in[1] <== 12; + eq[334][i] = IsEqual(); + eq[334][i].in[0] <== in[i]; + eq[334][i].in[1] <== 34; + eq[335][i] = IsEqual(); + eq[335][i].in[0] <== in[i]; + eq[335][i].in[1] <== 40; + eq[336][i] = IsEqual(); + eq[336][i].in[0] <== in[i]; + eq[336][i].in[1] <== 41; + eq[337][i] = IsEqual(); + eq[337][i].in[0] <== in[i]; + eq[337][i].in[1] <== 44; + eq[338][i] = IsEqual(); + eq[338][i].in[0] <== in[i]; + eq[338][i].in[1] <== 58; + eq[339][i] = IsEqual(); + eq[339][i].in[0] <== in[i]; + eq[339][i].in[1] <== 59; + eq[340][i] = IsEqual(); + eq[340][i].in[0] <== in[i]; + eq[340][i].in[1] <== 62; + eq[341][i] = IsEqual(); + eq[341][i].in[0] <== in[i]; + eq[341][i].in[1] <== 64; + eq[342][i] = IsEqual(); + eq[342][i].in[0] <== in[i]; + eq[342][i].in[1] <== 91; + eq[343][i] = IsEqual(); + eq[343][i].in[0] <== in[i]; + eq[343][i].in[1] <== 92; + eq[344][i] = IsEqual(); + eq[344][i].in[0] <== in[i]; + eq[344][i].in[1] <== 93; + and[15][i] = AND(); + and[15][i].a <== states[i][5]; + multi_or[5][i] = MultiOR(25); + multi_or[5][i].in[0] <== and[13][i].out; + multi_or[5][i].in[1] <== and[14][i].out; + multi_or[5][i].in[2] <== eq[322][i].out; + multi_or[5][i].in[3] <== eq[323][i].out; + multi_or[5][i].in[4] <== eq[324][i].out; + multi_or[5][i].in[5] <== eq[325][i].out; + multi_or[5][i].in[6] <== eq[326][i].out; + multi_or[5][i].in[7] <== eq[327][i].out; + multi_or[5][i].in[8] <== eq[328][i].out; + multi_or[5][i].in[9] <== eq[329][i].out; + multi_or[5][i].in[10] <== eq[330][i].out; + multi_or[5][i].in[11] <== eq[331][i].out; + multi_or[5][i].in[12] <== eq[332][i].out; + multi_or[5][i].in[13] <== eq[333][i].out; + multi_or[5][i].in[14] <== eq[334][i].out; + multi_or[5][i].in[15] <== eq[335][i].out; + multi_or[5][i].in[16] <== eq[336][i].out; + multi_or[5][i].in[17] <== eq[337][i].out; + multi_or[5][i].in[18] <== eq[338][i].out; + multi_or[5][i].in[19] <== eq[339][i].out; + multi_or[5][i].in[20] <== eq[340][i].out; + multi_or[5][i].in[21] <== eq[341][i].out; + multi_or[5][i].in[22] <== eq[342][i].out; + multi_or[5][i].in[23] <== eq[343][i].out; + multi_or[5][i].in[24] <== eq[344][i].out; + and[15][i].b <== multi_or[5][i].out; + lt[20][i] = LessEqThan(8); + lt[20][i].in[0] <== 14; + lt[20][i].in[1] <== in[i]; + lt[21][i] = LessEqThan(8); + lt[21][i].in[0] <== in[i]; + lt[21][i].in[1] <== 44; + and[16][i] = AND(); + and[16][i].a <== lt[20][i].out; + and[16][i].b <== lt[21][i].out; + lt[22][i] = LessEqThan(8); + lt[22][i].in[0] <== 123; + lt[22][i].in[1] <== in[i]; + lt[23][i] = LessEqThan(8); + lt[23][i].in[0] <== in[i]; + lt[23][i].in[1] <== 254; + and[17][i] = AND(); + and[17][i].a <== lt[22][i].out; + and[17][i].b <== lt[23][i].out; + eq[345][i] = IsEqual(); + eq[345][i].in[0] <== in[i]; + eq[345][i].in[1] <== 0; + eq[346][i] = IsEqual(); + eq[346][i].in[0] <== in[i]; + eq[346][i].in[1] <== 1; + eq[347][i] = IsEqual(); + eq[347][i].in[0] <== in[i]; + eq[347][i].in[1] <== 2; + eq[348][i] = IsEqual(); + eq[348][i].in[0] <== in[i]; + eq[348][i].in[1] <== 3; + eq[349][i] = IsEqual(); + eq[349][i].in[0] <== in[i]; + eq[349][i].in[1] <== 4; + eq[350][i] = IsEqual(); + eq[350][i].in[0] <== in[i]; + eq[350][i].in[1] <== 5; + eq[351][i] = IsEqual(); + eq[351][i].in[0] <== in[i]; + eq[351][i].in[1] <== 6; + eq[352][i] = IsEqual(); + eq[352][i].in[0] <== in[i]; + eq[352][i].in[1] <== 7; + eq[353][i] = IsEqual(); + eq[353][i].in[0] <== in[i]; + eq[353][i].in[1] <== 8; + eq[354][i] = IsEqual(); + eq[354][i].in[0] <== in[i]; + eq[354][i].in[1] <== 9; + eq[355][i] = IsEqual(); + eq[355][i].in[0] <== in[i]; + eq[355][i].in[1] <== 11; + eq[356][i] = IsEqual(); + eq[356][i].in[0] <== in[i]; + eq[356][i].in[1] <== 12; + eq[357][i] = IsEqual(); + eq[357][i].in[0] <== in[i]; + eq[357][i].in[1] <== 47; + eq[358][i] = IsEqual(); + eq[358][i].in[0] <== in[i]; + eq[358][i].in[1] <== 58; + eq[359][i] = IsEqual(); + eq[359][i].in[0] <== in[i]; + eq[359][i].in[1] <== 59; + eq[360][i] = IsEqual(); + eq[360][i].in[0] <== in[i]; + eq[360][i].in[1] <== 61; + eq[361][i] = IsEqual(); + eq[361][i].in[0] <== in[i]; + eq[361][i].in[1] <== 62; + eq[362][i] = IsEqual(); + eq[362][i].in[0] <== in[i]; + eq[362][i].in[1] <== 63; + eq[363][i] = IsEqual(); + eq[363][i].in[0] <== in[i]; + eq[363][i].in[1] <== 64; + eq[364][i] = IsEqual(); + eq[364][i].in[0] <== in[i]; + eq[364][i].in[1] <== 91; + eq[365][i] = IsEqual(); + eq[365][i].in[0] <== in[i]; + eq[365][i].in[1] <== 92; + eq[366][i] = IsEqual(); + eq[366][i].in[0] <== in[i]; + eq[366][i].in[1] <== 93; + eq[367][i] = IsEqual(); + eq[367][i].in[0] <== in[i]; + eq[367][i].in[1] <== 94; + eq[368][i] = IsEqual(); + eq[368][i].in[0] <== in[i]; + eq[368][i].in[1] <== 96; + and[18][i] = AND(); + and[18][i].a <== states[i][6]; + multi_or[6][i] = MultiOR(26); + multi_or[6][i].in[0] <== and[16][i].out; + multi_or[6][i].in[1] <== and[17][i].out; + multi_or[6][i].in[2] <== eq[345][i].out; + multi_or[6][i].in[3] <== eq[346][i].out; + multi_or[6][i].in[4] <== eq[347][i].out; + multi_or[6][i].in[5] <== eq[348][i].out; + multi_or[6][i].in[6] <== eq[349][i].out; + multi_or[6][i].in[7] <== eq[350][i].out; + multi_or[6][i].in[8] <== eq[351][i].out; + multi_or[6][i].in[9] <== eq[352][i].out; + multi_or[6][i].in[10] <== eq[353][i].out; + multi_or[6][i].in[11] <== eq[354][i].out; + multi_or[6][i].in[12] <== eq[355][i].out; + multi_or[6][i].in[13] <== eq[356][i].out; + multi_or[6][i].in[14] <== eq[357][i].out; + multi_or[6][i].in[15] <== eq[358][i].out; + multi_or[6][i].in[16] <== eq[359][i].out; + multi_or[6][i].in[17] <== eq[360][i].out; + multi_or[6][i].in[18] <== eq[361][i].out; + multi_or[6][i].in[19] <== eq[362][i].out; + multi_or[6][i].in[20] <== eq[363][i].out; + multi_or[6][i].in[21] <== eq[364][i].out; + multi_or[6][i].in[22] <== eq[365][i].out; + multi_or[6][i].in[23] <== eq[366][i].out; + multi_or[6][i].in[24] <== eq[367][i].out; + multi_or[6][i].in[25] <== eq[368][i].out; + and[18][i].b <== multi_or[6][i].out; + multi_or[7][i] = MultiOR(7); + multi_or[7][i].in[0] <== and[2][i].out; + multi_or[7][i].in[1] <== and[3][i].out; + multi_or[7][i].in[2] <== and[6][i].out; + multi_or[7][i].in[3] <== and[9][i].out; + multi_or[7][i].in[4] <== and[12][i].out; + multi_or[7][i].in[5] <== and[15][i].out; + multi_or[7][i].in[6] <== and[18][i].out; + states[i+1][1] <== multi_or[7][i].out; + state_changed[i].in[0] <== states[i+1][1]; + lt[24][i] = LessEqThan(8); + lt[24][i].in[0] <== 65; + lt[24][i].in[1] <== in[i]; + lt[25][i] = LessEqThan(8); + lt[25][i].in[0] <== in[i]; + lt[25][i].in[1] <== 90; + and[19][i] = AND(); + and[19][i].a <== lt[24][i].out; + and[19][i].b <== lt[25][i].out; + lt[26][i] = LessEqThan(8); + lt[26][i].in[0] <== 94; + lt[26][i].in[1] <== in[i]; + lt[27][i] = LessEqThan(8); + lt[27][i].in[0] <== in[i]; + lt[27][i].in[1] <== 126; + and[20][i] = AND(); + and[20][i].a <== lt[26][i].out; + and[20][i].b <== lt[27][i].out; + eq[369][i] = IsEqual(); + eq[369][i].in[0] <== in[i]; + eq[369][i].in[1] <== 33; + eq[370][i] = IsEqual(); + eq[370][i].in[0] <== in[i]; + eq[370][i].in[1] <== 35; + eq[371][i] = IsEqual(); + eq[371][i].in[0] <== in[i]; + eq[371][i].in[1] <== 36; + eq[372][i] = IsEqual(); + eq[372][i].in[0] <== in[i]; + eq[372][i].in[1] <== 37; + eq[373][i] = IsEqual(); + eq[373][i].in[0] <== in[i]; + eq[373][i].in[1] <== 38; + eq[374][i] = IsEqual(); + eq[374][i].in[0] <== in[i]; + eq[374][i].in[1] <== 39; + eq[375][i] = IsEqual(); + eq[375][i].in[0] <== in[i]; + eq[375][i].in[1] <== 42; + eq[376][i] = IsEqual(); + eq[376][i].in[0] <== in[i]; + eq[376][i].in[1] <== 43; + eq[377][i] = IsEqual(); + eq[377][i].in[0] <== in[i]; + eq[377][i].in[1] <== 45; + eq[378][i] = IsEqual(); + eq[378][i].in[0] <== in[i]; + eq[378][i].in[1] <== 46; + eq[379][i] = IsEqual(); + eq[379][i].in[0] <== in[i]; + eq[379][i].in[1] <== 47; + eq[380][i] = IsEqual(); + eq[380][i].in[0] <== in[i]; + eq[380][i].in[1] <== 48; + eq[381][i] = IsEqual(); + eq[381][i].in[0] <== in[i]; + eq[381][i].in[1] <== 49; + eq[382][i] = IsEqual(); + eq[382][i].in[0] <== in[i]; + eq[382][i].in[1] <== 50; + eq[383][i] = IsEqual(); + eq[383][i].in[0] <== in[i]; + eq[383][i].in[1] <== 51; + eq[384][i] = IsEqual(); + eq[384][i].in[0] <== in[i]; + eq[384][i].in[1] <== 52; + eq[385][i] = IsEqual(); + eq[385][i].in[0] <== in[i]; + eq[385][i].in[1] <== 53; + eq[386][i] = IsEqual(); + eq[386][i].in[0] <== in[i]; + eq[386][i].in[1] <== 54; + eq[387][i] = IsEqual(); + eq[387][i].in[0] <== in[i]; + eq[387][i].in[1] <== 55; + eq[388][i] = IsEqual(); + eq[388][i].in[0] <== in[i]; + eq[388][i].in[1] <== 56; + eq[389][i] = IsEqual(); + eq[389][i].in[0] <== in[i]; + eq[389][i].in[1] <== 57; + eq[390][i] = IsEqual(); + eq[390][i].in[0] <== in[i]; + eq[390][i].in[1] <== 61; + eq[391][i] = IsEqual(); + eq[391][i].in[0] <== in[i]; + eq[391][i].in[1] <== 63; + and[21][i] = AND(); + and[21][i].a <== states[i][2]; + multi_or[8][i] = MultiOR(25); + multi_or[8][i].in[0] <== and[19][i].out; + multi_or[8][i].in[1] <== and[20][i].out; + multi_or[8][i].in[2] <== eq[369][i].out; + multi_or[8][i].in[3] <== eq[370][i].out; + multi_or[8][i].in[4] <== eq[371][i].out; + multi_or[8][i].in[5] <== eq[372][i].out; + multi_or[8][i].in[6] <== eq[373][i].out; + multi_or[8][i].in[7] <== eq[374][i].out; + multi_or[8][i].in[8] <== eq[375][i].out; + multi_or[8][i].in[9] <== eq[376][i].out; + multi_or[8][i].in[10] <== eq[377][i].out; + multi_or[8][i].in[11] <== eq[378][i].out; + multi_or[8][i].in[12] <== eq[379][i].out; + multi_or[8][i].in[13] <== eq[380][i].out; + multi_or[8][i].in[14] <== eq[381][i].out; + multi_or[8][i].in[15] <== eq[382][i].out; + multi_or[8][i].in[16] <== eq[383][i].out; + multi_or[8][i].in[17] <== eq[384][i].out; + multi_or[8][i].in[18] <== eq[385][i].out; + multi_or[8][i].in[19] <== eq[386][i].out; + multi_or[8][i].in[20] <== eq[387][i].out; + multi_or[8][i].in[21] <== eq[388][i].out; + multi_or[8][i].in[22] <== eq[389][i].out; + multi_or[8][i].in[23] <== eq[390][i].out; + multi_or[8][i].in[24] <== eq[391][i].out; + and[21][i].b <== multi_or[8][i].out; + lt[28][i] = LessEqThan(8); + lt[28][i].in[0] <== 65; + lt[28][i].in[1] <== in[i]; + lt[29][i] = LessEqThan(8); + lt[29][i].in[0] <== in[i]; + lt[29][i].in[1] <== 90; + and[22][i] = AND(); + and[22][i].a <== lt[28][i].out; + and[22][i].b <== lt[29][i].out; + lt[30][i] = LessEqThan(8); + lt[30][i].in[0] <== 94; + lt[30][i].in[1] <== in[i]; + lt[31][i] = LessEqThan(8); + lt[31][i].in[0] <== in[i]; + lt[31][i].in[1] <== 126; + and[23][i] = AND(); + and[23][i].a <== lt[30][i].out; + and[23][i].b <== lt[31][i].out; + eq[392][i] = IsEqual(); + eq[392][i].in[0] <== in[i]; + eq[392][i].in[1] <== 33; + eq[393][i] = IsEqual(); + eq[393][i].in[0] <== in[i]; + eq[393][i].in[1] <== 35; + eq[394][i] = IsEqual(); + eq[394][i].in[0] <== in[i]; + eq[394][i].in[1] <== 36; + eq[395][i] = IsEqual(); + eq[395][i].in[0] <== in[i]; + eq[395][i].in[1] <== 37; + eq[396][i] = IsEqual(); + eq[396][i].in[0] <== in[i]; + eq[396][i].in[1] <== 38; + eq[397][i] = IsEqual(); + eq[397][i].in[0] <== in[i]; + eq[397][i].in[1] <== 39; + eq[398][i] = IsEqual(); + eq[398][i].in[0] <== in[i]; + eq[398][i].in[1] <== 42; + eq[399][i] = IsEqual(); + eq[399][i].in[0] <== in[i]; + eq[399][i].in[1] <== 43; + eq[400][i] = IsEqual(); + eq[400][i].in[0] <== in[i]; + eq[400][i].in[1] <== 45; + eq[401][i] = IsEqual(); + eq[401][i].in[0] <== in[i]; + eq[401][i].in[1] <== 46; + eq[402][i] = IsEqual(); + eq[402][i].in[0] <== in[i]; + eq[402][i].in[1] <== 47; + eq[403][i] = IsEqual(); + eq[403][i].in[0] <== in[i]; + eq[403][i].in[1] <== 48; + eq[404][i] = IsEqual(); + eq[404][i].in[0] <== in[i]; + eq[404][i].in[1] <== 49; + eq[405][i] = IsEqual(); + eq[405][i].in[0] <== in[i]; + eq[405][i].in[1] <== 50; + eq[406][i] = IsEqual(); + eq[406][i].in[0] <== in[i]; + eq[406][i].in[1] <== 51; + eq[407][i] = IsEqual(); + eq[407][i].in[0] <== in[i]; + eq[407][i].in[1] <== 52; + eq[408][i] = IsEqual(); + eq[408][i].in[0] <== in[i]; + eq[408][i].in[1] <== 53; + eq[409][i] = IsEqual(); + eq[409][i].in[0] <== in[i]; + eq[409][i].in[1] <== 54; + eq[410][i] = IsEqual(); + eq[410][i].in[0] <== in[i]; + eq[410][i].in[1] <== 55; + eq[411][i] = IsEqual(); + eq[411][i].in[0] <== in[i]; + eq[411][i].in[1] <== 56; + eq[412][i] = IsEqual(); + eq[412][i].in[0] <== in[i]; + eq[412][i].in[1] <== 57; + eq[413][i] = IsEqual(); + eq[413][i].in[0] <== in[i]; + eq[413][i].in[1] <== 61; + eq[414][i] = IsEqual(); + eq[414][i].in[0] <== in[i]; + eq[414][i].in[1] <== 63; + and[24][i] = AND(); + and[24][i].a <== states[i][5]; + multi_or[9][i] = MultiOR(25); + multi_or[9][i].in[0] <== and[22][i].out; + multi_or[9][i].in[1] <== and[23][i].out; + multi_or[9][i].in[2] <== eq[392][i].out; + multi_or[9][i].in[3] <== eq[393][i].out; + multi_or[9][i].in[4] <== eq[394][i].out; + multi_or[9][i].in[5] <== eq[395][i].out; + multi_or[9][i].in[6] <== eq[396][i].out; + multi_or[9][i].in[7] <== eq[397][i].out; + multi_or[9][i].in[8] <== eq[398][i].out; + multi_or[9][i].in[9] <== eq[399][i].out; + multi_or[9][i].in[10] <== eq[400][i].out; + multi_or[9][i].in[11] <== eq[401][i].out; + multi_or[9][i].in[12] <== eq[402][i].out; + multi_or[9][i].in[13] <== eq[403][i].out; + multi_or[9][i].in[14] <== eq[404][i].out; + multi_or[9][i].in[15] <== eq[405][i].out; + multi_or[9][i].in[16] <== eq[406][i].out; + multi_or[9][i].in[17] <== eq[407][i].out; + multi_or[9][i].in[18] <== eq[408][i].out; + multi_or[9][i].in[19] <== eq[409][i].out; + multi_or[9][i].in[20] <== eq[410][i].out; + multi_or[9][i].in[21] <== eq[411][i].out; + multi_or[9][i].in[22] <== eq[412][i].out; + multi_or[9][i].in[23] <== eq[413][i].out; + multi_or[9][i].in[24] <== eq[414][i].out; + and[24][i].b <== multi_or[9][i].out; + multi_or[10][i] = MultiOR(2); + multi_or[10][i].in[0] <== and[21][i].out; + multi_or[10][i].in[1] <== and[24][i].out; + states[i+1][2] <== multi_or[10][i].out; + state_changed[i].in[1] <== states[i+1][2]; + lt[32][i] = LessEqThan(8); + lt[32][i].in[0] <== 65; + lt[32][i].in[1] <== in[i]; + lt[33][i] = LessEqThan(8); + lt[33][i].in[0] <== in[i]; + lt[33][i].in[1] <== 90; + and[25][i] = AND(); + and[25][i].a <== lt[32][i].out; + and[25][i].b <== lt[33][i].out; + lt[34][i] = LessEqThan(8); + lt[34][i].in[0] <== 97; + lt[34][i].in[1] <== in[i]; + lt[35][i] = LessEqThan(8); + lt[35][i].in[0] <== in[i]; + lt[35][i].in[1] <== 122; + and[26][i] = AND(); + and[26][i].a <== lt[34][i].out; + and[26][i].b <== lt[35][i].out; + eq[415][i] = IsEqual(); + eq[415][i].in[0] <== in[i]; + eq[415][i].in[1] <== 45; + eq[416][i] = IsEqual(); + eq[416][i].in[0] <== in[i]; + eq[416][i].in[1] <== 46; + eq[417][i] = IsEqual(); + eq[417][i].in[0] <== in[i]; + eq[417][i].in[1] <== 48; + eq[418][i] = IsEqual(); + eq[418][i].in[0] <== in[i]; + eq[418][i].in[1] <== 49; + eq[419][i] = IsEqual(); + eq[419][i].in[0] <== in[i]; + eq[419][i].in[1] <== 50; + eq[420][i] = IsEqual(); + eq[420][i].in[0] <== in[i]; + eq[420][i].in[1] <== 51; + eq[421][i] = IsEqual(); + eq[421][i].in[0] <== in[i]; + eq[421][i].in[1] <== 52; + eq[422][i] = IsEqual(); + eq[422][i].in[0] <== in[i]; + eq[422][i].in[1] <== 53; + eq[423][i] = IsEqual(); + eq[423][i].in[0] <== in[i]; + eq[423][i].in[1] <== 54; + eq[424][i] = IsEqual(); + eq[424][i].in[0] <== in[i]; + eq[424][i].in[1] <== 55; + eq[425][i] = IsEqual(); + eq[425][i].in[0] <== in[i]; + eq[425][i].in[1] <== 56; + eq[426][i] = IsEqual(); + eq[426][i].in[0] <== in[i]; + eq[426][i].in[1] <== 57; + eq[427][i] = IsEqual(); + eq[427][i].in[0] <== in[i]; + eq[427][i].in[1] <== 95; + and[27][i] = AND(); + and[27][i].a <== states[i][3]; + multi_or[11][i] = MultiOR(15); + multi_or[11][i].in[0] <== and[25][i].out; + multi_or[11][i].in[1] <== and[26][i].out; + multi_or[11][i].in[2] <== eq[415][i].out; + multi_or[11][i].in[3] <== eq[416][i].out; + multi_or[11][i].in[4] <== eq[417][i].out; + multi_or[11][i].in[5] <== eq[418][i].out; + multi_or[11][i].in[6] <== eq[419][i].out; + multi_or[11][i].in[7] <== eq[420][i].out; + multi_or[11][i].in[8] <== eq[421][i].out; + multi_or[11][i].in[9] <== eq[422][i].out; + multi_or[11][i].in[10] <== eq[423][i].out; + multi_or[11][i].in[11] <== eq[424][i].out; + multi_or[11][i].in[12] <== eq[425][i].out; + multi_or[11][i].in[13] <== eq[426][i].out; + multi_or[11][i].in[14] <== eq[427][i].out; + and[27][i].b <== multi_or[11][i].out; + lt[36][i] = LessEqThan(8); + lt[36][i].in[0] <== 65; + lt[36][i].in[1] <== in[i]; + lt[37][i] = LessEqThan(8); + lt[37][i].in[0] <== in[i]; + lt[37][i].in[1] <== 90; + and[28][i] = AND(); + and[28][i].a <== lt[36][i].out; + and[28][i].b <== lt[37][i].out; + lt[38][i] = LessEqThan(8); + lt[38][i].in[0] <== 97; + lt[38][i].in[1] <== in[i]; + lt[39][i] = LessEqThan(8); + lt[39][i].in[0] <== in[i]; + lt[39][i].in[1] <== 122; + and[29][i] = AND(); + and[29][i].a <== lt[38][i].out; + and[29][i].b <== lt[39][i].out; + eq[428][i] = IsEqual(); + eq[428][i].in[0] <== in[i]; + eq[428][i].in[1] <== 45; + eq[429][i] = IsEqual(); + eq[429][i].in[0] <== in[i]; + eq[429][i].in[1] <== 46; + eq[430][i] = IsEqual(); + eq[430][i].in[0] <== in[i]; + eq[430][i].in[1] <== 48; + eq[431][i] = IsEqual(); + eq[431][i].in[0] <== in[i]; + eq[431][i].in[1] <== 49; + eq[432][i] = IsEqual(); + eq[432][i].in[0] <== in[i]; + eq[432][i].in[1] <== 50; + eq[433][i] = IsEqual(); + eq[433][i].in[0] <== in[i]; + eq[433][i].in[1] <== 51; + eq[434][i] = IsEqual(); + eq[434][i].in[0] <== in[i]; + eq[434][i].in[1] <== 52; + eq[435][i] = IsEqual(); + eq[435][i].in[0] <== in[i]; + eq[435][i].in[1] <== 53; + eq[436][i] = IsEqual(); + eq[436][i].in[0] <== in[i]; + eq[436][i].in[1] <== 54; + eq[437][i] = IsEqual(); + eq[437][i].in[0] <== in[i]; + eq[437][i].in[1] <== 55; + eq[438][i] = IsEqual(); + eq[438][i].in[0] <== in[i]; + eq[438][i].in[1] <== 56; + eq[439][i] = IsEqual(); + eq[439][i].in[0] <== in[i]; + eq[439][i].in[1] <== 57; + eq[440][i] = IsEqual(); + eq[440][i].in[0] <== in[i]; + eq[440][i].in[1] <== 95; + and[30][i] = AND(); + and[30][i].a <== states[i][6]; + multi_or[12][i] = MultiOR(15); + multi_or[12][i].in[0] <== and[28][i].out; + multi_or[12][i].in[1] <== and[29][i].out; + multi_or[12][i].in[2] <== eq[428][i].out; + multi_or[12][i].in[3] <== eq[429][i].out; + multi_or[12][i].in[4] <== eq[430][i].out; + multi_or[12][i].in[5] <== eq[431][i].out; + multi_or[12][i].in[6] <== eq[432][i].out; + multi_or[12][i].in[7] <== eq[433][i].out; + multi_or[12][i].in[8] <== eq[434][i].out; + multi_or[12][i].in[9] <== eq[435][i].out; + multi_or[12][i].in[10] <== eq[436][i].out; + multi_or[12][i].in[11] <== eq[437][i].out; + multi_or[12][i].in[12] <== eq[438][i].out; + multi_or[12][i].in[13] <== eq[439][i].out; + multi_or[12][i].in[14] <== eq[440][i].out; + and[30][i].b <== multi_or[12][i].out; + multi_or[13][i] = MultiOR(2); + multi_or[13][i].in[0] <== and[27][i].out; + multi_or[13][i].in[1] <== and[30][i].out; + states[i+1][3] <== multi_or[13][i].out; + state_changed[i].in[2] <== states[i+1][3]; + eq[441][i] = IsEqual(); + eq[441][i].in[0] <== in[i]; + eq[441][i].in[1] <== 62; + and[31][i] = AND(); + and[31][i].a <== states[i][3]; + and[31][i].b <== eq[441][i].out; + states[i+1][4] <== and[31][i].out; + state_changed[i].in[3] <== states[i+1][4]; + eq[442][i] = IsEqual(); + eq[442][i].in[0] <== in[i]; + eq[442][i].in[1] <== 60; + and[32][i] = AND(); + and[32][i].a <== states[i][1]; + and[32][i].b <== eq[442][i].out; + eq[443][i] = IsEqual(); + eq[443][i].in[0] <== in[i]; + eq[443][i].in[1] <== 60; + and[33][i] = AND(); + and[33][i].a <== states[i][2]; + and[33][i].b <== eq[443][i].out; + eq[444][i] = IsEqual(); + eq[444][i].in[0] <== in[i]; + eq[444][i].in[1] <== 60; + and[34][i] = AND(); + and[34][i].a <== states[i][3]; + and[34][i].b <== eq[444][i].out; + eq[445][i] = IsEqual(); + eq[445][i].in[0] <== in[i]; + eq[445][i].in[1] <== 60; + and[35][i] = AND(); + and[35][i].a <== states[i][4]; + and[35][i].b <== eq[445][i].out; + eq[446][i] = IsEqual(); + eq[446][i].in[0] <== in[i]; + eq[446][i].in[1] <== 60; + and[36][i] = AND(); + and[36][i].a <== states[i][5]; + and[36][i].b <== eq[446][i].out; + eq[447][i] = IsEqual(); + eq[447][i].in[0] <== in[i]; + eq[447][i].in[1] <== 60; + and[37][i] = AND(); + and[37][i].a <== states[i][6]; + and[37][i].b <== eq[447][i].out; + multi_or[14][i] = MultiOR(6); + multi_or[14][i].in[0] <== and[32][i].out; + multi_or[14][i].in[1] <== and[33][i].out; + multi_or[14][i].in[2] <== and[34][i].out; + multi_or[14][i].in[3] <== and[35][i].out; + multi_or[14][i].in[4] <== and[36][i].out; + multi_or[14][i].in[5] <== and[37][i].out; + states[i+1][5] <== multi_or[14][i].out; + state_changed[i].in[4] <== states[i+1][5]; + eq[448][i] = IsEqual(); + eq[448][i].in[0] <== in[i]; + eq[448][i].in[1] <== 64; + and[38][i] = AND(); + and[38][i].a <== states[i][2]; + and[38][i].b <== eq[448][i].out; + states[i+1][6] <== and[38][i].out; state_changed[i].in[5] <== states[i+1][6]; states[i+1][0] <== 1 - state_changed[i].out; } component final_state_result = MultiOR(num_bytes+1); for (var i = 0; i <= num_bytes; i++) { - final_state_result.in[i] <== states[i][3]; + final_state_result.in[i] <== states[i][4]; } out <== final_state_result.out; signal is_consecutive[msg_bytes+1][2]; is_consecutive[msg_bytes][1] <== 1; for (var i = 0; i < msg_bytes; i++) { - is_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][3] * (1 - is_consecutive[msg_bytes-i][1]) + is_consecutive[msg_bytes-i][1]; + is_consecutive[msg_bytes-1-i][0] <== states[num_bytes-i][4] * (1 - is_consecutive[msg_bytes-i][1]) + is_consecutive[msg_bytes-i][1]; is_consecutive[msg_bytes-1-i][1] <== state_changed[msg_bytes-i].out * is_consecutive[msg_bytes-1-i][0]; } signal is_substr0[msg_bytes][10]; @@ -1217,14 +2137,14 @@ template EmailAddrWithNameRegex(msg_bytes) { for (var i = 0; i < msg_bytes; i++) { is_substr0[i][0] <== 0; is_substr0[i][1] <== is_substr0[i][0] + states[i+1][2] * states[i+2][2]; - is_substr0[i][2] <== is_substr0[i][1] + states[i+1][2] * states[i+2][4]; - is_substr0[i][3] <== is_substr0[i][2] + states[i+1][4] * states[i+2][4]; - is_substr0[i][4] <== is_substr0[i][3] + states[i+1][4] * states[i+2][5]; - is_substr0[i][5] <== is_substr0[i][4] + states[i+1][5] * states[i+2][4]; - is_substr0[i][6] <== is_substr0[i][5] + states[i+1][5] * states[i+2][5]; - is_substr0[i][7] <== is_substr0[i][6] + states[i+1][5] * states[i+2][6]; - is_substr0[i][8] <== is_substr0[i][7] + states[i+1][6] * states[i+2][2]; - is_substr0[i][9] <== is_substr0[i][8] + states[i+1][6] * states[i+2][4]; + is_substr0[i][2] <== is_substr0[i][1] + states[i+1][2] * states[i+2][5]; + is_substr0[i][3] <== is_substr0[i][2] + states[i+1][2] * states[i+2][6]; + is_substr0[i][4] <== is_substr0[i][3] + states[i+1][3] * states[i+2][3]; + is_substr0[i][5] <== is_substr0[i][4] + states[i+1][3] * states[i+2][5]; + is_substr0[i][6] <== is_substr0[i][5] + states[i+1][5] * states[i+2][2]; + is_substr0[i][7] <== is_substr0[i][6] + states[i+1][5] * states[i+2][5]; + is_substr0[i][8] <== is_substr0[i][7] + states[i+1][6] * states[i+2][3]; + is_substr0[i][9] <== is_substr0[i][8] + states[i+1][6] * states[i+2][5]; is_reveal0[i] <== is_substr0[i][9] * is_consecutive[i][1]; reveal0[i] <== in[i+1] * is_reveal0[i]; } diff --git a/packages/circom/circuits/common/email_domain_regex.circom b/packages/circom/circuits/common/email_domain_regex.circom index 1af82a6..124707d 100644 --- a/packages/circom/circuits/common/email_domain_regex.circom +++ b/packages/circom/circuits/common/email_domain_regex.circom @@ -13,9 +13,9 @@ template EmailDomainRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[72][num_bytes]; - component lt[20][num_bytes]; - component and[15][num_bytes]; + component eq[131][num_bytes]; + component lt[12][num_bytes]; + component and[11][num_bytes]; component multi_or[6][num_bytes]; signal states[num_bytes+1][4]; component state_changed[num_bytes]; @@ -147,42 +147,6 @@ template EmailDomainRegex(msg_bytes) { multi_or[0][i].in[24] <== eq[22][i].out; multi_or[0][i].in[25] <== eq[23][i].out; and[2][i].b <== multi_or[0][i].out; - lt[4][i] = LessEqThan(8); - lt[4][i].in[0] <== 65; - lt[4][i].in[1] <== in[i]; - lt[5][i] = LessEqThan(8); - lt[5][i].in[0] <== in[i]; - lt[5][i].in[1] <== 90; - and[3][i] = AND(); - and[3][i].a <== lt[4][i].out; - and[3][i].b <== lt[5][i].out; - lt[6][i] = LessEqThan(8); - lt[6][i].in[0] <== 94; - lt[6][i].in[1] <== in[i]; - lt[7][i] = LessEqThan(8); - lt[7][i].in[0] <== in[i]; - lt[7][i].in[1] <== 126; - and[4][i] = AND(); - and[4][i].a <== lt[6][i].out; - and[4][i].b <== lt[7][i].out; - lt[8][i] = LessEqThan(8); - lt[8][i].in[0] <== 65; - lt[8][i].in[1] <== in[i]; - lt[9][i] = LessEqThan(8); - lt[9][i].in[0] <== in[i]; - lt[9][i].in[1] <== 90; - and[5][i] = AND(); - and[5][i].a <== lt[8][i].out; - and[5][i].b <== lt[9][i].out; - lt[10][i] = LessEqThan(8); - lt[10][i].in[0] <== 95; - lt[10][i].in[1] <== in[i]; - lt[11][i] = LessEqThan(8); - lt[11][i].in[0] <== in[i]; - lt[11][i].in[1] <== 126; - and[6][i] = AND(); - and[6][i].a <== lt[10][i].out; - and[6][i].b <== lt[11][i].out; eq[24][i] = IsEqual(); eq[24][i].in[0] <== in[i]; eq[24][i].in[1] <== 33; @@ -252,197 +216,429 @@ template EmailDomainRegex(msg_bytes) { eq[46][i] = IsEqual(); eq[46][i].in[0] <== in[i]; eq[46][i].in[1] <== 63; - and[7][i] = AND(); - and[7][i].a <== states[i][1]; - multi_or[1][i] = MultiOR(27); - multi_or[1][i].in[0] <== and[3][i].out; - multi_or[1][i].in[1] <== and[4][i].out; - multi_or[1][i].in[2] <== and[5][i].out; - multi_or[1][i].in[3] <== and[6][i].out; - multi_or[1][i].in[4] <== eq[24][i].out; - multi_or[1][i].in[5] <== eq[25][i].out; - multi_or[1][i].in[6] <== eq[26][i].out; - multi_or[1][i].in[7] <== eq[27][i].out; - multi_or[1][i].in[8] <== eq[28][i].out; - multi_or[1][i].in[9] <== eq[29][i].out; - multi_or[1][i].in[10] <== eq[30][i].out; - multi_or[1][i].in[11] <== eq[31][i].out; - multi_or[1][i].in[12] <== eq[32][i].out; - multi_or[1][i].in[13] <== eq[33][i].out; - multi_or[1][i].in[14] <== eq[34][i].out; - multi_or[1][i].in[15] <== eq[35][i].out; - multi_or[1][i].in[16] <== eq[36][i].out; - multi_or[1][i].in[17] <== eq[37][i].out; - multi_or[1][i].in[18] <== eq[38][i].out; - multi_or[1][i].in[19] <== eq[39][i].out; - multi_or[1][i].in[20] <== eq[40][i].out; - multi_or[1][i].in[21] <== eq[41][i].out; - multi_or[1][i].in[22] <== eq[42][i].out; - multi_or[1][i].in[23] <== eq[43][i].out; - multi_or[1][i].in[24] <== eq[44][i].out; - multi_or[1][i].in[25] <== eq[45][i].out; - multi_or[1][i].in[26] <== eq[46][i].out; - and[7][i].b <== multi_or[1][i].out; - multi_or[2][i] = MultiOR(2); - multi_or[2][i].in[0] <== and[2][i].out; - multi_or[2][i].in[1] <== and[7][i].out; - states[i+1][1] <== multi_or[2][i].out; - state_changed[i].in[0] <== states[i+1][1]; eq[47][i] = IsEqual(); eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 64; - and[8][i] = AND(); - and[8][i].a <== states[i][1]; - and[8][i].b <== eq[47][i].out; - states[i+1][2] <== and[8][i].out; - state_changed[i].in[1] <== states[i+1][2]; - lt[12][i] = LessEqThan(8); - lt[12][i].in[0] <== 65; - lt[12][i].in[1] <== in[i]; - lt[13][i] = LessEqThan(8); - lt[13][i].in[0] <== in[i]; - lt[13][i].in[1] <== 90; - and[9][i] = AND(); - and[9][i].a <== lt[12][i].out; - and[9][i].b <== lt[13][i].out; - lt[14][i] = LessEqThan(8); - lt[14][i].in[0] <== 97; - lt[14][i].in[1] <== in[i]; - lt[15][i] = LessEqThan(8); - lt[15][i].in[0] <== in[i]; - lt[15][i].in[1] <== 122; - and[10][i] = AND(); - and[10][i].a <== lt[14][i].out; - and[10][i].b <== lt[15][i].out; + eq[47][i].in[1] <== 65; eq[48][i] = IsEqual(); eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 45; + eq[48][i].in[1] <== 66; eq[49][i] = IsEqual(); eq[49][i].in[0] <== in[i]; - eq[49][i].in[1] <== 46; + eq[49][i].in[1] <== 67; eq[50][i] = IsEqual(); eq[50][i].in[0] <== in[i]; - eq[50][i].in[1] <== 48; + eq[50][i].in[1] <== 68; eq[51][i] = IsEqual(); eq[51][i].in[0] <== in[i]; - eq[51][i].in[1] <== 49; + eq[51][i].in[1] <== 69; eq[52][i] = IsEqual(); eq[52][i].in[0] <== in[i]; - eq[52][i].in[1] <== 50; + eq[52][i].in[1] <== 70; eq[53][i] = IsEqual(); eq[53][i].in[0] <== in[i]; - eq[53][i].in[1] <== 51; + eq[53][i].in[1] <== 71; eq[54][i] = IsEqual(); eq[54][i].in[0] <== in[i]; - eq[54][i].in[1] <== 52; + eq[54][i].in[1] <== 72; eq[55][i] = IsEqual(); eq[55][i].in[0] <== in[i]; - eq[55][i].in[1] <== 53; + eq[55][i].in[1] <== 73; eq[56][i] = IsEqual(); eq[56][i].in[0] <== in[i]; - eq[56][i].in[1] <== 54; + eq[56][i].in[1] <== 74; eq[57][i] = IsEqual(); eq[57][i].in[0] <== in[i]; - eq[57][i].in[1] <== 55; + eq[57][i].in[1] <== 75; eq[58][i] = IsEqual(); eq[58][i].in[0] <== in[i]; - eq[58][i].in[1] <== 56; + eq[58][i].in[1] <== 76; eq[59][i] = IsEqual(); eq[59][i].in[0] <== in[i]; - eq[59][i].in[1] <== 57; - and[11][i] = AND(); - and[11][i].a <== states[i][2]; - multi_or[3][i] = MultiOR(14); - multi_or[3][i].in[0] <== and[9][i].out; - multi_or[3][i].in[1] <== and[10][i].out; - multi_or[3][i].in[2] <== eq[48][i].out; - multi_or[3][i].in[3] <== eq[49][i].out; - multi_or[3][i].in[4] <== eq[50][i].out; - multi_or[3][i].in[5] <== eq[51][i].out; - multi_or[3][i].in[6] <== eq[52][i].out; - multi_or[3][i].in[7] <== eq[53][i].out; - multi_or[3][i].in[8] <== eq[54][i].out; - multi_or[3][i].in[9] <== eq[55][i].out; - multi_or[3][i].in[10] <== eq[56][i].out; - multi_or[3][i].in[11] <== eq[57][i].out; - multi_or[3][i].in[12] <== eq[58][i].out; - multi_or[3][i].in[13] <== eq[59][i].out; - and[11][i].b <== multi_or[3][i].out; - lt[16][i] = LessEqThan(8); - lt[16][i].in[0] <== 65; - lt[16][i].in[1] <== in[i]; - lt[17][i] = LessEqThan(8); - lt[17][i].in[0] <== in[i]; - lt[17][i].in[1] <== 90; - and[12][i] = AND(); - and[12][i].a <== lt[16][i].out; - and[12][i].b <== lt[17][i].out; - lt[18][i] = LessEqThan(8); - lt[18][i].in[0] <== 97; - lt[18][i].in[1] <== in[i]; - lt[19][i] = LessEqThan(8); - lt[19][i].in[0] <== in[i]; - lt[19][i].in[1] <== 122; - and[13][i] = AND(); - and[13][i].a <== lt[18][i].out; - and[13][i].b <== lt[19][i].out; + eq[59][i].in[1] <== 77; eq[60][i] = IsEqual(); eq[60][i].in[0] <== in[i]; - eq[60][i].in[1] <== 45; + eq[60][i].in[1] <== 78; eq[61][i] = IsEqual(); eq[61][i].in[0] <== in[i]; - eq[61][i].in[1] <== 46; + eq[61][i].in[1] <== 79; eq[62][i] = IsEqual(); eq[62][i].in[0] <== in[i]; - eq[62][i].in[1] <== 48; + eq[62][i].in[1] <== 80; eq[63][i] = IsEqual(); eq[63][i].in[0] <== in[i]; - eq[63][i].in[1] <== 49; + eq[63][i].in[1] <== 81; eq[64][i] = IsEqual(); eq[64][i].in[0] <== in[i]; - eq[64][i].in[1] <== 50; + eq[64][i].in[1] <== 82; eq[65][i] = IsEqual(); eq[65][i].in[0] <== in[i]; - eq[65][i].in[1] <== 51; + eq[65][i].in[1] <== 83; eq[66][i] = IsEqual(); eq[66][i].in[0] <== in[i]; - eq[66][i].in[1] <== 52; + eq[66][i].in[1] <== 84; eq[67][i] = IsEqual(); eq[67][i].in[0] <== in[i]; - eq[67][i].in[1] <== 53; + eq[67][i].in[1] <== 85; eq[68][i] = IsEqual(); eq[68][i].in[0] <== in[i]; - eq[68][i].in[1] <== 54; + eq[68][i].in[1] <== 86; eq[69][i] = IsEqual(); eq[69][i].in[0] <== in[i]; - eq[69][i].in[1] <== 55; + eq[69][i].in[1] <== 87; eq[70][i] = IsEqual(); eq[70][i].in[0] <== in[i]; - eq[70][i].in[1] <== 56; + eq[70][i].in[1] <== 88; eq[71][i] = IsEqual(); eq[71][i].in[0] <== in[i]; - eq[71][i].in[1] <== 57; - and[14][i] = AND(); - and[14][i].a <== states[i][3]; + eq[71][i].in[1] <== 89; + eq[72][i] = IsEqual(); + eq[72][i].in[0] <== in[i]; + eq[72][i].in[1] <== 90; + eq[73][i] = IsEqual(); + eq[73][i].in[0] <== in[i]; + eq[73][i].in[1] <== 94; + eq[74][i] = IsEqual(); + eq[74][i].in[0] <== in[i]; + eq[74][i].in[1] <== 95; + eq[75][i] = IsEqual(); + eq[75][i].in[0] <== in[i]; + eq[75][i].in[1] <== 96; + eq[76][i] = IsEqual(); + eq[76][i].in[0] <== in[i]; + eq[76][i].in[1] <== 97; + eq[77][i] = IsEqual(); + eq[77][i].in[0] <== in[i]; + eq[77][i].in[1] <== 98; + eq[78][i] = IsEqual(); + eq[78][i].in[0] <== in[i]; + eq[78][i].in[1] <== 99; + eq[79][i] = IsEqual(); + eq[79][i].in[0] <== in[i]; + eq[79][i].in[1] <== 100; + eq[80][i] = IsEqual(); + eq[80][i].in[0] <== in[i]; + eq[80][i].in[1] <== 101; + eq[81][i] = IsEqual(); + eq[81][i].in[0] <== in[i]; + eq[81][i].in[1] <== 102; + eq[82][i] = IsEqual(); + eq[82][i].in[0] <== in[i]; + eq[82][i].in[1] <== 103; + eq[83][i] = IsEqual(); + eq[83][i].in[0] <== in[i]; + eq[83][i].in[1] <== 104; + eq[84][i] = IsEqual(); + eq[84][i].in[0] <== in[i]; + eq[84][i].in[1] <== 105; + eq[85][i] = IsEqual(); + eq[85][i].in[0] <== in[i]; + eq[85][i].in[1] <== 106; + eq[86][i] = IsEqual(); + eq[86][i].in[0] <== in[i]; + eq[86][i].in[1] <== 107; + eq[87][i] = IsEqual(); + eq[87][i].in[0] <== in[i]; + eq[87][i].in[1] <== 108; + eq[88][i] = IsEqual(); + eq[88][i].in[0] <== in[i]; + eq[88][i].in[1] <== 109; + eq[89][i] = IsEqual(); + eq[89][i].in[0] <== in[i]; + eq[89][i].in[1] <== 110; + eq[90][i] = IsEqual(); + eq[90][i].in[0] <== in[i]; + eq[90][i].in[1] <== 111; + eq[91][i] = IsEqual(); + eq[91][i].in[0] <== in[i]; + eq[91][i].in[1] <== 112; + eq[92][i] = IsEqual(); + eq[92][i].in[0] <== in[i]; + eq[92][i].in[1] <== 113; + eq[93][i] = IsEqual(); + eq[93][i].in[0] <== in[i]; + eq[93][i].in[1] <== 114; + eq[94][i] = IsEqual(); + eq[94][i].in[0] <== in[i]; + eq[94][i].in[1] <== 115; + eq[95][i] = IsEqual(); + eq[95][i].in[0] <== in[i]; + eq[95][i].in[1] <== 116; + eq[96][i] = IsEqual(); + eq[96][i].in[0] <== in[i]; + eq[96][i].in[1] <== 117; + eq[97][i] = IsEqual(); + eq[97][i].in[0] <== in[i]; + eq[97][i].in[1] <== 118; + eq[98][i] = IsEqual(); + eq[98][i].in[0] <== in[i]; + eq[98][i].in[1] <== 119; + eq[99][i] = IsEqual(); + eq[99][i].in[0] <== in[i]; + eq[99][i].in[1] <== 120; + eq[100][i] = IsEqual(); + eq[100][i].in[0] <== in[i]; + eq[100][i].in[1] <== 121; + eq[101][i] = IsEqual(); + eq[101][i].in[0] <== in[i]; + eq[101][i].in[1] <== 122; + eq[102][i] = IsEqual(); + eq[102][i].in[0] <== in[i]; + eq[102][i].in[1] <== 123; + eq[103][i] = IsEqual(); + eq[103][i].in[0] <== in[i]; + eq[103][i].in[1] <== 124; + eq[104][i] = IsEqual(); + eq[104][i].in[0] <== in[i]; + eq[104][i].in[1] <== 125; + eq[105][i] = IsEqual(); + eq[105][i].in[0] <== in[i]; + eq[105][i].in[1] <== 126; + and[3][i] = AND(); + and[3][i].a <== states[i][1]; + multi_or[1][i] = MultiOR(82); + multi_or[1][i].in[0] <== eq[24][i].out; + multi_or[1][i].in[1] <== eq[25][i].out; + multi_or[1][i].in[2] <== eq[26][i].out; + multi_or[1][i].in[3] <== eq[27][i].out; + multi_or[1][i].in[4] <== eq[28][i].out; + multi_or[1][i].in[5] <== eq[29][i].out; + multi_or[1][i].in[6] <== eq[30][i].out; + multi_or[1][i].in[7] <== eq[31][i].out; + multi_or[1][i].in[8] <== eq[32][i].out; + multi_or[1][i].in[9] <== eq[33][i].out; + multi_or[1][i].in[10] <== eq[34][i].out; + multi_or[1][i].in[11] <== eq[35][i].out; + multi_or[1][i].in[12] <== eq[36][i].out; + multi_or[1][i].in[13] <== eq[37][i].out; + multi_or[1][i].in[14] <== eq[38][i].out; + multi_or[1][i].in[15] <== eq[39][i].out; + multi_or[1][i].in[16] <== eq[40][i].out; + multi_or[1][i].in[17] <== eq[41][i].out; + multi_or[1][i].in[18] <== eq[42][i].out; + multi_or[1][i].in[19] <== eq[43][i].out; + multi_or[1][i].in[20] <== eq[44][i].out; + multi_or[1][i].in[21] <== eq[45][i].out; + multi_or[1][i].in[22] <== eq[46][i].out; + multi_or[1][i].in[23] <== eq[47][i].out; + multi_or[1][i].in[24] <== eq[48][i].out; + multi_or[1][i].in[25] <== eq[49][i].out; + multi_or[1][i].in[26] <== eq[50][i].out; + multi_or[1][i].in[27] <== eq[51][i].out; + multi_or[1][i].in[28] <== eq[52][i].out; + multi_or[1][i].in[29] <== eq[53][i].out; + multi_or[1][i].in[30] <== eq[54][i].out; + multi_or[1][i].in[31] <== eq[55][i].out; + multi_or[1][i].in[32] <== eq[56][i].out; + multi_or[1][i].in[33] <== eq[57][i].out; + multi_or[1][i].in[34] <== eq[58][i].out; + multi_or[1][i].in[35] <== eq[59][i].out; + multi_or[1][i].in[36] <== eq[60][i].out; + multi_or[1][i].in[37] <== eq[61][i].out; + multi_or[1][i].in[38] <== eq[62][i].out; + multi_or[1][i].in[39] <== eq[63][i].out; + multi_or[1][i].in[40] <== eq[64][i].out; + multi_or[1][i].in[41] <== eq[65][i].out; + multi_or[1][i].in[42] <== eq[66][i].out; + multi_or[1][i].in[43] <== eq[67][i].out; + multi_or[1][i].in[44] <== eq[68][i].out; + multi_or[1][i].in[45] <== eq[69][i].out; + multi_or[1][i].in[46] <== eq[70][i].out; + multi_or[1][i].in[47] <== eq[71][i].out; + multi_or[1][i].in[48] <== eq[72][i].out; + multi_or[1][i].in[49] <== eq[73][i].out; + multi_or[1][i].in[50] <== eq[74][i].out; + multi_or[1][i].in[51] <== eq[75][i].out; + multi_or[1][i].in[52] <== eq[76][i].out; + multi_or[1][i].in[53] <== eq[77][i].out; + multi_or[1][i].in[54] <== eq[78][i].out; + multi_or[1][i].in[55] <== eq[79][i].out; + multi_or[1][i].in[56] <== eq[80][i].out; + multi_or[1][i].in[57] <== eq[81][i].out; + multi_or[1][i].in[58] <== eq[82][i].out; + multi_or[1][i].in[59] <== eq[83][i].out; + multi_or[1][i].in[60] <== eq[84][i].out; + multi_or[1][i].in[61] <== eq[85][i].out; + multi_or[1][i].in[62] <== eq[86][i].out; + multi_or[1][i].in[63] <== eq[87][i].out; + multi_or[1][i].in[64] <== eq[88][i].out; + multi_or[1][i].in[65] <== eq[89][i].out; + multi_or[1][i].in[66] <== eq[90][i].out; + multi_or[1][i].in[67] <== eq[91][i].out; + multi_or[1][i].in[68] <== eq[92][i].out; + multi_or[1][i].in[69] <== eq[93][i].out; + multi_or[1][i].in[70] <== eq[94][i].out; + multi_or[1][i].in[71] <== eq[95][i].out; + multi_or[1][i].in[72] <== eq[96][i].out; + multi_or[1][i].in[73] <== eq[97][i].out; + multi_or[1][i].in[74] <== eq[98][i].out; + multi_or[1][i].in[75] <== eq[99][i].out; + multi_or[1][i].in[76] <== eq[100][i].out; + multi_or[1][i].in[77] <== eq[101][i].out; + multi_or[1][i].in[78] <== eq[102][i].out; + multi_or[1][i].in[79] <== eq[103][i].out; + multi_or[1][i].in[80] <== eq[104][i].out; + multi_or[1][i].in[81] <== eq[105][i].out; + and[3][i].b <== multi_or[1][i].out; + multi_or[2][i] = MultiOR(2); + multi_or[2][i].in[0] <== and[2][i].out; + multi_or[2][i].in[1] <== and[3][i].out; + states[i+1][1] <== multi_or[2][i].out; + state_changed[i].in[0] <== states[i+1][1]; + eq[106][i] = IsEqual(); + eq[106][i].in[0] <== in[i]; + eq[106][i].in[1] <== 64; + and[4][i] = AND(); + and[4][i].a <== states[i][1]; + and[4][i].b <== eq[106][i].out; + states[i+1][2] <== and[4][i].out; + state_changed[i].in[1] <== states[i+1][2]; + lt[4][i] = LessEqThan(8); + lt[4][i].in[0] <== 65; + lt[4][i].in[1] <== in[i]; + lt[5][i] = LessEqThan(8); + lt[5][i].in[0] <== in[i]; + lt[5][i].in[1] <== 90; + and[5][i] = AND(); + and[5][i].a <== lt[4][i].out; + and[5][i].b <== lt[5][i].out; + lt[6][i] = LessEqThan(8); + lt[6][i].in[0] <== 97; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessEqThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 122; + and[6][i] = AND(); + and[6][i].a <== lt[6][i].out; + and[6][i].b <== lt[7][i].out; + eq[107][i] = IsEqual(); + eq[107][i].in[0] <== in[i]; + eq[107][i].in[1] <== 45; + eq[108][i] = IsEqual(); + eq[108][i].in[0] <== in[i]; + eq[108][i].in[1] <== 46; + eq[109][i] = IsEqual(); + eq[109][i].in[0] <== in[i]; + eq[109][i].in[1] <== 48; + eq[110][i] = IsEqual(); + eq[110][i].in[0] <== in[i]; + eq[110][i].in[1] <== 49; + eq[111][i] = IsEqual(); + eq[111][i].in[0] <== in[i]; + eq[111][i].in[1] <== 50; + eq[112][i] = IsEqual(); + eq[112][i].in[0] <== in[i]; + eq[112][i].in[1] <== 51; + eq[113][i] = IsEqual(); + eq[113][i].in[0] <== in[i]; + eq[113][i].in[1] <== 52; + eq[114][i] = IsEqual(); + eq[114][i].in[0] <== in[i]; + eq[114][i].in[1] <== 53; + eq[115][i] = IsEqual(); + eq[115][i].in[0] <== in[i]; + eq[115][i].in[1] <== 54; + eq[116][i] = IsEqual(); + eq[116][i].in[0] <== in[i]; + eq[116][i].in[1] <== 55; + eq[117][i] = IsEqual(); + eq[117][i].in[0] <== in[i]; + eq[117][i].in[1] <== 56; + eq[118][i] = IsEqual(); + eq[118][i].in[0] <== in[i]; + eq[118][i].in[1] <== 57; + and[7][i] = AND(); + and[7][i].a <== states[i][2]; + multi_or[3][i] = MultiOR(14); + multi_or[3][i].in[0] <== and[5][i].out; + multi_or[3][i].in[1] <== and[6][i].out; + multi_or[3][i].in[2] <== eq[107][i].out; + multi_or[3][i].in[3] <== eq[108][i].out; + multi_or[3][i].in[4] <== eq[109][i].out; + multi_or[3][i].in[5] <== eq[110][i].out; + multi_or[3][i].in[6] <== eq[111][i].out; + multi_or[3][i].in[7] <== eq[112][i].out; + multi_or[3][i].in[8] <== eq[113][i].out; + multi_or[3][i].in[9] <== eq[114][i].out; + multi_or[3][i].in[10] <== eq[115][i].out; + multi_or[3][i].in[11] <== eq[116][i].out; + multi_or[3][i].in[12] <== eq[117][i].out; + multi_or[3][i].in[13] <== eq[118][i].out; + and[7][i].b <== multi_or[3][i].out; + lt[8][i] = LessEqThan(8); + lt[8][i].in[0] <== 65; + lt[8][i].in[1] <== in[i]; + lt[9][i] = LessEqThan(8); + lt[9][i].in[0] <== in[i]; + lt[9][i].in[1] <== 90; + and[8][i] = AND(); + and[8][i].a <== lt[8][i].out; + and[8][i].b <== lt[9][i].out; + lt[10][i] = LessEqThan(8); + lt[10][i].in[0] <== 97; + lt[10][i].in[1] <== in[i]; + lt[11][i] = LessEqThan(8); + lt[11][i].in[0] <== in[i]; + lt[11][i].in[1] <== 122; + and[9][i] = AND(); + and[9][i].a <== lt[10][i].out; + and[9][i].b <== lt[11][i].out; + eq[119][i] = IsEqual(); + eq[119][i].in[0] <== in[i]; + eq[119][i].in[1] <== 45; + eq[120][i] = IsEqual(); + eq[120][i].in[0] <== in[i]; + eq[120][i].in[1] <== 46; + eq[121][i] = IsEqual(); + eq[121][i].in[0] <== in[i]; + eq[121][i].in[1] <== 48; + eq[122][i] = IsEqual(); + eq[122][i].in[0] <== in[i]; + eq[122][i].in[1] <== 49; + eq[123][i] = IsEqual(); + eq[123][i].in[0] <== in[i]; + eq[123][i].in[1] <== 50; + eq[124][i] = IsEqual(); + eq[124][i].in[0] <== in[i]; + eq[124][i].in[1] <== 51; + eq[125][i] = IsEqual(); + eq[125][i].in[0] <== in[i]; + eq[125][i].in[1] <== 52; + eq[126][i] = IsEqual(); + eq[126][i].in[0] <== in[i]; + eq[126][i].in[1] <== 53; + eq[127][i] = IsEqual(); + eq[127][i].in[0] <== in[i]; + eq[127][i].in[1] <== 54; + eq[128][i] = IsEqual(); + eq[128][i].in[0] <== in[i]; + eq[128][i].in[1] <== 55; + eq[129][i] = IsEqual(); + eq[129][i].in[0] <== in[i]; + eq[129][i].in[1] <== 56; + eq[130][i] = IsEqual(); + eq[130][i].in[0] <== in[i]; + eq[130][i].in[1] <== 57; + and[10][i] = AND(); + and[10][i].a <== states[i][3]; multi_or[4][i] = MultiOR(14); - multi_or[4][i].in[0] <== and[12][i].out; - multi_or[4][i].in[1] <== and[13][i].out; - multi_or[4][i].in[2] <== eq[60][i].out; - multi_or[4][i].in[3] <== eq[61][i].out; - multi_or[4][i].in[4] <== eq[62][i].out; - multi_or[4][i].in[5] <== eq[63][i].out; - multi_or[4][i].in[6] <== eq[64][i].out; - multi_or[4][i].in[7] <== eq[65][i].out; - multi_or[4][i].in[8] <== eq[66][i].out; - multi_or[4][i].in[9] <== eq[67][i].out; - multi_or[4][i].in[10] <== eq[68][i].out; - multi_or[4][i].in[11] <== eq[69][i].out; - multi_or[4][i].in[12] <== eq[70][i].out; - multi_or[4][i].in[13] <== eq[71][i].out; - and[14][i].b <== multi_or[4][i].out; + multi_or[4][i].in[0] <== and[8][i].out; + multi_or[4][i].in[1] <== and[9][i].out; + multi_or[4][i].in[2] <== eq[119][i].out; + multi_or[4][i].in[3] <== eq[120][i].out; + multi_or[4][i].in[4] <== eq[121][i].out; + multi_or[4][i].in[5] <== eq[122][i].out; + multi_or[4][i].in[6] <== eq[123][i].out; + multi_or[4][i].in[7] <== eq[124][i].out; + multi_or[4][i].in[8] <== eq[125][i].out; + multi_or[4][i].in[9] <== eq[126][i].out; + multi_or[4][i].in[10] <== eq[127][i].out; + multi_or[4][i].in[11] <== eq[128][i].out; + multi_or[4][i].in[12] <== eq[129][i].out; + multi_or[4][i].in[13] <== eq[130][i].out; + and[10][i].b <== multi_or[4][i].out; multi_or[5][i] = MultiOR(2); - multi_or[5][i].in[0] <== and[11][i].out; - multi_or[5][i].in[1] <== and[14][i].out; + multi_or[5][i].in[0] <== and[7][i].out; + multi_or[5][i].in[1] <== and[10][i].out; states[i+1][3] <== multi_or[5][i].out; state_changed[i].in[2] <== states[i+1][3]; states[i+1][0] <== 1 - state_changed[i].out; diff --git a/packages/compiler/src/lib.rs b/packages/compiler/src/lib.rs index b9d8f64..89e06f0 100644 --- a/packages/compiler/src/lib.rs +++ b/packages/compiler/src/lib.rs @@ -89,7 +89,7 @@ impl DecomposedRegexConfig { all_regex += &config.regex_def; } let dfa_val = regex_to_dfa(&all_regex)?; - println!("dfa_val {:?}", dfa_val); + // println!("dfa_val {:?}", dfa_val); let substrs_defs = self.extract_substr_ids(&dfa_val)?; Ok(RegexAndDFA { // max_byte_size: self.max_byte_size, diff --git a/packages/compiler/src/regex.ts b/packages/compiler/src/regex.ts index 3764266..9961813 100644 --- a/packages/compiler/src/regex.ts +++ b/packages/compiler/src/regex.ts @@ -767,13 +767,13 @@ function toNature(col: string): number { function regexToDfa(regex: string): string { const nfa = regexToNfa(regex); - console.log(nfa); + // console.log(nfa); if (typeof nfa === 'string') { return nfa; } const dfa = minDfa(nfaToDfa(nfa)); - console.log(dfa); + // console.log(dfa); const states: Record = {}; const nodes: DfaNode[] = []; const stack: DfaNode[] = [dfa]; @@ -810,7 +810,7 @@ function regexToDfa(regex: string): string { } graph[node.nature - 1] = curr; } - console.log(`graph: ${JSON.stringify(graph, null, 2)}`); + // console.log(`graph: ${JSON.stringify(graph, null, 2)}`); return JSON.stringify(graph); } From 770bd87d9d02f604c5a6cd941444f57683fe10a3 Mon Sep 17 00:00:00 2001 From: SneakY-NickY Date: Fri, 24 Nov 2023 17:05:44 +0100 Subject: [PATCH 4/7] Updated TS gen_circom to support latest commits --- packages/compiler/src/gen_circom.ts | 105 ++++++++++++++++++---------- 1 file changed, 69 insertions(+), 36 deletions(-) diff --git a/packages/compiler/src/gen_circom.ts b/packages/compiler/src/gen_circom.ts index c34164a..7fdf6ac 100644 --- a/packages/compiler/src/gen_circom.ts +++ b/packages/compiler/src/gen_circom.ts @@ -67,6 +67,14 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { let and_i: number = 0; let multi_or_i: number = 0; + const range_checks: number[][][] = new Array(256); + for (let i = 0; i < 256; i++) { + range_checks[i] = new Array(256); + } + const eq_checks: number[] = new Array(256); + const multi_or_checks1: Record = {}; + const multi_or_checks2: Record = {}; + let lines: string[] = []; lines.push(`\tfor (var i = 0; i < num_bytes; i++) {`); @@ -164,29 +172,43 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { // } for (let min_max of min_maxes) { - lines.push(`\t\tlt[${lt_i}][i] = LessEqThan(8);`); - lines.push(`\t\tlt[${lt_i}][i].in[0] <== ${min_max[0]};`); - lines.push(`\t\tlt[${lt_i}][i].in[1] <== in[i];`); - - lines.push(`\t\tlt[${lt_i + 1}][i] = LessEqThan(8);`); - lines.push(`\t\tlt[${lt_i + 1}][i].in[0] <== in[i];`); - lines.push(`\t\tlt[${lt_i + 1}][i].in[1] <== ${min_max[1]};`); - - lines.push(`\t\tand[${and_i}][i] = AND();`); - lines.push(`\t\tand[${and_i}][i].a <== lt[${lt_i}][i].out;`); - lines.push(`\t\tand[${and_i}][i].b <== lt[${lt_i + 1}][i].out;`); + const min: number = min_max[0]; + const max: number = min_max[1]; + if (range_checks[min][max] === undefined) { + lines.push(`\t\tlt[${lt_i}][i] = LessEqThan(8);`); + lines.push(`\t\tlt[${lt_i}][i].in[0] <== ${min};`); + lines.push(`\t\tlt[${lt_i}][i].in[1] <== in[i];`); + + lines.push(`\t\tlt[${lt_i + 1}][i] = LessEqThan(8);`); + lines.push(`\t\tlt[${lt_i + 1}][i].in[0] <== in[i];`); + lines.push(`\t\tlt[${lt_i + 1}][i].in[1] <== ${max};`); + + lines.push(`\t\tand[${and_i}][i] = AND();`); + lines.push(`\t\tand[${and_i}][i].a <== lt[${lt_i}][i].out;`); + lines.push(`\t\tand[${and_i}][i].b <== lt[${lt_i + 1}][i].out;`); + + eq_outputs.push(['and', and_i]); + range_checks[min][max] = [lt_i, and_i]; + lt_i += 2; + and_i += 1; + } else { + let [_, and_i] = range_checks[min][max]; + eq_outputs.push(['and', and_i]); + } - eq_outputs.push(['and', and_i]); - lt_i += 2; - and_i += 1; } for (let code of vals) { - lines.push(`\t\teq[${eq_i}][i] = IsEqual();`); - lines.push(`\t\teq[${eq_i}][i].in[0] <== in[i];`); - lines.push(`\t\teq[${eq_i}][i].in[1] <== ${code};`); - eq_outputs.push(['eq', eq_i]); - eq_i += 1; + if (eq_checks[code] === undefined) { + lines.push(`\t\teq[${eq_i}][i] = IsEqual();`); + lines.push(`\t\teq[${eq_i}][i].in[0] <== in[i];`); + lines.push(`\t\teq[${eq_i}][i].in[1] <== ${code};`); + eq_outputs.push(['eq', eq_i]); + eq_checks[code] = eq_i; + eq_i += 1; + } else { + eq_outputs.push(['eq', eq_checks[code]]); + } } lines.push(`\t\tand[${and_i}][i] = AND();`); @@ -199,17 +221,23 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { // } lines.push(`\t\tand[${and_i}][i].b <== ${eq_outputs[0][0]}[${eq_outputs[0][1]}][i].out;`); } else if (eq_outputs.length > 1) { - lines.push(`\t\tmulti_or[${multi_or_i}][i] = MultiOR(${eq_outputs.length});`); - for (let output_i = 0; output_i < eq_outputs.length; output_i++) { - lines.push(`\t\tmulti_or[${multi_or_i}][i].in[${output_i}] <== ${eq_outputs[output_i][0]}[${eq_outputs[output_i][1]}][i].out;`); + const eq_outputs_key: string = JSON.stringify(eq_outputs); + if (multi_or_checks1[eq_outputs_key] === undefined) { + lines.push(`\t\tmulti_or[${multi_or_i}][i] = MultiOR(${eq_outputs.length});`); + for (let output_i = 0; output_i < eq_outputs.length; output_i++) { + lines.push(`\t\tmulti_or[${multi_or_i}][i].in[${output_i}] <== ${eq_outputs[output_i][0]}[${eq_outputs[output_i][1]}][i].out;`); + } + // if (is_negate) { + // lines.push(`\t\tand[${and_i}][i].b <== 1 - multi_or[${multi_or_i}][i].out;`); + // } else { + // lines.push(`\t\tand[${and_i}][i].b <== multi_or[${multi_or_i}][i].out;`); + // } + lines.push(`\t\tand[${and_i}][i].b <== multi_or[${multi_or_i}][i].out;`); + multi_or_checks1[eq_outputs_key] = multi_or_i; + multi_or_i += 1 + } else { + lines.push(`\t\tand[${and_i}][i].b <== multi_or[${multi_or_checks1[eq_outputs_key]}][i].out;`); } - // if (is_negate) { - // lines.push(`\t\tand[${and_i}][i].b <== 1 - multi_or[${multi_or_i}][i].out;`); - // } else { - // lines.push(`\t\tand[${and_i}][i].b <== multi_or[${multi_or_i}][i].out;`); - // } - lines.push(`\t\tand[${and_i}][i].b <== multi_or[${multi_or_i}][i].out;`); - multi_or_i += 1; } outputs.push(and_i); @@ -219,12 +247,18 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { if (outputs.length === 1) { lines.push(`\t\tstates[i+1][${i}] <== and[${outputs[0]}][i].out;`); } else if (outputs.length > 1) { - lines.push(`\t\tmulti_or[${multi_or_i}][i] = MultiOR(${outputs.length});`); - for (let output_i = 0; output_i < outputs.length; output_i++) { - lines.push(`\t\tmulti_or[${multi_or_i}][i].in[${output_i}] <== and[${outputs[output_i]}][i].out;`); + const outputs_key: string = JSON.stringify(outputs); + if (multi_or_checks2[outputs_key] === undefined) { + lines.push(`\t\tmulti_or[${multi_or_i}][i] = MultiOR(${outputs.length});`); + for (let output_i = 0; output_i < outputs.length; output_i++) { + lines.push(`\t\tmulti_or[${multi_or_i}][i].in[${output_i}] <== and[${outputs[output_i]}][i].out;`); + } + lines.push(`\t\tstates[i+1][${i}] <== multi_or[${multi_or_i}][i].out;`); + multi_or_checks2[outputs_key] = multi_or_i; + multi_or_i += 1; + } else { + lines.push(`\t\tstates[i+1][${i}] <== multi_or[${multi_or_checks2[outputs_key]}][i].out;`); } - lines.push(`\t\tstates[i+1][${i}] <== multi_or[${multi_or_i}][i].out;`); - multi_or_i += 1; } lines.push(`\t\tstate_changed[i].in[${i - 1}] <== states[i+1][${i}];`); @@ -285,7 +319,6 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { return string; } - // Commented these two out as they're only used by the code that's also commented out // Set.prototype.isSuperset = function (subset) { @@ -304,4 +337,4 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { // for (let elem of setB) { // this.delete(elem) // } -// } +// } \ No newline at end of file From 125f0be62ef896e2e3d2c4e139266e7fa76e91f5 Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Tue, 28 Nov 2023 01:15:52 +0900 Subject: [PATCH 5/7] Update circom circuits. --- .../circuits/common/body_hash_regex.circom | 871 +++---- .../circuits/common/email_addr_regex.circom | 529 ++-- .../common/email_addr_with_name_regex.circom | 2167 ++++++----------- .../circuits/common/email_domain_regex.circom | 529 ++-- .../circuits/common/from_all_regex.circom | 212 +- .../circuits/common/message_id_regex.circom | 337 +-- .../circuits/common/subject_all_regex.circom | 250 +- .../circuits/common/timestamp_regex.circom | 600 ++--- .../tests/circuits/negate1_regex.circom | 73 +- .../circom/tests/circuits/simple_regex.circom | 57 +- 10 files changed, 1940 insertions(+), 3685 deletions(-) diff --git a/packages/circom/circuits/common/body_hash_regex.circom b/packages/circom/circuits/common/body_hash_regex.circom index 1576425..b39ce37 100644 --- a/packages/circom/circuits/common/body_hash_regex.circom +++ b/packages/circom/circuits/common/body_hash_regex.circom @@ -13,10 +13,10 @@ template BodyHashRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[90][num_bytes]; - component lt[34][num_bytes]; - component and[56][num_bytes]; - component multi_or[15][num_bytes]; + component eq[48][num_bytes]; + component lt[16][num_bytes]; + component and[47][num_bytes]; + component multi_or[12][num_bytes]; signal states[num_bytes+1][28]; component state_changed[num_bytes]; @@ -57,679 +57,436 @@ template BodyHashRegex(msg_bytes) { multi_or[0][i].in[0] <== and[2][i].out; multi_or[0][i].in[1] <== eq[0][i].out; and[3][i].b <== multi_or[0][i].out; + and[4][i] = AND(); + and[4][i].a <== states[i][25]; + and[4][i].b <== and[0][i].out; lt[4][i] = LessEqThan(8); - lt[4][i].in[0] <== 97; + lt[4][i].in[0] <== 105; lt[4][i].in[1] <== in[i]; lt[5][i] = LessEqThan(8); lt[5][i].in[0] <== in[i]; lt[5][i].in[1] <== 122; - and[4][i] = AND(); - and[4][i].a <== lt[4][i].out; - and[4][i].b <== lt[5][i].out; and[5][i] = AND(); - and[5][i].a <== states[i][25]; - and[5][i].b <== and[4][i].out; - lt[6][i] = LessEqThan(8); - lt[6][i].in[0] <== 105; - lt[6][i].in[1] <== in[i]; - lt[7][i] = LessEqThan(8); - lt[7][i].in[0] <== in[i]; - lt[7][i].in[1] <== 122; - and[6][i] = AND(); - and[6][i].a <== lt[6][i].out; - and[6][i].b <== lt[7][i].out; + and[5][i].a <== lt[4][i].out; + and[5][i].b <== lt[5][i].out; eq[1][i] = IsEqual(); eq[1][i].in[0] <== in[i]; - eq[1][i].in[1] <== 97; + eq[1][i].in[1] <== 98; eq[2][i] = IsEqual(); eq[2][i].in[0] <== in[i]; - eq[2][i].in[1] <== 98; + eq[2][i].in[1] <== 99; eq[3][i] = IsEqual(); eq[3][i].in[0] <== in[i]; - eq[3][i].in[1] <== 99; + eq[3][i].in[1] <== 100; eq[4][i] = IsEqual(); eq[4][i].in[0] <== in[i]; - eq[4][i].in[1] <== 100; + eq[4][i].in[1] <== 101; eq[5][i] = IsEqual(); eq[5][i].in[0] <== in[i]; - eq[5][i].in[1] <== 101; + eq[5][i].in[1] <== 102; eq[6][i] = IsEqual(); eq[6][i].in[0] <== in[i]; - eq[6][i].in[1] <== 102; - eq[7][i] = IsEqual(); - eq[7][i].in[0] <== in[i]; - eq[7][i].in[1] <== 103; - and[7][i] = AND(); - and[7][i].a <== states[i][26]; + eq[6][i].in[1] <== 103; + and[6][i] = AND(); + and[6][i].a <== states[i][26]; multi_or[1][i] = MultiOR(8); - multi_or[1][i].in[0] <== and[6][i].out; - multi_or[1][i].in[1] <== eq[1][i].out; - multi_or[1][i].in[2] <== eq[2][i].out; - multi_or[1][i].in[3] <== eq[3][i].out; - multi_or[1][i].in[4] <== eq[4][i].out; - multi_or[1][i].in[5] <== eq[5][i].out; - multi_or[1][i].in[6] <== eq[6][i].out; - multi_or[1][i].in[7] <== eq[7][i].out; - and[7][i].b <== multi_or[1][i].out; - lt[8][i] = LessEqThan(8); - lt[8][i].in[0] <== 97; - lt[8][i].in[1] <== in[i]; - lt[9][i] = LessEqThan(8); - lt[9][i].in[0] <== in[i]; - lt[9][i].in[1] <== 122; - and[8][i] = AND(); - and[8][i].a <== lt[8][i].out; - and[8][i].b <== lt[9][i].out; - and[9][i] = AND(); - and[9][i].a <== states[i][27]; - and[9][i].b <== and[8][i].out; + multi_or[1][i].in[0] <== and[5][i].out; + multi_or[1][i].in[1] <== eq[0][i].out; + multi_or[1][i].in[2] <== eq[1][i].out; + multi_or[1][i].in[3] <== eq[2][i].out; + multi_or[1][i].in[4] <== eq[3][i].out; + multi_or[1][i].in[5] <== eq[4][i].out; + multi_or[1][i].in[6] <== eq[5][i].out; + multi_or[1][i].in[7] <== eq[6][i].out; + and[6][i].b <== multi_or[1][i].out; + and[7][i] = AND(); + and[7][i].a <== states[i][27]; + and[7][i].b <== and[0][i].out; multi_or[2][i] = MultiOR(5); multi_or[2][i].in[0] <== and[1][i].out; multi_or[2][i].in[1] <== and[3][i].out; - multi_or[2][i].in[2] <== and[5][i].out; - multi_or[2][i].in[3] <== and[7][i].out; - multi_or[2][i].in[4] <== and[9][i].out; + multi_or[2][i].in[2] <== and[4][i].out; + multi_or[2][i].in[3] <== and[6][i].out; + multi_or[2][i].in[4] <== and[7][i].out; states[i+1][1] <== multi_or[2][i].out; state_changed[i].in[0] <== states[i+1][1]; + lt[6][i] = LessEqThan(8); + lt[6][i].in[0] <== 0; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessEqThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 58; + and[8][i] = AND(); + and[8][i].a <== lt[6][i].out; + and[8][i].b <== lt[7][i].out; + lt[8][i] = LessEqThan(8); + lt[8][i].in[0] <== 60; + lt[8][i].in[1] <== in[i]; + lt[9][i] = LessEqThan(8); + lt[9][i].in[0] <== in[i]; + lt[9][i].in[1] <== 254; + and[9][i] = AND(); + and[9][i].a <== lt[8][i].out; + and[9][i].b <== lt[9][i].out; + and[10][i] = AND(); + and[10][i].a <== states[i][2]; + multi_or[3][i] = MultiOR(2); + multi_or[3][i].in[0] <== and[8][i].out; + multi_or[3][i].in[1] <== and[9][i].out; + and[10][i].b <== multi_or[3][i].out; lt[10][i] = LessEqThan(8); lt[10][i].in[0] <== 0; lt[10][i].in[1] <== in[i]; lt[11][i] = LessEqThan(8); lt[11][i].in[0] <== in[i]; - lt[11][i].in[1] <== 58; - and[10][i] = AND(); - and[10][i].a <== lt[10][i].out; - and[10][i].b <== lt[11][i].out; + lt[11][i].in[1] <== 42; + and[11][i] = AND(); + and[11][i].a <== lt[10][i].out; + and[11][i].b <== lt[11][i].out; lt[12][i] = LessEqThan(8); - lt[12][i].in[0] <== 60; + lt[12][i].in[0] <== 123; lt[12][i].in[1] <== in[i]; lt[13][i] = LessEqThan(8); lt[13][i].in[0] <== in[i]; lt[13][i].in[1] <== 254; - and[11][i] = AND(); - and[11][i].a <== lt[12][i].out; - and[11][i].b <== lt[13][i].out; and[12][i] = AND(); - and[12][i].a <== states[i][2]; - multi_or[3][i] = MultiOR(2); - multi_or[3][i].in[0] <== and[10][i].out; - multi_or[3][i].in[1] <== and[11][i].out; - and[12][i].b <== multi_or[3][i].out; - lt[14][i] = LessEqThan(8); - lt[14][i].in[0] <== 0; - lt[14][i].in[1] <== in[i]; - lt[15][i] = LessEqThan(8); - lt[15][i].in[0] <== in[i]; - lt[15][i].in[1] <== 42; - and[13][i] = AND(); - and[13][i].a <== lt[14][i].out; - and[13][i].b <== lt[15][i].out; - lt[16][i] = LessEqThan(8); - lt[16][i].in[0] <== 123; - lt[16][i].in[1] <== in[i]; - lt[17][i] = LessEqThan(8); - lt[17][i].in[0] <== in[i]; - lt[17][i].in[1] <== 254; - and[14][i] = AND(); - and[14][i].a <== lt[16][i].out; - and[14][i].b <== lt[17][i].out; + and[12][i].a <== lt[12][i].out; + and[12][i].b <== lt[13][i].out; + eq[7][i] = IsEqual(); + eq[7][i].in[0] <== in[i]; + eq[7][i].in[1] <== 44; eq[8][i] = IsEqual(); eq[8][i].in[0] <== in[i]; - eq[8][i].in[1] <== 44; + eq[8][i].in[1] <== 45; eq[9][i] = IsEqual(); eq[9][i].in[0] <== in[i]; - eq[9][i].in[1] <== 45; + eq[9][i].in[1] <== 46; eq[10][i] = IsEqual(); eq[10][i].in[0] <== in[i]; - eq[10][i].in[1] <== 46; + eq[10][i].in[1] <== 58; eq[11][i] = IsEqual(); eq[11][i].in[0] <== in[i]; - eq[11][i].in[1] <== 58; + eq[11][i].in[1] <== 60; eq[12][i] = IsEqual(); eq[12][i].in[0] <== in[i]; - eq[12][i].in[1] <== 60; + eq[12][i].in[1] <== 62; eq[13][i] = IsEqual(); eq[13][i].in[0] <== in[i]; - eq[13][i].in[1] <== 62; + eq[13][i].in[1] <== 63; eq[14][i] = IsEqual(); eq[14][i].in[0] <== in[i]; - eq[14][i].in[1] <== 63; + eq[14][i].in[1] <== 64; eq[15][i] = IsEqual(); eq[15][i].in[0] <== in[i]; - eq[15][i].in[1] <== 64; + eq[15][i].in[1] <== 91; eq[16][i] = IsEqual(); eq[16][i].in[0] <== in[i]; - eq[16][i].in[1] <== 91; + eq[16][i].in[1] <== 92; eq[17][i] = IsEqual(); eq[17][i].in[0] <== in[i]; - eq[17][i].in[1] <== 92; + eq[17][i].in[1] <== 93; eq[18][i] = IsEqual(); eq[18][i].in[0] <== in[i]; - eq[18][i].in[1] <== 93; + eq[18][i].in[1] <== 94; eq[19][i] = IsEqual(); eq[19][i].in[0] <== in[i]; - eq[19][i].in[1] <== 94; + eq[19][i].in[1] <== 95; eq[20][i] = IsEqual(); eq[20][i].in[0] <== in[i]; - eq[20][i].in[1] <== 95; + eq[20][i].in[1] <== 96; + and[13][i] = AND(); + and[13][i].a <== states[i][3]; + multi_or[4][i] = MultiOR(16); + multi_or[4][i].in[0] <== and[11][i].out; + multi_or[4][i].in[1] <== and[12][i].out; + multi_or[4][i].in[2] <== eq[7][i].out; + multi_or[4][i].in[3] <== eq[8][i].out; + multi_or[4][i].in[4] <== eq[9][i].out; + multi_or[4][i].in[5] <== eq[10][i].out; + multi_or[4][i].in[6] <== eq[11][i].out; + multi_or[4][i].in[7] <== eq[12][i].out; + multi_or[4][i].in[8] <== eq[13][i].out; + multi_or[4][i].in[9] <== eq[14][i].out; + multi_or[4][i].in[10] <== eq[15][i].out; + multi_or[4][i].in[11] <== eq[16][i].out; + multi_or[4][i].in[12] <== eq[17][i].out; + multi_or[4][i].in[13] <== eq[18][i].out; + multi_or[4][i].in[14] <== eq[19][i].out; + multi_or[4][i].in[15] <== eq[20][i].out; + and[13][i].b <== multi_or[4][i].out; + and[14][i] = AND(); + and[14][i].a <== states[i][5]; + and[14][i].b <== multi_or[4][i].out; + and[15][i] = AND(); + and[15][i].a <== states[i][6]; + and[15][i].b <== multi_or[3][i].out; + multi_or[5][i] = MultiOR(4); + multi_or[5][i].in[0] <== and[10][i].out; + multi_or[5][i].in[1] <== and[13][i].out; + multi_or[5][i].in[2] <== and[14][i].out; + multi_or[5][i].in[3] <== and[15][i].out; + states[i+1][2] <== multi_or[5][i].out; + state_changed[i].in[1] <== states[i+1][2]; eq[21][i] = IsEqual(); eq[21][i].in[0] <== in[i]; - eq[21][i].in[1] <== 96; - and[15][i] = AND(); - and[15][i].a <== states[i][3]; - multi_or[4][i] = MultiOR(16); - multi_or[4][i].in[0] <== and[13][i].out; - multi_or[4][i].in[1] <== and[14][i].out; - multi_or[4][i].in[2] <== eq[8][i].out; - multi_or[4][i].in[3] <== eq[9][i].out; - multi_or[4][i].in[4] <== eq[10][i].out; - multi_or[4][i].in[5] <== eq[11][i].out; - multi_or[4][i].in[6] <== eq[12][i].out; - multi_or[4][i].in[7] <== eq[13][i].out; - multi_or[4][i].in[8] <== eq[14][i].out; - multi_or[4][i].in[9] <== eq[15][i].out; - multi_or[4][i].in[10] <== eq[16][i].out; - multi_or[4][i].in[11] <== eq[17][i].out; - multi_or[4][i].in[12] <== eq[18][i].out; - multi_or[4][i].in[13] <== eq[19][i].out; - multi_or[4][i].in[14] <== eq[20][i].out; - multi_or[4][i].in[15] <== eq[21][i].out; - and[15][i].b <== multi_or[4][i].out; - lt[18][i] = LessEqThan(8); - lt[18][i].in[0] <== 0; - lt[18][i].in[1] <== in[i]; - lt[19][i] = LessEqThan(8); - lt[19][i].in[0] <== in[i]; - lt[19][i].in[1] <== 42; + eq[21][i].in[1] <== 61; and[16][i] = AND(); - and[16][i].a <== lt[18][i].out; - and[16][i].b <== lt[19][i].out; - lt[20][i] = LessEqThan(8); - lt[20][i].in[0] <== 123; - lt[20][i].in[1] <== in[i]; - lt[21][i] = LessEqThan(8); - lt[21][i].in[0] <== in[i]; - lt[21][i].in[1] <== 254; - and[17][i] = AND(); - and[17][i].a <== lt[20][i].out; - and[17][i].b <== lt[21][i].out; + and[16][i].a <== states[i][27]; + and[16][i].b <== eq[21][i].out; + states[i+1][3] <== and[16][i].out; + state_changed[i].in[2] <== states[i+1][3]; eq[22][i] = IsEqual(); eq[22][i].in[0] <== in[i]; - eq[22][i].in[1] <== 44; + eq[22][i].in[1] <== 59; + and[17][i] = AND(); + and[17][i].a <== states[i][2]; + and[17][i].b <== eq[22][i].out; + states[i+1][4] <== and[17][i].out; + state_changed[i].in[3] <== states[i+1][4]; + lt[14][i] = LessEqThan(8); + lt[14][i].in[0] <== 65; + lt[14][i].in[1] <== in[i]; + lt[15][i] = LessEqThan(8); + lt[15][i].in[0] <== in[i]; + lt[15][i].in[1] <== 90; + and[18][i] = AND(); + and[18][i].a <== lt[14][i].out; + and[18][i].b <== lt[15][i].out; eq[23][i] = IsEqual(); eq[23][i].in[0] <== in[i]; - eq[23][i].in[1] <== 45; + eq[23][i].in[1] <== 43; eq[24][i] = IsEqual(); eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 46; + eq[24][i].in[1] <== 47; eq[25][i] = IsEqual(); eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 58; + eq[25][i].in[1] <== 48; eq[26][i] = IsEqual(); eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 60; + eq[26][i].in[1] <== 49; eq[27][i] = IsEqual(); eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 62; + eq[27][i].in[1] <== 50; eq[28][i] = IsEqual(); eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 63; + eq[28][i].in[1] <== 51; eq[29][i] = IsEqual(); eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 64; + eq[29][i].in[1] <== 52; eq[30][i] = IsEqual(); eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 91; + eq[30][i].in[1] <== 53; eq[31][i] = IsEqual(); eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 92; + eq[31][i].in[1] <== 54; eq[32][i] = IsEqual(); eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 93; + eq[32][i].in[1] <== 55; eq[33][i] = IsEqual(); eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 94; + eq[33][i].in[1] <== 56; eq[34][i] = IsEqual(); eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 95; - eq[35][i] = IsEqual(); - eq[35][i].in[0] <== in[i]; - eq[35][i].in[1] <== 96; - and[18][i] = AND(); - and[18][i].a <== states[i][5]; - multi_or[5][i] = MultiOR(16); - multi_or[5][i].in[0] <== and[16][i].out; - multi_or[5][i].in[1] <== and[17][i].out; - multi_or[5][i].in[2] <== eq[22][i].out; - multi_or[5][i].in[3] <== eq[23][i].out; - multi_or[5][i].in[4] <== eq[24][i].out; - multi_or[5][i].in[5] <== eq[25][i].out; - multi_or[5][i].in[6] <== eq[26][i].out; - multi_or[5][i].in[7] <== eq[27][i].out; - multi_or[5][i].in[8] <== eq[28][i].out; - multi_or[5][i].in[9] <== eq[29][i].out; - multi_or[5][i].in[10] <== eq[30][i].out; - multi_or[5][i].in[11] <== eq[31][i].out; - multi_or[5][i].in[12] <== eq[32][i].out; - multi_or[5][i].in[13] <== eq[33][i].out; - multi_or[5][i].in[14] <== eq[34][i].out; - multi_or[5][i].in[15] <== eq[35][i].out; - and[18][i].b <== multi_or[5][i].out; - lt[22][i] = LessEqThan(8); - lt[22][i].in[0] <== 0; - lt[22][i].in[1] <== in[i]; - lt[23][i] = LessEqThan(8); - lt[23][i].in[0] <== in[i]; - lt[23][i].in[1] <== 58; + eq[34][i].in[1] <== 57; and[19][i] = AND(); - and[19][i].a <== lt[22][i].out; - and[19][i].b <== lt[23][i].out; - lt[24][i] = LessEqThan(8); - lt[24][i].in[0] <== 60; - lt[24][i].in[1] <== in[i]; - lt[25][i] = LessEqThan(8); - lt[25][i].in[0] <== in[i]; - lt[25][i].in[1] <== 254; + and[19][i].a <== states[i][3]; + multi_or[6][i] = MultiOR(15); + multi_or[6][i].in[0] <== and[18][i].out; + multi_or[6][i].in[1] <== and[0][i].out; + multi_or[6][i].in[2] <== eq[23][i].out; + multi_or[6][i].in[3] <== eq[24][i].out; + multi_or[6][i].in[4] <== eq[25][i].out; + multi_or[6][i].in[5] <== eq[26][i].out; + multi_or[6][i].in[6] <== eq[27][i].out; + multi_or[6][i].in[7] <== eq[28][i].out; + multi_or[6][i].in[8] <== eq[29][i].out; + multi_or[6][i].in[9] <== eq[30][i].out; + multi_or[6][i].in[10] <== eq[31][i].out; + multi_or[6][i].in[11] <== eq[32][i].out; + multi_or[6][i].in[12] <== eq[33][i].out; + multi_or[6][i].in[13] <== eq[34][i].out; + multi_or[6][i].in[14] <== eq[21][i].out; + and[19][i].b <== multi_or[6][i].out; and[20][i] = AND(); - and[20][i].a <== lt[24][i].out; - and[20][i].b <== lt[25][i].out; + and[20][i].a <== states[i][5]; + and[20][i].b <== multi_or[6][i].out; + multi_or[7][i] = MultiOR(2); + multi_or[7][i].in[0] <== and[19][i].out; + multi_or[7][i].in[1] <== and[20][i].out; + states[i+1][5] <== multi_or[7][i].out; + state_changed[i].in[4] <== states[i+1][5]; and[21][i] = AND(); - and[21][i].a <== states[i][6]; - multi_or[6][i] = MultiOR(2); - multi_or[6][i].in[0] <== and[19][i].out; - multi_or[6][i].in[1] <== and[20][i].out; - and[21][i].b <== multi_or[6][i].out; - multi_or[7][i] = MultiOR(4); - multi_or[7][i].in[0] <== and[12][i].out; - multi_or[7][i].in[1] <== and[15][i].out; - multi_or[7][i].in[2] <== and[18][i].out; - multi_or[7][i].in[3] <== and[21][i].out; - states[i+1][2] <== multi_or[7][i].out; - state_changed[i].in[1] <== states[i+1][2]; - eq[36][i] = IsEqual(); - eq[36][i].in[0] <== in[i]; - eq[36][i].in[1] <== 61; + and[21][i].a <== states[i][1]; + and[21][i].b <== eq[21][i].out; and[22][i] = AND(); - and[22][i].a <== states[i][27]; - and[22][i].b <== eq[36][i].out; - states[i+1][3] <== and[22][i].out; - state_changed[i].in[2] <== states[i+1][3]; - eq[37][i] = IsEqual(); - eq[37][i].in[0] <== in[i]; - eq[37][i].in[1] <== 59; + and[22][i].a <== states[i][26]; + and[22][i].b <== eq[21][i].out; + multi_or[8][i] = MultiOR(2); + multi_or[8][i].in[0] <== and[21][i].out; + multi_or[8][i].in[1] <== and[22][i].out; + states[i+1][6] <== multi_or[8][i].out; + state_changed[i].in[5] <== states[i+1][6]; + eq[35][i] = IsEqual(); + eq[35][i].in[0] <== in[i]; + eq[35][i].in[1] <== 32; and[23][i] = AND(); - and[23][i].a <== states[i][2]; - and[23][i].b <== eq[37][i].out; - states[i+1][4] <== and[23][i].out; - state_changed[i].in[3] <== states[i+1][4]; - lt[26][i] = LessEqThan(8); - lt[26][i].in[0] <== 65; - lt[26][i].in[1] <== in[i]; - lt[27][i] = LessEqThan(8); - lt[27][i].in[0] <== in[i]; - lt[27][i].in[1] <== 90; + and[23][i].a <== states[i][4]; + and[23][i].b <== eq[35][i].out; and[24][i] = AND(); - and[24][i].a <== lt[26][i].out; - and[24][i].b <== lt[27][i].out; - lt[28][i] = LessEqThan(8); - lt[28][i].in[0] <== 97; - lt[28][i].in[1] <== in[i]; - lt[29][i] = LessEqThan(8); - lt[29][i].in[0] <== in[i]; - lt[29][i].in[1] <== 122; + and[24][i].a <== states[i][8]; + and[24][i].b <== eq[35][i].out; + multi_or[9][i] = MultiOR(2); + multi_or[9][i].in[0] <== and[23][i].out; + multi_or[9][i].in[1] <== and[24][i].out; + states[i+1][7] <== multi_or[9][i].out; + state_changed[i].in[6] <== states[i+1][7]; and[25][i] = AND(); - and[25][i].a <== lt[28][i].out; - and[25][i].b <== lt[29][i].out; + and[25][i].a <== states[i][5]; + and[25][i].b <== eq[22][i].out; + states[i+1][8] <== and[25][i].out; + state_changed[i].in[7] <== states[i+1][8]; + eq[36][i] = IsEqual(); + eq[36][i].in[0] <== in[i]; + eq[36][i].in[1] <== 13; + and[26][i] = AND(); + and[26][i].a <== states[i][0]; + and[26][i].b <== eq[36][i].out; + and[27][i] = AND(); + and[27][i].a <== states[i][10]; + and[27][i].b <== eq[36][i].out; + multi_or[10][i] = MultiOR(2); + multi_or[10][i].in[0] <== and[26][i].out; + multi_or[10][i].in[1] <== and[27][i].out; + states[i+1][9] <== multi_or[10][i].out; + state_changed[i].in[8] <== states[i+1][9]; + eq[37][i] = IsEqual(); + eq[37][i].in[0] <== in[i]; + eq[37][i].in[1] <== 255; + and[28][i] = AND(); + and[28][i].a <== states[i][0]; + and[28][i].b <== eq[37][i].out; eq[38][i] = IsEqual(); eq[38][i].in[0] <== in[i]; - eq[38][i].in[1] <== 43; + eq[38][i].in[1] <== 10; + and[29][i] = AND(); + and[29][i].a <== states[i][9]; + and[29][i].b <== eq[38][i].out; + multi_or[11][i] = MultiOR(2); + multi_or[11][i].in[0] <== and[28][i].out; + multi_or[11][i].in[1] <== and[29][i].out; + states[i+1][10] <== multi_or[11][i].out; + state_changed[i].in[9] <== states[i+1][10]; + and[30][i] = AND(); + and[30][i].a <== states[i][10]; + and[30][i].b <== eq[3][i].out; + states[i+1][11] <== and[30][i].out; + state_changed[i].in[10] <== states[i+1][11]; eq[39][i] = IsEqual(); eq[39][i].in[0] <== in[i]; - eq[39][i].in[1] <== 47; + eq[39][i].in[1] <== 107; + and[31][i] = AND(); + and[31][i].a <== states[i][11]; + and[31][i].b <== eq[39][i].out; + states[i+1][12] <== and[31][i].out; + state_changed[i].in[11] <== states[i+1][12]; eq[40][i] = IsEqual(); eq[40][i].in[0] <== in[i]; - eq[40][i].in[1] <== 48; + eq[40][i].in[1] <== 105; + and[32][i] = AND(); + and[32][i].a <== states[i][12]; + and[32][i].b <== eq[40][i].out; + states[i+1][13] <== and[32][i].out; + state_changed[i].in[12] <== states[i+1][13]; eq[41][i] = IsEqual(); eq[41][i].in[0] <== in[i]; - eq[41][i].in[1] <== 49; + eq[41][i].in[1] <== 109; + and[33][i] = AND(); + and[33][i].a <== states[i][13]; + and[33][i].b <== eq[41][i].out; + states[i+1][14] <== and[33][i].out; + state_changed[i].in[13] <== states[i+1][14]; + and[34][i] = AND(); + and[34][i].a <== states[i][14]; + and[34][i].b <== eq[8][i].out; + states[i+1][15] <== and[34][i].out; + state_changed[i].in[14] <== states[i+1][15]; eq[42][i] = IsEqual(); eq[42][i].in[0] <== in[i]; - eq[42][i].in[1] <== 50; + eq[42][i].in[1] <== 115; + and[35][i] = AND(); + and[35][i].a <== states[i][15]; + and[35][i].b <== eq[42][i].out; + states[i+1][16] <== and[35][i].out; + state_changed[i].in[15] <== states[i+1][16]; + and[36][i] = AND(); + and[36][i].a <== states[i][16]; + and[36][i].b <== eq[40][i].out; + states[i+1][17] <== and[36][i].out; + state_changed[i].in[16] <== states[i+1][17]; + and[37][i] = AND(); + and[37][i].a <== states[i][17]; + and[37][i].b <== eq[6][i].out; + states[i+1][18] <== and[37][i].out; + state_changed[i].in[17] <== states[i+1][18]; eq[43][i] = IsEqual(); eq[43][i].in[0] <== in[i]; - eq[43][i].in[1] <== 51; + eq[43][i].in[1] <== 110; + and[38][i] = AND(); + and[38][i].a <== states[i][18]; + and[38][i].b <== eq[43][i].out; + states[i+1][19] <== and[38][i].out; + state_changed[i].in[18] <== states[i+1][19]; + and[39][i] = AND(); + and[39][i].a <== states[i][19]; + and[39][i].b <== eq[0][i].out; + states[i+1][20] <== and[39][i].out; + state_changed[i].in[19] <== states[i+1][20]; eq[44][i] = IsEqual(); eq[44][i].in[0] <== in[i]; - eq[44][i].in[1] <== 52; + eq[44][i].in[1] <== 116; + and[40][i] = AND(); + and[40][i].a <== states[i][20]; + and[40][i].b <== eq[44][i].out; + states[i+1][21] <== and[40][i].out; + state_changed[i].in[20] <== states[i+1][21]; eq[45][i] = IsEqual(); eq[45][i].in[0] <== in[i]; - eq[45][i].in[1] <== 53; + eq[45][i].in[1] <== 117; + and[41][i] = AND(); + and[41][i].a <== states[i][21]; + and[41][i].b <== eq[45][i].out; + states[i+1][22] <== and[41][i].out; + state_changed[i].in[21] <== states[i+1][22]; eq[46][i] = IsEqual(); eq[46][i].in[0] <== in[i]; - eq[46][i].in[1] <== 54; - eq[47][i] = IsEqual(); - eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 55; - eq[48][i] = IsEqual(); - eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 56; - eq[49][i] = IsEqual(); - eq[49][i].in[0] <== in[i]; - eq[49][i].in[1] <== 57; - eq[50][i] = IsEqual(); - eq[50][i].in[0] <== in[i]; - eq[50][i].in[1] <== 61; - and[26][i] = AND(); - and[26][i].a <== states[i][3]; - multi_or[8][i] = MultiOR(15); - multi_or[8][i].in[0] <== and[24][i].out; - multi_or[8][i].in[1] <== and[25][i].out; - multi_or[8][i].in[2] <== eq[38][i].out; - multi_or[8][i].in[3] <== eq[39][i].out; - multi_or[8][i].in[4] <== eq[40][i].out; - multi_or[8][i].in[5] <== eq[41][i].out; - multi_or[8][i].in[6] <== eq[42][i].out; - multi_or[8][i].in[7] <== eq[43][i].out; - multi_or[8][i].in[8] <== eq[44][i].out; - multi_or[8][i].in[9] <== eq[45][i].out; - multi_or[8][i].in[10] <== eq[46][i].out; - multi_or[8][i].in[11] <== eq[47][i].out; - multi_or[8][i].in[12] <== eq[48][i].out; - multi_or[8][i].in[13] <== eq[49][i].out; - multi_or[8][i].in[14] <== eq[50][i].out; - and[26][i].b <== multi_or[8][i].out; - lt[30][i] = LessEqThan(8); - lt[30][i].in[0] <== 65; - lt[30][i].in[1] <== in[i]; - lt[31][i] = LessEqThan(8); - lt[31][i].in[0] <== in[i]; - lt[31][i].in[1] <== 90; - and[27][i] = AND(); - and[27][i].a <== lt[30][i].out; - and[27][i].b <== lt[31][i].out; - lt[32][i] = LessEqThan(8); - lt[32][i].in[0] <== 97; - lt[32][i].in[1] <== in[i]; - lt[33][i] = LessEqThan(8); - lt[33][i].in[0] <== in[i]; - lt[33][i].in[1] <== 122; - and[28][i] = AND(); - and[28][i].a <== lt[32][i].out; - and[28][i].b <== lt[33][i].out; - eq[51][i] = IsEqual(); - eq[51][i].in[0] <== in[i]; - eq[51][i].in[1] <== 43; - eq[52][i] = IsEqual(); - eq[52][i].in[0] <== in[i]; - eq[52][i].in[1] <== 47; - eq[53][i] = IsEqual(); - eq[53][i].in[0] <== in[i]; - eq[53][i].in[1] <== 48; - eq[54][i] = IsEqual(); - eq[54][i].in[0] <== in[i]; - eq[54][i].in[1] <== 49; - eq[55][i] = IsEqual(); - eq[55][i].in[0] <== in[i]; - eq[55][i].in[1] <== 50; - eq[56][i] = IsEqual(); - eq[56][i].in[0] <== in[i]; - eq[56][i].in[1] <== 51; - eq[57][i] = IsEqual(); - eq[57][i].in[0] <== in[i]; - eq[57][i].in[1] <== 52; - eq[58][i] = IsEqual(); - eq[58][i].in[0] <== in[i]; - eq[58][i].in[1] <== 53; - eq[59][i] = IsEqual(); - eq[59][i].in[0] <== in[i]; - eq[59][i].in[1] <== 54; - eq[60][i] = IsEqual(); - eq[60][i].in[0] <== in[i]; - eq[60][i].in[1] <== 55; - eq[61][i] = IsEqual(); - eq[61][i].in[0] <== in[i]; - eq[61][i].in[1] <== 56; - eq[62][i] = IsEqual(); - eq[62][i].in[0] <== in[i]; - eq[62][i].in[1] <== 57; - eq[63][i] = IsEqual(); - eq[63][i].in[0] <== in[i]; - eq[63][i].in[1] <== 61; - and[29][i] = AND(); - and[29][i].a <== states[i][5]; - multi_or[9][i] = MultiOR(15); - multi_or[9][i].in[0] <== and[27][i].out; - multi_or[9][i].in[1] <== and[28][i].out; - multi_or[9][i].in[2] <== eq[51][i].out; - multi_or[9][i].in[3] <== eq[52][i].out; - multi_or[9][i].in[4] <== eq[53][i].out; - multi_or[9][i].in[5] <== eq[54][i].out; - multi_or[9][i].in[6] <== eq[55][i].out; - multi_or[9][i].in[7] <== eq[56][i].out; - multi_or[9][i].in[8] <== eq[57][i].out; - multi_or[9][i].in[9] <== eq[58][i].out; - multi_or[9][i].in[10] <== eq[59][i].out; - multi_or[9][i].in[11] <== eq[60][i].out; - multi_or[9][i].in[12] <== eq[61][i].out; - multi_or[9][i].in[13] <== eq[62][i].out; - multi_or[9][i].in[14] <== eq[63][i].out; - and[29][i].b <== multi_or[9][i].out; - multi_or[10][i] = MultiOR(2); - multi_or[10][i].in[0] <== and[26][i].out; - multi_or[10][i].in[1] <== and[29][i].out; - states[i+1][5] <== multi_or[10][i].out; - state_changed[i].in[4] <== states[i+1][5]; - eq[64][i] = IsEqual(); - eq[64][i].in[0] <== in[i]; - eq[64][i].in[1] <== 61; - and[30][i] = AND(); - and[30][i].a <== states[i][1]; - and[30][i].b <== eq[64][i].out; - eq[65][i] = IsEqual(); - eq[65][i].in[0] <== in[i]; - eq[65][i].in[1] <== 61; - and[31][i] = AND(); - and[31][i].a <== states[i][26]; - and[31][i].b <== eq[65][i].out; - multi_or[11][i] = MultiOR(2); - multi_or[11][i].in[0] <== and[30][i].out; - multi_or[11][i].in[1] <== and[31][i].out; - states[i+1][6] <== multi_or[11][i].out; - state_changed[i].in[5] <== states[i+1][6]; - eq[66][i] = IsEqual(); - eq[66][i].in[0] <== in[i]; - eq[66][i].in[1] <== 32; - and[32][i] = AND(); - and[32][i].a <== states[i][4]; - and[32][i].b <== eq[66][i].out; - eq[67][i] = IsEqual(); - eq[67][i].in[0] <== in[i]; - eq[67][i].in[1] <== 32; - and[33][i] = AND(); - and[33][i].a <== states[i][8]; - and[33][i].b <== eq[67][i].out; - multi_or[12][i] = MultiOR(2); - multi_or[12][i].in[0] <== and[32][i].out; - multi_or[12][i].in[1] <== and[33][i].out; - states[i+1][7] <== multi_or[12][i].out; - state_changed[i].in[6] <== states[i+1][7]; - eq[68][i] = IsEqual(); - eq[68][i].in[0] <== in[i]; - eq[68][i].in[1] <== 59; - and[34][i] = AND(); - and[34][i].a <== states[i][5]; - and[34][i].b <== eq[68][i].out; - states[i+1][8] <== and[34][i].out; - state_changed[i].in[7] <== states[i+1][8]; - eq[69][i] = IsEqual(); - eq[69][i].in[0] <== in[i]; - eq[69][i].in[1] <== 13; - and[35][i] = AND(); - and[35][i].a <== states[i][0]; - and[35][i].b <== eq[69][i].out; - eq[70][i] = IsEqual(); - eq[70][i].in[0] <== in[i]; - eq[70][i].in[1] <== 13; - and[36][i] = AND(); - and[36][i].a <== states[i][10]; - and[36][i].b <== eq[70][i].out; - multi_or[13][i] = MultiOR(2); - multi_or[13][i].in[0] <== and[35][i].out; - multi_or[13][i].in[1] <== and[36][i].out; - states[i+1][9] <== multi_or[13][i].out; - state_changed[i].in[8] <== states[i+1][9]; - eq[71][i] = IsEqual(); - eq[71][i].in[0] <== in[i]; - eq[71][i].in[1] <== 255; - and[37][i] = AND(); - and[37][i].a <== states[i][0]; - and[37][i].b <== eq[71][i].out; - eq[72][i] = IsEqual(); - eq[72][i].in[0] <== in[i]; - eq[72][i].in[1] <== 10; - and[38][i] = AND(); - and[38][i].a <== states[i][9]; - and[38][i].b <== eq[72][i].out; - multi_or[14][i] = MultiOR(2); - multi_or[14][i].in[0] <== and[37][i].out; - multi_or[14][i].in[1] <== and[38][i].out; - states[i+1][10] <== multi_or[14][i].out; - state_changed[i].in[9] <== states[i+1][10]; - eq[73][i] = IsEqual(); - eq[73][i].in[0] <== in[i]; - eq[73][i].in[1] <== 100; - and[39][i] = AND(); - and[39][i].a <== states[i][10]; - and[39][i].b <== eq[73][i].out; - states[i+1][11] <== and[39][i].out; - state_changed[i].in[10] <== states[i+1][11]; - eq[74][i] = IsEqual(); - eq[74][i].in[0] <== in[i]; - eq[74][i].in[1] <== 107; - and[40][i] = AND(); - and[40][i].a <== states[i][11]; - and[40][i].b <== eq[74][i].out; - states[i+1][12] <== and[40][i].out; - state_changed[i].in[11] <== states[i+1][12]; - eq[75][i] = IsEqual(); - eq[75][i].in[0] <== in[i]; - eq[75][i].in[1] <== 105; - and[41][i] = AND(); - and[41][i].a <== states[i][12]; - and[41][i].b <== eq[75][i].out; - states[i+1][13] <== and[41][i].out; - state_changed[i].in[12] <== states[i+1][13]; - eq[76][i] = IsEqual(); - eq[76][i].in[0] <== in[i]; - eq[76][i].in[1] <== 109; + eq[46][i].in[1] <== 114; and[42][i] = AND(); - and[42][i].a <== states[i][13]; - and[42][i].b <== eq[76][i].out; - states[i+1][14] <== and[42][i].out; - state_changed[i].in[13] <== states[i+1][14]; - eq[77][i] = IsEqual(); - eq[77][i].in[0] <== in[i]; - eq[77][i].in[1] <== 45; - and[43][i] = AND(); - and[43][i].a <== states[i][14]; - and[43][i].b <== eq[77][i].out; - states[i+1][15] <== and[43][i].out; - state_changed[i].in[14] <== states[i+1][15]; - eq[78][i] = IsEqual(); - eq[78][i].in[0] <== in[i]; - eq[78][i].in[1] <== 115; - and[44][i] = AND(); - and[44][i].a <== states[i][15]; - and[44][i].b <== eq[78][i].out; - states[i+1][16] <== and[44][i].out; - state_changed[i].in[15] <== states[i+1][16]; - eq[79][i] = IsEqual(); - eq[79][i].in[0] <== in[i]; - eq[79][i].in[1] <== 105; - and[45][i] = AND(); - and[45][i].a <== states[i][16]; - and[45][i].b <== eq[79][i].out; - states[i+1][17] <== and[45][i].out; - state_changed[i].in[16] <== states[i+1][17]; - eq[80][i] = IsEqual(); - eq[80][i].in[0] <== in[i]; - eq[80][i].in[1] <== 103; - and[46][i] = AND(); - and[46][i].a <== states[i][17]; - and[46][i].b <== eq[80][i].out; - states[i+1][18] <== and[46][i].out; - state_changed[i].in[17] <== states[i+1][18]; - eq[81][i] = IsEqual(); - eq[81][i].in[0] <== in[i]; - eq[81][i].in[1] <== 110; - and[47][i] = AND(); - and[47][i].a <== states[i][18]; - and[47][i].b <== eq[81][i].out; - states[i+1][19] <== and[47][i].out; - state_changed[i].in[18] <== states[i+1][19]; - eq[82][i] = IsEqual(); - eq[82][i].in[0] <== in[i]; - eq[82][i].in[1] <== 97; - and[48][i] = AND(); - and[48][i].a <== states[i][19]; - and[48][i].b <== eq[82][i].out; - states[i+1][20] <== and[48][i].out; - state_changed[i].in[19] <== states[i+1][20]; - eq[83][i] = IsEqual(); - eq[83][i].in[0] <== in[i]; - eq[83][i].in[1] <== 116; - and[49][i] = AND(); - and[49][i].a <== states[i][20]; - and[49][i].b <== eq[83][i].out; - states[i+1][21] <== and[49][i].out; - state_changed[i].in[20] <== states[i+1][21]; - eq[84][i] = IsEqual(); - eq[84][i].in[0] <== in[i]; - eq[84][i].in[1] <== 117; - and[50][i] = AND(); - and[50][i].a <== states[i][21]; - and[50][i].b <== eq[84][i].out; - states[i+1][22] <== and[50][i].out; - state_changed[i].in[21] <== states[i+1][22]; - eq[85][i] = IsEqual(); - eq[85][i].in[0] <== in[i]; - eq[85][i].in[1] <== 114; - and[51][i] = AND(); - and[51][i].a <== states[i][22]; - and[51][i].b <== eq[85][i].out; - states[i+1][23] <== and[51][i].out; + and[42][i].a <== states[i][22]; + and[42][i].b <== eq[46][i].out; + states[i+1][23] <== and[42][i].out; state_changed[i].in[22] <== states[i+1][23]; - eq[86][i] = IsEqual(); - eq[86][i].in[0] <== in[i]; - eq[86][i].in[1] <== 101; - and[52][i] = AND(); - and[52][i].a <== states[i][23]; - and[52][i].b <== eq[86][i].out; - states[i+1][24] <== and[52][i].out; + and[43][i] = AND(); + and[43][i].a <== states[i][23]; + and[43][i].b <== eq[4][i].out; + states[i+1][24] <== and[43][i].out; state_changed[i].in[23] <== states[i+1][24]; - eq[87][i] = IsEqual(); - eq[87][i].in[0] <== in[i]; - eq[87][i].in[1] <== 58; - and[53][i] = AND(); - and[53][i].a <== states[i][24]; - and[53][i].b <== eq[87][i].out; - states[i+1][25] <== and[53][i].out; + and[44][i] = AND(); + and[44][i].a <== states[i][24]; + and[44][i].b <== eq[10][i].out; + states[i+1][25] <== and[44][i].out; state_changed[i].in[24] <== states[i+1][25]; - eq[88][i] = IsEqual(); - eq[88][i].in[0] <== in[i]; - eq[88][i].in[1] <== 98; - and[54][i] = AND(); - and[54][i].a <== states[i][7]; - and[54][i].b <== eq[88][i].out; - states[i+1][26] <== and[54][i].out; + and[45][i] = AND(); + and[45][i].a <== states[i][7]; + and[45][i].b <== eq[1][i].out; + states[i+1][26] <== and[45][i].out; state_changed[i].in[25] <== states[i+1][26]; - eq[89][i] = IsEqual(); - eq[89][i].in[0] <== in[i]; - eq[89][i].in[1] <== 104; - and[55][i] = AND(); - and[55][i].a <== states[i][26]; - and[55][i].b <== eq[89][i].out; - states[i+1][27] <== and[55][i].out; + eq[47][i] = IsEqual(); + eq[47][i].in[0] <== in[i]; + eq[47][i].in[1] <== 104; + and[46][i] = AND(); + and[46][i].a <== states[i][26]; + and[46][i].b <== eq[47][i].out; + states[i+1][27] <== and[46][i].out; state_changed[i].in[26] <== states[i+1][27]; states[i+1][0] <== 1 - state_changed[i].out; } diff --git a/packages/circom/circuits/common/email_addr_regex.circom b/packages/circom/circuits/common/email_addr_regex.circom index d606da7..29a9f81 100644 --- a/packages/circom/circuits/common/email_addr_regex.circom +++ b/packages/circom/circuits/common/email_addr_regex.circom @@ -13,10 +13,10 @@ template EmailAddrRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[131][num_bytes]; - component lt[12][num_bytes]; - component and[11][num_bytes]; - component multi_or[6][num_bytes]; + component eq[84][num_bytes]; + component lt[6][num_bytes]; + component and[8][num_bytes]; + component multi_or[5][num_bytes]; signal states[num_bytes+1][4]; component state_changed[num_bytes]; @@ -149,497 +149,314 @@ template EmailAddrRegex(msg_bytes) { and[2][i].b <== multi_or[0][i].out; eq[24][i] = IsEqual(); eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 33; + eq[24][i].in[1] <== 65; eq[25][i] = IsEqual(); eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 35; + eq[25][i].in[1] <== 66; eq[26][i] = IsEqual(); eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 36; + eq[26][i].in[1] <== 67; eq[27][i] = IsEqual(); eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 37; + eq[27][i].in[1] <== 68; eq[28][i] = IsEqual(); eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 38; + eq[28][i].in[1] <== 69; eq[29][i] = IsEqual(); eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 39; + eq[29][i].in[1] <== 70; eq[30][i] = IsEqual(); eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 42; + eq[30][i].in[1] <== 71; eq[31][i] = IsEqual(); eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 43; + eq[31][i].in[1] <== 72; eq[32][i] = IsEqual(); eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 45; + eq[32][i].in[1] <== 73; eq[33][i] = IsEqual(); eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 46; + eq[33][i].in[1] <== 74; eq[34][i] = IsEqual(); eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 47; + eq[34][i].in[1] <== 75; eq[35][i] = IsEqual(); eq[35][i].in[0] <== in[i]; - eq[35][i].in[1] <== 48; + eq[35][i].in[1] <== 76; eq[36][i] = IsEqual(); eq[36][i].in[0] <== in[i]; - eq[36][i].in[1] <== 49; + eq[36][i].in[1] <== 77; eq[37][i] = IsEqual(); eq[37][i].in[0] <== in[i]; - eq[37][i].in[1] <== 50; + eq[37][i].in[1] <== 78; eq[38][i] = IsEqual(); eq[38][i].in[0] <== in[i]; - eq[38][i].in[1] <== 51; + eq[38][i].in[1] <== 79; eq[39][i] = IsEqual(); eq[39][i].in[0] <== in[i]; - eq[39][i].in[1] <== 52; + eq[39][i].in[1] <== 80; eq[40][i] = IsEqual(); eq[40][i].in[0] <== in[i]; - eq[40][i].in[1] <== 53; + eq[40][i].in[1] <== 81; eq[41][i] = IsEqual(); eq[41][i].in[0] <== in[i]; - eq[41][i].in[1] <== 54; + eq[41][i].in[1] <== 82; eq[42][i] = IsEqual(); eq[42][i].in[0] <== in[i]; - eq[42][i].in[1] <== 55; + eq[42][i].in[1] <== 83; eq[43][i] = IsEqual(); eq[43][i].in[0] <== in[i]; - eq[43][i].in[1] <== 56; + eq[43][i].in[1] <== 84; eq[44][i] = IsEqual(); eq[44][i].in[0] <== in[i]; - eq[44][i].in[1] <== 57; + eq[44][i].in[1] <== 85; eq[45][i] = IsEqual(); eq[45][i].in[0] <== in[i]; - eq[45][i].in[1] <== 61; + eq[45][i].in[1] <== 86; eq[46][i] = IsEqual(); eq[46][i].in[0] <== in[i]; - eq[46][i].in[1] <== 63; + eq[46][i].in[1] <== 87; eq[47][i] = IsEqual(); eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 65; + eq[47][i].in[1] <== 88; eq[48][i] = IsEqual(); eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 66; + eq[48][i].in[1] <== 89; eq[49][i] = IsEqual(); eq[49][i].in[0] <== in[i]; - eq[49][i].in[1] <== 67; + eq[49][i].in[1] <== 90; eq[50][i] = IsEqual(); eq[50][i].in[0] <== in[i]; - eq[50][i].in[1] <== 68; + eq[50][i].in[1] <== 94; eq[51][i] = IsEqual(); eq[51][i].in[0] <== in[i]; - eq[51][i].in[1] <== 69; + eq[51][i].in[1] <== 95; eq[52][i] = IsEqual(); eq[52][i].in[0] <== in[i]; - eq[52][i].in[1] <== 70; + eq[52][i].in[1] <== 96; eq[53][i] = IsEqual(); eq[53][i].in[0] <== in[i]; - eq[53][i].in[1] <== 71; + eq[53][i].in[1] <== 97; eq[54][i] = IsEqual(); eq[54][i].in[0] <== in[i]; - eq[54][i].in[1] <== 72; + eq[54][i].in[1] <== 98; eq[55][i] = IsEqual(); eq[55][i].in[0] <== in[i]; - eq[55][i].in[1] <== 73; + eq[55][i].in[1] <== 99; eq[56][i] = IsEqual(); eq[56][i].in[0] <== in[i]; - eq[56][i].in[1] <== 74; + eq[56][i].in[1] <== 100; eq[57][i] = IsEqual(); eq[57][i].in[0] <== in[i]; - eq[57][i].in[1] <== 75; + eq[57][i].in[1] <== 101; eq[58][i] = IsEqual(); eq[58][i].in[0] <== in[i]; - eq[58][i].in[1] <== 76; + eq[58][i].in[1] <== 102; eq[59][i] = IsEqual(); eq[59][i].in[0] <== in[i]; - eq[59][i].in[1] <== 77; + eq[59][i].in[1] <== 103; eq[60][i] = IsEqual(); eq[60][i].in[0] <== in[i]; - eq[60][i].in[1] <== 78; + eq[60][i].in[1] <== 104; eq[61][i] = IsEqual(); eq[61][i].in[0] <== in[i]; - eq[61][i].in[1] <== 79; + eq[61][i].in[1] <== 105; eq[62][i] = IsEqual(); eq[62][i].in[0] <== in[i]; - eq[62][i].in[1] <== 80; + eq[62][i].in[1] <== 106; eq[63][i] = IsEqual(); eq[63][i].in[0] <== in[i]; - eq[63][i].in[1] <== 81; + eq[63][i].in[1] <== 107; eq[64][i] = IsEqual(); eq[64][i].in[0] <== in[i]; - eq[64][i].in[1] <== 82; + eq[64][i].in[1] <== 108; eq[65][i] = IsEqual(); eq[65][i].in[0] <== in[i]; - eq[65][i].in[1] <== 83; + eq[65][i].in[1] <== 109; eq[66][i] = IsEqual(); eq[66][i].in[0] <== in[i]; - eq[66][i].in[1] <== 84; + eq[66][i].in[1] <== 110; eq[67][i] = IsEqual(); eq[67][i].in[0] <== in[i]; - eq[67][i].in[1] <== 85; + eq[67][i].in[1] <== 111; eq[68][i] = IsEqual(); eq[68][i].in[0] <== in[i]; - eq[68][i].in[1] <== 86; + eq[68][i].in[1] <== 112; eq[69][i] = IsEqual(); eq[69][i].in[0] <== in[i]; - eq[69][i].in[1] <== 87; + eq[69][i].in[1] <== 113; eq[70][i] = IsEqual(); eq[70][i].in[0] <== in[i]; - eq[70][i].in[1] <== 88; + eq[70][i].in[1] <== 114; eq[71][i] = IsEqual(); eq[71][i].in[0] <== in[i]; - eq[71][i].in[1] <== 89; + eq[71][i].in[1] <== 115; eq[72][i] = IsEqual(); eq[72][i].in[0] <== in[i]; - eq[72][i].in[1] <== 90; + eq[72][i].in[1] <== 116; eq[73][i] = IsEqual(); eq[73][i].in[0] <== in[i]; - eq[73][i].in[1] <== 94; + eq[73][i].in[1] <== 117; eq[74][i] = IsEqual(); eq[74][i].in[0] <== in[i]; - eq[74][i].in[1] <== 95; + eq[74][i].in[1] <== 118; eq[75][i] = IsEqual(); eq[75][i].in[0] <== in[i]; - eq[75][i].in[1] <== 96; + eq[75][i].in[1] <== 119; eq[76][i] = IsEqual(); eq[76][i].in[0] <== in[i]; - eq[76][i].in[1] <== 97; + eq[76][i].in[1] <== 120; eq[77][i] = IsEqual(); eq[77][i].in[0] <== in[i]; - eq[77][i].in[1] <== 98; + eq[77][i].in[1] <== 121; eq[78][i] = IsEqual(); eq[78][i].in[0] <== in[i]; - eq[78][i].in[1] <== 99; + eq[78][i].in[1] <== 122; eq[79][i] = IsEqual(); eq[79][i].in[0] <== in[i]; - eq[79][i].in[1] <== 100; + eq[79][i].in[1] <== 123; eq[80][i] = IsEqual(); eq[80][i].in[0] <== in[i]; - eq[80][i].in[1] <== 101; + eq[80][i].in[1] <== 124; eq[81][i] = IsEqual(); eq[81][i].in[0] <== in[i]; - eq[81][i].in[1] <== 102; + eq[81][i].in[1] <== 125; eq[82][i] = IsEqual(); eq[82][i].in[0] <== in[i]; - eq[82][i].in[1] <== 103; - eq[83][i] = IsEqual(); - eq[83][i].in[0] <== in[i]; - eq[83][i].in[1] <== 104; - eq[84][i] = IsEqual(); - eq[84][i].in[0] <== in[i]; - eq[84][i].in[1] <== 105; - eq[85][i] = IsEqual(); - eq[85][i].in[0] <== in[i]; - eq[85][i].in[1] <== 106; - eq[86][i] = IsEqual(); - eq[86][i].in[0] <== in[i]; - eq[86][i].in[1] <== 107; - eq[87][i] = IsEqual(); - eq[87][i].in[0] <== in[i]; - eq[87][i].in[1] <== 108; - eq[88][i] = IsEqual(); - eq[88][i].in[0] <== in[i]; - eq[88][i].in[1] <== 109; - eq[89][i] = IsEqual(); - eq[89][i].in[0] <== in[i]; - eq[89][i].in[1] <== 110; - eq[90][i] = IsEqual(); - eq[90][i].in[0] <== in[i]; - eq[90][i].in[1] <== 111; - eq[91][i] = IsEqual(); - eq[91][i].in[0] <== in[i]; - eq[91][i].in[1] <== 112; - eq[92][i] = IsEqual(); - eq[92][i].in[0] <== in[i]; - eq[92][i].in[1] <== 113; - eq[93][i] = IsEqual(); - eq[93][i].in[0] <== in[i]; - eq[93][i].in[1] <== 114; - eq[94][i] = IsEqual(); - eq[94][i].in[0] <== in[i]; - eq[94][i].in[1] <== 115; - eq[95][i] = IsEqual(); - eq[95][i].in[0] <== in[i]; - eq[95][i].in[1] <== 116; - eq[96][i] = IsEqual(); - eq[96][i].in[0] <== in[i]; - eq[96][i].in[1] <== 117; - eq[97][i] = IsEqual(); - eq[97][i].in[0] <== in[i]; - eq[97][i].in[1] <== 118; - eq[98][i] = IsEqual(); - eq[98][i].in[0] <== in[i]; - eq[98][i].in[1] <== 119; - eq[99][i] = IsEqual(); - eq[99][i].in[0] <== in[i]; - eq[99][i].in[1] <== 120; - eq[100][i] = IsEqual(); - eq[100][i].in[0] <== in[i]; - eq[100][i].in[1] <== 121; - eq[101][i] = IsEqual(); - eq[101][i].in[0] <== in[i]; - eq[101][i].in[1] <== 122; - eq[102][i] = IsEqual(); - eq[102][i].in[0] <== in[i]; - eq[102][i].in[1] <== 123; - eq[103][i] = IsEqual(); - eq[103][i].in[0] <== in[i]; - eq[103][i].in[1] <== 124; - eq[104][i] = IsEqual(); - eq[104][i].in[0] <== in[i]; - eq[104][i].in[1] <== 125; - eq[105][i] = IsEqual(); - eq[105][i].in[0] <== in[i]; - eq[105][i].in[1] <== 126; + eq[82][i].in[1] <== 126; and[3][i] = AND(); and[3][i].a <== states[i][1]; multi_or[1][i] = MultiOR(82); - multi_or[1][i].in[0] <== eq[24][i].out; - multi_or[1][i].in[1] <== eq[25][i].out; - multi_or[1][i].in[2] <== eq[26][i].out; - multi_or[1][i].in[3] <== eq[27][i].out; - multi_or[1][i].in[4] <== eq[28][i].out; - multi_or[1][i].in[5] <== eq[29][i].out; - multi_or[1][i].in[6] <== eq[30][i].out; - multi_or[1][i].in[7] <== eq[31][i].out; - multi_or[1][i].in[8] <== eq[32][i].out; - multi_or[1][i].in[9] <== eq[33][i].out; - multi_or[1][i].in[10] <== eq[34][i].out; - multi_or[1][i].in[11] <== eq[35][i].out; - multi_or[1][i].in[12] <== eq[36][i].out; - multi_or[1][i].in[13] <== eq[37][i].out; - multi_or[1][i].in[14] <== eq[38][i].out; - multi_or[1][i].in[15] <== eq[39][i].out; - multi_or[1][i].in[16] <== eq[40][i].out; - multi_or[1][i].in[17] <== eq[41][i].out; - multi_or[1][i].in[18] <== eq[42][i].out; - multi_or[1][i].in[19] <== eq[43][i].out; - multi_or[1][i].in[20] <== eq[44][i].out; - multi_or[1][i].in[21] <== eq[45][i].out; - multi_or[1][i].in[22] <== eq[46][i].out; - multi_or[1][i].in[23] <== eq[47][i].out; - multi_or[1][i].in[24] <== eq[48][i].out; - multi_or[1][i].in[25] <== eq[49][i].out; - multi_or[1][i].in[26] <== eq[50][i].out; - multi_or[1][i].in[27] <== eq[51][i].out; - multi_or[1][i].in[28] <== eq[52][i].out; - multi_or[1][i].in[29] <== eq[53][i].out; - multi_or[1][i].in[30] <== eq[54][i].out; - multi_or[1][i].in[31] <== eq[55][i].out; - multi_or[1][i].in[32] <== eq[56][i].out; - multi_or[1][i].in[33] <== eq[57][i].out; - multi_or[1][i].in[34] <== eq[58][i].out; - multi_or[1][i].in[35] <== eq[59][i].out; - multi_or[1][i].in[36] <== eq[60][i].out; - multi_or[1][i].in[37] <== eq[61][i].out; - multi_or[1][i].in[38] <== eq[62][i].out; - multi_or[1][i].in[39] <== eq[63][i].out; - multi_or[1][i].in[40] <== eq[64][i].out; - multi_or[1][i].in[41] <== eq[65][i].out; - multi_or[1][i].in[42] <== eq[66][i].out; - multi_or[1][i].in[43] <== eq[67][i].out; - multi_or[1][i].in[44] <== eq[68][i].out; - multi_or[1][i].in[45] <== eq[69][i].out; - multi_or[1][i].in[46] <== eq[70][i].out; - multi_or[1][i].in[47] <== eq[71][i].out; - multi_or[1][i].in[48] <== eq[72][i].out; - multi_or[1][i].in[49] <== eq[73][i].out; - multi_or[1][i].in[50] <== eq[74][i].out; - multi_or[1][i].in[51] <== eq[75][i].out; - multi_or[1][i].in[52] <== eq[76][i].out; - multi_or[1][i].in[53] <== eq[77][i].out; - multi_or[1][i].in[54] <== eq[78][i].out; - multi_or[1][i].in[55] <== eq[79][i].out; - multi_or[1][i].in[56] <== eq[80][i].out; - multi_or[1][i].in[57] <== eq[81][i].out; - multi_or[1][i].in[58] <== eq[82][i].out; - multi_or[1][i].in[59] <== eq[83][i].out; - multi_or[1][i].in[60] <== eq[84][i].out; - multi_or[1][i].in[61] <== eq[85][i].out; - multi_or[1][i].in[62] <== eq[86][i].out; - multi_or[1][i].in[63] <== eq[87][i].out; - multi_or[1][i].in[64] <== eq[88][i].out; - multi_or[1][i].in[65] <== eq[89][i].out; - multi_or[1][i].in[66] <== eq[90][i].out; - multi_or[1][i].in[67] <== eq[91][i].out; - multi_or[1][i].in[68] <== eq[92][i].out; - multi_or[1][i].in[69] <== eq[93][i].out; - multi_or[1][i].in[70] <== eq[94][i].out; - multi_or[1][i].in[71] <== eq[95][i].out; - multi_or[1][i].in[72] <== eq[96][i].out; - multi_or[1][i].in[73] <== eq[97][i].out; - multi_or[1][i].in[74] <== eq[98][i].out; - multi_or[1][i].in[75] <== eq[99][i].out; - multi_or[1][i].in[76] <== eq[100][i].out; - multi_or[1][i].in[77] <== eq[101][i].out; - multi_or[1][i].in[78] <== eq[102][i].out; - multi_or[1][i].in[79] <== eq[103][i].out; - multi_or[1][i].in[80] <== eq[104][i].out; - multi_or[1][i].in[81] <== eq[105][i].out; + multi_or[1][i].in[0] <== eq[0][i].out; + multi_or[1][i].in[1] <== eq[1][i].out; + multi_or[1][i].in[2] <== eq[2][i].out; + multi_or[1][i].in[3] <== eq[3][i].out; + multi_or[1][i].in[4] <== eq[4][i].out; + multi_or[1][i].in[5] <== eq[5][i].out; + multi_or[1][i].in[6] <== eq[6][i].out; + multi_or[1][i].in[7] <== eq[7][i].out; + multi_or[1][i].in[8] <== eq[8][i].out; + multi_or[1][i].in[9] <== eq[9][i].out; + multi_or[1][i].in[10] <== eq[10][i].out; + multi_or[1][i].in[11] <== eq[11][i].out; + multi_or[1][i].in[12] <== eq[12][i].out; + multi_or[1][i].in[13] <== eq[13][i].out; + multi_or[1][i].in[14] <== eq[14][i].out; + multi_or[1][i].in[15] <== eq[15][i].out; + multi_or[1][i].in[16] <== eq[16][i].out; + multi_or[1][i].in[17] <== eq[17][i].out; + multi_or[1][i].in[18] <== eq[18][i].out; + multi_or[1][i].in[19] <== eq[19][i].out; + multi_or[1][i].in[20] <== eq[20][i].out; + multi_or[1][i].in[21] <== eq[21][i].out; + multi_or[1][i].in[22] <== eq[22][i].out; + multi_or[1][i].in[23] <== eq[24][i].out; + multi_or[1][i].in[24] <== eq[25][i].out; + multi_or[1][i].in[25] <== eq[26][i].out; + multi_or[1][i].in[26] <== eq[27][i].out; + multi_or[1][i].in[27] <== eq[28][i].out; + multi_or[1][i].in[28] <== eq[29][i].out; + multi_or[1][i].in[29] <== eq[30][i].out; + multi_or[1][i].in[30] <== eq[31][i].out; + multi_or[1][i].in[31] <== eq[32][i].out; + multi_or[1][i].in[32] <== eq[33][i].out; + multi_or[1][i].in[33] <== eq[34][i].out; + multi_or[1][i].in[34] <== eq[35][i].out; + multi_or[1][i].in[35] <== eq[36][i].out; + multi_or[1][i].in[36] <== eq[37][i].out; + multi_or[1][i].in[37] <== eq[38][i].out; + multi_or[1][i].in[38] <== eq[39][i].out; + multi_or[1][i].in[39] <== eq[40][i].out; + multi_or[1][i].in[40] <== eq[41][i].out; + multi_or[1][i].in[41] <== eq[42][i].out; + multi_or[1][i].in[42] <== eq[43][i].out; + multi_or[1][i].in[43] <== eq[44][i].out; + multi_or[1][i].in[44] <== eq[45][i].out; + multi_or[1][i].in[45] <== eq[46][i].out; + multi_or[1][i].in[46] <== eq[47][i].out; + multi_or[1][i].in[47] <== eq[48][i].out; + multi_or[1][i].in[48] <== eq[49][i].out; + multi_or[1][i].in[49] <== eq[50][i].out; + multi_or[1][i].in[50] <== eq[51][i].out; + multi_or[1][i].in[51] <== eq[52][i].out; + multi_or[1][i].in[52] <== eq[53][i].out; + multi_or[1][i].in[53] <== eq[54][i].out; + multi_or[1][i].in[54] <== eq[55][i].out; + multi_or[1][i].in[55] <== eq[56][i].out; + multi_or[1][i].in[56] <== eq[57][i].out; + multi_or[1][i].in[57] <== eq[58][i].out; + multi_or[1][i].in[58] <== eq[59][i].out; + multi_or[1][i].in[59] <== eq[60][i].out; + multi_or[1][i].in[60] <== eq[61][i].out; + multi_or[1][i].in[61] <== eq[62][i].out; + multi_or[1][i].in[62] <== eq[63][i].out; + multi_or[1][i].in[63] <== eq[64][i].out; + multi_or[1][i].in[64] <== eq[65][i].out; + multi_or[1][i].in[65] <== eq[66][i].out; + multi_or[1][i].in[66] <== eq[67][i].out; + multi_or[1][i].in[67] <== eq[68][i].out; + multi_or[1][i].in[68] <== eq[69][i].out; + multi_or[1][i].in[69] <== eq[70][i].out; + multi_or[1][i].in[70] <== eq[71][i].out; + multi_or[1][i].in[71] <== eq[72][i].out; + multi_or[1][i].in[72] <== eq[73][i].out; + multi_or[1][i].in[73] <== eq[74][i].out; + multi_or[1][i].in[74] <== eq[75][i].out; + multi_or[1][i].in[75] <== eq[76][i].out; + multi_or[1][i].in[76] <== eq[77][i].out; + multi_or[1][i].in[77] <== eq[78][i].out; + multi_or[1][i].in[78] <== eq[79][i].out; + multi_or[1][i].in[79] <== eq[80][i].out; + multi_or[1][i].in[80] <== eq[81][i].out; + multi_or[1][i].in[81] <== eq[82][i].out; and[3][i].b <== multi_or[1][i].out; multi_or[2][i] = MultiOR(2); multi_or[2][i].in[0] <== and[2][i].out; multi_or[2][i].in[1] <== and[3][i].out; states[i+1][1] <== multi_or[2][i].out; state_changed[i].in[0] <== states[i+1][1]; - eq[106][i] = IsEqual(); - eq[106][i].in[0] <== in[i]; - eq[106][i].in[1] <== 64; + eq[83][i] = IsEqual(); + eq[83][i].in[0] <== in[i]; + eq[83][i].in[1] <== 64; and[4][i] = AND(); and[4][i].a <== states[i][1]; - and[4][i].b <== eq[106][i].out; + and[4][i].b <== eq[83][i].out; states[i+1][2] <== and[4][i].out; state_changed[i].in[1] <== states[i+1][2]; lt[4][i] = LessEqThan(8); - lt[4][i].in[0] <== 65; + lt[4][i].in[0] <== 97; lt[4][i].in[1] <== in[i]; lt[5][i] = LessEqThan(8); lt[5][i].in[0] <== in[i]; - lt[5][i].in[1] <== 90; + lt[5][i].in[1] <== 122; and[5][i] = AND(); and[5][i].a <== lt[4][i].out; and[5][i].b <== lt[5][i].out; - lt[6][i] = LessEqThan(8); - lt[6][i].in[0] <== 97; - lt[6][i].in[1] <== in[i]; - lt[7][i] = LessEqThan(8); - lt[7][i].in[0] <== in[i]; - lt[7][i].in[1] <== 122; and[6][i] = AND(); - and[6][i].a <== lt[6][i].out; - and[6][i].b <== lt[7][i].out; - eq[107][i] = IsEqual(); - eq[107][i].in[0] <== in[i]; - eq[107][i].in[1] <== 45; - eq[108][i] = IsEqual(); - eq[108][i].in[0] <== in[i]; - eq[108][i].in[1] <== 46; - eq[109][i] = IsEqual(); - eq[109][i].in[0] <== in[i]; - eq[109][i].in[1] <== 48; - eq[110][i] = IsEqual(); - eq[110][i].in[0] <== in[i]; - eq[110][i].in[1] <== 49; - eq[111][i] = IsEqual(); - eq[111][i].in[0] <== in[i]; - eq[111][i].in[1] <== 50; - eq[112][i] = IsEqual(); - eq[112][i].in[0] <== in[i]; - eq[112][i].in[1] <== 51; - eq[113][i] = IsEqual(); - eq[113][i].in[0] <== in[i]; - eq[113][i].in[1] <== 52; - eq[114][i] = IsEqual(); - eq[114][i].in[0] <== in[i]; - eq[114][i].in[1] <== 53; - eq[115][i] = IsEqual(); - eq[115][i].in[0] <== in[i]; - eq[115][i].in[1] <== 54; - eq[116][i] = IsEqual(); - eq[116][i].in[0] <== in[i]; - eq[116][i].in[1] <== 55; - eq[117][i] = IsEqual(); - eq[117][i].in[0] <== in[i]; - eq[117][i].in[1] <== 56; - eq[118][i] = IsEqual(); - eq[118][i].in[0] <== in[i]; - eq[118][i].in[1] <== 57; - and[7][i] = AND(); - and[7][i].a <== states[i][2]; + and[6][i].a <== states[i][2]; multi_or[3][i] = MultiOR(14); - multi_or[3][i].in[0] <== and[5][i].out; - multi_or[3][i].in[1] <== and[6][i].out; - multi_or[3][i].in[2] <== eq[107][i].out; - multi_or[3][i].in[3] <== eq[108][i].out; - multi_or[3][i].in[4] <== eq[109][i].out; - multi_or[3][i].in[5] <== eq[110][i].out; - multi_or[3][i].in[6] <== eq[111][i].out; - multi_or[3][i].in[7] <== eq[112][i].out; - multi_or[3][i].in[8] <== eq[113][i].out; - multi_or[3][i].in[9] <== eq[114][i].out; - multi_or[3][i].in[10] <== eq[115][i].out; - multi_or[3][i].in[11] <== eq[116][i].out; - multi_or[3][i].in[12] <== eq[117][i].out; - multi_or[3][i].in[13] <== eq[118][i].out; + multi_or[3][i].in[0] <== and[0][i].out; + multi_or[3][i].in[1] <== and[5][i].out; + multi_or[3][i].in[2] <== eq[8][i].out; + multi_or[3][i].in[3] <== eq[9][i].out; + multi_or[3][i].in[4] <== eq[11][i].out; + multi_or[3][i].in[5] <== eq[12][i].out; + multi_or[3][i].in[6] <== eq[13][i].out; + multi_or[3][i].in[7] <== eq[14][i].out; + multi_or[3][i].in[8] <== eq[15][i].out; + multi_or[3][i].in[9] <== eq[16][i].out; + multi_or[3][i].in[10] <== eq[17][i].out; + multi_or[3][i].in[11] <== eq[18][i].out; + multi_or[3][i].in[12] <== eq[19][i].out; + multi_or[3][i].in[13] <== eq[20][i].out; + and[6][i].b <== multi_or[3][i].out; + and[7][i] = AND(); + and[7][i].a <== states[i][3]; and[7][i].b <== multi_or[3][i].out; - lt[8][i] = LessEqThan(8); - lt[8][i].in[0] <== 65; - lt[8][i].in[1] <== in[i]; - lt[9][i] = LessEqThan(8); - lt[9][i].in[0] <== in[i]; - lt[9][i].in[1] <== 90; - and[8][i] = AND(); - and[8][i].a <== lt[8][i].out; - and[8][i].b <== lt[9][i].out; - lt[10][i] = LessEqThan(8); - lt[10][i].in[0] <== 97; - lt[10][i].in[1] <== in[i]; - lt[11][i] = LessEqThan(8); - lt[11][i].in[0] <== in[i]; - lt[11][i].in[1] <== 122; - and[9][i] = AND(); - and[9][i].a <== lt[10][i].out; - and[9][i].b <== lt[11][i].out; - eq[119][i] = IsEqual(); - eq[119][i].in[0] <== in[i]; - eq[119][i].in[1] <== 45; - eq[120][i] = IsEqual(); - eq[120][i].in[0] <== in[i]; - eq[120][i].in[1] <== 46; - eq[121][i] = IsEqual(); - eq[121][i].in[0] <== in[i]; - eq[121][i].in[1] <== 48; - eq[122][i] = IsEqual(); - eq[122][i].in[0] <== in[i]; - eq[122][i].in[1] <== 49; - eq[123][i] = IsEqual(); - eq[123][i].in[0] <== in[i]; - eq[123][i].in[1] <== 50; - eq[124][i] = IsEqual(); - eq[124][i].in[0] <== in[i]; - eq[124][i].in[1] <== 51; - eq[125][i] = IsEqual(); - eq[125][i].in[0] <== in[i]; - eq[125][i].in[1] <== 52; - eq[126][i] = IsEqual(); - eq[126][i].in[0] <== in[i]; - eq[126][i].in[1] <== 53; - eq[127][i] = IsEqual(); - eq[127][i].in[0] <== in[i]; - eq[127][i].in[1] <== 54; - eq[128][i] = IsEqual(); - eq[128][i].in[0] <== in[i]; - eq[128][i].in[1] <== 55; - eq[129][i] = IsEqual(); - eq[129][i].in[0] <== in[i]; - eq[129][i].in[1] <== 56; - eq[130][i] = IsEqual(); - eq[130][i].in[0] <== in[i]; - eq[130][i].in[1] <== 57; - and[10][i] = AND(); - and[10][i].a <== states[i][3]; - multi_or[4][i] = MultiOR(14); - multi_or[4][i].in[0] <== and[8][i].out; - multi_or[4][i].in[1] <== and[9][i].out; - multi_or[4][i].in[2] <== eq[119][i].out; - multi_or[4][i].in[3] <== eq[120][i].out; - multi_or[4][i].in[4] <== eq[121][i].out; - multi_or[4][i].in[5] <== eq[122][i].out; - multi_or[4][i].in[6] <== eq[123][i].out; - multi_or[4][i].in[7] <== eq[124][i].out; - multi_or[4][i].in[8] <== eq[125][i].out; - multi_or[4][i].in[9] <== eq[126][i].out; - multi_or[4][i].in[10] <== eq[127][i].out; - multi_or[4][i].in[11] <== eq[128][i].out; - multi_or[4][i].in[12] <== eq[129][i].out; - multi_or[4][i].in[13] <== eq[130][i].out; - and[10][i].b <== multi_or[4][i].out; - multi_or[5][i] = MultiOR(2); - multi_or[5][i].in[0] <== and[7][i].out; - multi_or[5][i].in[1] <== and[10][i].out; - states[i+1][3] <== multi_or[5][i].out; + multi_or[4][i] = MultiOR(2); + multi_or[4][i].in[0] <== and[6][i].out; + multi_or[4][i].in[1] <== and[7][i].out; + states[i+1][3] <== multi_or[4][i].out; state_changed[i].in[2] <== states[i+1][3]; states[i+1][0] <== 1 - state_changed[i].out; } diff --git a/packages/circom/circuits/common/email_addr_with_name_regex.circom b/packages/circom/circuits/common/email_addr_with_name_regex.circom index 2c3249d..a620711 100644 --- a/packages/circom/circuits/common/email_addr_with_name_regex.circom +++ b/packages/circom/circuits/common/email_addr_with_name_regex.circom @@ -13,10 +13,10 @@ template EmailAddrWithNameRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[449][num_bytes]; - component lt[40][num_bytes]; - component and[39][num_bytes]; - component multi_or[15][num_bytes]; + component eq[253][num_bytes]; + component lt[22][num_bytes]; + component and[30][num_bytes]; + component multi_or[13][num_bytes]; signal states[num_bytes+1][7]; component state_changed[num_bytes]; @@ -101,1019 +101,983 @@ template EmailAddrWithNameRegex(msg_bytes) { and[2][i].b <== multi_or[0][i].out; eq[12][i] = IsEqual(); eq[12][i].in[0] <== in[i]; - eq[12][i].in[1] <== 0; + eq[12][i].in[1] <== 14; eq[13][i] = IsEqual(); eq[13][i].in[0] <== in[i]; - eq[13][i].in[1] <== 1; + eq[13][i].in[1] <== 15; eq[14][i] = IsEqual(); eq[14][i].in[0] <== in[i]; - eq[14][i].in[1] <== 2; + eq[14][i].in[1] <== 16; eq[15][i] = IsEqual(); eq[15][i].in[0] <== in[i]; - eq[15][i].in[1] <== 3; + eq[15][i].in[1] <== 17; eq[16][i] = IsEqual(); eq[16][i].in[0] <== in[i]; - eq[16][i].in[1] <== 4; + eq[16][i].in[1] <== 18; eq[17][i] = IsEqual(); eq[17][i].in[0] <== in[i]; - eq[17][i].in[1] <== 5; + eq[17][i].in[1] <== 19; eq[18][i] = IsEqual(); eq[18][i].in[0] <== in[i]; - eq[18][i].in[1] <== 6; + eq[18][i].in[1] <== 20; eq[19][i] = IsEqual(); eq[19][i].in[0] <== in[i]; - eq[19][i].in[1] <== 7; + eq[19][i].in[1] <== 21; eq[20][i] = IsEqual(); eq[20][i].in[0] <== in[i]; - eq[20][i].in[1] <== 8; + eq[20][i].in[1] <== 22; eq[21][i] = IsEqual(); eq[21][i].in[0] <== in[i]; - eq[21][i].in[1] <== 9; + eq[21][i].in[1] <== 23; eq[22][i] = IsEqual(); eq[22][i].in[0] <== in[i]; - eq[22][i].in[1] <== 11; + eq[22][i].in[1] <== 24; eq[23][i] = IsEqual(); eq[23][i].in[0] <== in[i]; - eq[23][i].in[1] <== 12; + eq[23][i].in[1] <== 25; eq[24][i] = IsEqual(); eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 14; + eq[24][i].in[1] <== 26; eq[25][i] = IsEqual(); eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 15; + eq[25][i].in[1] <== 27; eq[26][i] = IsEqual(); eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 16; + eq[26][i].in[1] <== 28; eq[27][i] = IsEqual(); eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 17; + eq[27][i].in[1] <== 29; eq[28][i] = IsEqual(); eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 18; + eq[28][i].in[1] <== 30; eq[29][i] = IsEqual(); eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 19; + eq[29][i].in[1] <== 31; eq[30][i] = IsEqual(); eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 20; + eq[30][i].in[1] <== 32; eq[31][i] = IsEqual(); eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 21; + eq[31][i].in[1] <== 33; eq[32][i] = IsEqual(); eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 22; + eq[32][i].in[1] <== 34; eq[33][i] = IsEqual(); eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 23; + eq[33][i].in[1] <== 35; eq[34][i] = IsEqual(); eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 24; + eq[34][i].in[1] <== 36; eq[35][i] = IsEqual(); eq[35][i].in[0] <== in[i]; - eq[35][i].in[1] <== 25; + eq[35][i].in[1] <== 37; eq[36][i] = IsEqual(); eq[36][i].in[0] <== in[i]; - eq[36][i].in[1] <== 26; + eq[36][i].in[1] <== 38; eq[37][i] = IsEqual(); eq[37][i].in[0] <== in[i]; - eq[37][i].in[1] <== 27; + eq[37][i].in[1] <== 39; eq[38][i] = IsEqual(); eq[38][i].in[0] <== in[i]; - eq[38][i].in[1] <== 28; + eq[38][i].in[1] <== 40; eq[39][i] = IsEqual(); eq[39][i].in[0] <== in[i]; - eq[39][i].in[1] <== 29; + eq[39][i].in[1] <== 41; eq[40][i] = IsEqual(); eq[40][i].in[0] <== in[i]; - eq[40][i].in[1] <== 30; + eq[40][i].in[1] <== 42; eq[41][i] = IsEqual(); eq[41][i].in[0] <== in[i]; - eq[41][i].in[1] <== 31; + eq[41][i].in[1] <== 43; eq[42][i] = IsEqual(); eq[42][i].in[0] <== in[i]; - eq[42][i].in[1] <== 32; + eq[42][i].in[1] <== 44; eq[43][i] = IsEqual(); eq[43][i].in[0] <== in[i]; - eq[43][i].in[1] <== 33; + eq[43][i].in[1] <== 45; eq[44][i] = IsEqual(); eq[44][i].in[0] <== in[i]; - eq[44][i].in[1] <== 34; + eq[44][i].in[1] <== 46; eq[45][i] = IsEqual(); eq[45][i].in[0] <== in[i]; - eq[45][i].in[1] <== 35; + eq[45][i].in[1] <== 47; eq[46][i] = IsEqual(); eq[46][i].in[0] <== in[i]; - eq[46][i].in[1] <== 36; + eq[46][i].in[1] <== 48; eq[47][i] = IsEqual(); eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 37; + eq[47][i].in[1] <== 49; eq[48][i] = IsEqual(); eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 38; + eq[48][i].in[1] <== 50; eq[49][i] = IsEqual(); eq[49][i].in[0] <== in[i]; - eq[49][i].in[1] <== 39; + eq[49][i].in[1] <== 51; eq[50][i] = IsEqual(); eq[50][i].in[0] <== in[i]; - eq[50][i].in[1] <== 40; + eq[50][i].in[1] <== 52; eq[51][i] = IsEqual(); eq[51][i].in[0] <== in[i]; - eq[51][i].in[1] <== 41; + eq[51][i].in[1] <== 53; eq[52][i] = IsEqual(); eq[52][i].in[0] <== in[i]; - eq[52][i].in[1] <== 42; + eq[52][i].in[1] <== 54; eq[53][i] = IsEqual(); eq[53][i].in[0] <== in[i]; - eq[53][i].in[1] <== 43; + eq[53][i].in[1] <== 55; eq[54][i] = IsEqual(); eq[54][i].in[0] <== in[i]; - eq[54][i].in[1] <== 44; + eq[54][i].in[1] <== 56; eq[55][i] = IsEqual(); eq[55][i].in[0] <== in[i]; - eq[55][i].in[1] <== 45; + eq[55][i].in[1] <== 57; eq[56][i] = IsEqual(); eq[56][i].in[0] <== in[i]; - eq[56][i].in[1] <== 46; + eq[56][i].in[1] <== 58; eq[57][i] = IsEqual(); eq[57][i].in[0] <== in[i]; - eq[57][i].in[1] <== 47; + eq[57][i].in[1] <== 59; eq[58][i] = IsEqual(); eq[58][i].in[0] <== in[i]; - eq[58][i].in[1] <== 48; + eq[58][i].in[1] <== 60; eq[59][i] = IsEqual(); eq[59][i].in[0] <== in[i]; - eq[59][i].in[1] <== 49; + eq[59][i].in[1] <== 61; eq[60][i] = IsEqual(); eq[60][i].in[0] <== in[i]; - eq[60][i].in[1] <== 50; + eq[60][i].in[1] <== 62; eq[61][i] = IsEqual(); eq[61][i].in[0] <== in[i]; - eq[61][i].in[1] <== 51; + eq[61][i].in[1] <== 63; eq[62][i] = IsEqual(); eq[62][i].in[0] <== in[i]; - eq[62][i].in[1] <== 52; + eq[62][i].in[1] <== 64; eq[63][i] = IsEqual(); eq[63][i].in[0] <== in[i]; - eq[63][i].in[1] <== 53; + eq[63][i].in[1] <== 65; eq[64][i] = IsEqual(); eq[64][i].in[0] <== in[i]; - eq[64][i].in[1] <== 54; + eq[64][i].in[1] <== 66; eq[65][i] = IsEqual(); eq[65][i].in[0] <== in[i]; - eq[65][i].in[1] <== 55; + eq[65][i].in[1] <== 67; eq[66][i] = IsEqual(); eq[66][i].in[0] <== in[i]; - eq[66][i].in[1] <== 56; + eq[66][i].in[1] <== 68; eq[67][i] = IsEqual(); eq[67][i].in[0] <== in[i]; - eq[67][i].in[1] <== 57; + eq[67][i].in[1] <== 69; eq[68][i] = IsEqual(); eq[68][i].in[0] <== in[i]; - eq[68][i].in[1] <== 58; + eq[68][i].in[1] <== 70; eq[69][i] = IsEqual(); eq[69][i].in[0] <== in[i]; - eq[69][i].in[1] <== 59; + eq[69][i].in[1] <== 71; eq[70][i] = IsEqual(); eq[70][i].in[0] <== in[i]; - eq[70][i].in[1] <== 60; + eq[70][i].in[1] <== 72; eq[71][i] = IsEqual(); eq[71][i].in[0] <== in[i]; - eq[71][i].in[1] <== 61; + eq[71][i].in[1] <== 73; eq[72][i] = IsEqual(); eq[72][i].in[0] <== in[i]; - eq[72][i].in[1] <== 62; + eq[72][i].in[1] <== 74; eq[73][i] = IsEqual(); eq[73][i].in[0] <== in[i]; - eq[73][i].in[1] <== 63; + eq[73][i].in[1] <== 75; eq[74][i] = IsEqual(); eq[74][i].in[0] <== in[i]; - eq[74][i].in[1] <== 64; + eq[74][i].in[1] <== 76; eq[75][i] = IsEqual(); eq[75][i].in[0] <== in[i]; - eq[75][i].in[1] <== 65; + eq[75][i].in[1] <== 77; eq[76][i] = IsEqual(); eq[76][i].in[0] <== in[i]; - eq[76][i].in[1] <== 66; + eq[76][i].in[1] <== 78; eq[77][i] = IsEqual(); eq[77][i].in[0] <== in[i]; - eq[77][i].in[1] <== 67; + eq[77][i].in[1] <== 79; eq[78][i] = IsEqual(); eq[78][i].in[0] <== in[i]; - eq[78][i].in[1] <== 68; + eq[78][i].in[1] <== 80; eq[79][i] = IsEqual(); eq[79][i].in[0] <== in[i]; - eq[79][i].in[1] <== 69; + eq[79][i].in[1] <== 81; eq[80][i] = IsEqual(); eq[80][i].in[0] <== in[i]; - eq[80][i].in[1] <== 70; + eq[80][i].in[1] <== 82; eq[81][i] = IsEqual(); eq[81][i].in[0] <== in[i]; - eq[81][i].in[1] <== 71; + eq[81][i].in[1] <== 83; eq[82][i] = IsEqual(); eq[82][i].in[0] <== in[i]; - eq[82][i].in[1] <== 72; + eq[82][i].in[1] <== 84; eq[83][i] = IsEqual(); eq[83][i].in[0] <== in[i]; - eq[83][i].in[1] <== 73; + eq[83][i].in[1] <== 85; eq[84][i] = IsEqual(); eq[84][i].in[0] <== in[i]; - eq[84][i].in[1] <== 74; + eq[84][i].in[1] <== 86; eq[85][i] = IsEqual(); eq[85][i].in[0] <== in[i]; - eq[85][i].in[1] <== 75; + eq[85][i].in[1] <== 87; eq[86][i] = IsEqual(); eq[86][i].in[0] <== in[i]; - eq[86][i].in[1] <== 76; + eq[86][i].in[1] <== 88; eq[87][i] = IsEqual(); eq[87][i].in[0] <== in[i]; - eq[87][i].in[1] <== 77; + eq[87][i].in[1] <== 89; eq[88][i] = IsEqual(); eq[88][i].in[0] <== in[i]; - eq[88][i].in[1] <== 78; + eq[88][i].in[1] <== 90; eq[89][i] = IsEqual(); eq[89][i].in[0] <== in[i]; - eq[89][i].in[1] <== 79; + eq[89][i].in[1] <== 91; eq[90][i] = IsEqual(); eq[90][i].in[0] <== in[i]; - eq[90][i].in[1] <== 80; + eq[90][i].in[1] <== 92; eq[91][i] = IsEqual(); eq[91][i].in[0] <== in[i]; - eq[91][i].in[1] <== 81; + eq[91][i].in[1] <== 93; eq[92][i] = IsEqual(); eq[92][i].in[0] <== in[i]; - eq[92][i].in[1] <== 82; + eq[92][i].in[1] <== 94; eq[93][i] = IsEqual(); eq[93][i].in[0] <== in[i]; - eq[93][i].in[1] <== 83; + eq[93][i].in[1] <== 95; eq[94][i] = IsEqual(); eq[94][i].in[0] <== in[i]; - eq[94][i].in[1] <== 84; + eq[94][i].in[1] <== 96; eq[95][i] = IsEqual(); eq[95][i].in[0] <== in[i]; - eq[95][i].in[1] <== 85; + eq[95][i].in[1] <== 97; eq[96][i] = IsEqual(); eq[96][i].in[0] <== in[i]; - eq[96][i].in[1] <== 86; + eq[96][i].in[1] <== 98; eq[97][i] = IsEqual(); eq[97][i].in[0] <== in[i]; - eq[97][i].in[1] <== 87; + eq[97][i].in[1] <== 99; eq[98][i] = IsEqual(); eq[98][i].in[0] <== in[i]; - eq[98][i].in[1] <== 88; + eq[98][i].in[1] <== 100; eq[99][i] = IsEqual(); eq[99][i].in[0] <== in[i]; - eq[99][i].in[1] <== 89; + eq[99][i].in[1] <== 101; eq[100][i] = IsEqual(); eq[100][i].in[0] <== in[i]; - eq[100][i].in[1] <== 90; + eq[100][i].in[1] <== 102; eq[101][i] = IsEqual(); eq[101][i].in[0] <== in[i]; - eq[101][i].in[1] <== 91; + eq[101][i].in[1] <== 103; eq[102][i] = IsEqual(); eq[102][i].in[0] <== in[i]; - eq[102][i].in[1] <== 92; + eq[102][i].in[1] <== 104; eq[103][i] = IsEqual(); eq[103][i].in[0] <== in[i]; - eq[103][i].in[1] <== 93; + eq[103][i].in[1] <== 105; eq[104][i] = IsEqual(); eq[104][i].in[0] <== in[i]; - eq[104][i].in[1] <== 94; + eq[104][i].in[1] <== 106; eq[105][i] = IsEqual(); eq[105][i].in[0] <== in[i]; - eq[105][i].in[1] <== 95; + eq[105][i].in[1] <== 107; eq[106][i] = IsEqual(); eq[106][i].in[0] <== in[i]; - eq[106][i].in[1] <== 96; + eq[106][i].in[1] <== 108; eq[107][i] = IsEqual(); eq[107][i].in[0] <== in[i]; - eq[107][i].in[1] <== 97; + eq[107][i].in[1] <== 109; eq[108][i] = IsEqual(); eq[108][i].in[0] <== in[i]; - eq[108][i].in[1] <== 98; + eq[108][i].in[1] <== 110; eq[109][i] = IsEqual(); eq[109][i].in[0] <== in[i]; - eq[109][i].in[1] <== 99; + eq[109][i].in[1] <== 111; eq[110][i] = IsEqual(); eq[110][i].in[0] <== in[i]; - eq[110][i].in[1] <== 100; + eq[110][i].in[1] <== 112; eq[111][i] = IsEqual(); eq[111][i].in[0] <== in[i]; - eq[111][i].in[1] <== 101; + eq[111][i].in[1] <== 113; eq[112][i] = IsEqual(); eq[112][i].in[0] <== in[i]; - eq[112][i].in[1] <== 102; + eq[112][i].in[1] <== 114; eq[113][i] = IsEqual(); eq[113][i].in[0] <== in[i]; - eq[113][i].in[1] <== 103; + eq[113][i].in[1] <== 115; eq[114][i] = IsEqual(); eq[114][i].in[0] <== in[i]; - eq[114][i].in[1] <== 104; + eq[114][i].in[1] <== 116; eq[115][i] = IsEqual(); eq[115][i].in[0] <== in[i]; - eq[115][i].in[1] <== 105; + eq[115][i].in[1] <== 117; eq[116][i] = IsEqual(); eq[116][i].in[0] <== in[i]; - eq[116][i].in[1] <== 106; + eq[116][i].in[1] <== 118; eq[117][i] = IsEqual(); eq[117][i].in[0] <== in[i]; - eq[117][i].in[1] <== 107; + eq[117][i].in[1] <== 119; eq[118][i] = IsEqual(); eq[118][i].in[0] <== in[i]; - eq[118][i].in[1] <== 108; + eq[118][i].in[1] <== 120; eq[119][i] = IsEqual(); eq[119][i].in[0] <== in[i]; - eq[119][i].in[1] <== 109; + eq[119][i].in[1] <== 121; eq[120][i] = IsEqual(); eq[120][i].in[0] <== in[i]; - eq[120][i].in[1] <== 110; + eq[120][i].in[1] <== 122; eq[121][i] = IsEqual(); eq[121][i].in[0] <== in[i]; - eq[121][i].in[1] <== 111; + eq[121][i].in[1] <== 123; eq[122][i] = IsEqual(); eq[122][i].in[0] <== in[i]; - eq[122][i].in[1] <== 112; + eq[122][i].in[1] <== 124; eq[123][i] = IsEqual(); eq[123][i].in[0] <== in[i]; - eq[123][i].in[1] <== 113; + eq[123][i].in[1] <== 125; eq[124][i] = IsEqual(); eq[124][i].in[0] <== in[i]; - eq[124][i].in[1] <== 114; + eq[124][i].in[1] <== 126; eq[125][i] = IsEqual(); eq[125][i].in[0] <== in[i]; - eq[125][i].in[1] <== 115; + eq[125][i].in[1] <== 127; eq[126][i] = IsEqual(); eq[126][i].in[0] <== in[i]; - eq[126][i].in[1] <== 116; + eq[126][i].in[1] <== 128; eq[127][i] = IsEqual(); eq[127][i].in[0] <== in[i]; - eq[127][i].in[1] <== 117; + eq[127][i].in[1] <== 129; eq[128][i] = IsEqual(); eq[128][i].in[0] <== in[i]; - eq[128][i].in[1] <== 118; + eq[128][i].in[1] <== 130; eq[129][i] = IsEqual(); eq[129][i].in[0] <== in[i]; - eq[129][i].in[1] <== 119; + eq[129][i].in[1] <== 131; eq[130][i] = IsEqual(); eq[130][i].in[0] <== in[i]; - eq[130][i].in[1] <== 120; + eq[130][i].in[1] <== 132; eq[131][i] = IsEqual(); eq[131][i].in[0] <== in[i]; - eq[131][i].in[1] <== 121; + eq[131][i].in[1] <== 133; eq[132][i] = IsEqual(); eq[132][i].in[0] <== in[i]; - eq[132][i].in[1] <== 122; + eq[132][i].in[1] <== 134; eq[133][i] = IsEqual(); eq[133][i].in[0] <== in[i]; - eq[133][i].in[1] <== 123; + eq[133][i].in[1] <== 135; eq[134][i] = IsEqual(); eq[134][i].in[0] <== in[i]; - eq[134][i].in[1] <== 124; + eq[134][i].in[1] <== 136; eq[135][i] = IsEqual(); eq[135][i].in[0] <== in[i]; - eq[135][i].in[1] <== 125; + eq[135][i].in[1] <== 137; eq[136][i] = IsEqual(); eq[136][i].in[0] <== in[i]; - eq[136][i].in[1] <== 126; + eq[136][i].in[1] <== 138; eq[137][i] = IsEqual(); eq[137][i].in[0] <== in[i]; - eq[137][i].in[1] <== 127; + eq[137][i].in[1] <== 139; eq[138][i] = IsEqual(); eq[138][i].in[0] <== in[i]; - eq[138][i].in[1] <== 128; + eq[138][i].in[1] <== 140; eq[139][i] = IsEqual(); eq[139][i].in[0] <== in[i]; - eq[139][i].in[1] <== 129; + eq[139][i].in[1] <== 141; eq[140][i] = IsEqual(); eq[140][i].in[0] <== in[i]; - eq[140][i].in[1] <== 130; + eq[140][i].in[1] <== 142; eq[141][i] = IsEqual(); eq[141][i].in[0] <== in[i]; - eq[141][i].in[1] <== 131; + eq[141][i].in[1] <== 143; eq[142][i] = IsEqual(); eq[142][i].in[0] <== in[i]; - eq[142][i].in[1] <== 132; + eq[142][i].in[1] <== 144; eq[143][i] = IsEqual(); eq[143][i].in[0] <== in[i]; - eq[143][i].in[1] <== 133; + eq[143][i].in[1] <== 145; eq[144][i] = IsEqual(); eq[144][i].in[0] <== in[i]; - eq[144][i].in[1] <== 134; + eq[144][i].in[1] <== 146; eq[145][i] = IsEqual(); eq[145][i].in[0] <== in[i]; - eq[145][i].in[1] <== 135; + eq[145][i].in[1] <== 147; eq[146][i] = IsEqual(); eq[146][i].in[0] <== in[i]; - eq[146][i].in[1] <== 136; + eq[146][i].in[1] <== 148; eq[147][i] = IsEqual(); eq[147][i].in[0] <== in[i]; - eq[147][i].in[1] <== 137; + eq[147][i].in[1] <== 149; eq[148][i] = IsEqual(); eq[148][i].in[0] <== in[i]; - eq[148][i].in[1] <== 138; + eq[148][i].in[1] <== 150; eq[149][i] = IsEqual(); eq[149][i].in[0] <== in[i]; - eq[149][i].in[1] <== 139; + eq[149][i].in[1] <== 151; eq[150][i] = IsEqual(); eq[150][i].in[0] <== in[i]; - eq[150][i].in[1] <== 140; + eq[150][i].in[1] <== 152; eq[151][i] = IsEqual(); eq[151][i].in[0] <== in[i]; - eq[151][i].in[1] <== 141; + eq[151][i].in[1] <== 153; eq[152][i] = IsEqual(); eq[152][i].in[0] <== in[i]; - eq[152][i].in[1] <== 142; + eq[152][i].in[1] <== 154; eq[153][i] = IsEqual(); eq[153][i].in[0] <== in[i]; - eq[153][i].in[1] <== 143; + eq[153][i].in[1] <== 155; eq[154][i] = IsEqual(); eq[154][i].in[0] <== in[i]; - eq[154][i].in[1] <== 144; + eq[154][i].in[1] <== 156; eq[155][i] = IsEqual(); eq[155][i].in[0] <== in[i]; - eq[155][i].in[1] <== 145; + eq[155][i].in[1] <== 157; eq[156][i] = IsEqual(); eq[156][i].in[0] <== in[i]; - eq[156][i].in[1] <== 146; + eq[156][i].in[1] <== 158; eq[157][i] = IsEqual(); eq[157][i].in[0] <== in[i]; - eq[157][i].in[1] <== 147; + eq[157][i].in[1] <== 159; eq[158][i] = IsEqual(); eq[158][i].in[0] <== in[i]; - eq[158][i].in[1] <== 148; + eq[158][i].in[1] <== 160; eq[159][i] = IsEqual(); eq[159][i].in[0] <== in[i]; - eq[159][i].in[1] <== 149; + eq[159][i].in[1] <== 161; eq[160][i] = IsEqual(); eq[160][i].in[0] <== in[i]; - eq[160][i].in[1] <== 150; + eq[160][i].in[1] <== 162; eq[161][i] = IsEqual(); eq[161][i].in[0] <== in[i]; - eq[161][i].in[1] <== 151; + eq[161][i].in[1] <== 163; eq[162][i] = IsEqual(); eq[162][i].in[0] <== in[i]; - eq[162][i].in[1] <== 152; + eq[162][i].in[1] <== 164; eq[163][i] = IsEqual(); eq[163][i].in[0] <== in[i]; - eq[163][i].in[1] <== 153; + eq[163][i].in[1] <== 165; eq[164][i] = IsEqual(); eq[164][i].in[0] <== in[i]; - eq[164][i].in[1] <== 154; + eq[164][i].in[1] <== 166; eq[165][i] = IsEqual(); eq[165][i].in[0] <== in[i]; - eq[165][i].in[1] <== 155; + eq[165][i].in[1] <== 167; eq[166][i] = IsEqual(); eq[166][i].in[0] <== in[i]; - eq[166][i].in[1] <== 156; + eq[166][i].in[1] <== 168; eq[167][i] = IsEqual(); eq[167][i].in[0] <== in[i]; - eq[167][i].in[1] <== 157; + eq[167][i].in[1] <== 169; eq[168][i] = IsEqual(); eq[168][i].in[0] <== in[i]; - eq[168][i].in[1] <== 158; + eq[168][i].in[1] <== 170; eq[169][i] = IsEqual(); eq[169][i].in[0] <== in[i]; - eq[169][i].in[1] <== 159; + eq[169][i].in[1] <== 171; eq[170][i] = IsEqual(); eq[170][i].in[0] <== in[i]; - eq[170][i].in[1] <== 160; + eq[170][i].in[1] <== 172; eq[171][i] = IsEqual(); eq[171][i].in[0] <== in[i]; - eq[171][i].in[1] <== 161; + eq[171][i].in[1] <== 173; eq[172][i] = IsEqual(); eq[172][i].in[0] <== in[i]; - eq[172][i].in[1] <== 162; + eq[172][i].in[1] <== 174; eq[173][i] = IsEqual(); eq[173][i].in[0] <== in[i]; - eq[173][i].in[1] <== 163; + eq[173][i].in[1] <== 175; eq[174][i] = IsEqual(); eq[174][i].in[0] <== in[i]; - eq[174][i].in[1] <== 164; + eq[174][i].in[1] <== 176; eq[175][i] = IsEqual(); eq[175][i].in[0] <== in[i]; - eq[175][i].in[1] <== 165; + eq[175][i].in[1] <== 177; eq[176][i] = IsEqual(); eq[176][i].in[0] <== in[i]; - eq[176][i].in[1] <== 166; + eq[176][i].in[1] <== 178; eq[177][i] = IsEqual(); eq[177][i].in[0] <== in[i]; - eq[177][i].in[1] <== 167; + eq[177][i].in[1] <== 179; eq[178][i] = IsEqual(); eq[178][i].in[0] <== in[i]; - eq[178][i].in[1] <== 168; + eq[178][i].in[1] <== 180; eq[179][i] = IsEqual(); eq[179][i].in[0] <== in[i]; - eq[179][i].in[1] <== 169; + eq[179][i].in[1] <== 181; eq[180][i] = IsEqual(); eq[180][i].in[0] <== in[i]; - eq[180][i].in[1] <== 170; + eq[180][i].in[1] <== 182; eq[181][i] = IsEqual(); eq[181][i].in[0] <== in[i]; - eq[181][i].in[1] <== 171; + eq[181][i].in[1] <== 183; eq[182][i] = IsEqual(); eq[182][i].in[0] <== in[i]; - eq[182][i].in[1] <== 172; + eq[182][i].in[1] <== 184; eq[183][i] = IsEqual(); eq[183][i].in[0] <== in[i]; - eq[183][i].in[1] <== 173; + eq[183][i].in[1] <== 185; eq[184][i] = IsEqual(); eq[184][i].in[0] <== in[i]; - eq[184][i].in[1] <== 174; + eq[184][i].in[1] <== 186; eq[185][i] = IsEqual(); eq[185][i].in[0] <== in[i]; - eq[185][i].in[1] <== 175; + eq[185][i].in[1] <== 187; eq[186][i] = IsEqual(); eq[186][i].in[0] <== in[i]; - eq[186][i].in[1] <== 176; + eq[186][i].in[1] <== 188; eq[187][i] = IsEqual(); eq[187][i].in[0] <== in[i]; - eq[187][i].in[1] <== 177; + eq[187][i].in[1] <== 189; eq[188][i] = IsEqual(); eq[188][i].in[0] <== in[i]; - eq[188][i].in[1] <== 178; + eq[188][i].in[1] <== 190; eq[189][i] = IsEqual(); eq[189][i].in[0] <== in[i]; - eq[189][i].in[1] <== 179; + eq[189][i].in[1] <== 191; eq[190][i] = IsEqual(); eq[190][i].in[0] <== in[i]; - eq[190][i].in[1] <== 180; + eq[190][i].in[1] <== 192; eq[191][i] = IsEqual(); eq[191][i].in[0] <== in[i]; - eq[191][i].in[1] <== 181; + eq[191][i].in[1] <== 193; eq[192][i] = IsEqual(); eq[192][i].in[0] <== in[i]; - eq[192][i].in[1] <== 182; + eq[192][i].in[1] <== 194; eq[193][i] = IsEqual(); eq[193][i].in[0] <== in[i]; - eq[193][i].in[1] <== 183; + eq[193][i].in[1] <== 195; eq[194][i] = IsEqual(); eq[194][i].in[0] <== in[i]; - eq[194][i].in[1] <== 184; + eq[194][i].in[1] <== 196; eq[195][i] = IsEqual(); eq[195][i].in[0] <== in[i]; - eq[195][i].in[1] <== 185; + eq[195][i].in[1] <== 197; eq[196][i] = IsEqual(); eq[196][i].in[0] <== in[i]; - eq[196][i].in[1] <== 186; + eq[196][i].in[1] <== 198; eq[197][i] = IsEqual(); eq[197][i].in[0] <== in[i]; - eq[197][i].in[1] <== 187; + eq[197][i].in[1] <== 199; eq[198][i] = IsEqual(); eq[198][i].in[0] <== in[i]; - eq[198][i].in[1] <== 188; + eq[198][i].in[1] <== 200; eq[199][i] = IsEqual(); eq[199][i].in[0] <== in[i]; - eq[199][i].in[1] <== 189; + eq[199][i].in[1] <== 201; eq[200][i] = IsEqual(); eq[200][i].in[0] <== in[i]; - eq[200][i].in[1] <== 190; + eq[200][i].in[1] <== 202; eq[201][i] = IsEqual(); eq[201][i].in[0] <== in[i]; - eq[201][i].in[1] <== 191; + eq[201][i].in[1] <== 203; eq[202][i] = IsEqual(); eq[202][i].in[0] <== in[i]; - eq[202][i].in[1] <== 192; + eq[202][i].in[1] <== 204; eq[203][i] = IsEqual(); eq[203][i].in[0] <== in[i]; - eq[203][i].in[1] <== 193; + eq[203][i].in[1] <== 205; eq[204][i] = IsEqual(); eq[204][i].in[0] <== in[i]; - eq[204][i].in[1] <== 194; + eq[204][i].in[1] <== 206; eq[205][i] = IsEqual(); eq[205][i].in[0] <== in[i]; - eq[205][i].in[1] <== 195; + eq[205][i].in[1] <== 207; eq[206][i] = IsEqual(); eq[206][i].in[0] <== in[i]; - eq[206][i].in[1] <== 196; + eq[206][i].in[1] <== 208; eq[207][i] = IsEqual(); eq[207][i].in[0] <== in[i]; - eq[207][i].in[1] <== 197; + eq[207][i].in[1] <== 209; eq[208][i] = IsEqual(); eq[208][i].in[0] <== in[i]; - eq[208][i].in[1] <== 198; + eq[208][i].in[1] <== 210; eq[209][i] = IsEqual(); eq[209][i].in[0] <== in[i]; - eq[209][i].in[1] <== 199; + eq[209][i].in[1] <== 211; eq[210][i] = IsEqual(); eq[210][i].in[0] <== in[i]; - eq[210][i].in[1] <== 200; + eq[210][i].in[1] <== 212; eq[211][i] = IsEqual(); eq[211][i].in[0] <== in[i]; - eq[211][i].in[1] <== 201; + eq[211][i].in[1] <== 213; eq[212][i] = IsEqual(); eq[212][i].in[0] <== in[i]; - eq[212][i].in[1] <== 202; + eq[212][i].in[1] <== 214; eq[213][i] = IsEqual(); eq[213][i].in[0] <== in[i]; - eq[213][i].in[1] <== 203; + eq[213][i].in[1] <== 215; eq[214][i] = IsEqual(); eq[214][i].in[0] <== in[i]; - eq[214][i].in[1] <== 204; + eq[214][i].in[1] <== 216; eq[215][i] = IsEqual(); eq[215][i].in[0] <== in[i]; - eq[215][i].in[1] <== 205; + eq[215][i].in[1] <== 217; eq[216][i] = IsEqual(); eq[216][i].in[0] <== in[i]; - eq[216][i].in[1] <== 206; + eq[216][i].in[1] <== 218; eq[217][i] = IsEqual(); eq[217][i].in[0] <== in[i]; - eq[217][i].in[1] <== 207; + eq[217][i].in[1] <== 219; eq[218][i] = IsEqual(); eq[218][i].in[0] <== in[i]; - eq[218][i].in[1] <== 208; + eq[218][i].in[1] <== 220; eq[219][i] = IsEqual(); eq[219][i].in[0] <== in[i]; - eq[219][i].in[1] <== 209; + eq[219][i].in[1] <== 221; eq[220][i] = IsEqual(); eq[220][i].in[0] <== in[i]; - eq[220][i].in[1] <== 210; + eq[220][i].in[1] <== 222; eq[221][i] = IsEqual(); eq[221][i].in[0] <== in[i]; - eq[221][i].in[1] <== 211; + eq[221][i].in[1] <== 223; eq[222][i] = IsEqual(); eq[222][i].in[0] <== in[i]; - eq[222][i].in[1] <== 212; + eq[222][i].in[1] <== 224; eq[223][i] = IsEqual(); eq[223][i].in[0] <== in[i]; - eq[223][i].in[1] <== 213; + eq[223][i].in[1] <== 225; eq[224][i] = IsEqual(); eq[224][i].in[0] <== in[i]; - eq[224][i].in[1] <== 214; + eq[224][i].in[1] <== 226; eq[225][i] = IsEqual(); eq[225][i].in[0] <== in[i]; - eq[225][i].in[1] <== 215; + eq[225][i].in[1] <== 227; eq[226][i] = IsEqual(); eq[226][i].in[0] <== in[i]; - eq[226][i].in[1] <== 216; + eq[226][i].in[1] <== 228; eq[227][i] = IsEqual(); eq[227][i].in[0] <== in[i]; - eq[227][i].in[1] <== 217; + eq[227][i].in[1] <== 229; eq[228][i] = IsEqual(); eq[228][i].in[0] <== in[i]; - eq[228][i].in[1] <== 218; + eq[228][i].in[1] <== 230; eq[229][i] = IsEqual(); eq[229][i].in[0] <== in[i]; - eq[229][i].in[1] <== 219; + eq[229][i].in[1] <== 231; eq[230][i] = IsEqual(); eq[230][i].in[0] <== in[i]; - eq[230][i].in[1] <== 220; + eq[230][i].in[1] <== 232; eq[231][i] = IsEqual(); eq[231][i].in[0] <== in[i]; - eq[231][i].in[1] <== 221; + eq[231][i].in[1] <== 233; eq[232][i] = IsEqual(); eq[232][i].in[0] <== in[i]; - eq[232][i].in[1] <== 222; + eq[232][i].in[1] <== 234; eq[233][i] = IsEqual(); eq[233][i].in[0] <== in[i]; - eq[233][i].in[1] <== 223; + eq[233][i].in[1] <== 235; eq[234][i] = IsEqual(); eq[234][i].in[0] <== in[i]; - eq[234][i].in[1] <== 224; + eq[234][i].in[1] <== 236; eq[235][i] = IsEqual(); eq[235][i].in[0] <== in[i]; - eq[235][i].in[1] <== 225; + eq[235][i].in[1] <== 237; eq[236][i] = IsEqual(); eq[236][i].in[0] <== in[i]; - eq[236][i].in[1] <== 226; + eq[236][i].in[1] <== 238; eq[237][i] = IsEqual(); eq[237][i].in[0] <== in[i]; - eq[237][i].in[1] <== 227; + eq[237][i].in[1] <== 239; eq[238][i] = IsEqual(); eq[238][i].in[0] <== in[i]; - eq[238][i].in[1] <== 228; + eq[238][i].in[1] <== 240; eq[239][i] = IsEqual(); eq[239][i].in[0] <== in[i]; - eq[239][i].in[1] <== 229; + eq[239][i].in[1] <== 241; eq[240][i] = IsEqual(); eq[240][i].in[0] <== in[i]; - eq[240][i].in[1] <== 230; + eq[240][i].in[1] <== 242; eq[241][i] = IsEqual(); eq[241][i].in[0] <== in[i]; - eq[241][i].in[1] <== 231; + eq[241][i].in[1] <== 243; eq[242][i] = IsEqual(); eq[242][i].in[0] <== in[i]; - eq[242][i].in[1] <== 232; + eq[242][i].in[1] <== 244; eq[243][i] = IsEqual(); eq[243][i].in[0] <== in[i]; - eq[243][i].in[1] <== 233; + eq[243][i].in[1] <== 245; eq[244][i] = IsEqual(); eq[244][i].in[0] <== in[i]; - eq[244][i].in[1] <== 234; + eq[244][i].in[1] <== 246; eq[245][i] = IsEqual(); eq[245][i].in[0] <== in[i]; - eq[245][i].in[1] <== 235; + eq[245][i].in[1] <== 247; eq[246][i] = IsEqual(); eq[246][i].in[0] <== in[i]; - eq[246][i].in[1] <== 236; + eq[246][i].in[1] <== 248; eq[247][i] = IsEqual(); eq[247][i].in[0] <== in[i]; - eq[247][i].in[1] <== 237; + eq[247][i].in[1] <== 249; eq[248][i] = IsEqual(); eq[248][i].in[0] <== in[i]; - eq[248][i].in[1] <== 238; + eq[248][i].in[1] <== 250; eq[249][i] = IsEqual(); eq[249][i].in[0] <== in[i]; - eq[249][i].in[1] <== 239; + eq[249][i].in[1] <== 251; eq[250][i] = IsEqual(); eq[250][i].in[0] <== in[i]; - eq[250][i].in[1] <== 240; + eq[250][i].in[1] <== 252; eq[251][i] = IsEqual(); eq[251][i].in[0] <== in[i]; - eq[251][i].in[1] <== 241; + eq[251][i].in[1] <== 253; eq[252][i] = IsEqual(); eq[252][i].in[0] <== in[i]; - eq[252][i].in[1] <== 242; - eq[253][i] = IsEqual(); - eq[253][i].in[0] <== in[i]; - eq[253][i].in[1] <== 243; - eq[254][i] = IsEqual(); - eq[254][i].in[0] <== in[i]; - eq[254][i].in[1] <== 244; - eq[255][i] = IsEqual(); - eq[255][i].in[0] <== in[i]; - eq[255][i].in[1] <== 245; - eq[256][i] = IsEqual(); - eq[256][i].in[0] <== in[i]; - eq[256][i].in[1] <== 246; - eq[257][i] = IsEqual(); - eq[257][i].in[0] <== in[i]; - eq[257][i].in[1] <== 247; - eq[258][i] = IsEqual(); - eq[258][i].in[0] <== in[i]; - eq[258][i].in[1] <== 248; - eq[259][i] = IsEqual(); - eq[259][i].in[0] <== in[i]; - eq[259][i].in[1] <== 249; - eq[260][i] = IsEqual(); - eq[260][i].in[0] <== in[i]; - eq[260][i].in[1] <== 250; - eq[261][i] = IsEqual(); - eq[261][i].in[0] <== in[i]; - eq[261][i].in[1] <== 251; - eq[262][i] = IsEqual(); - eq[262][i].in[0] <== in[i]; - eq[262][i].in[1] <== 252; - eq[263][i] = IsEqual(); - eq[263][i].in[0] <== in[i]; - eq[263][i].in[1] <== 253; - eq[264][i] = IsEqual(); - eq[264][i].in[0] <== in[i]; - eq[264][i].in[1] <== 254; + eq[252][i].in[1] <== 254; and[3][i] = AND(); and[3][i].a <== states[i][1]; multi_or[1][i] = MultiOR(253); - multi_or[1][i].in[0] <== eq[12][i].out; - multi_or[1][i].in[1] <== eq[13][i].out; - multi_or[1][i].in[2] <== eq[14][i].out; - multi_or[1][i].in[3] <== eq[15][i].out; - multi_or[1][i].in[4] <== eq[16][i].out; - multi_or[1][i].in[5] <== eq[17][i].out; - multi_or[1][i].in[6] <== eq[18][i].out; - multi_or[1][i].in[7] <== eq[19][i].out; - multi_or[1][i].in[8] <== eq[20][i].out; - multi_or[1][i].in[9] <== eq[21][i].out; - multi_or[1][i].in[10] <== eq[22][i].out; - multi_or[1][i].in[11] <== eq[23][i].out; - multi_or[1][i].in[12] <== eq[24][i].out; - multi_or[1][i].in[13] <== eq[25][i].out; - multi_or[1][i].in[14] <== eq[26][i].out; - multi_or[1][i].in[15] <== eq[27][i].out; - multi_or[1][i].in[16] <== eq[28][i].out; - multi_or[1][i].in[17] <== eq[29][i].out; - multi_or[1][i].in[18] <== eq[30][i].out; - multi_or[1][i].in[19] <== eq[31][i].out; - multi_or[1][i].in[20] <== eq[32][i].out; - multi_or[1][i].in[21] <== eq[33][i].out; - multi_or[1][i].in[22] <== eq[34][i].out; - multi_or[1][i].in[23] <== eq[35][i].out; - multi_or[1][i].in[24] <== eq[36][i].out; - multi_or[1][i].in[25] <== eq[37][i].out; - multi_or[1][i].in[26] <== eq[38][i].out; - multi_or[1][i].in[27] <== eq[39][i].out; - multi_or[1][i].in[28] <== eq[40][i].out; - multi_or[1][i].in[29] <== eq[41][i].out; - multi_or[1][i].in[30] <== eq[42][i].out; - multi_or[1][i].in[31] <== eq[43][i].out; - multi_or[1][i].in[32] <== eq[44][i].out; - multi_or[1][i].in[33] <== eq[45][i].out; - multi_or[1][i].in[34] <== eq[46][i].out; - multi_or[1][i].in[35] <== eq[47][i].out; - multi_or[1][i].in[36] <== eq[48][i].out; - multi_or[1][i].in[37] <== eq[49][i].out; - multi_or[1][i].in[38] <== eq[50][i].out; - multi_or[1][i].in[39] <== eq[51][i].out; - multi_or[1][i].in[40] <== eq[52][i].out; - multi_or[1][i].in[41] <== eq[53][i].out; - multi_or[1][i].in[42] <== eq[54][i].out; - multi_or[1][i].in[43] <== eq[55][i].out; - multi_or[1][i].in[44] <== eq[56][i].out; - multi_or[1][i].in[45] <== eq[57][i].out; - multi_or[1][i].in[46] <== eq[58][i].out; - multi_or[1][i].in[47] <== eq[59][i].out; - multi_or[1][i].in[48] <== eq[60][i].out; - multi_or[1][i].in[49] <== eq[61][i].out; - multi_or[1][i].in[50] <== eq[62][i].out; - multi_or[1][i].in[51] <== eq[63][i].out; - multi_or[1][i].in[52] <== eq[64][i].out; - multi_or[1][i].in[53] <== eq[65][i].out; - multi_or[1][i].in[54] <== eq[66][i].out; - multi_or[1][i].in[55] <== eq[67][i].out; - multi_or[1][i].in[56] <== eq[68][i].out; - multi_or[1][i].in[57] <== eq[69][i].out; - multi_or[1][i].in[58] <== eq[70][i].out; - multi_or[1][i].in[59] <== eq[71][i].out; - multi_or[1][i].in[60] <== eq[72][i].out; - multi_or[1][i].in[61] <== eq[73][i].out; - multi_or[1][i].in[62] <== eq[74][i].out; - multi_or[1][i].in[63] <== eq[75][i].out; - multi_or[1][i].in[64] <== eq[76][i].out; - multi_or[1][i].in[65] <== eq[77][i].out; - multi_or[1][i].in[66] <== eq[78][i].out; - multi_or[1][i].in[67] <== eq[79][i].out; - multi_or[1][i].in[68] <== eq[80][i].out; - multi_or[1][i].in[69] <== eq[81][i].out; - multi_or[1][i].in[70] <== eq[82][i].out; - multi_or[1][i].in[71] <== eq[83][i].out; - multi_or[1][i].in[72] <== eq[84][i].out; - multi_or[1][i].in[73] <== eq[85][i].out; - multi_or[1][i].in[74] <== eq[86][i].out; - multi_or[1][i].in[75] <== eq[87][i].out; - multi_or[1][i].in[76] <== eq[88][i].out; - multi_or[1][i].in[77] <== eq[89][i].out; - multi_or[1][i].in[78] <== eq[90][i].out; - multi_or[1][i].in[79] <== eq[91][i].out; - multi_or[1][i].in[80] <== eq[92][i].out; - multi_or[1][i].in[81] <== eq[93][i].out; - multi_or[1][i].in[82] <== eq[94][i].out; - multi_or[1][i].in[83] <== eq[95][i].out; - multi_or[1][i].in[84] <== eq[96][i].out; - multi_or[1][i].in[85] <== eq[97][i].out; - multi_or[1][i].in[86] <== eq[98][i].out; - multi_or[1][i].in[87] <== eq[99][i].out; - multi_or[1][i].in[88] <== eq[100][i].out; - multi_or[1][i].in[89] <== eq[101][i].out; - multi_or[1][i].in[90] <== eq[102][i].out; - multi_or[1][i].in[91] <== eq[103][i].out; - multi_or[1][i].in[92] <== eq[104][i].out; - multi_or[1][i].in[93] <== eq[105][i].out; - multi_or[1][i].in[94] <== eq[106][i].out; - multi_or[1][i].in[95] <== eq[107][i].out; - multi_or[1][i].in[96] <== eq[108][i].out; - multi_or[1][i].in[97] <== eq[109][i].out; - multi_or[1][i].in[98] <== eq[110][i].out; - multi_or[1][i].in[99] <== eq[111][i].out; - multi_or[1][i].in[100] <== eq[112][i].out; - multi_or[1][i].in[101] <== eq[113][i].out; - multi_or[1][i].in[102] <== eq[114][i].out; - multi_or[1][i].in[103] <== eq[115][i].out; - multi_or[1][i].in[104] <== eq[116][i].out; - multi_or[1][i].in[105] <== eq[117][i].out; - multi_or[1][i].in[106] <== eq[118][i].out; - multi_or[1][i].in[107] <== eq[119][i].out; - multi_or[1][i].in[108] <== eq[120][i].out; - multi_or[1][i].in[109] <== eq[121][i].out; - multi_or[1][i].in[110] <== eq[122][i].out; - multi_or[1][i].in[111] <== eq[123][i].out; - multi_or[1][i].in[112] <== eq[124][i].out; - multi_or[1][i].in[113] <== eq[125][i].out; - multi_or[1][i].in[114] <== eq[126][i].out; - multi_or[1][i].in[115] <== eq[127][i].out; - multi_or[1][i].in[116] <== eq[128][i].out; - multi_or[1][i].in[117] <== eq[129][i].out; - multi_or[1][i].in[118] <== eq[130][i].out; - multi_or[1][i].in[119] <== eq[131][i].out; - multi_or[1][i].in[120] <== eq[132][i].out; - multi_or[1][i].in[121] <== eq[133][i].out; - multi_or[1][i].in[122] <== eq[134][i].out; - multi_or[1][i].in[123] <== eq[135][i].out; - multi_or[1][i].in[124] <== eq[136][i].out; - multi_or[1][i].in[125] <== eq[137][i].out; - multi_or[1][i].in[126] <== eq[138][i].out; - multi_or[1][i].in[127] <== eq[139][i].out; - multi_or[1][i].in[128] <== eq[140][i].out; - multi_or[1][i].in[129] <== eq[141][i].out; - multi_or[1][i].in[130] <== eq[142][i].out; - multi_or[1][i].in[131] <== eq[143][i].out; - multi_or[1][i].in[132] <== eq[144][i].out; - multi_or[1][i].in[133] <== eq[145][i].out; - multi_or[1][i].in[134] <== eq[146][i].out; - multi_or[1][i].in[135] <== eq[147][i].out; - multi_or[1][i].in[136] <== eq[148][i].out; - multi_or[1][i].in[137] <== eq[149][i].out; - multi_or[1][i].in[138] <== eq[150][i].out; - multi_or[1][i].in[139] <== eq[151][i].out; - multi_or[1][i].in[140] <== eq[152][i].out; - multi_or[1][i].in[141] <== eq[153][i].out; - multi_or[1][i].in[142] <== eq[154][i].out; - multi_or[1][i].in[143] <== eq[155][i].out; - multi_or[1][i].in[144] <== eq[156][i].out; - multi_or[1][i].in[145] <== eq[157][i].out; - multi_or[1][i].in[146] <== eq[158][i].out; - multi_or[1][i].in[147] <== eq[159][i].out; - multi_or[1][i].in[148] <== eq[160][i].out; - multi_or[1][i].in[149] <== eq[161][i].out; - multi_or[1][i].in[150] <== eq[162][i].out; - multi_or[1][i].in[151] <== eq[163][i].out; - multi_or[1][i].in[152] <== eq[164][i].out; - multi_or[1][i].in[153] <== eq[165][i].out; - multi_or[1][i].in[154] <== eq[166][i].out; - multi_or[1][i].in[155] <== eq[167][i].out; - multi_or[1][i].in[156] <== eq[168][i].out; - multi_or[1][i].in[157] <== eq[169][i].out; - multi_or[1][i].in[158] <== eq[170][i].out; - multi_or[1][i].in[159] <== eq[171][i].out; - multi_or[1][i].in[160] <== eq[172][i].out; - multi_or[1][i].in[161] <== eq[173][i].out; - multi_or[1][i].in[162] <== eq[174][i].out; - multi_or[1][i].in[163] <== eq[175][i].out; - multi_or[1][i].in[164] <== eq[176][i].out; - multi_or[1][i].in[165] <== eq[177][i].out; - multi_or[1][i].in[166] <== eq[178][i].out; - multi_or[1][i].in[167] <== eq[179][i].out; - multi_or[1][i].in[168] <== eq[180][i].out; - multi_or[1][i].in[169] <== eq[181][i].out; - multi_or[1][i].in[170] <== eq[182][i].out; - multi_or[1][i].in[171] <== eq[183][i].out; - multi_or[1][i].in[172] <== eq[184][i].out; - multi_or[1][i].in[173] <== eq[185][i].out; - multi_or[1][i].in[174] <== eq[186][i].out; - multi_or[1][i].in[175] <== eq[187][i].out; - multi_or[1][i].in[176] <== eq[188][i].out; - multi_or[1][i].in[177] <== eq[189][i].out; - multi_or[1][i].in[178] <== eq[190][i].out; - multi_or[1][i].in[179] <== eq[191][i].out; - multi_or[1][i].in[180] <== eq[192][i].out; - multi_or[1][i].in[181] <== eq[193][i].out; - multi_or[1][i].in[182] <== eq[194][i].out; - multi_or[1][i].in[183] <== eq[195][i].out; - multi_or[1][i].in[184] <== eq[196][i].out; - multi_or[1][i].in[185] <== eq[197][i].out; - multi_or[1][i].in[186] <== eq[198][i].out; - multi_or[1][i].in[187] <== eq[199][i].out; - multi_or[1][i].in[188] <== eq[200][i].out; - multi_or[1][i].in[189] <== eq[201][i].out; - multi_or[1][i].in[190] <== eq[202][i].out; - multi_or[1][i].in[191] <== eq[203][i].out; - multi_or[1][i].in[192] <== eq[204][i].out; - multi_or[1][i].in[193] <== eq[205][i].out; - multi_or[1][i].in[194] <== eq[206][i].out; - multi_or[1][i].in[195] <== eq[207][i].out; - multi_or[1][i].in[196] <== eq[208][i].out; - multi_or[1][i].in[197] <== eq[209][i].out; - multi_or[1][i].in[198] <== eq[210][i].out; - multi_or[1][i].in[199] <== eq[211][i].out; - multi_or[1][i].in[200] <== eq[212][i].out; - multi_or[1][i].in[201] <== eq[213][i].out; - multi_or[1][i].in[202] <== eq[214][i].out; - multi_or[1][i].in[203] <== eq[215][i].out; - multi_or[1][i].in[204] <== eq[216][i].out; - multi_or[1][i].in[205] <== eq[217][i].out; - multi_or[1][i].in[206] <== eq[218][i].out; - multi_or[1][i].in[207] <== eq[219][i].out; - multi_or[1][i].in[208] <== eq[220][i].out; - multi_or[1][i].in[209] <== eq[221][i].out; - multi_or[1][i].in[210] <== eq[222][i].out; - multi_or[1][i].in[211] <== eq[223][i].out; - multi_or[1][i].in[212] <== eq[224][i].out; - multi_or[1][i].in[213] <== eq[225][i].out; - multi_or[1][i].in[214] <== eq[226][i].out; - multi_or[1][i].in[215] <== eq[227][i].out; - multi_or[1][i].in[216] <== eq[228][i].out; - multi_or[1][i].in[217] <== eq[229][i].out; - multi_or[1][i].in[218] <== eq[230][i].out; - multi_or[1][i].in[219] <== eq[231][i].out; - multi_or[1][i].in[220] <== eq[232][i].out; - multi_or[1][i].in[221] <== eq[233][i].out; - multi_or[1][i].in[222] <== eq[234][i].out; - multi_or[1][i].in[223] <== eq[235][i].out; - multi_or[1][i].in[224] <== eq[236][i].out; - multi_or[1][i].in[225] <== eq[237][i].out; - multi_or[1][i].in[226] <== eq[238][i].out; - multi_or[1][i].in[227] <== eq[239][i].out; - multi_or[1][i].in[228] <== eq[240][i].out; - multi_or[1][i].in[229] <== eq[241][i].out; - multi_or[1][i].in[230] <== eq[242][i].out; - multi_or[1][i].in[231] <== eq[243][i].out; - multi_or[1][i].in[232] <== eq[244][i].out; - multi_or[1][i].in[233] <== eq[245][i].out; - multi_or[1][i].in[234] <== eq[246][i].out; - multi_or[1][i].in[235] <== eq[247][i].out; - multi_or[1][i].in[236] <== eq[248][i].out; - multi_or[1][i].in[237] <== eq[249][i].out; - multi_or[1][i].in[238] <== eq[250][i].out; - multi_or[1][i].in[239] <== eq[251][i].out; - multi_or[1][i].in[240] <== eq[252][i].out; - multi_or[1][i].in[241] <== eq[253][i].out; - multi_or[1][i].in[242] <== eq[254][i].out; - multi_or[1][i].in[243] <== eq[255][i].out; - multi_or[1][i].in[244] <== eq[256][i].out; - multi_or[1][i].in[245] <== eq[257][i].out; - multi_or[1][i].in[246] <== eq[258][i].out; - multi_or[1][i].in[247] <== eq[259][i].out; - multi_or[1][i].in[248] <== eq[260][i].out; - multi_or[1][i].in[249] <== eq[261][i].out; - multi_or[1][i].in[250] <== eq[262][i].out; - multi_or[1][i].in[251] <== eq[263][i].out; - multi_or[1][i].in[252] <== eq[264][i].out; + multi_or[1][i].in[0] <== eq[0][i].out; + multi_or[1][i].in[1] <== eq[1][i].out; + multi_or[1][i].in[2] <== eq[2][i].out; + multi_or[1][i].in[3] <== eq[3][i].out; + multi_or[1][i].in[4] <== eq[4][i].out; + multi_or[1][i].in[5] <== eq[5][i].out; + multi_or[1][i].in[6] <== eq[6][i].out; + multi_or[1][i].in[7] <== eq[7][i].out; + multi_or[1][i].in[8] <== eq[8][i].out; + multi_or[1][i].in[9] <== eq[9][i].out; + multi_or[1][i].in[10] <== eq[10][i].out; + multi_or[1][i].in[11] <== eq[11][i].out; + multi_or[1][i].in[12] <== eq[12][i].out; + multi_or[1][i].in[13] <== eq[13][i].out; + multi_or[1][i].in[14] <== eq[14][i].out; + multi_or[1][i].in[15] <== eq[15][i].out; + multi_or[1][i].in[16] <== eq[16][i].out; + multi_or[1][i].in[17] <== eq[17][i].out; + multi_or[1][i].in[18] <== eq[18][i].out; + multi_or[1][i].in[19] <== eq[19][i].out; + multi_or[1][i].in[20] <== eq[20][i].out; + multi_or[1][i].in[21] <== eq[21][i].out; + multi_or[1][i].in[22] <== eq[22][i].out; + multi_or[1][i].in[23] <== eq[23][i].out; + multi_or[1][i].in[24] <== eq[24][i].out; + multi_or[1][i].in[25] <== eq[25][i].out; + multi_or[1][i].in[26] <== eq[26][i].out; + multi_or[1][i].in[27] <== eq[27][i].out; + multi_or[1][i].in[28] <== eq[28][i].out; + multi_or[1][i].in[29] <== eq[29][i].out; + multi_or[1][i].in[30] <== eq[30][i].out; + multi_or[1][i].in[31] <== eq[31][i].out; + multi_or[1][i].in[32] <== eq[32][i].out; + multi_or[1][i].in[33] <== eq[33][i].out; + multi_or[1][i].in[34] <== eq[34][i].out; + multi_or[1][i].in[35] <== eq[35][i].out; + multi_or[1][i].in[36] <== eq[36][i].out; + multi_or[1][i].in[37] <== eq[37][i].out; + multi_or[1][i].in[38] <== eq[38][i].out; + multi_or[1][i].in[39] <== eq[39][i].out; + multi_or[1][i].in[40] <== eq[40][i].out; + multi_or[1][i].in[41] <== eq[41][i].out; + multi_or[1][i].in[42] <== eq[42][i].out; + multi_or[1][i].in[43] <== eq[43][i].out; + multi_or[1][i].in[44] <== eq[44][i].out; + multi_or[1][i].in[45] <== eq[45][i].out; + multi_or[1][i].in[46] <== eq[46][i].out; + multi_or[1][i].in[47] <== eq[47][i].out; + multi_or[1][i].in[48] <== eq[48][i].out; + multi_or[1][i].in[49] <== eq[49][i].out; + multi_or[1][i].in[50] <== eq[50][i].out; + multi_or[1][i].in[51] <== eq[51][i].out; + multi_or[1][i].in[52] <== eq[52][i].out; + multi_or[1][i].in[53] <== eq[53][i].out; + multi_or[1][i].in[54] <== eq[54][i].out; + multi_or[1][i].in[55] <== eq[55][i].out; + multi_or[1][i].in[56] <== eq[56][i].out; + multi_or[1][i].in[57] <== eq[57][i].out; + multi_or[1][i].in[58] <== eq[58][i].out; + multi_or[1][i].in[59] <== eq[59][i].out; + multi_or[1][i].in[60] <== eq[60][i].out; + multi_or[1][i].in[61] <== eq[61][i].out; + multi_or[1][i].in[62] <== eq[62][i].out; + multi_or[1][i].in[63] <== eq[63][i].out; + multi_or[1][i].in[64] <== eq[64][i].out; + multi_or[1][i].in[65] <== eq[65][i].out; + multi_or[1][i].in[66] <== eq[66][i].out; + multi_or[1][i].in[67] <== eq[67][i].out; + multi_or[1][i].in[68] <== eq[68][i].out; + multi_or[1][i].in[69] <== eq[69][i].out; + multi_or[1][i].in[70] <== eq[70][i].out; + multi_or[1][i].in[71] <== eq[71][i].out; + multi_or[1][i].in[72] <== eq[72][i].out; + multi_or[1][i].in[73] <== eq[73][i].out; + multi_or[1][i].in[74] <== eq[74][i].out; + multi_or[1][i].in[75] <== eq[75][i].out; + multi_or[1][i].in[76] <== eq[76][i].out; + multi_or[1][i].in[77] <== eq[77][i].out; + multi_or[1][i].in[78] <== eq[78][i].out; + multi_or[1][i].in[79] <== eq[79][i].out; + multi_or[1][i].in[80] <== eq[80][i].out; + multi_or[1][i].in[81] <== eq[81][i].out; + multi_or[1][i].in[82] <== eq[82][i].out; + multi_or[1][i].in[83] <== eq[83][i].out; + multi_or[1][i].in[84] <== eq[84][i].out; + multi_or[1][i].in[85] <== eq[85][i].out; + multi_or[1][i].in[86] <== eq[86][i].out; + multi_or[1][i].in[87] <== eq[87][i].out; + multi_or[1][i].in[88] <== eq[88][i].out; + multi_or[1][i].in[89] <== eq[89][i].out; + multi_or[1][i].in[90] <== eq[90][i].out; + multi_or[1][i].in[91] <== eq[91][i].out; + multi_or[1][i].in[92] <== eq[92][i].out; + multi_or[1][i].in[93] <== eq[93][i].out; + multi_or[1][i].in[94] <== eq[94][i].out; + multi_or[1][i].in[95] <== eq[95][i].out; + multi_or[1][i].in[96] <== eq[96][i].out; + multi_or[1][i].in[97] <== eq[97][i].out; + multi_or[1][i].in[98] <== eq[98][i].out; + multi_or[1][i].in[99] <== eq[99][i].out; + multi_or[1][i].in[100] <== eq[100][i].out; + multi_or[1][i].in[101] <== eq[101][i].out; + multi_or[1][i].in[102] <== eq[102][i].out; + multi_or[1][i].in[103] <== eq[103][i].out; + multi_or[1][i].in[104] <== eq[104][i].out; + multi_or[1][i].in[105] <== eq[105][i].out; + multi_or[1][i].in[106] <== eq[106][i].out; + multi_or[1][i].in[107] <== eq[107][i].out; + multi_or[1][i].in[108] <== eq[108][i].out; + multi_or[1][i].in[109] <== eq[109][i].out; + multi_or[1][i].in[110] <== eq[110][i].out; + multi_or[1][i].in[111] <== eq[111][i].out; + multi_or[1][i].in[112] <== eq[112][i].out; + multi_or[1][i].in[113] <== eq[113][i].out; + multi_or[1][i].in[114] <== eq[114][i].out; + multi_or[1][i].in[115] <== eq[115][i].out; + multi_or[1][i].in[116] <== eq[116][i].out; + multi_or[1][i].in[117] <== eq[117][i].out; + multi_or[1][i].in[118] <== eq[118][i].out; + multi_or[1][i].in[119] <== eq[119][i].out; + multi_or[1][i].in[120] <== eq[120][i].out; + multi_or[1][i].in[121] <== eq[121][i].out; + multi_or[1][i].in[122] <== eq[122][i].out; + multi_or[1][i].in[123] <== eq[123][i].out; + multi_or[1][i].in[124] <== eq[124][i].out; + multi_or[1][i].in[125] <== eq[125][i].out; + multi_or[1][i].in[126] <== eq[126][i].out; + multi_or[1][i].in[127] <== eq[127][i].out; + multi_or[1][i].in[128] <== eq[128][i].out; + multi_or[1][i].in[129] <== eq[129][i].out; + multi_or[1][i].in[130] <== eq[130][i].out; + multi_or[1][i].in[131] <== eq[131][i].out; + multi_or[1][i].in[132] <== eq[132][i].out; + multi_or[1][i].in[133] <== eq[133][i].out; + multi_or[1][i].in[134] <== eq[134][i].out; + multi_or[1][i].in[135] <== eq[135][i].out; + multi_or[1][i].in[136] <== eq[136][i].out; + multi_or[1][i].in[137] <== eq[137][i].out; + multi_or[1][i].in[138] <== eq[138][i].out; + multi_or[1][i].in[139] <== eq[139][i].out; + multi_or[1][i].in[140] <== eq[140][i].out; + multi_or[1][i].in[141] <== eq[141][i].out; + multi_or[1][i].in[142] <== eq[142][i].out; + multi_or[1][i].in[143] <== eq[143][i].out; + multi_or[1][i].in[144] <== eq[144][i].out; + multi_or[1][i].in[145] <== eq[145][i].out; + multi_or[1][i].in[146] <== eq[146][i].out; + multi_or[1][i].in[147] <== eq[147][i].out; + multi_or[1][i].in[148] <== eq[148][i].out; + multi_or[1][i].in[149] <== eq[149][i].out; + multi_or[1][i].in[150] <== eq[150][i].out; + multi_or[1][i].in[151] <== eq[151][i].out; + multi_or[1][i].in[152] <== eq[152][i].out; + multi_or[1][i].in[153] <== eq[153][i].out; + multi_or[1][i].in[154] <== eq[154][i].out; + multi_or[1][i].in[155] <== eq[155][i].out; + multi_or[1][i].in[156] <== eq[156][i].out; + multi_or[1][i].in[157] <== eq[157][i].out; + multi_or[1][i].in[158] <== eq[158][i].out; + multi_or[1][i].in[159] <== eq[159][i].out; + multi_or[1][i].in[160] <== eq[160][i].out; + multi_or[1][i].in[161] <== eq[161][i].out; + multi_or[1][i].in[162] <== eq[162][i].out; + multi_or[1][i].in[163] <== eq[163][i].out; + multi_or[1][i].in[164] <== eq[164][i].out; + multi_or[1][i].in[165] <== eq[165][i].out; + multi_or[1][i].in[166] <== eq[166][i].out; + multi_or[1][i].in[167] <== eq[167][i].out; + multi_or[1][i].in[168] <== eq[168][i].out; + multi_or[1][i].in[169] <== eq[169][i].out; + multi_or[1][i].in[170] <== eq[170][i].out; + multi_or[1][i].in[171] <== eq[171][i].out; + multi_or[1][i].in[172] <== eq[172][i].out; + multi_or[1][i].in[173] <== eq[173][i].out; + multi_or[1][i].in[174] <== eq[174][i].out; + multi_or[1][i].in[175] <== eq[175][i].out; + multi_or[1][i].in[176] <== eq[176][i].out; + multi_or[1][i].in[177] <== eq[177][i].out; + multi_or[1][i].in[178] <== eq[178][i].out; + multi_or[1][i].in[179] <== eq[179][i].out; + multi_or[1][i].in[180] <== eq[180][i].out; + multi_or[1][i].in[181] <== eq[181][i].out; + multi_or[1][i].in[182] <== eq[182][i].out; + multi_or[1][i].in[183] <== eq[183][i].out; + multi_or[1][i].in[184] <== eq[184][i].out; + multi_or[1][i].in[185] <== eq[185][i].out; + multi_or[1][i].in[186] <== eq[186][i].out; + multi_or[1][i].in[187] <== eq[187][i].out; + multi_or[1][i].in[188] <== eq[188][i].out; + multi_or[1][i].in[189] <== eq[189][i].out; + multi_or[1][i].in[190] <== eq[190][i].out; + multi_or[1][i].in[191] <== eq[191][i].out; + multi_or[1][i].in[192] <== eq[192][i].out; + multi_or[1][i].in[193] <== eq[193][i].out; + multi_or[1][i].in[194] <== eq[194][i].out; + multi_or[1][i].in[195] <== eq[195][i].out; + multi_or[1][i].in[196] <== eq[196][i].out; + multi_or[1][i].in[197] <== eq[197][i].out; + multi_or[1][i].in[198] <== eq[198][i].out; + multi_or[1][i].in[199] <== eq[199][i].out; + multi_or[1][i].in[200] <== eq[200][i].out; + multi_or[1][i].in[201] <== eq[201][i].out; + multi_or[1][i].in[202] <== eq[202][i].out; + multi_or[1][i].in[203] <== eq[203][i].out; + multi_or[1][i].in[204] <== eq[204][i].out; + multi_or[1][i].in[205] <== eq[205][i].out; + multi_or[1][i].in[206] <== eq[206][i].out; + multi_or[1][i].in[207] <== eq[207][i].out; + multi_or[1][i].in[208] <== eq[208][i].out; + multi_or[1][i].in[209] <== eq[209][i].out; + multi_or[1][i].in[210] <== eq[210][i].out; + multi_or[1][i].in[211] <== eq[211][i].out; + multi_or[1][i].in[212] <== eq[212][i].out; + multi_or[1][i].in[213] <== eq[213][i].out; + multi_or[1][i].in[214] <== eq[214][i].out; + multi_or[1][i].in[215] <== eq[215][i].out; + multi_or[1][i].in[216] <== eq[216][i].out; + multi_or[1][i].in[217] <== eq[217][i].out; + multi_or[1][i].in[218] <== eq[218][i].out; + multi_or[1][i].in[219] <== eq[219][i].out; + multi_or[1][i].in[220] <== eq[220][i].out; + multi_or[1][i].in[221] <== eq[221][i].out; + multi_or[1][i].in[222] <== eq[222][i].out; + multi_or[1][i].in[223] <== eq[223][i].out; + multi_or[1][i].in[224] <== eq[224][i].out; + multi_or[1][i].in[225] <== eq[225][i].out; + multi_or[1][i].in[226] <== eq[226][i].out; + multi_or[1][i].in[227] <== eq[227][i].out; + multi_or[1][i].in[228] <== eq[228][i].out; + multi_or[1][i].in[229] <== eq[229][i].out; + multi_or[1][i].in[230] <== eq[230][i].out; + multi_or[1][i].in[231] <== eq[231][i].out; + multi_or[1][i].in[232] <== eq[232][i].out; + multi_or[1][i].in[233] <== eq[233][i].out; + multi_or[1][i].in[234] <== eq[234][i].out; + multi_or[1][i].in[235] <== eq[235][i].out; + multi_or[1][i].in[236] <== eq[236][i].out; + multi_or[1][i].in[237] <== eq[237][i].out; + multi_or[1][i].in[238] <== eq[238][i].out; + multi_or[1][i].in[239] <== eq[239][i].out; + multi_or[1][i].in[240] <== eq[240][i].out; + multi_or[1][i].in[241] <== eq[241][i].out; + multi_or[1][i].in[242] <== eq[242][i].out; + multi_or[1][i].in[243] <== eq[243][i].out; + multi_or[1][i].in[244] <== eq[244][i].out; + multi_or[1][i].in[245] <== eq[245][i].out; + multi_or[1][i].in[246] <== eq[246][i].out; + multi_or[1][i].in[247] <== eq[247][i].out; + multi_or[1][i].in[248] <== eq[248][i].out; + multi_or[1][i].in[249] <== eq[249][i].out; + multi_or[1][i].in[250] <== eq[250][i].out; + multi_or[1][i].in[251] <== eq[251][i].out; + multi_or[1][i].in[252] <== eq[252][i].out; and[3][i].b <== multi_or[1][i].out; lt[4][i] = LessEqThan(8); lt[4][i].in[0] <== 14; @@ -1133,99 +1097,33 @@ template EmailAddrWithNameRegex(msg_bytes) { and[5][i] = AND(); and[5][i].a <== lt[6][i].out; and[5][i].b <== lt[7][i].out; - eq[265][i] = IsEqual(); - eq[265][i].in[0] <== in[i]; - eq[265][i].in[1] <== 0; - eq[266][i] = IsEqual(); - eq[266][i].in[0] <== in[i]; - eq[266][i].in[1] <== 1; - eq[267][i] = IsEqual(); - eq[267][i].in[0] <== in[i]; - eq[267][i].in[1] <== 2; - eq[268][i] = IsEqual(); - eq[268][i].in[0] <== in[i]; - eq[268][i].in[1] <== 3; - eq[269][i] = IsEqual(); - eq[269][i].in[0] <== in[i]; - eq[269][i].in[1] <== 4; - eq[270][i] = IsEqual(); - eq[270][i].in[0] <== in[i]; - eq[270][i].in[1] <== 5; - eq[271][i] = IsEqual(); - eq[271][i].in[0] <== in[i]; - eq[271][i].in[1] <== 6; - eq[272][i] = IsEqual(); - eq[272][i].in[0] <== in[i]; - eq[272][i].in[1] <== 7; - eq[273][i] = IsEqual(); - eq[273][i].in[0] <== in[i]; - eq[273][i].in[1] <== 8; - eq[274][i] = IsEqual(); - eq[274][i].in[0] <== in[i]; - eq[274][i].in[1] <== 9; - eq[275][i] = IsEqual(); - eq[275][i].in[0] <== in[i]; - eq[275][i].in[1] <== 11; - eq[276][i] = IsEqual(); - eq[276][i].in[0] <== in[i]; - eq[276][i].in[1] <== 12; - eq[277][i] = IsEqual(); - eq[277][i].in[0] <== in[i]; - eq[277][i].in[1] <== 34; - eq[278][i] = IsEqual(); - eq[278][i].in[0] <== in[i]; - eq[278][i].in[1] <== 40; - eq[279][i] = IsEqual(); - eq[279][i].in[0] <== in[i]; - eq[279][i].in[1] <== 41; - eq[280][i] = IsEqual(); - eq[280][i].in[0] <== in[i]; - eq[280][i].in[1] <== 44; - eq[281][i] = IsEqual(); - eq[281][i].in[0] <== in[i]; - eq[281][i].in[1] <== 58; - eq[282][i] = IsEqual(); - eq[282][i].in[0] <== in[i]; - eq[282][i].in[1] <== 59; - eq[283][i] = IsEqual(); - eq[283][i].in[0] <== in[i]; - eq[283][i].in[1] <== 62; - eq[284][i] = IsEqual(); - eq[284][i].in[0] <== in[i]; - eq[284][i].in[1] <== 91; - eq[285][i] = IsEqual(); - eq[285][i].in[0] <== in[i]; - eq[285][i].in[1] <== 92; - eq[286][i] = IsEqual(); - eq[286][i].in[0] <== in[i]; - eq[286][i].in[1] <== 93; and[6][i] = AND(); and[6][i].a <== states[i][2]; multi_or[2][i] = MultiOR(24); multi_or[2][i].in[0] <== and[4][i].out; multi_or[2][i].in[1] <== and[5][i].out; - multi_or[2][i].in[2] <== eq[265][i].out; - multi_or[2][i].in[3] <== eq[266][i].out; - multi_or[2][i].in[4] <== eq[267][i].out; - multi_or[2][i].in[5] <== eq[268][i].out; - multi_or[2][i].in[6] <== eq[269][i].out; - multi_or[2][i].in[7] <== eq[270][i].out; - multi_or[2][i].in[8] <== eq[271][i].out; - multi_or[2][i].in[9] <== eq[272][i].out; - multi_or[2][i].in[10] <== eq[273][i].out; - multi_or[2][i].in[11] <== eq[274][i].out; - multi_or[2][i].in[12] <== eq[275][i].out; - multi_or[2][i].in[13] <== eq[276][i].out; - multi_or[2][i].in[14] <== eq[277][i].out; - multi_or[2][i].in[15] <== eq[278][i].out; - multi_or[2][i].in[16] <== eq[279][i].out; - multi_or[2][i].in[17] <== eq[280][i].out; - multi_or[2][i].in[18] <== eq[281][i].out; - multi_or[2][i].in[19] <== eq[282][i].out; - multi_or[2][i].in[20] <== eq[283][i].out; - multi_or[2][i].in[21] <== eq[284][i].out; - multi_or[2][i].in[22] <== eq[285][i].out; - multi_or[2][i].in[23] <== eq[286][i].out; + multi_or[2][i].in[2] <== eq[0][i].out; + multi_or[2][i].in[3] <== eq[1][i].out; + multi_or[2][i].in[4] <== eq[2][i].out; + multi_or[2][i].in[5] <== eq[3][i].out; + multi_or[2][i].in[6] <== eq[4][i].out; + multi_or[2][i].in[7] <== eq[5][i].out; + multi_or[2][i].in[8] <== eq[6][i].out; + multi_or[2][i].in[9] <== eq[7][i].out; + multi_or[2][i].in[10] <== eq[8][i].out; + multi_or[2][i].in[11] <== eq[9][i].out; + multi_or[2][i].in[12] <== eq[10][i].out; + multi_or[2][i].in[13] <== eq[11][i].out; + multi_or[2][i].in[14] <== eq[32][i].out; + multi_or[2][i].in[15] <== eq[38][i].out; + multi_or[2][i].in[16] <== eq[39][i].out; + multi_or[2][i].in[17] <== eq[42][i].out; + multi_or[2][i].in[18] <== eq[56][i].out; + multi_or[2][i].in[19] <== eq[57][i].out; + multi_or[2][i].in[20] <== eq[60][i].out; + multi_or[2][i].in[21] <== eq[89][i].out; + multi_or[2][i].in[22] <== eq[90][i].out; + multi_or[2][i].in[23] <== eq[91][i].out; and[6][i].b <== multi_or[2][i].out; lt[8][i] = LessEqThan(8); lt[8][i].in[0] <== 14; @@ -1245,103 +1143,34 @@ template EmailAddrWithNameRegex(msg_bytes) { and[8][i] = AND(); and[8][i].a <== lt[10][i].out; and[8][i].b <== lt[11][i].out; - eq[287][i] = IsEqual(); - eq[287][i].in[0] <== in[i]; - eq[287][i].in[1] <== 0; - eq[288][i] = IsEqual(); - eq[288][i].in[0] <== in[i]; - eq[288][i].in[1] <== 1; - eq[289][i] = IsEqual(); - eq[289][i].in[0] <== in[i]; - eq[289][i].in[1] <== 2; - eq[290][i] = IsEqual(); - eq[290][i].in[0] <== in[i]; - eq[290][i].in[1] <== 3; - eq[291][i] = IsEqual(); - eq[291][i].in[0] <== in[i]; - eq[291][i].in[1] <== 4; - eq[292][i] = IsEqual(); - eq[292][i].in[0] <== in[i]; - eq[292][i].in[1] <== 5; - eq[293][i] = IsEqual(); - eq[293][i].in[0] <== in[i]; - eq[293][i].in[1] <== 6; - eq[294][i] = IsEqual(); - eq[294][i].in[0] <== in[i]; - eq[294][i].in[1] <== 7; - eq[295][i] = IsEqual(); - eq[295][i].in[0] <== in[i]; - eq[295][i].in[1] <== 8; - eq[296][i] = IsEqual(); - eq[296][i].in[0] <== in[i]; - eq[296][i].in[1] <== 9; - eq[297][i] = IsEqual(); - eq[297][i].in[0] <== in[i]; - eq[297][i].in[1] <== 11; - eq[298][i] = IsEqual(); - eq[298][i].in[0] <== in[i]; - eq[298][i].in[1] <== 12; - eq[299][i] = IsEqual(); - eq[299][i].in[0] <== in[i]; - eq[299][i].in[1] <== 47; - eq[300][i] = IsEqual(); - eq[300][i].in[0] <== in[i]; - eq[300][i].in[1] <== 58; - eq[301][i] = IsEqual(); - eq[301][i].in[0] <== in[i]; - eq[301][i].in[1] <== 59; - eq[302][i] = IsEqual(); - eq[302][i].in[0] <== in[i]; - eq[302][i].in[1] <== 61; - eq[303][i] = IsEqual(); - eq[303][i].in[0] <== in[i]; - eq[303][i].in[1] <== 63; - eq[304][i] = IsEqual(); - eq[304][i].in[0] <== in[i]; - eq[304][i].in[1] <== 64; - eq[305][i] = IsEqual(); - eq[305][i].in[0] <== in[i]; - eq[305][i].in[1] <== 91; - eq[306][i] = IsEqual(); - eq[306][i].in[0] <== in[i]; - eq[306][i].in[1] <== 92; - eq[307][i] = IsEqual(); - eq[307][i].in[0] <== in[i]; - eq[307][i].in[1] <== 93; - eq[308][i] = IsEqual(); - eq[308][i].in[0] <== in[i]; - eq[308][i].in[1] <== 94; - eq[309][i] = IsEqual(); - eq[309][i].in[0] <== in[i]; - eq[309][i].in[1] <== 96; and[9][i] = AND(); and[9][i].a <== states[i][3]; multi_or[3][i] = MultiOR(25); multi_or[3][i].in[0] <== and[7][i].out; multi_or[3][i].in[1] <== and[8][i].out; - multi_or[3][i].in[2] <== eq[287][i].out; - multi_or[3][i].in[3] <== eq[288][i].out; - multi_or[3][i].in[4] <== eq[289][i].out; - multi_or[3][i].in[5] <== eq[290][i].out; - multi_or[3][i].in[6] <== eq[291][i].out; - multi_or[3][i].in[7] <== eq[292][i].out; - multi_or[3][i].in[8] <== eq[293][i].out; - multi_or[3][i].in[9] <== eq[294][i].out; - multi_or[3][i].in[10] <== eq[295][i].out; - multi_or[3][i].in[11] <== eq[296][i].out; - multi_or[3][i].in[12] <== eq[297][i].out; - multi_or[3][i].in[13] <== eq[298][i].out; - multi_or[3][i].in[14] <== eq[299][i].out; - multi_or[3][i].in[15] <== eq[300][i].out; - multi_or[3][i].in[16] <== eq[301][i].out; - multi_or[3][i].in[17] <== eq[302][i].out; - multi_or[3][i].in[18] <== eq[303][i].out; - multi_or[3][i].in[19] <== eq[304][i].out; - multi_or[3][i].in[20] <== eq[305][i].out; - multi_or[3][i].in[21] <== eq[306][i].out; - multi_or[3][i].in[22] <== eq[307][i].out; - multi_or[3][i].in[23] <== eq[308][i].out; - multi_or[3][i].in[24] <== eq[309][i].out; + multi_or[3][i].in[2] <== eq[0][i].out; + multi_or[3][i].in[3] <== eq[1][i].out; + multi_or[3][i].in[4] <== eq[2][i].out; + multi_or[3][i].in[5] <== eq[3][i].out; + multi_or[3][i].in[6] <== eq[4][i].out; + multi_or[3][i].in[7] <== eq[5][i].out; + multi_or[3][i].in[8] <== eq[6][i].out; + multi_or[3][i].in[9] <== eq[7][i].out; + multi_or[3][i].in[10] <== eq[8][i].out; + multi_or[3][i].in[11] <== eq[9][i].out; + multi_or[3][i].in[12] <== eq[10][i].out; + multi_or[3][i].in[13] <== eq[11][i].out; + multi_or[3][i].in[14] <== eq[45][i].out; + multi_or[3][i].in[15] <== eq[56][i].out; + multi_or[3][i].in[16] <== eq[57][i].out; + multi_or[3][i].in[17] <== eq[59][i].out; + multi_or[3][i].in[18] <== eq[61][i].out; + multi_or[3][i].in[19] <== eq[62][i].out; + multi_or[3][i].in[20] <== eq[89][i].out; + multi_or[3][i].in[21] <== eq[90][i].out; + multi_or[3][i].in[22] <== eq[91][i].out; + multi_or[3][i].in[23] <== eq[92][i].out; + multi_or[3][i].in[24] <== eq[94][i].out; and[9][i].b <== multi_or[3][i].out; lt[12][i] = LessEqThan(8); lt[12][i].in[0] <== 14; @@ -1361,760 +1190,220 @@ template EmailAddrWithNameRegex(msg_bytes) { and[11][i] = AND(); and[11][i].a <== lt[14][i].out; and[11][i].b <== lt[15][i].out; - eq[310][i] = IsEqual(); - eq[310][i].in[0] <== in[i]; - eq[310][i].in[1] <== 0; - eq[311][i] = IsEqual(); - eq[311][i].in[0] <== in[i]; - eq[311][i].in[1] <== 1; - eq[312][i] = IsEqual(); - eq[312][i].in[0] <== in[i]; - eq[312][i].in[1] <== 2; - eq[313][i] = IsEqual(); - eq[313][i].in[0] <== in[i]; - eq[313][i].in[1] <== 3; - eq[314][i] = IsEqual(); - eq[314][i].in[0] <== in[i]; - eq[314][i].in[1] <== 4; - eq[315][i] = IsEqual(); - eq[315][i].in[0] <== in[i]; - eq[315][i].in[1] <== 5; - eq[316][i] = IsEqual(); - eq[316][i].in[0] <== in[i]; - eq[316][i].in[1] <== 6; - eq[317][i] = IsEqual(); - eq[317][i].in[0] <== in[i]; - eq[317][i].in[1] <== 7; - eq[318][i] = IsEqual(); - eq[318][i].in[0] <== in[i]; - eq[318][i].in[1] <== 8; - eq[319][i] = IsEqual(); - eq[319][i].in[0] <== in[i]; - eq[319][i].in[1] <== 9; - eq[320][i] = IsEqual(); - eq[320][i].in[0] <== in[i]; - eq[320][i].in[1] <== 11; - eq[321][i] = IsEqual(); - eq[321][i].in[0] <== in[i]; - eq[321][i].in[1] <== 12; and[12][i] = AND(); and[12][i].a <== states[i][4]; multi_or[4][i] = MultiOR(14); multi_or[4][i].in[0] <== and[10][i].out; multi_or[4][i].in[1] <== and[11][i].out; - multi_or[4][i].in[2] <== eq[310][i].out; - multi_or[4][i].in[3] <== eq[311][i].out; - multi_or[4][i].in[4] <== eq[312][i].out; - multi_or[4][i].in[5] <== eq[313][i].out; - multi_or[4][i].in[6] <== eq[314][i].out; - multi_or[4][i].in[7] <== eq[315][i].out; - multi_or[4][i].in[8] <== eq[316][i].out; - multi_or[4][i].in[9] <== eq[317][i].out; - multi_or[4][i].in[10] <== eq[318][i].out; - multi_or[4][i].in[11] <== eq[319][i].out; - multi_or[4][i].in[12] <== eq[320][i].out; - multi_or[4][i].in[13] <== eq[321][i].out; + multi_or[4][i].in[2] <== eq[0][i].out; + multi_or[4][i].in[3] <== eq[1][i].out; + multi_or[4][i].in[4] <== eq[2][i].out; + multi_or[4][i].in[5] <== eq[3][i].out; + multi_or[4][i].in[6] <== eq[4][i].out; + multi_or[4][i].in[7] <== eq[5][i].out; + multi_or[4][i].in[8] <== eq[6][i].out; + multi_or[4][i].in[9] <== eq[7][i].out; + multi_or[4][i].in[10] <== eq[8][i].out; + multi_or[4][i].in[11] <== eq[9][i].out; + multi_or[4][i].in[12] <== eq[10][i].out; + multi_or[4][i].in[13] <== eq[11][i].out; and[12][i].b <== multi_or[4][i].out; + and[13][i] = AND(); + and[13][i].a <== states[i][5]; + multi_or[5][i] = MultiOR(25); + multi_or[5][i].in[0] <== and[4][i].out; + multi_or[5][i].in[1] <== and[5][i].out; + multi_or[5][i].in[2] <== eq[0][i].out; + multi_or[5][i].in[3] <== eq[1][i].out; + multi_or[5][i].in[4] <== eq[2][i].out; + multi_or[5][i].in[5] <== eq[3][i].out; + multi_or[5][i].in[6] <== eq[4][i].out; + multi_or[5][i].in[7] <== eq[5][i].out; + multi_or[5][i].in[8] <== eq[6][i].out; + multi_or[5][i].in[9] <== eq[7][i].out; + multi_or[5][i].in[10] <== eq[8][i].out; + multi_or[5][i].in[11] <== eq[9][i].out; + multi_or[5][i].in[12] <== eq[10][i].out; + multi_or[5][i].in[13] <== eq[11][i].out; + multi_or[5][i].in[14] <== eq[32][i].out; + multi_or[5][i].in[15] <== eq[38][i].out; + multi_or[5][i].in[16] <== eq[39][i].out; + multi_or[5][i].in[17] <== eq[42][i].out; + multi_or[5][i].in[18] <== eq[56][i].out; + multi_or[5][i].in[19] <== eq[57][i].out; + multi_or[5][i].in[20] <== eq[60][i].out; + multi_or[5][i].in[21] <== eq[62][i].out; + multi_or[5][i].in[22] <== eq[89][i].out; + multi_or[5][i].in[23] <== eq[90][i].out; + multi_or[5][i].in[24] <== eq[91][i].out; + and[13][i].b <== multi_or[5][i].out; + and[14][i] = AND(); + and[14][i].a <== states[i][6]; + multi_or[6][i] = MultiOR(26); + multi_or[6][i].in[0] <== and[7][i].out; + multi_or[6][i].in[1] <== and[8][i].out; + multi_or[6][i].in[2] <== eq[0][i].out; + multi_or[6][i].in[3] <== eq[1][i].out; + multi_or[6][i].in[4] <== eq[2][i].out; + multi_or[6][i].in[5] <== eq[3][i].out; + multi_or[6][i].in[6] <== eq[4][i].out; + multi_or[6][i].in[7] <== eq[5][i].out; + multi_or[6][i].in[8] <== eq[6][i].out; + multi_or[6][i].in[9] <== eq[7][i].out; + multi_or[6][i].in[10] <== eq[8][i].out; + multi_or[6][i].in[11] <== eq[9][i].out; + multi_or[6][i].in[12] <== eq[10][i].out; + multi_or[6][i].in[13] <== eq[11][i].out; + multi_or[6][i].in[14] <== eq[45][i].out; + multi_or[6][i].in[15] <== eq[56][i].out; + multi_or[6][i].in[16] <== eq[57][i].out; + multi_or[6][i].in[17] <== eq[59][i].out; + multi_or[6][i].in[18] <== eq[60][i].out; + multi_or[6][i].in[19] <== eq[61][i].out; + multi_or[6][i].in[20] <== eq[62][i].out; + multi_or[6][i].in[21] <== eq[89][i].out; + multi_or[6][i].in[22] <== eq[90][i].out; + multi_or[6][i].in[23] <== eq[91][i].out; + multi_or[6][i].in[24] <== eq[92][i].out; + multi_or[6][i].in[25] <== eq[94][i].out; + and[14][i].b <== multi_or[6][i].out; + multi_or[7][i] = MultiOR(7); + multi_or[7][i].in[0] <== and[2][i].out; + multi_or[7][i].in[1] <== and[3][i].out; + multi_or[7][i].in[2] <== and[6][i].out; + multi_or[7][i].in[3] <== and[9][i].out; + multi_or[7][i].in[4] <== and[12][i].out; + multi_or[7][i].in[5] <== and[13][i].out; + multi_or[7][i].in[6] <== and[14][i].out; + states[i+1][1] <== multi_or[7][i].out; + state_changed[i].in[0] <== states[i+1][1]; lt[16][i] = LessEqThan(8); - lt[16][i].in[0] <== 14; + lt[16][i].in[0] <== 65; lt[16][i].in[1] <== in[i]; lt[17][i] = LessEqThan(8); lt[17][i].in[0] <== in[i]; - lt[17][i].in[1] <== 32; - and[13][i] = AND(); - and[13][i].a <== lt[16][i].out; - and[13][i].b <== lt[17][i].out; + lt[17][i].in[1] <== 90; + and[15][i] = AND(); + and[15][i].a <== lt[16][i].out; + and[15][i].b <== lt[17][i].out; lt[18][i] = LessEqThan(8); - lt[18][i].in[0] <== 127; + lt[18][i].in[0] <== 94; lt[18][i].in[1] <== in[i]; lt[19][i] = LessEqThan(8); lt[19][i].in[0] <== in[i]; - lt[19][i].in[1] <== 254; - and[14][i] = AND(); - and[14][i].a <== lt[18][i].out; - and[14][i].b <== lt[19][i].out; - eq[322][i] = IsEqual(); - eq[322][i].in[0] <== in[i]; - eq[322][i].in[1] <== 0; - eq[323][i] = IsEqual(); - eq[323][i].in[0] <== in[i]; - eq[323][i].in[1] <== 1; - eq[324][i] = IsEqual(); - eq[324][i].in[0] <== in[i]; - eq[324][i].in[1] <== 2; - eq[325][i] = IsEqual(); - eq[325][i].in[0] <== in[i]; - eq[325][i].in[1] <== 3; - eq[326][i] = IsEqual(); - eq[326][i].in[0] <== in[i]; - eq[326][i].in[1] <== 4; - eq[327][i] = IsEqual(); - eq[327][i].in[0] <== in[i]; - eq[327][i].in[1] <== 5; - eq[328][i] = IsEqual(); - eq[328][i].in[0] <== in[i]; - eq[328][i].in[1] <== 6; - eq[329][i] = IsEqual(); - eq[329][i].in[0] <== in[i]; - eq[329][i].in[1] <== 7; - eq[330][i] = IsEqual(); - eq[330][i].in[0] <== in[i]; - eq[330][i].in[1] <== 8; - eq[331][i] = IsEqual(); - eq[331][i].in[0] <== in[i]; - eq[331][i].in[1] <== 9; - eq[332][i] = IsEqual(); - eq[332][i].in[0] <== in[i]; - eq[332][i].in[1] <== 11; - eq[333][i] = IsEqual(); - eq[333][i].in[0] <== in[i]; - eq[333][i].in[1] <== 12; - eq[334][i] = IsEqual(); - eq[334][i].in[0] <== in[i]; - eq[334][i].in[1] <== 34; - eq[335][i] = IsEqual(); - eq[335][i].in[0] <== in[i]; - eq[335][i].in[1] <== 40; - eq[336][i] = IsEqual(); - eq[336][i].in[0] <== in[i]; - eq[336][i].in[1] <== 41; - eq[337][i] = IsEqual(); - eq[337][i].in[0] <== in[i]; - eq[337][i].in[1] <== 44; - eq[338][i] = IsEqual(); - eq[338][i].in[0] <== in[i]; - eq[338][i].in[1] <== 58; - eq[339][i] = IsEqual(); - eq[339][i].in[0] <== in[i]; - eq[339][i].in[1] <== 59; - eq[340][i] = IsEqual(); - eq[340][i].in[0] <== in[i]; - eq[340][i].in[1] <== 62; - eq[341][i] = IsEqual(); - eq[341][i].in[0] <== in[i]; - eq[341][i].in[1] <== 64; - eq[342][i] = IsEqual(); - eq[342][i].in[0] <== in[i]; - eq[342][i].in[1] <== 91; - eq[343][i] = IsEqual(); - eq[343][i].in[0] <== in[i]; - eq[343][i].in[1] <== 92; - eq[344][i] = IsEqual(); - eq[344][i].in[0] <== in[i]; - eq[344][i].in[1] <== 93; - and[15][i] = AND(); - and[15][i].a <== states[i][5]; - multi_or[5][i] = MultiOR(25); - multi_or[5][i].in[0] <== and[13][i].out; - multi_or[5][i].in[1] <== and[14][i].out; - multi_or[5][i].in[2] <== eq[322][i].out; - multi_or[5][i].in[3] <== eq[323][i].out; - multi_or[5][i].in[4] <== eq[324][i].out; - multi_or[5][i].in[5] <== eq[325][i].out; - multi_or[5][i].in[6] <== eq[326][i].out; - multi_or[5][i].in[7] <== eq[327][i].out; - multi_or[5][i].in[8] <== eq[328][i].out; - multi_or[5][i].in[9] <== eq[329][i].out; - multi_or[5][i].in[10] <== eq[330][i].out; - multi_or[5][i].in[11] <== eq[331][i].out; - multi_or[5][i].in[12] <== eq[332][i].out; - multi_or[5][i].in[13] <== eq[333][i].out; - multi_or[5][i].in[14] <== eq[334][i].out; - multi_or[5][i].in[15] <== eq[335][i].out; - multi_or[5][i].in[16] <== eq[336][i].out; - multi_or[5][i].in[17] <== eq[337][i].out; - multi_or[5][i].in[18] <== eq[338][i].out; - multi_or[5][i].in[19] <== eq[339][i].out; - multi_or[5][i].in[20] <== eq[340][i].out; - multi_or[5][i].in[21] <== eq[341][i].out; - multi_or[5][i].in[22] <== eq[342][i].out; - multi_or[5][i].in[23] <== eq[343][i].out; - multi_or[5][i].in[24] <== eq[344][i].out; - and[15][i].b <== multi_or[5][i].out; + lt[19][i].in[1] <== 126; + and[16][i] = AND(); + and[16][i].a <== lt[18][i].out; + and[16][i].b <== lt[19][i].out; + and[17][i] = AND(); + and[17][i].a <== states[i][2]; + multi_or[8][i] = MultiOR(25); + multi_or[8][i].in[0] <== and[15][i].out; + multi_or[8][i].in[1] <== and[16][i].out; + multi_or[8][i].in[2] <== eq[31][i].out; + multi_or[8][i].in[3] <== eq[33][i].out; + multi_or[8][i].in[4] <== eq[34][i].out; + multi_or[8][i].in[5] <== eq[35][i].out; + multi_or[8][i].in[6] <== eq[36][i].out; + multi_or[8][i].in[7] <== eq[37][i].out; + multi_or[8][i].in[8] <== eq[40][i].out; + multi_or[8][i].in[9] <== eq[41][i].out; + multi_or[8][i].in[10] <== eq[43][i].out; + multi_or[8][i].in[11] <== eq[44][i].out; + multi_or[8][i].in[12] <== eq[45][i].out; + multi_or[8][i].in[13] <== eq[46][i].out; + multi_or[8][i].in[14] <== eq[47][i].out; + multi_or[8][i].in[15] <== eq[48][i].out; + multi_or[8][i].in[16] <== eq[49][i].out; + multi_or[8][i].in[17] <== eq[50][i].out; + multi_or[8][i].in[18] <== eq[51][i].out; + multi_or[8][i].in[19] <== eq[52][i].out; + multi_or[8][i].in[20] <== eq[53][i].out; + multi_or[8][i].in[21] <== eq[54][i].out; + multi_or[8][i].in[22] <== eq[55][i].out; + multi_or[8][i].in[23] <== eq[59][i].out; + multi_or[8][i].in[24] <== eq[61][i].out; + and[17][i].b <== multi_or[8][i].out; + and[18][i] = AND(); + and[18][i].a <== states[i][5]; + and[18][i].b <== multi_or[8][i].out; + multi_or[9][i] = MultiOR(2); + multi_or[9][i].in[0] <== and[17][i].out; + multi_or[9][i].in[1] <== and[18][i].out; + states[i+1][2] <== multi_or[9][i].out; + state_changed[i].in[1] <== states[i+1][2]; lt[20][i] = LessEqThan(8); - lt[20][i].in[0] <== 14; + lt[20][i].in[0] <== 97; lt[20][i].in[1] <== in[i]; lt[21][i] = LessEqThan(8); lt[21][i].in[0] <== in[i]; - lt[21][i].in[1] <== 44; - and[16][i] = AND(); - and[16][i].a <== lt[20][i].out; - and[16][i].b <== lt[21][i].out; - lt[22][i] = LessEqThan(8); - lt[22][i].in[0] <== 123; - lt[22][i].in[1] <== in[i]; - lt[23][i] = LessEqThan(8); - lt[23][i].in[0] <== in[i]; - lt[23][i].in[1] <== 254; - and[17][i] = AND(); - and[17][i].a <== lt[22][i].out; - and[17][i].b <== lt[23][i].out; - eq[345][i] = IsEqual(); - eq[345][i].in[0] <== in[i]; - eq[345][i].in[1] <== 0; - eq[346][i] = IsEqual(); - eq[346][i].in[0] <== in[i]; - eq[346][i].in[1] <== 1; - eq[347][i] = IsEqual(); - eq[347][i].in[0] <== in[i]; - eq[347][i].in[1] <== 2; - eq[348][i] = IsEqual(); - eq[348][i].in[0] <== in[i]; - eq[348][i].in[1] <== 3; - eq[349][i] = IsEqual(); - eq[349][i].in[0] <== in[i]; - eq[349][i].in[1] <== 4; - eq[350][i] = IsEqual(); - eq[350][i].in[0] <== in[i]; - eq[350][i].in[1] <== 5; - eq[351][i] = IsEqual(); - eq[351][i].in[0] <== in[i]; - eq[351][i].in[1] <== 6; - eq[352][i] = IsEqual(); - eq[352][i].in[0] <== in[i]; - eq[352][i].in[1] <== 7; - eq[353][i] = IsEqual(); - eq[353][i].in[0] <== in[i]; - eq[353][i].in[1] <== 8; - eq[354][i] = IsEqual(); - eq[354][i].in[0] <== in[i]; - eq[354][i].in[1] <== 9; - eq[355][i] = IsEqual(); - eq[355][i].in[0] <== in[i]; - eq[355][i].in[1] <== 11; - eq[356][i] = IsEqual(); - eq[356][i].in[0] <== in[i]; - eq[356][i].in[1] <== 12; - eq[357][i] = IsEqual(); - eq[357][i].in[0] <== in[i]; - eq[357][i].in[1] <== 47; - eq[358][i] = IsEqual(); - eq[358][i].in[0] <== in[i]; - eq[358][i].in[1] <== 58; - eq[359][i] = IsEqual(); - eq[359][i].in[0] <== in[i]; - eq[359][i].in[1] <== 59; - eq[360][i] = IsEqual(); - eq[360][i].in[0] <== in[i]; - eq[360][i].in[1] <== 61; - eq[361][i] = IsEqual(); - eq[361][i].in[0] <== in[i]; - eq[361][i].in[1] <== 62; - eq[362][i] = IsEqual(); - eq[362][i].in[0] <== in[i]; - eq[362][i].in[1] <== 63; - eq[363][i] = IsEqual(); - eq[363][i].in[0] <== in[i]; - eq[363][i].in[1] <== 64; - eq[364][i] = IsEqual(); - eq[364][i].in[0] <== in[i]; - eq[364][i].in[1] <== 91; - eq[365][i] = IsEqual(); - eq[365][i].in[0] <== in[i]; - eq[365][i].in[1] <== 92; - eq[366][i] = IsEqual(); - eq[366][i].in[0] <== in[i]; - eq[366][i].in[1] <== 93; - eq[367][i] = IsEqual(); - eq[367][i].in[0] <== in[i]; - eq[367][i].in[1] <== 94; - eq[368][i] = IsEqual(); - eq[368][i].in[0] <== in[i]; - eq[368][i].in[1] <== 96; - and[18][i] = AND(); - and[18][i].a <== states[i][6]; - multi_or[6][i] = MultiOR(26); - multi_or[6][i].in[0] <== and[16][i].out; - multi_or[6][i].in[1] <== and[17][i].out; - multi_or[6][i].in[2] <== eq[345][i].out; - multi_or[6][i].in[3] <== eq[346][i].out; - multi_or[6][i].in[4] <== eq[347][i].out; - multi_or[6][i].in[5] <== eq[348][i].out; - multi_or[6][i].in[6] <== eq[349][i].out; - multi_or[6][i].in[7] <== eq[350][i].out; - multi_or[6][i].in[8] <== eq[351][i].out; - multi_or[6][i].in[9] <== eq[352][i].out; - multi_or[6][i].in[10] <== eq[353][i].out; - multi_or[6][i].in[11] <== eq[354][i].out; - multi_or[6][i].in[12] <== eq[355][i].out; - multi_or[6][i].in[13] <== eq[356][i].out; - multi_or[6][i].in[14] <== eq[357][i].out; - multi_or[6][i].in[15] <== eq[358][i].out; - multi_or[6][i].in[16] <== eq[359][i].out; - multi_or[6][i].in[17] <== eq[360][i].out; - multi_or[6][i].in[18] <== eq[361][i].out; - multi_or[6][i].in[19] <== eq[362][i].out; - multi_or[6][i].in[20] <== eq[363][i].out; - multi_or[6][i].in[21] <== eq[364][i].out; - multi_or[6][i].in[22] <== eq[365][i].out; - multi_or[6][i].in[23] <== eq[366][i].out; - multi_or[6][i].in[24] <== eq[367][i].out; - multi_or[6][i].in[25] <== eq[368][i].out; - and[18][i].b <== multi_or[6][i].out; - multi_or[7][i] = MultiOR(7); - multi_or[7][i].in[0] <== and[2][i].out; - multi_or[7][i].in[1] <== and[3][i].out; - multi_or[7][i].in[2] <== and[6][i].out; - multi_or[7][i].in[3] <== and[9][i].out; - multi_or[7][i].in[4] <== and[12][i].out; - multi_or[7][i].in[5] <== and[15][i].out; - multi_or[7][i].in[6] <== and[18][i].out; - states[i+1][1] <== multi_or[7][i].out; - state_changed[i].in[0] <== states[i+1][1]; - lt[24][i] = LessEqThan(8); - lt[24][i].in[0] <== 65; - lt[24][i].in[1] <== in[i]; - lt[25][i] = LessEqThan(8); - lt[25][i].in[0] <== in[i]; - lt[25][i].in[1] <== 90; + lt[21][i].in[1] <== 122; and[19][i] = AND(); - and[19][i].a <== lt[24][i].out; - and[19][i].b <== lt[25][i].out; - lt[26][i] = LessEqThan(8); - lt[26][i].in[0] <== 94; - lt[26][i].in[1] <== in[i]; - lt[27][i] = LessEqThan(8); - lt[27][i].in[0] <== in[i]; - lt[27][i].in[1] <== 126; + and[19][i].a <== lt[20][i].out; + and[19][i].b <== lt[21][i].out; and[20][i] = AND(); - and[20][i].a <== lt[26][i].out; - and[20][i].b <== lt[27][i].out; - eq[369][i] = IsEqual(); - eq[369][i].in[0] <== in[i]; - eq[369][i].in[1] <== 33; - eq[370][i] = IsEqual(); - eq[370][i].in[0] <== in[i]; - eq[370][i].in[1] <== 35; - eq[371][i] = IsEqual(); - eq[371][i].in[0] <== in[i]; - eq[371][i].in[1] <== 36; - eq[372][i] = IsEqual(); - eq[372][i].in[0] <== in[i]; - eq[372][i].in[1] <== 37; - eq[373][i] = IsEqual(); - eq[373][i].in[0] <== in[i]; - eq[373][i].in[1] <== 38; - eq[374][i] = IsEqual(); - eq[374][i].in[0] <== in[i]; - eq[374][i].in[1] <== 39; - eq[375][i] = IsEqual(); - eq[375][i].in[0] <== in[i]; - eq[375][i].in[1] <== 42; - eq[376][i] = IsEqual(); - eq[376][i].in[0] <== in[i]; - eq[376][i].in[1] <== 43; - eq[377][i] = IsEqual(); - eq[377][i].in[0] <== in[i]; - eq[377][i].in[1] <== 45; - eq[378][i] = IsEqual(); - eq[378][i].in[0] <== in[i]; - eq[378][i].in[1] <== 46; - eq[379][i] = IsEqual(); - eq[379][i].in[0] <== in[i]; - eq[379][i].in[1] <== 47; - eq[380][i] = IsEqual(); - eq[380][i].in[0] <== in[i]; - eq[380][i].in[1] <== 48; - eq[381][i] = IsEqual(); - eq[381][i].in[0] <== in[i]; - eq[381][i].in[1] <== 49; - eq[382][i] = IsEqual(); - eq[382][i].in[0] <== in[i]; - eq[382][i].in[1] <== 50; - eq[383][i] = IsEqual(); - eq[383][i].in[0] <== in[i]; - eq[383][i].in[1] <== 51; - eq[384][i] = IsEqual(); - eq[384][i].in[0] <== in[i]; - eq[384][i].in[1] <== 52; - eq[385][i] = IsEqual(); - eq[385][i].in[0] <== in[i]; - eq[385][i].in[1] <== 53; - eq[386][i] = IsEqual(); - eq[386][i].in[0] <== in[i]; - eq[386][i].in[1] <== 54; - eq[387][i] = IsEqual(); - eq[387][i].in[0] <== in[i]; - eq[387][i].in[1] <== 55; - eq[388][i] = IsEqual(); - eq[388][i].in[0] <== in[i]; - eq[388][i].in[1] <== 56; - eq[389][i] = IsEqual(); - eq[389][i].in[0] <== in[i]; - eq[389][i].in[1] <== 57; - eq[390][i] = IsEqual(); - eq[390][i].in[0] <== in[i]; - eq[390][i].in[1] <== 61; - eq[391][i] = IsEqual(); - eq[391][i].in[0] <== in[i]; - eq[391][i].in[1] <== 63; + and[20][i].a <== states[i][3]; + multi_or[10][i] = MultiOR(15); + multi_or[10][i].in[0] <== and[15][i].out; + multi_or[10][i].in[1] <== and[19][i].out; + multi_or[10][i].in[2] <== eq[43][i].out; + multi_or[10][i].in[3] <== eq[44][i].out; + multi_or[10][i].in[4] <== eq[46][i].out; + multi_or[10][i].in[5] <== eq[47][i].out; + multi_or[10][i].in[6] <== eq[48][i].out; + multi_or[10][i].in[7] <== eq[49][i].out; + multi_or[10][i].in[8] <== eq[50][i].out; + multi_or[10][i].in[9] <== eq[51][i].out; + multi_or[10][i].in[10] <== eq[52][i].out; + multi_or[10][i].in[11] <== eq[53][i].out; + multi_or[10][i].in[12] <== eq[54][i].out; + multi_or[10][i].in[13] <== eq[55][i].out; + multi_or[10][i].in[14] <== eq[93][i].out; + and[20][i].b <== multi_or[10][i].out; and[21][i] = AND(); - and[21][i].a <== states[i][2]; - multi_or[8][i] = MultiOR(25); - multi_or[8][i].in[0] <== and[19][i].out; - multi_or[8][i].in[1] <== and[20][i].out; - multi_or[8][i].in[2] <== eq[369][i].out; - multi_or[8][i].in[3] <== eq[370][i].out; - multi_or[8][i].in[4] <== eq[371][i].out; - multi_or[8][i].in[5] <== eq[372][i].out; - multi_or[8][i].in[6] <== eq[373][i].out; - multi_or[8][i].in[7] <== eq[374][i].out; - multi_or[8][i].in[8] <== eq[375][i].out; - multi_or[8][i].in[9] <== eq[376][i].out; - multi_or[8][i].in[10] <== eq[377][i].out; - multi_or[8][i].in[11] <== eq[378][i].out; - multi_or[8][i].in[12] <== eq[379][i].out; - multi_or[8][i].in[13] <== eq[380][i].out; - multi_or[8][i].in[14] <== eq[381][i].out; - multi_or[8][i].in[15] <== eq[382][i].out; - multi_or[8][i].in[16] <== eq[383][i].out; - multi_or[8][i].in[17] <== eq[384][i].out; - multi_or[8][i].in[18] <== eq[385][i].out; - multi_or[8][i].in[19] <== eq[386][i].out; - multi_or[8][i].in[20] <== eq[387][i].out; - multi_or[8][i].in[21] <== eq[388][i].out; - multi_or[8][i].in[22] <== eq[389][i].out; - multi_or[8][i].in[23] <== eq[390][i].out; - multi_or[8][i].in[24] <== eq[391][i].out; - and[21][i].b <== multi_or[8][i].out; - lt[28][i] = LessEqThan(8); - lt[28][i].in[0] <== 65; - lt[28][i].in[1] <== in[i]; - lt[29][i] = LessEqThan(8); - lt[29][i].in[0] <== in[i]; - lt[29][i].in[1] <== 90; + and[21][i].a <== states[i][6]; + and[21][i].b <== multi_or[10][i].out; + multi_or[11][i] = MultiOR(2); + multi_or[11][i].in[0] <== and[20][i].out; + multi_or[11][i].in[1] <== and[21][i].out; + states[i+1][3] <== multi_or[11][i].out; + state_changed[i].in[2] <== states[i+1][3]; and[22][i] = AND(); - and[22][i].a <== lt[28][i].out; - and[22][i].b <== lt[29][i].out; - lt[30][i] = LessEqThan(8); - lt[30][i].in[0] <== 94; - lt[30][i].in[1] <== in[i]; - lt[31][i] = LessEqThan(8); - lt[31][i].in[0] <== in[i]; - lt[31][i].in[1] <== 126; + and[22][i].a <== states[i][3]; + and[22][i].b <== eq[60][i].out; + states[i+1][4] <== and[22][i].out; + state_changed[i].in[3] <== states[i+1][4]; and[23][i] = AND(); - and[23][i].a <== lt[30][i].out; - and[23][i].b <== lt[31][i].out; - eq[392][i] = IsEqual(); - eq[392][i].in[0] <== in[i]; - eq[392][i].in[1] <== 33; - eq[393][i] = IsEqual(); - eq[393][i].in[0] <== in[i]; - eq[393][i].in[1] <== 35; - eq[394][i] = IsEqual(); - eq[394][i].in[0] <== in[i]; - eq[394][i].in[1] <== 36; - eq[395][i] = IsEqual(); - eq[395][i].in[0] <== in[i]; - eq[395][i].in[1] <== 37; - eq[396][i] = IsEqual(); - eq[396][i].in[0] <== in[i]; - eq[396][i].in[1] <== 38; - eq[397][i] = IsEqual(); - eq[397][i].in[0] <== in[i]; - eq[397][i].in[1] <== 39; - eq[398][i] = IsEqual(); - eq[398][i].in[0] <== in[i]; - eq[398][i].in[1] <== 42; - eq[399][i] = IsEqual(); - eq[399][i].in[0] <== in[i]; - eq[399][i].in[1] <== 43; - eq[400][i] = IsEqual(); - eq[400][i].in[0] <== in[i]; - eq[400][i].in[1] <== 45; - eq[401][i] = IsEqual(); - eq[401][i].in[0] <== in[i]; - eq[401][i].in[1] <== 46; - eq[402][i] = IsEqual(); - eq[402][i].in[0] <== in[i]; - eq[402][i].in[1] <== 47; - eq[403][i] = IsEqual(); - eq[403][i].in[0] <== in[i]; - eq[403][i].in[1] <== 48; - eq[404][i] = IsEqual(); - eq[404][i].in[0] <== in[i]; - eq[404][i].in[1] <== 49; - eq[405][i] = IsEqual(); - eq[405][i].in[0] <== in[i]; - eq[405][i].in[1] <== 50; - eq[406][i] = IsEqual(); - eq[406][i].in[0] <== in[i]; - eq[406][i].in[1] <== 51; - eq[407][i] = IsEqual(); - eq[407][i].in[0] <== in[i]; - eq[407][i].in[1] <== 52; - eq[408][i] = IsEqual(); - eq[408][i].in[0] <== in[i]; - eq[408][i].in[1] <== 53; - eq[409][i] = IsEqual(); - eq[409][i].in[0] <== in[i]; - eq[409][i].in[1] <== 54; - eq[410][i] = IsEqual(); - eq[410][i].in[0] <== in[i]; - eq[410][i].in[1] <== 55; - eq[411][i] = IsEqual(); - eq[411][i].in[0] <== in[i]; - eq[411][i].in[1] <== 56; - eq[412][i] = IsEqual(); - eq[412][i].in[0] <== in[i]; - eq[412][i].in[1] <== 57; - eq[413][i] = IsEqual(); - eq[413][i].in[0] <== in[i]; - eq[413][i].in[1] <== 61; - eq[414][i] = IsEqual(); - eq[414][i].in[0] <== in[i]; - eq[414][i].in[1] <== 63; + and[23][i].a <== states[i][1]; + and[23][i].b <== eq[58][i].out; and[24][i] = AND(); - and[24][i].a <== states[i][5]; - multi_or[9][i] = MultiOR(25); - multi_or[9][i].in[0] <== and[22][i].out; - multi_or[9][i].in[1] <== and[23][i].out; - multi_or[9][i].in[2] <== eq[392][i].out; - multi_or[9][i].in[3] <== eq[393][i].out; - multi_or[9][i].in[4] <== eq[394][i].out; - multi_or[9][i].in[5] <== eq[395][i].out; - multi_or[9][i].in[6] <== eq[396][i].out; - multi_or[9][i].in[7] <== eq[397][i].out; - multi_or[9][i].in[8] <== eq[398][i].out; - multi_or[9][i].in[9] <== eq[399][i].out; - multi_or[9][i].in[10] <== eq[400][i].out; - multi_or[9][i].in[11] <== eq[401][i].out; - multi_or[9][i].in[12] <== eq[402][i].out; - multi_or[9][i].in[13] <== eq[403][i].out; - multi_or[9][i].in[14] <== eq[404][i].out; - multi_or[9][i].in[15] <== eq[405][i].out; - multi_or[9][i].in[16] <== eq[406][i].out; - multi_or[9][i].in[17] <== eq[407][i].out; - multi_or[9][i].in[18] <== eq[408][i].out; - multi_or[9][i].in[19] <== eq[409][i].out; - multi_or[9][i].in[20] <== eq[410][i].out; - multi_or[9][i].in[21] <== eq[411][i].out; - multi_or[9][i].in[22] <== eq[412][i].out; - multi_or[9][i].in[23] <== eq[413][i].out; - multi_or[9][i].in[24] <== eq[414][i].out; - and[24][i].b <== multi_or[9][i].out; - multi_or[10][i] = MultiOR(2); - multi_or[10][i].in[0] <== and[21][i].out; - multi_or[10][i].in[1] <== and[24][i].out; - states[i+1][2] <== multi_or[10][i].out; - state_changed[i].in[1] <== states[i+1][2]; - lt[32][i] = LessEqThan(8); - lt[32][i].in[0] <== 65; - lt[32][i].in[1] <== in[i]; - lt[33][i] = LessEqThan(8); - lt[33][i].in[0] <== in[i]; - lt[33][i].in[1] <== 90; + and[24][i].a <== states[i][2]; + and[24][i].b <== eq[58][i].out; and[25][i] = AND(); - and[25][i].a <== lt[32][i].out; - and[25][i].b <== lt[33][i].out; - lt[34][i] = LessEqThan(8); - lt[34][i].in[0] <== 97; - lt[34][i].in[1] <== in[i]; - lt[35][i] = LessEqThan(8); - lt[35][i].in[0] <== in[i]; - lt[35][i].in[1] <== 122; + and[25][i].a <== states[i][3]; + and[25][i].b <== eq[58][i].out; and[26][i] = AND(); - and[26][i].a <== lt[34][i].out; - and[26][i].b <== lt[35][i].out; - eq[415][i] = IsEqual(); - eq[415][i].in[0] <== in[i]; - eq[415][i].in[1] <== 45; - eq[416][i] = IsEqual(); - eq[416][i].in[0] <== in[i]; - eq[416][i].in[1] <== 46; - eq[417][i] = IsEqual(); - eq[417][i].in[0] <== in[i]; - eq[417][i].in[1] <== 48; - eq[418][i] = IsEqual(); - eq[418][i].in[0] <== in[i]; - eq[418][i].in[1] <== 49; - eq[419][i] = IsEqual(); - eq[419][i].in[0] <== in[i]; - eq[419][i].in[1] <== 50; - eq[420][i] = IsEqual(); - eq[420][i].in[0] <== in[i]; - eq[420][i].in[1] <== 51; - eq[421][i] = IsEqual(); - eq[421][i].in[0] <== in[i]; - eq[421][i].in[1] <== 52; - eq[422][i] = IsEqual(); - eq[422][i].in[0] <== in[i]; - eq[422][i].in[1] <== 53; - eq[423][i] = IsEqual(); - eq[423][i].in[0] <== in[i]; - eq[423][i].in[1] <== 54; - eq[424][i] = IsEqual(); - eq[424][i].in[0] <== in[i]; - eq[424][i].in[1] <== 55; - eq[425][i] = IsEqual(); - eq[425][i].in[0] <== in[i]; - eq[425][i].in[1] <== 56; - eq[426][i] = IsEqual(); - eq[426][i].in[0] <== in[i]; - eq[426][i].in[1] <== 57; - eq[427][i] = IsEqual(); - eq[427][i].in[0] <== in[i]; - eq[427][i].in[1] <== 95; + and[26][i].a <== states[i][4]; + and[26][i].b <== eq[58][i].out; and[27][i] = AND(); - and[27][i].a <== states[i][3]; - multi_or[11][i] = MultiOR(15); - multi_or[11][i].in[0] <== and[25][i].out; - multi_or[11][i].in[1] <== and[26][i].out; - multi_or[11][i].in[2] <== eq[415][i].out; - multi_or[11][i].in[3] <== eq[416][i].out; - multi_or[11][i].in[4] <== eq[417][i].out; - multi_or[11][i].in[5] <== eq[418][i].out; - multi_or[11][i].in[6] <== eq[419][i].out; - multi_or[11][i].in[7] <== eq[420][i].out; - multi_or[11][i].in[8] <== eq[421][i].out; - multi_or[11][i].in[9] <== eq[422][i].out; - multi_or[11][i].in[10] <== eq[423][i].out; - multi_or[11][i].in[11] <== eq[424][i].out; - multi_or[11][i].in[12] <== eq[425][i].out; - multi_or[11][i].in[13] <== eq[426][i].out; - multi_or[11][i].in[14] <== eq[427][i].out; - and[27][i].b <== multi_or[11][i].out; - lt[36][i] = LessEqThan(8); - lt[36][i].in[0] <== 65; - lt[36][i].in[1] <== in[i]; - lt[37][i] = LessEqThan(8); - lt[37][i].in[0] <== in[i]; - lt[37][i].in[1] <== 90; + and[27][i].a <== states[i][5]; + and[27][i].b <== eq[58][i].out; and[28][i] = AND(); - and[28][i].a <== lt[36][i].out; - and[28][i].b <== lt[37][i].out; - lt[38][i] = LessEqThan(8); - lt[38][i].in[0] <== 97; - lt[38][i].in[1] <== in[i]; - lt[39][i] = LessEqThan(8); - lt[39][i].in[0] <== in[i]; - lt[39][i].in[1] <== 122; - and[29][i] = AND(); - and[29][i].a <== lt[38][i].out; - and[29][i].b <== lt[39][i].out; - eq[428][i] = IsEqual(); - eq[428][i].in[0] <== in[i]; - eq[428][i].in[1] <== 45; - eq[429][i] = IsEqual(); - eq[429][i].in[0] <== in[i]; - eq[429][i].in[1] <== 46; - eq[430][i] = IsEqual(); - eq[430][i].in[0] <== in[i]; - eq[430][i].in[1] <== 48; - eq[431][i] = IsEqual(); - eq[431][i].in[0] <== in[i]; - eq[431][i].in[1] <== 49; - eq[432][i] = IsEqual(); - eq[432][i].in[0] <== in[i]; - eq[432][i].in[1] <== 50; - eq[433][i] = IsEqual(); - eq[433][i].in[0] <== in[i]; - eq[433][i].in[1] <== 51; - eq[434][i] = IsEqual(); - eq[434][i].in[0] <== in[i]; - eq[434][i].in[1] <== 52; - eq[435][i] = IsEqual(); - eq[435][i].in[0] <== in[i]; - eq[435][i].in[1] <== 53; - eq[436][i] = IsEqual(); - eq[436][i].in[0] <== in[i]; - eq[436][i].in[1] <== 54; - eq[437][i] = IsEqual(); - eq[437][i].in[0] <== in[i]; - eq[437][i].in[1] <== 55; - eq[438][i] = IsEqual(); - eq[438][i].in[0] <== in[i]; - eq[438][i].in[1] <== 56; - eq[439][i] = IsEqual(); - eq[439][i].in[0] <== in[i]; - eq[439][i].in[1] <== 57; - eq[440][i] = IsEqual(); - eq[440][i].in[0] <== in[i]; - eq[440][i].in[1] <== 95; - and[30][i] = AND(); - and[30][i].a <== states[i][6]; - multi_or[12][i] = MultiOR(15); - multi_or[12][i].in[0] <== and[28][i].out; - multi_or[12][i].in[1] <== and[29][i].out; - multi_or[12][i].in[2] <== eq[428][i].out; - multi_or[12][i].in[3] <== eq[429][i].out; - multi_or[12][i].in[4] <== eq[430][i].out; - multi_or[12][i].in[5] <== eq[431][i].out; - multi_or[12][i].in[6] <== eq[432][i].out; - multi_or[12][i].in[7] <== eq[433][i].out; - multi_or[12][i].in[8] <== eq[434][i].out; - multi_or[12][i].in[9] <== eq[435][i].out; - multi_or[12][i].in[10] <== eq[436][i].out; - multi_or[12][i].in[11] <== eq[437][i].out; - multi_or[12][i].in[12] <== eq[438][i].out; - multi_or[12][i].in[13] <== eq[439][i].out; - multi_or[12][i].in[14] <== eq[440][i].out; - and[30][i].b <== multi_or[12][i].out; - multi_or[13][i] = MultiOR(2); - multi_or[13][i].in[0] <== and[27][i].out; - multi_or[13][i].in[1] <== and[30][i].out; - states[i+1][3] <== multi_or[13][i].out; - state_changed[i].in[2] <== states[i+1][3]; - eq[441][i] = IsEqual(); - eq[441][i].in[0] <== in[i]; - eq[441][i].in[1] <== 62; - and[31][i] = AND(); - and[31][i].a <== states[i][3]; - and[31][i].b <== eq[441][i].out; - states[i+1][4] <== and[31][i].out; - state_changed[i].in[3] <== states[i+1][4]; - eq[442][i] = IsEqual(); - eq[442][i].in[0] <== in[i]; - eq[442][i].in[1] <== 60; - and[32][i] = AND(); - and[32][i].a <== states[i][1]; - and[32][i].b <== eq[442][i].out; - eq[443][i] = IsEqual(); - eq[443][i].in[0] <== in[i]; - eq[443][i].in[1] <== 60; - and[33][i] = AND(); - and[33][i].a <== states[i][2]; - and[33][i].b <== eq[443][i].out; - eq[444][i] = IsEqual(); - eq[444][i].in[0] <== in[i]; - eq[444][i].in[1] <== 60; - and[34][i] = AND(); - and[34][i].a <== states[i][3]; - and[34][i].b <== eq[444][i].out; - eq[445][i] = IsEqual(); - eq[445][i].in[0] <== in[i]; - eq[445][i].in[1] <== 60; - and[35][i] = AND(); - and[35][i].a <== states[i][4]; - and[35][i].b <== eq[445][i].out; - eq[446][i] = IsEqual(); - eq[446][i].in[0] <== in[i]; - eq[446][i].in[1] <== 60; - and[36][i] = AND(); - and[36][i].a <== states[i][5]; - and[36][i].b <== eq[446][i].out; - eq[447][i] = IsEqual(); - eq[447][i].in[0] <== in[i]; - eq[447][i].in[1] <== 60; - and[37][i] = AND(); - and[37][i].a <== states[i][6]; - and[37][i].b <== eq[447][i].out; - multi_or[14][i] = MultiOR(6); - multi_or[14][i].in[0] <== and[32][i].out; - multi_or[14][i].in[1] <== and[33][i].out; - multi_or[14][i].in[2] <== and[34][i].out; - multi_or[14][i].in[3] <== and[35][i].out; - multi_or[14][i].in[4] <== and[36][i].out; - multi_or[14][i].in[5] <== and[37][i].out; - states[i+1][5] <== multi_or[14][i].out; + and[28][i].a <== states[i][6]; + and[28][i].b <== eq[58][i].out; + multi_or[12][i] = MultiOR(6); + multi_or[12][i].in[0] <== and[23][i].out; + multi_or[12][i].in[1] <== and[24][i].out; + multi_or[12][i].in[2] <== and[25][i].out; + multi_or[12][i].in[3] <== and[26][i].out; + multi_or[12][i].in[4] <== and[27][i].out; + multi_or[12][i].in[5] <== and[28][i].out; + states[i+1][5] <== multi_or[12][i].out; state_changed[i].in[4] <== states[i+1][5]; - eq[448][i] = IsEqual(); - eq[448][i].in[0] <== in[i]; - eq[448][i].in[1] <== 64; - and[38][i] = AND(); - and[38][i].a <== states[i][2]; - and[38][i].b <== eq[448][i].out; - states[i+1][6] <== and[38][i].out; + and[29][i] = AND(); + and[29][i].a <== states[i][2]; + and[29][i].b <== eq[62][i].out; + states[i+1][6] <== and[29][i].out; state_changed[i].in[5] <== states[i+1][6]; states[i+1][0] <== 1 - state_changed[i].out; } diff --git a/packages/circom/circuits/common/email_domain_regex.circom b/packages/circom/circuits/common/email_domain_regex.circom index 124707d..3283054 100644 --- a/packages/circom/circuits/common/email_domain_regex.circom +++ b/packages/circom/circuits/common/email_domain_regex.circom @@ -13,10 +13,10 @@ template EmailDomainRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[131][num_bytes]; - component lt[12][num_bytes]; - component and[11][num_bytes]; - component multi_or[6][num_bytes]; + component eq[84][num_bytes]; + component lt[6][num_bytes]; + component and[8][num_bytes]; + component multi_or[5][num_bytes]; signal states[num_bytes+1][4]; component state_changed[num_bytes]; @@ -149,497 +149,314 @@ template EmailDomainRegex(msg_bytes) { and[2][i].b <== multi_or[0][i].out; eq[24][i] = IsEqual(); eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 33; + eq[24][i].in[1] <== 65; eq[25][i] = IsEqual(); eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 35; + eq[25][i].in[1] <== 66; eq[26][i] = IsEqual(); eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 36; + eq[26][i].in[1] <== 67; eq[27][i] = IsEqual(); eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 37; + eq[27][i].in[1] <== 68; eq[28][i] = IsEqual(); eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 38; + eq[28][i].in[1] <== 69; eq[29][i] = IsEqual(); eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 39; + eq[29][i].in[1] <== 70; eq[30][i] = IsEqual(); eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 42; + eq[30][i].in[1] <== 71; eq[31][i] = IsEqual(); eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 43; + eq[31][i].in[1] <== 72; eq[32][i] = IsEqual(); eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 45; + eq[32][i].in[1] <== 73; eq[33][i] = IsEqual(); eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 46; + eq[33][i].in[1] <== 74; eq[34][i] = IsEqual(); eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 47; + eq[34][i].in[1] <== 75; eq[35][i] = IsEqual(); eq[35][i].in[0] <== in[i]; - eq[35][i].in[1] <== 48; + eq[35][i].in[1] <== 76; eq[36][i] = IsEqual(); eq[36][i].in[0] <== in[i]; - eq[36][i].in[1] <== 49; + eq[36][i].in[1] <== 77; eq[37][i] = IsEqual(); eq[37][i].in[0] <== in[i]; - eq[37][i].in[1] <== 50; + eq[37][i].in[1] <== 78; eq[38][i] = IsEqual(); eq[38][i].in[0] <== in[i]; - eq[38][i].in[1] <== 51; + eq[38][i].in[1] <== 79; eq[39][i] = IsEqual(); eq[39][i].in[0] <== in[i]; - eq[39][i].in[1] <== 52; + eq[39][i].in[1] <== 80; eq[40][i] = IsEqual(); eq[40][i].in[0] <== in[i]; - eq[40][i].in[1] <== 53; + eq[40][i].in[1] <== 81; eq[41][i] = IsEqual(); eq[41][i].in[0] <== in[i]; - eq[41][i].in[1] <== 54; + eq[41][i].in[1] <== 82; eq[42][i] = IsEqual(); eq[42][i].in[0] <== in[i]; - eq[42][i].in[1] <== 55; + eq[42][i].in[1] <== 83; eq[43][i] = IsEqual(); eq[43][i].in[0] <== in[i]; - eq[43][i].in[1] <== 56; + eq[43][i].in[1] <== 84; eq[44][i] = IsEqual(); eq[44][i].in[0] <== in[i]; - eq[44][i].in[1] <== 57; + eq[44][i].in[1] <== 85; eq[45][i] = IsEqual(); eq[45][i].in[0] <== in[i]; - eq[45][i].in[1] <== 61; + eq[45][i].in[1] <== 86; eq[46][i] = IsEqual(); eq[46][i].in[0] <== in[i]; - eq[46][i].in[1] <== 63; + eq[46][i].in[1] <== 87; eq[47][i] = IsEqual(); eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 65; + eq[47][i].in[1] <== 88; eq[48][i] = IsEqual(); eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 66; + eq[48][i].in[1] <== 89; eq[49][i] = IsEqual(); eq[49][i].in[0] <== in[i]; - eq[49][i].in[1] <== 67; + eq[49][i].in[1] <== 90; eq[50][i] = IsEqual(); eq[50][i].in[0] <== in[i]; - eq[50][i].in[1] <== 68; + eq[50][i].in[1] <== 94; eq[51][i] = IsEqual(); eq[51][i].in[0] <== in[i]; - eq[51][i].in[1] <== 69; + eq[51][i].in[1] <== 95; eq[52][i] = IsEqual(); eq[52][i].in[0] <== in[i]; - eq[52][i].in[1] <== 70; + eq[52][i].in[1] <== 96; eq[53][i] = IsEqual(); eq[53][i].in[0] <== in[i]; - eq[53][i].in[1] <== 71; + eq[53][i].in[1] <== 97; eq[54][i] = IsEqual(); eq[54][i].in[0] <== in[i]; - eq[54][i].in[1] <== 72; + eq[54][i].in[1] <== 98; eq[55][i] = IsEqual(); eq[55][i].in[0] <== in[i]; - eq[55][i].in[1] <== 73; + eq[55][i].in[1] <== 99; eq[56][i] = IsEqual(); eq[56][i].in[0] <== in[i]; - eq[56][i].in[1] <== 74; + eq[56][i].in[1] <== 100; eq[57][i] = IsEqual(); eq[57][i].in[0] <== in[i]; - eq[57][i].in[1] <== 75; + eq[57][i].in[1] <== 101; eq[58][i] = IsEqual(); eq[58][i].in[0] <== in[i]; - eq[58][i].in[1] <== 76; + eq[58][i].in[1] <== 102; eq[59][i] = IsEqual(); eq[59][i].in[0] <== in[i]; - eq[59][i].in[1] <== 77; + eq[59][i].in[1] <== 103; eq[60][i] = IsEqual(); eq[60][i].in[0] <== in[i]; - eq[60][i].in[1] <== 78; + eq[60][i].in[1] <== 104; eq[61][i] = IsEqual(); eq[61][i].in[0] <== in[i]; - eq[61][i].in[1] <== 79; + eq[61][i].in[1] <== 105; eq[62][i] = IsEqual(); eq[62][i].in[0] <== in[i]; - eq[62][i].in[1] <== 80; + eq[62][i].in[1] <== 106; eq[63][i] = IsEqual(); eq[63][i].in[0] <== in[i]; - eq[63][i].in[1] <== 81; + eq[63][i].in[1] <== 107; eq[64][i] = IsEqual(); eq[64][i].in[0] <== in[i]; - eq[64][i].in[1] <== 82; + eq[64][i].in[1] <== 108; eq[65][i] = IsEqual(); eq[65][i].in[0] <== in[i]; - eq[65][i].in[1] <== 83; + eq[65][i].in[1] <== 109; eq[66][i] = IsEqual(); eq[66][i].in[0] <== in[i]; - eq[66][i].in[1] <== 84; + eq[66][i].in[1] <== 110; eq[67][i] = IsEqual(); eq[67][i].in[0] <== in[i]; - eq[67][i].in[1] <== 85; + eq[67][i].in[1] <== 111; eq[68][i] = IsEqual(); eq[68][i].in[0] <== in[i]; - eq[68][i].in[1] <== 86; + eq[68][i].in[1] <== 112; eq[69][i] = IsEqual(); eq[69][i].in[0] <== in[i]; - eq[69][i].in[1] <== 87; + eq[69][i].in[1] <== 113; eq[70][i] = IsEqual(); eq[70][i].in[0] <== in[i]; - eq[70][i].in[1] <== 88; + eq[70][i].in[1] <== 114; eq[71][i] = IsEqual(); eq[71][i].in[0] <== in[i]; - eq[71][i].in[1] <== 89; + eq[71][i].in[1] <== 115; eq[72][i] = IsEqual(); eq[72][i].in[0] <== in[i]; - eq[72][i].in[1] <== 90; + eq[72][i].in[1] <== 116; eq[73][i] = IsEqual(); eq[73][i].in[0] <== in[i]; - eq[73][i].in[1] <== 94; + eq[73][i].in[1] <== 117; eq[74][i] = IsEqual(); eq[74][i].in[0] <== in[i]; - eq[74][i].in[1] <== 95; + eq[74][i].in[1] <== 118; eq[75][i] = IsEqual(); eq[75][i].in[0] <== in[i]; - eq[75][i].in[1] <== 96; + eq[75][i].in[1] <== 119; eq[76][i] = IsEqual(); eq[76][i].in[0] <== in[i]; - eq[76][i].in[1] <== 97; + eq[76][i].in[1] <== 120; eq[77][i] = IsEqual(); eq[77][i].in[0] <== in[i]; - eq[77][i].in[1] <== 98; + eq[77][i].in[1] <== 121; eq[78][i] = IsEqual(); eq[78][i].in[0] <== in[i]; - eq[78][i].in[1] <== 99; + eq[78][i].in[1] <== 122; eq[79][i] = IsEqual(); eq[79][i].in[0] <== in[i]; - eq[79][i].in[1] <== 100; + eq[79][i].in[1] <== 123; eq[80][i] = IsEqual(); eq[80][i].in[0] <== in[i]; - eq[80][i].in[1] <== 101; + eq[80][i].in[1] <== 124; eq[81][i] = IsEqual(); eq[81][i].in[0] <== in[i]; - eq[81][i].in[1] <== 102; + eq[81][i].in[1] <== 125; eq[82][i] = IsEqual(); eq[82][i].in[0] <== in[i]; - eq[82][i].in[1] <== 103; - eq[83][i] = IsEqual(); - eq[83][i].in[0] <== in[i]; - eq[83][i].in[1] <== 104; - eq[84][i] = IsEqual(); - eq[84][i].in[0] <== in[i]; - eq[84][i].in[1] <== 105; - eq[85][i] = IsEqual(); - eq[85][i].in[0] <== in[i]; - eq[85][i].in[1] <== 106; - eq[86][i] = IsEqual(); - eq[86][i].in[0] <== in[i]; - eq[86][i].in[1] <== 107; - eq[87][i] = IsEqual(); - eq[87][i].in[0] <== in[i]; - eq[87][i].in[1] <== 108; - eq[88][i] = IsEqual(); - eq[88][i].in[0] <== in[i]; - eq[88][i].in[1] <== 109; - eq[89][i] = IsEqual(); - eq[89][i].in[0] <== in[i]; - eq[89][i].in[1] <== 110; - eq[90][i] = IsEqual(); - eq[90][i].in[0] <== in[i]; - eq[90][i].in[1] <== 111; - eq[91][i] = IsEqual(); - eq[91][i].in[0] <== in[i]; - eq[91][i].in[1] <== 112; - eq[92][i] = IsEqual(); - eq[92][i].in[0] <== in[i]; - eq[92][i].in[1] <== 113; - eq[93][i] = IsEqual(); - eq[93][i].in[0] <== in[i]; - eq[93][i].in[1] <== 114; - eq[94][i] = IsEqual(); - eq[94][i].in[0] <== in[i]; - eq[94][i].in[1] <== 115; - eq[95][i] = IsEqual(); - eq[95][i].in[0] <== in[i]; - eq[95][i].in[1] <== 116; - eq[96][i] = IsEqual(); - eq[96][i].in[0] <== in[i]; - eq[96][i].in[1] <== 117; - eq[97][i] = IsEqual(); - eq[97][i].in[0] <== in[i]; - eq[97][i].in[1] <== 118; - eq[98][i] = IsEqual(); - eq[98][i].in[0] <== in[i]; - eq[98][i].in[1] <== 119; - eq[99][i] = IsEqual(); - eq[99][i].in[0] <== in[i]; - eq[99][i].in[1] <== 120; - eq[100][i] = IsEqual(); - eq[100][i].in[0] <== in[i]; - eq[100][i].in[1] <== 121; - eq[101][i] = IsEqual(); - eq[101][i].in[0] <== in[i]; - eq[101][i].in[1] <== 122; - eq[102][i] = IsEqual(); - eq[102][i].in[0] <== in[i]; - eq[102][i].in[1] <== 123; - eq[103][i] = IsEqual(); - eq[103][i].in[0] <== in[i]; - eq[103][i].in[1] <== 124; - eq[104][i] = IsEqual(); - eq[104][i].in[0] <== in[i]; - eq[104][i].in[1] <== 125; - eq[105][i] = IsEqual(); - eq[105][i].in[0] <== in[i]; - eq[105][i].in[1] <== 126; + eq[82][i].in[1] <== 126; and[3][i] = AND(); and[3][i].a <== states[i][1]; multi_or[1][i] = MultiOR(82); - multi_or[1][i].in[0] <== eq[24][i].out; - multi_or[1][i].in[1] <== eq[25][i].out; - multi_or[1][i].in[2] <== eq[26][i].out; - multi_or[1][i].in[3] <== eq[27][i].out; - multi_or[1][i].in[4] <== eq[28][i].out; - multi_or[1][i].in[5] <== eq[29][i].out; - multi_or[1][i].in[6] <== eq[30][i].out; - multi_or[1][i].in[7] <== eq[31][i].out; - multi_or[1][i].in[8] <== eq[32][i].out; - multi_or[1][i].in[9] <== eq[33][i].out; - multi_or[1][i].in[10] <== eq[34][i].out; - multi_or[1][i].in[11] <== eq[35][i].out; - multi_or[1][i].in[12] <== eq[36][i].out; - multi_or[1][i].in[13] <== eq[37][i].out; - multi_or[1][i].in[14] <== eq[38][i].out; - multi_or[1][i].in[15] <== eq[39][i].out; - multi_or[1][i].in[16] <== eq[40][i].out; - multi_or[1][i].in[17] <== eq[41][i].out; - multi_or[1][i].in[18] <== eq[42][i].out; - multi_or[1][i].in[19] <== eq[43][i].out; - multi_or[1][i].in[20] <== eq[44][i].out; - multi_or[1][i].in[21] <== eq[45][i].out; - multi_or[1][i].in[22] <== eq[46][i].out; - multi_or[1][i].in[23] <== eq[47][i].out; - multi_or[1][i].in[24] <== eq[48][i].out; - multi_or[1][i].in[25] <== eq[49][i].out; - multi_or[1][i].in[26] <== eq[50][i].out; - multi_or[1][i].in[27] <== eq[51][i].out; - multi_or[1][i].in[28] <== eq[52][i].out; - multi_or[1][i].in[29] <== eq[53][i].out; - multi_or[1][i].in[30] <== eq[54][i].out; - multi_or[1][i].in[31] <== eq[55][i].out; - multi_or[1][i].in[32] <== eq[56][i].out; - multi_or[1][i].in[33] <== eq[57][i].out; - multi_or[1][i].in[34] <== eq[58][i].out; - multi_or[1][i].in[35] <== eq[59][i].out; - multi_or[1][i].in[36] <== eq[60][i].out; - multi_or[1][i].in[37] <== eq[61][i].out; - multi_or[1][i].in[38] <== eq[62][i].out; - multi_or[1][i].in[39] <== eq[63][i].out; - multi_or[1][i].in[40] <== eq[64][i].out; - multi_or[1][i].in[41] <== eq[65][i].out; - multi_or[1][i].in[42] <== eq[66][i].out; - multi_or[1][i].in[43] <== eq[67][i].out; - multi_or[1][i].in[44] <== eq[68][i].out; - multi_or[1][i].in[45] <== eq[69][i].out; - multi_or[1][i].in[46] <== eq[70][i].out; - multi_or[1][i].in[47] <== eq[71][i].out; - multi_or[1][i].in[48] <== eq[72][i].out; - multi_or[1][i].in[49] <== eq[73][i].out; - multi_or[1][i].in[50] <== eq[74][i].out; - multi_or[1][i].in[51] <== eq[75][i].out; - multi_or[1][i].in[52] <== eq[76][i].out; - multi_or[1][i].in[53] <== eq[77][i].out; - multi_or[1][i].in[54] <== eq[78][i].out; - multi_or[1][i].in[55] <== eq[79][i].out; - multi_or[1][i].in[56] <== eq[80][i].out; - multi_or[1][i].in[57] <== eq[81][i].out; - multi_or[1][i].in[58] <== eq[82][i].out; - multi_or[1][i].in[59] <== eq[83][i].out; - multi_or[1][i].in[60] <== eq[84][i].out; - multi_or[1][i].in[61] <== eq[85][i].out; - multi_or[1][i].in[62] <== eq[86][i].out; - multi_or[1][i].in[63] <== eq[87][i].out; - multi_or[1][i].in[64] <== eq[88][i].out; - multi_or[1][i].in[65] <== eq[89][i].out; - multi_or[1][i].in[66] <== eq[90][i].out; - multi_or[1][i].in[67] <== eq[91][i].out; - multi_or[1][i].in[68] <== eq[92][i].out; - multi_or[1][i].in[69] <== eq[93][i].out; - multi_or[1][i].in[70] <== eq[94][i].out; - multi_or[1][i].in[71] <== eq[95][i].out; - multi_or[1][i].in[72] <== eq[96][i].out; - multi_or[1][i].in[73] <== eq[97][i].out; - multi_or[1][i].in[74] <== eq[98][i].out; - multi_or[1][i].in[75] <== eq[99][i].out; - multi_or[1][i].in[76] <== eq[100][i].out; - multi_or[1][i].in[77] <== eq[101][i].out; - multi_or[1][i].in[78] <== eq[102][i].out; - multi_or[1][i].in[79] <== eq[103][i].out; - multi_or[1][i].in[80] <== eq[104][i].out; - multi_or[1][i].in[81] <== eq[105][i].out; + multi_or[1][i].in[0] <== eq[0][i].out; + multi_or[1][i].in[1] <== eq[1][i].out; + multi_or[1][i].in[2] <== eq[2][i].out; + multi_or[1][i].in[3] <== eq[3][i].out; + multi_or[1][i].in[4] <== eq[4][i].out; + multi_or[1][i].in[5] <== eq[5][i].out; + multi_or[1][i].in[6] <== eq[6][i].out; + multi_or[1][i].in[7] <== eq[7][i].out; + multi_or[1][i].in[8] <== eq[8][i].out; + multi_or[1][i].in[9] <== eq[9][i].out; + multi_or[1][i].in[10] <== eq[10][i].out; + multi_or[1][i].in[11] <== eq[11][i].out; + multi_or[1][i].in[12] <== eq[12][i].out; + multi_or[1][i].in[13] <== eq[13][i].out; + multi_or[1][i].in[14] <== eq[14][i].out; + multi_or[1][i].in[15] <== eq[15][i].out; + multi_or[1][i].in[16] <== eq[16][i].out; + multi_or[1][i].in[17] <== eq[17][i].out; + multi_or[1][i].in[18] <== eq[18][i].out; + multi_or[1][i].in[19] <== eq[19][i].out; + multi_or[1][i].in[20] <== eq[20][i].out; + multi_or[1][i].in[21] <== eq[21][i].out; + multi_or[1][i].in[22] <== eq[22][i].out; + multi_or[1][i].in[23] <== eq[24][i].out; + multi_or[1][i].in[24] <== eq[25][i].out; + multi_or[1][i].in[25] <== eq[26][i].out; + multi_or[1][i].in[26] <== eq[27][i].out; + multi_or[1][i].in[27] <== eq[28][i].out; + multi_or[1][i].in[28] <== eq[29][i].out; + multi_or[1][i].in[29] <== eq[30][i].out; + multi_or[1][i].in[30] <== eq[31][i].out; + multi_or[1][i].in[31] <== eq[32][i].out; + multi_or[1][i].in[32] <== eq[33][i].out; + multi_or[1][i].in[33] <== eq[34][i].out; + multi_or[1][i].in[34] <== eq[35][i].out; + multi_or[1][i].in[35] <== eq[36][i].out; + multi_or[1][i].in[36] <== eq[37][i].out; + multi_or[1][i].in[37] <== eq[38][i].out; + multi_or[1][i].in[38] <== eq[39][i].out; + multi_or[1][i].in[39] <== eq[40][i].out; + multi_or[1][i].in[40] <== eq[41][i].out; + multi_or[1][i].in[41] <== eq[42][i].out; + multi_or[1][i].in[42] <== eq[43][i].out; + multi_or[1][i].in[43] <== eq[44][i].out; + multi_or[1][i].in[44] <== eq[45][i].out; + multi_or[1][i].in[45] <== eq[46][i].out; + multi_or[1][i].in[46] <== eq[47][i].out; + multi_or[1][i].in[47] <== eq[48][i].out; + multi_or[1][i].in[48] <== eq[49][i].out; + multi_or[1][i].in[49] <== eq[50][i].out; + multi_or[1][i].in[50] <== eq[51][i].out; + multi_or[1][i].in[51] <== eq[52][i].out; + multi_or[1][i].in[52] <== eq[53][i].out; + multi_or[1][i].in[53] <== eq[54][i].out; + multi_or[1][i].in[54] <== eq[55][i].out; + multi_or[1][i].in[55] <== eq[56][i].out; + multi_or[1][i].in[56] <== eq[57][i].out; + multi_or[1][i].in[57] <== eq[58][i].out; + multi_or[1][i].in[58] <== eq[59][i].out; + multi_or[1][i].in[59] <== eq[60][i].out; + multi_or[1][i].in[60] <== eq[61][i].out; + multi_or[1][i].in[61] <== eq[62][i].out; + multi_or[1][i].in[62] <== eq[63][i].out; + multi_or[1][i].in[63] <== eq[64][i].out; + multi_or[1][i].in[64] <== eq[65][i].out; + multi_or[1][i].in[65] <== eq[66][i].out; + multi_or[1][i].in[66] <== eq[67][i].out; + multi_or[1][i].in[67] <== eq[68][i].out; + multi_or[1][i].in[68] <== eq[69][i].out; + multi_or[1][i].in[69] <== eq[70][i].out; + multi_or[1][i].in[70] <== eq[71][i].out; + multi_or[1][i].in[71] <== eq[72][i].out; + multi_or[1][i].in[72] <== eq[73][i].out; + multi_or[1][i].in[73] <== eq[74][i].out; + multi_or[1][i].in[74] <== eq[75][i].out; + multi_or[1][i].in[75] <== eq[76][i].out; + multi_or[1][i].in[76] <== eq[77][i].out; + multi_or[1][i].in[77] <== eq[78][i].out; + multi_or[1][i].in[78] <== eq[79][i].out; + multi_or[1][i].in[79] <== eq[80][i].out; + multi_or[1][i].in[80] <== eq[81][i].out; + multi_or[1][i].in[81] <== eq[82][i].out; and[3][i].b <== multi_or[1][i].out; multi_or[2][i] = MultiOR(2); multi_or[2][i].in[0] <== and[2][i].out; multi_or[2][i].in[1] <== and[3][i].out; states[i+1][1] <== multi_or[2][i].out; state_changed[i].in[0] <== states[i+1][1]; - eq[106][i] = IsEqual(); - eq[106][i].in[0] <== in[i]; - eq[106][i].in[1] <== 64; + eq[83][i] = IsEqual(); + eq[83][i].in[0] <== in[i]; + eq[83][i].in[1] <== 64; and[4][i] = AND(); and[4][i].a <== states[i][1]; - and[4][i].b <== eq[106][i].out; + and[4][i].b <== eq[83][i].out; states[i+1][2] <== and[4][i].out; state_changed[i].in[1] <== states[i+1][2]; lt[4][i] = LessEqThan(8); - lt[4][i].in[0] <== 65; + lt[4][i].in[0] <== 97; lt[4][i].in[1] <== in[i]; lt[5][i] = LessEqThan(8); lt[5][i].in[0] <== in[i]; - lt[5][i].in[1] <== 90; + lt[5][i].in[1] <== 122; and[5][i] = AND(); and[5][i].a <== lt[4][i].out; and[5][i].b <== lt[5][i].out; - lt[6][i] = LessEqThan(8); - lt[6][i].in[0] <== 97; - lt[6][i].in[1] <== in[i]; - lt[7][i] = LessEqThan(8); - lt[7][i].in[0] <== in[i]; - lt[7][i].in[1] <== 122; and[6][i] = AND(); - and[6][i].a <== lt[6][i].out; - and[6][i].b <== lt[7][i].out; - eq[107][i] = IsEqual(); - eq[107][i].in[0] <== in[i]; - eq[107][i].in[1] <== 45; - eq[108][i] = IsEqual(); - eq[108][i].in[0] <== in[i]; - eq[108][i].in[1] <== 46; - eq[109][i] = IsEqual(); - eq[109][i].in[0] <== in[i]; - eq[109][i].in[1] <== 48; - eq[110][i] = IsEqual(); - eq[110][i].in[0] <== in[i]; - eq[110][i].in[1] <== 49; - eq[111][i] = IsEqual(); - eq[111][i].in[0] <== in[i]; - eq[111][i].in[1] <== 50; - eq[112][i] = IsEqual(); - eq[112][i].in[0] <== in[i]; - eq[112][i].in[1] <== 51; - eq[113][i] = IsEqual(); - eq[113][i].in[0] <== in[i]; - eq[113][i].in[1] <== 52; - eq[114][i] = IsEqual(); - eq[114][i].in[0] <== in[i]; - eq[114][i].in[1] <== 53; - eq[115][i] = IsEqual(); - eq[115][i].in[0] <== in[i]; - eq[115][i].in[1] <== 54; - eq[116][i] = IsEqual(); - eq[116][i].in[0] <== in[i]; - eq[116][i].in[1] <== 55; - eq[117][i] = IsEqual(); - eq[117][i].in[0] <== in[i]; - eq[117][i].in[1] <== 56; - eq[118][i] = IsEqual(); - eq[118][i].in[0] <== in[i]; - eq[118][i].in[1] <== 57; - and[7][i] = AND(); - and[7][i].a <== states[i][2]; + and[6][i].a <== states[i][2]; multi_or[3][i] = MultiOR(14); - multi_or[3][i].in[0] <== and[5][i].out; - multi_or[3][i].in[1] <== and[6][i].out; - multi_or[3][i].in[2] <== eq[107][i].out; - multi_or[3][i].in[3] <== eq[108][i].out; - multi_or[3][i].in[4] <== eq[109][i].out; - multi_or[3][i].in[5] <== eq[110][i].out; - multi_or[3][i].in[6] <== eq[111][i].out; - multi_or[3][i].in[7] <== eq[112][i].out; - multi_or[3][i].in[8] <== eq[113][i].out; - multi_or[3][i].in[9] <== eq[114][i].out; - multi_or[3][i].in[10] <== eq[115][i].out; - multi_or[3][i].in[11] <== eq[116][i].out; - multi_or[3][i].in[12] <== eq[117][i].out; - multi_or[3][i].in[13] <== eq[118][i].out; + multi_or[3][i].in[0] <== and[0][i].out; + multi_or[3][i].in[1] <== and[5][i].out; + multi_or[3][i].in[2] <== eq[8][i].out; + multi_or[3][i].in[3] <== eq[9][i].out; + multi_or[3][i].in[4] <== eq[11][i].out; + multi_or[3][i].in[5] <== eq[12][i].out; + multi_or[3][i].in[6] <== eq[13][i].out; + multi_or[3][i].in[7] <== eq[14][i].out; + multi_or[3][i].in[8] <== eq[15][i].out; + multi_or[3][i].in[9] <== eq[16][i].out; + multi_or[3][i].in[10] <== eq[17][i].out; + multi_or[3][i].in[11] <== eq[18][i].out; + multi_or[3][i].in[12] <== eq[19][i].out; + multi_or[3][i].in[13] <== eq[20][i].out; + and[6][i].b <== multi_or[3][i].out; + and[7][i] = AND(); + and[7][i].a <== states[i][3]; and[7][i].b <== multi_or[3][i].out; - lt[8][i] = LessEqThan(8); - lt[8][i].in[0] <== 65; - lt[8][i].in[1] <== in[i]; - lt[9][i] = LessEqThan(8); - lt[9][i].in[0] <== in[i]; - lt[9][i].in[1] <== 90; - and[8][i] = AND(); - and[8][i].a <== lt[8][i].out; - and[8][i].b <== lt[9][i].out; - lt[10][i] = LessEqThan(8); - lt[10][i].in[0] <== 97; - lt[10][i].in[1] <== in[i]; - lt[11][i] = LessEqThan(8); - lt[11][i].in[0] <== in[i]; - lt[11][i].in[1] <== 122; - and[9][i] = AND(); - and[9][i].a <== lt[10][i].out; - and[9][i].b <== lt[11][i].out; - eq[119][i] = IsEqual(); - eq[119][i].in[0] <== in[i]; - eq[119][i].in[1] <== 45; - eq[120][i] = IsEqual(); - eq[120][i].in[0] <== in[i]; - eq[120][i].in[1] <== 46; - eq[121][i] = IsEqual(); - eq[121][i].in[0] <== in[i]; - eq[121][i].in[1] <== 48; - eq[122][i] = IsEqual(); - eq[122][i].in[0] <== in[i]; - eq[122][i].in[1] <== 49; - eq[123][i] = IsEqual(); - eq[123][i].in[0] <== in[i]; - eq[123][i].in[1] <== 50; - eq[124][i] = IsEqual(); - eq[124][i].in[0] <== in[i]; - eq[124][i].in[1] <== 51; - eq[125][i] = IsEqual(); - eq[125][i].in[0] <== in[i]; - eq[125][i].in[1] <== 52; - eq[126][i] = IsEqual(); - eq[126][i].in[0] <== in[i]; - eq[126][i].in[1] <== 53; - eq[127][i] = IsEqual(); - eq[127][i].in[0] <== in[i]; - eq[127][i].in[1] <== 54; - eq[128][i] = IsEqual(); - eq[128][i].in[0] <== in[i]; - eq[128][i].in[1] <== 55; - eq[129][i] = IsEqual(); - eq[129][i].in[0] <== in[i]; - eq[129][i].in[1] <== 56; - eq[130][i] = IsEqual(); - eq[130][i].in[0] <== in[i]; - eq[130][i].in[1] <== 57; - and[10][i] = AND(); - and[10][i].a <== states[i][3]; - multi_or[4][i] = MultiOR(14); - multi_or[4][i].in[0] <== and[8][i].out; - multi_or[4][i].in[1] <== and[9][i].out; - multi_or[4][i].in[2] <== eq[119][i].out; - multi_or[4][i].in[3] <== eq[120][i].out; - multi_or[4][i].in[4] <== eq[121][i].out; - multi_or[4][i].in[5] <== eq[122][i].out; - multi_or[4][i].in[6] <== eq[123][i].out; - multi_or[4][i].in[7] <== eq[124][i].out; - multi_or[4][i].in[8] <== eq[125][i].out; - multi_or[4][i].in[9] <== eq[126][i].out; - multi_or[4][i].in[10] <== eq[127][i].out; - multi_or[4][i].in[11] <== eq[128][i].out; - multi_or[4][i].in[12] <== eq[129][i].out; - multi_or[4][i].in[13] <== eq[130][i].out; - and[10][i].b <== multi_or[4][i].out; - multi_or[5][i] = MultiOR(2); - multi_or[5][i].in[0] <== and[7][i].out; - multi_or[5][i].in[1] <== and[10][i].out; - states[i+1][3] <== multi_or[5][i].out; + multi_or[4][i] = MultiOR(2); + multi_or[4][i].in[0] <== and[6][i].out; + multi_or[4][i].in[1] <== and[7][i].out; + states[i+1][3] <== multi_or[4][i].out; state_changed[i].in[2] <== states[i+1][3]; states[i+1][0] <== 1 - state_changed[i].out; } diff --git a/packages/circom/circuits/common/from_all_regex.circom b/packages/circom/circuits/common/from_all_regex.circom index 66cf2e8..0a05e24 100644 --- a/packages/circom/circuits/common/from_all_regex.circom +++ b/packages/circom/circuits/common/from_all_regex.circom @@ -13,10 +13,10 @@ template FromAllRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[35][num_bytes]; - component lt[4][num_bytes]; - component and[15][num_bytes]; - component multi_or[5][num_bytes]; + component eq[20][num_bytes]; + component lt[2][num_bytes]; + component and[14][num_bytes]; + component multi_or[4][num_bytes]; signal states[num_bytes+1][11]; component state_changed[num_bytes]; @@ -89,162 +89,94 @@ template FromAllRegex(msg_bytes) { multi_or[0][i].in[11] <== eq[10][i].out; multi_or[0][i].in[12] <== eq[11][i].out; and[1][i].b <== multi_or[0][i].out; - lt[2][i] = LessEqThan(8); - lt[2][i].in[0] <== 14; - lt[2][i].in[1] <== in[i]; - lt[3][i] = LessEqThan(8); - lt[3][i].in[0] <== in[i]; - lt[3][i].in[1] <== 254; and[2][i] = AND(); - and[2][i].a <== lt[2][i].out; - and[2][i].b <== lt[3][i].out; + and[2][i].a <== states[i][8]; + and[2][i].b <== multi_or[0][i].out; + multi_or[1][i] = MultiOR(2); + multi_or[1][i].in[0] <== and[1][i].out; + multi_or[1][i].in[1] <== and[2][i].out; + states[i+1][1] <== multi_or[1][i].out; + state_changed[i].in[0] <== states[i+1][1]; eq[12][i] = IsEqual(); eq[12][i].in[0] <== in[i]; - eq[12][i].in[1] <== 0; + eq[12][i].in[1] <== 13; + and[3][i] = AND(); + and[3][i].a <== states[i][0]; + and[3][i].b <== eq[12][i].out; + and[4][i] = AND(); + and[4][i].a <== states[i][3]; + and[4][i].b <== eq[12][i].out; + multi_or[2][i] = MultiOR(2); + multi_or[2][i].in[0] <== and[3][i].out; + multi_or[2][i].in[1] <== and[4][i].out; + states[i+1][2] <== multi_or[2][i].out; + state_changed[i].in[1] <== states[i+1][2]; eq[13][i] = IsEqual(); eq[13][i].in[0] <== in[i]; - eq[13][i].in[1] <== 1; + eq[13][i].in[1] <== 255; + and[5][i] = AND(); + and[5][i].a <== states[i][0]; + and[5][i].b <== eq[13][i].out; eq[14][i] = IsEqual(); eq[14][i].in[0] <== in[i]; - eq[14][i].in[1] <== 2; + eq[14][i].in[1] <== 10; + and[6][i] = AND(); + and[6][i].a <== states[i][2]; + and[6][i].b <== eq[14][i].out; + multi_or[3][i] = MultiOR(2); + multi_or[3][i].in[0] <== and[5][i].out; + multi_or[3][i].in[1] <== and[6][i].out; + states[i+1][3] <== multi_or[3][i].out; + state_changed[i].in[2] <== states[i+1][3]; eq[15][i] = IsEqual(); eq[15][i].in[0] <== in[i]; - eq[15][i].in[1] <== 3; + eq[15][i].in[1] <== 102; + and[7][i] = AND(); + and[7][i].a <== states[i][3]; + and[7][i].b <== eq[15][i].out; + states[i+1][4] <== and[7][i].out; + state_changed[i].in[3] <== states[i+1][4]; eq[16][i] = IsEqual(); eq[16][i].in[0] <== in[i]; - eq[16][i].in[1] <== 4; + eq[16][i].in[1] <== 114; + and[8][i] = AND(); + and[8][i].a <== states[i][4]; + and[8][i].b <== eq[16][i].out; + states[i+1][5] <== and[8][i].out; + state_changed[i].in[4] <== states[i+1][5]; eq[17][i] = IsEqual(); eq[17][i].in[0] <== in[i]; - eq[17][i].in[1] <== 5; + eq[17][i].in[1] <== 111; + and[9][i] = AND(); + and[9][i].a <== states[i][5]; + and[9][i].b <== eq[17][i].out; + states[i+1][6] <== and[9][i].out; + state_changed[i].in[5] <== states[i+1][6]; eq[18][i] = IsEqual(); eq[18][i].in[0] <== in[i]; - eq[18][i].in[1] <== 6; + eq[18][i].in[1] <== 109; + and[10][i] = AND(); + and[10][i].a <== states[i][6]; + and[10][i].b <== eq[18][i].out; + states[i+1][7] <== and[10][i].out; + state_changed[i].in[6] <== states[i+1][7]; eq[19][i] = IsEqual(); eq[19][i].in[0] <== in[i]; - eq[19][i].in[1] <== 7; - eq[20][i] = IsEqual(); - eq[20][i].in[0] <== in[i]; - eq[20][i].in[1] <== 8; - eq[21][i] = IsEqual(); - eq[21][i].in[0] <== in[i]; - eq[21][i].in[1] <== 9; - eq[22][i] = IsEqual(); - eq[22][i].in[0] <== in[i]; - eq[22][i].in[1] <== 11; - eq[23][i] = IsEqual(); - eq[23][i].in[0] <== in[i]; - eq[23][i].in[1] <== 12; - and[3][i] = AND(); - and[3][i].a <== states[i][8]; - multi_or[1][i] = MultiOR(13); - multi_or[1][i].in[0] <== and[2][i].out; - multi_or[1][i].in[1] <== eq[12][i].out; - multi_or[1][i].in[2] <== eq[13][i].out; - multi_or[1][i].in[3] <== eq[14][i].out; - multi_or[1][i].in[4] <== eq[15][i].out; - multi_or[1][i].in[5] <== eq[16][i].out; - multi_or[1][i].in[6] <== eq[17][i].out; - multi_or[1][i].in[7] <== eq[18][i].out; - multi_or[1][i].in[8] <== eq[19][i].out; - multi_or[1][i].in[9] <== eq[20][i].out; - multi_or[1][i].in[10] <== eq[21][i].out; - multi_or[1][i].in[11] <== eq[22][i].out; - multi_or[1][i].in[12] <== eq[23][i].out; - and[3][i].b <== multi_or[1][i].out; - multi_or[2][i] = MultiOR(2); - multi_or[2][i].in[0] <== and[1][i].out; - multi_or[2][i].in[1] <== and[3][i].out; - states[i+1][1] <== multi_or[2][i].out; - state_changed[i].in[0] <== states[i+1][1]; - eq[24][i] = IsEqual(); - eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 13; - and[4][i] = AND(); - and[4][i].a <== states[i][0]; - and[4][i].b <== eq[24][i].out; - eq[25][i] = IsEqual(); - eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 13; - and[5][i] = AND(); - and[5][i].a <== states[i][3]; - and[5][i].b <== eq[25][i].out; - multi_or[3][i] = MultiOR(2); - multi_or[3][i].in[0] <== and[4][i].out; - multi_or[3][i].in[1] <== and[5][i].out; - states[i+1][2] <== multi_or[3][i].out; - state_changed[i].in[1] <== states[i+1][2]; - eq[26][i] = IsEqual(); - eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 255; - and[6][i] = AND(); - and[6][i].a <== states[i][0]; - and[6][i].b <== eq[26][i].out; - eq[27][i] = IsEqual(); - eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 10; - and[7][i] = AND(); - and[7][i].a <== states[i][2]; - and[7][i].b <== eq[27][i].out; - multi_or[4][i] = MultiOR(2); - multi_or[4][i].in[0] <== and[6][i].out; - multi_or[4][i].in[1] <== and[7][i].out; - states[i+1][3] <== multi_or[4][i].out; - state_changed[i].in[2] <== states[i+1][3]; - eq[28][i] = IsEqual(); - eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 102; - and[8][i] = AND(); - and[8][i].a <== states[i][3]; - and[8][i].b <== eq[28][i].out; - states[i+1][4] <== and[8][i].out; - state_changed[i].in[3] <== states[i+1][4]; - eq[29][i] = IsEqual(); - eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 114; - and[9][i] = AND(); - and[9][i].a <== states[i][4]; - and[9][i].b <== eq[29][i].out; - states[i+1][5] <== and[9][i].out; - state_changed[i].in[4] <== states[i+1][5]; - eq[30][i] = IsEqual(); - eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 111; - and[10][i] = AND(); - and[10][i].a <== states[i][5]; - and[10][i].b <== eq[30][i].out; - states[i+1][6] <== and[10][i].out; - state_changed[i].in[5] <== states[i+1][6]; - eq[31][i] = IsEqual(); - eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 109; + eq[19][i].in[1] <== 58; and[11][i] = AND(); - and[11][i].a <== states[i][6]; - and[11][i].b <== eq[31][i].out; - states[i+1][7] <== and[11][i].out; - state_changed[i].in[6] <== states[i+1][7]; - eq[32][i] = IsEqual(); - eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 58; - and[12][i] = AND(); - and[12][i].a <== states[i][7]; - and[12][i].b <== eq[32][i].out; - states[i+1][8] <== and[12][i].out; + and[11][i].a <== states[i][7]; + and[11][i].b <== eq[19][i].out; + states[i+1][8] <== and[11][i].out; state_changed[i].in[7] <== states[i+1][8]; - eq[33][i] = IsEqual(); - eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 13; - and[13][i] = AND(); - and[13][i].a <== states[i][1]; - and[13][i].b <== eq[33][i].out; - states[i+1][9] <== and[13][i].out; + and[12][i] = AND(); + and[12][i].a <== states[i][1]; + and[12][i].b <== eq[12][i].out; + states[i+1][9] <== and[12][i].out; state_changed[i].in[8] <== states[i+1][9]; - eq[34][i] = IsEqual(); - eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 10; - and[14][i] = AND(); - and[14][i].a <== states[i][9]; - and[14][i].b <== eq[34][i].out; - states[i+1][10] <== and[14][i].out; + and[13][i] = AND(); + and[13][i].a <== states[i][9]; + and[13][i].b <== eq[14][i].out; + states[i+1][10] <== and[13][i].out; state_changed[i].in[9] <== states[i+1][10]; states[i+1][0] <== 1 - state_changed[i].out; } diff --git a/packages/circom/circuits/common/message_id_regex.circom b/packages/circom/circuits/common/message_id_regex.circom index 59efbfd..f89299e 100644 --- a/packages/circom/circuits/common/message_id_regex.circom +++ b/packages/circom/circuits/common/message_id_regex.circom @@ -13,10 +13,10 @@ template MessageIdRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[49][num_bytes]; - component lt[8][num_bytes]; - component and[25][num_bytes]; - component multi_or[5][num_bytes]; + component eq[28][num_bytes]; + component lt[4][num_bytes]; + component and[23][num_bytes]; + component multi_or[4][num_bytes]; signal states[num_bytes+1][19]; component state_changed[num_bytes]; @@ -111,248 +111,149 @@ template MessageIdRegex(msg_bytes) { multi_or[0][i].in[15] <== eq[13][i].out; multi_or[0][i].in[16] <== eq[14][i].out; and[2][i].b <== multi_or[0][i].out; - lt[4][i] = LessEqThan(8); - lt[4][i].in[0] <== 64; - lt[4][i].in[1] <== in[i]; - lt[5][i] = LessEqThan(8); - lt[5][i].in[0] <== in[i]; - lt[5][i].in[1] <== 90; and[3][i] = AND(); - and[3][i].a <== lt[4][i].out; - and[3][i].b <== lt[5][i].out; - lt[6][i] = LessEqThan(8); - lt[6][i].in[0] <== 97; - lt[6][i].in[1] <== in[i]; - lt[7][i] = LessEqThan(8); - lt[7][i].in[0] <== in[i]; - lt[7][i].in[1] <== 122; - and[4][i] = AND(); - and[4][i].a <== lt[6][i].out; - and[4][i].b <== lt[7][i].out; + and[3][i].a <== states[i][18]; + and[3][i].b <== multi_or[0][i].out; + multi_or[1][i] = MultiOR(2); + multi_or[1][i].in[0] <== and[2][i].out; + multi_or[1][i].in[1] <== and[3][i].out; + states[i+1][1] <== multi_or[1][i].out; + state_changed[i].in[0] <== states[i+1][1]; eq[15][i] = IsEqual(); eq[15][i].in[0] <== in[i]; - eq[15][i].in[1] <== 43; + eq[15][i].in[1] <== 13; + and[4][i] = AND(); + and[4][i].a <== states[i][0]; + and[4][i].b <== eq[15][i].out; + and[5][i] = AND(); + and[5][i].a <== states[i][3]; + and[5][i].b <== eq[15][i].out; + multi_or[2][i] = MultiOR(2); + multi_or[2][i].in[0] <== and[4][i].out; + multi_or[2][i].in[1] <== and[5][i].out; + states[i+1][2] <== multi_or[2][i].out; + state_changed[i].in[1] <== states[i+1][2]; eq[16][i] = IsEqual(); eq[16][i].in[0] <== in[i]; - eq[16][i].in[1] <== 45; + eq[16][i].in[1] <== 255; + and[6][i] = AND(); + and[6][i].a <== states[i][0]; + and[6][i].b <== eq[16][i].out; eq[17][i] = IsEqual(); eq[17][i].in[0] <== in[i]; - eq[17][i].in[1] <== 46; + eq[17][i].in[1] <== 10; + and[7][i] = AND(); + and[7][i].a <== states[i][2]; + and[7][i].b <== eq[17][i].out; + multi_or[3][i] = MultiOR(2); + multi_or[3][i].in[0] <== and[6][i].out; + multi_or[3][i].in[1] <== and[7][i].out; + states[i+1][3] <== multi_or[3][i].out; + state_changed[i].in[2] <== states[i+1][3]; eq[18][i] = IsEqual(); eq[18][i].in[0] <== in[i]; - eq[18][i].in[1] <== 48; + eq[18][i].in[1] <== 62; + and[8][i] = AND(); + and[8][i].a <== states[i][1]; + and[8][i].b <== eq[18][i].out; + states[i+1][4] <== and[8][i].out; + state_changed[i].in[3] <== states[i+1][4]; eq[19][i] = IsEqual(); eq[19][i].in[0] <== in[i]; - eq[19][i].in[1] <== 49; + eq[19][i].in[1] <== 109; + and[9][i] = AND(); + and[9][i].a <== states[i][3]; + and[9][i].b <== eq[19][i].out; + states[i+1][5] <== and[9][i].out; + state_changed[i].in[4] <== states[i+1][5]; + and[10][i] = AND(); + and[10][i].a <== states[i][4]; + and[10][i].b <== eq[15][i].out; + states[i+1][6] <== and[10][i].out; + state_changed[i].in[5] <== states[i+1][6]; + and[11][i] = AND(); + and[11][i].a <== states[i][6]; + and[11][i].b <== eq[17][i].out; + states[i+1][7] <== and[11][i].out; + state_changed[i].in[6] <== states[i+1][7]; eq[20][i] = IsEqual(); eq[20][i].in[0] <== in[i]; - eq[20][i].in[1] <== 50; + eq[20][i].in[1] <== 101; + and[12][i] = AND(); + and[12][i].a <== states[i][5]; + and[12][i].b <== eq[20][i].out; + states[i+1][8] <== and[12][i].out; + state_changed[i].in[7] <== states[i+1][8]; eq[21][i] = IsEqual(); eq[21][i].in[0] <== in[i]; - eq[21][i].in[1] <== 51; + eq[21][i].in[1] <== 115; + and[13][i] = AND(); + and[13][i].a <== states[i][8]; + and[13][i].b <== eq[21][i].out; + states[i+1][9] <== and[13][i].out; + state_changed[i].in[8] <== states[i+1][9]; + and[14][i] = AND(); + and[14][i].a <== states[i][9]; + and[14][i].b <== eq[21][i].out; + states[i+1][10] <== and[14][i].out; + state_changed[i].in[9] <== states[i+1][10]; eq[22][i] = IsEqual(); eq[22][i].in[0] <== in[i]; - eq[22][i].in[1] <== 52; + eq[22][i].in[1] <== 97; + and[15][i] = AND(); + and[15][i].a <== states[i][10]; + and[15][i].b <== eq[22][i].out; + states[i+1][11] <== and[15][i].out; + state_changed[i].in[10] <== states[i+1][11]; eq[23][i] = IsEqual(); eq[23][i].in[0] <== in[i]; - eq[23][i].in[1] <== 53; + eq[23][i].in[1] <== 103; + and[16][i] = AND(); + and[16][i].a <== states[i][11]; + and[16][i].b <== eq[23][i].out; + states[i+1][12] <== and[16][i].out; + state_changed[i].in[11] <== states[i+1][12]; + and[17][i] = AND(); + and[17][i].a <== states[i][12]; + and[17][i].b <== eq[20][i].out; + states[i+1][13] <== and[17][i].out; + state_changed[i].in[12] <== states[i+1][13]; + and[18][i] = AND(); + and[18][i].a <== states[i][13]; + and[18][i].b <== eq[1][i].out; + states[i+1][14] <== and[18][i].out; + state_changed[i].in[13] <== states[i+1][14]; eq[24][i] = IsEqual(); eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 54; + eq[24][i].in[1] <== 105; + and[19][i] = AND(); + and[19][i].a <== states[i][14]; + and[19][i].b <== eq[24][i].out; + states[i+1][15] <== and[19][i].out; + state_changed[i].in[14] <== states[i+1][15]; eq[25][i] = IsEqual(); eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 55; + eq[25][i].in[1] <== 100; + and[20][i] = AND(); + and[20][i].a <== states[i][15]; + and[20][i].b <== eq[25][i].out; + states[i+1][16] <== and[20][i].out; + state_changed[i].in[15] <== states[i+1][16]; eq[26][i] = IsEqual(); eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 56; + eq[26][i].in[1] <== 58; + and[21][i] = AND(); + and[21][i].a <== states[i][16]; + and[21][i].b <== eq[26][i].out; + states[i+1][17] <== and[21][i].out; + state_changed[i].in[16] <== states[i+1][17]; eq[27][i] = IsEqual(); eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 57; - eq[28][i] = IsEqual(); - eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 61; - eq[29][i] = IsEqual(); - eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 95; - and[5][i] = AND(); - and[5][i].a <== states[i][18]; - multi_or[1][i] = MultiOR(17); - multi_or[1][i].in[0] <== and[3][i].out; - multi_or[1][i].in[1] <== and[4][i].out; - multi_or[1][i].in[2] <== eq[15][i].out; - multi_or[1][i].in[3] <== eq[16][i].out; - multi_or[1][i].in[4] <== eq[17][i].out; - multi_or[1][i].in[5] <== eq[18][i].out; - multi_or[1][i].in[6] <== eq[19][i].out; - multi_or[1][i].in[7] <== eq[20][i].out; - multi_or[1][i].in[8] <== eq[21][i].out; - multi_or[1][i].in[9] <== eq[22][i].out; - multi_or[1][i].in[10] <== eq[23][i].out; - multi_or[1][i].in[11] <== eq[24][i].out; - multi_or[1][i].in[12] <== eq[25][i].out; - multi_or[1][i].in[13] <== eq[26][i].out; - multi_or[1][i].in[14] <== eq[27][i].out; - multi_or[1][i].in[15] <== eq[28][i].out; - multi_or[1][i].in[16] <== eq[29][i].out; - and[5][i].b <== multi_or[1][i].out; - multi_or[2][i] = MultiOR(2); - multi_or[2][i].in[0] <== and[2][i].out; - multi_or[2][i].in[1] <== and[5][i].out; - states[i+1][1] <== multi_or[2][i].out; - state_changed[i].in[0] <== states[i+1][1]; - eq[30][i] = IsEqual(); - eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 13; - and[6][i] = AND(); - and[6][i].a <== states[i][0]; - and[6][i].b <== eq[30][i].out; - eq[31][i] = IsEqual(); - eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 13; - and[7][i] = AND(); - and[7][i].a <== states[i][3]; - and[7][i].b <== eq[31][i].out; - multi_or[3][i] = MultiOR(2); - multi_or[3][i].in[0] <== and[6][i].out; - multi_or[3][i].in[1] <== and[7][i].out; - states[i+1][2] <== multi_or[3][i].out; - state_changed[i].in[1] <== states[i+1][2]; - eq[32][i] = IsEqual(); - eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 255; - and[8][i] = AND(); - and[8][i].a <== states[i][0]; - and[8][i].b <== eq[32][i].out; - eq[33][i] = IsEqual(); - eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 10; - and[9][i] = AND(); - and[9][i].a <== states[i][2]; - and[9][i].b <== eq[33][i].out; - multi_or[4][i] = MultiOR(2); - multi_or[4][i].in[0] <== and[8][i].out; - multi_or[4][i].in[1] <== and[9][i].out; - states[i+1][3] <== multi_or[4][i].out; - state_changed[i].in[2] <== states[i+1][3]; - eq[34][i] = IsEqual(); - eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 62; - and[10][i] = AND(); - and[10][i].a <== states[i][1]; - and[10][i].b <== eq[34][i].out; - states[i+1][4] <== and[10][i].out; - state_changed[i].in[3] <== states[i+1][4]; - eq[35][i] = IsEqual(); - eq[35][i].in[0] <== in[i]; - eq[35][i].in[1] <== 109; - and[11][i] = AND(); - and[11][i].a <== states[i][3]; - and[11][i].b <== eq[35][i].out; - states[i+1][5] <== and[11][i].out; - state_changed[i].in[4] <== states[i+1][5]; - eq[36][i] = IsEqual(); - eq[36][i].in[0] <== in[i]; - eq[36][i].in[1] <== 13; - and[12][i] = AND(); - and[12][i].a <== states[i][4]; - and[12][i].b <== eq[36][i].out; - states[i+1][6] <== and[12][i].out; - state_changed[i].in[5] <== states[i+1][6]; - eq[37][i] = IsEqual(); - eq[37][i].in[0] <== in[i]; - eq[37][i].in[1] <== 10; - and[13][i] = AND(); - and[13][i].a <== states[i][6]; - and[13][i].b <== eq[37][i].out; - states[i+1][7] <== and[13][i].out; - state_changed[i].in[6] <== states[i+1][7]; - eq[38][i] = IsEqual(); - eq[38][i].in[0] <== in[i]; - eq[38][i].in[1] <== 101; - and[14][i] = AND(); - and[14][i].a <== states[i][5]; - and[14][i].b <== eq[38][i].out; - states[i+1][8] <== and[14][i].out; - state_changed[i].in[7] <== states[i+1][8]; - eq[39][i] = IsEqual(); - eq[39][i].in[0] <== in[i]; - eq[39][i].in[1] <== 115; - and[15][i] = AND(); - and[15][i].a <== states[i][8]; - and[15][i].b <== eq[39][i].out; - states[i+1][9] <== and[15][i].out; - state_changed[i].in[8] <== states[i+1][9]; - eq[40][i] = IsEqual(); - eq[40][i].in[0] <== in[i]; - eq[40][i].in[1] <== 115; - and[16][i] = AND(); - and[16][i].a <== states[i][9]; - and[16][i].b <== eq[40][i].out; - states[i+1][10] <== and[16][i].out; - state_changed[i].in[9] <== states[i+1][10]; - eq[41][i] = IsEqual(); - eq[41][i].in[0] <== in[i]; - eq[41][i].in[1] <== 97; - and[17][i] = AND(); - and[17][i].a <== states[i][10]; - and[17][i].b <== eq[41][i].out; - states[i+1][11] <== and[17][i].out; - state_changed[i].in[10] <== states[i+1][11]; - eq[42][i] = IsEqual(); - eq[42][i].in[0] <== in[i]; - eq[42][i].in[1] <== 103; - and[18][i] = AND(); - and[18][i].a <== states[i][11]; - and[18][i].b <== eq[42][i].out; - states[i+1][12] <== and[18][i].out; - state_changed[i].in[11] <== states[i+1][12]; - eq[43][i] = IsEqual(); - eq[43][i].in[0] <== in[i]; - eq[43][i].in[1] <== 101; - and[19][i] = AND(); - and[19][i].a <== states[i][12]; - and[19][i].b <== eq[43][i].out; - states[i+1][13] <== and[19][i].out; - state_changed[i].in[12] <== states[i+1][13]; - eq[44][i] = IsEqual(); - eq[44][i].in[0] <== in[i]; - eq[44][i].in[1] <== 45; - and[20][i] = AND(); - and[20][i].a <== states[i][13]; - and[20][i].b <== eq[44][i].out; - states[i+1][14] <== and[20][i].out; - state_changed[i].in[13] <== states[i+1][14]; - eq[45][i] = IsEqual(); - eq[45][i].in[0] <== in[i]; - eq[45][i].in[1] <== 105; - and[21][i] = AND(); - and[21][i].a <== states[i][14]; - and[21][i].b <== eq[45][i].out; - states[i+1][15] <== and[21][i].out; - state_changed[i].in[14] <== states[i+1][15]; - eq[46][i] = IsEqual(); - eq[46][i].in[0] <== in[i]; - eq[46][i].in[1] <== 100; + eq[27][i].in[1] <== 60; and[22][i] = AND(); - and[22][i].a <== states[i][15]; - and[22][i].b <== eq[46][i].out; - states[i+1][16] <== and[22][i].out; - state_changed[i].in[15] <== states[i+1][16]; - eq[47][i] = IsEqual(); - eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 58; - and[23][i] = AND(); - and[23][i].a <== states[i][16]; - and[23][i].b <== eq[47][i].out; - states[i+1][17] <== and[23][i].out; - state_changed[i].in[16] <== states[i+1][17]; - eq[48][i] = IsEqual(); - eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 60; - and[24][i] = AND(); - and[24][i].a <== states[i][17]; - and[24][i].b <== eq[48][i].out; - states[i+1][18] <== and[24][i].out; + and[22][i].a <== states[i][17]; + and[22][i].b <== eq[27][i].out; + states[i+1][18] <== and[22][i].out; state_changed[i].in[17] <== states[i+1][18]; states[i+1][0] <== 1 - state_changed[i].out; } diff --git a/packages/circom/circuits/common/subject_all_regex.circom b/packages/circom/circuits/common/subject_all_regex.circom index d03c6a1..4d5aaa5 100644 --- a/packages/circom/circuits/common/subject_all_regex.circom +++ b/packages/circom/circuits/common/subject_all_regex.circom @@ -13,10 +13,10 @@ template SubjectAllRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[38][num_bytes]; - component lt[4][num_bytes]; - component and[18][num_bytes]; - component multi_or[5][num_bytes]; + component eq[23][num_bytes]; + component lt[2][num_bytes]; + component and[17][num_bytes]; + component multi_or[4][num_bytes]; signal states[num_bytes+1][14]; component state_changed[num_bytes]; @@ -89,186 +89,118 @@ template SubjectAllRegex(msg_bytes) { multi_or[0][i].in[11] <== eq[10][i].out; multi_or[0][i].in[12] <== eq[11][i].out; and[1][i].b <== multi_or[0][i].out; - lt[2][i] = LessEqThan(8); - lt[2][i].in[0] <== 14; - lt[2][i].in[1] <== in[i]; - lt[3][i] = LessEqThan(8); - lt[3][i].in[0] <== in[i]; - lt[3][i].in[1] <== 254; and[2][i] = AND(); - and[2][i].a <== lt[2][i].out; - and[2][i].b <== lt[3][i].out; + and[2][i].a <== states[i][12]; + and[2][i].b <== multi_or[0][i].out; + multi_or[1][i] = MultiOR(2); + multi_or[1][i].in[0] <== and[1][i].out; + multi_or[1][i].in[1] <== and[2][i].out; + states[i+1][1] <== multi_or[1][i].out; + state_changed[i].in[0] <== states[i+1][1]; eq[12][i] = IsEqual(); eq[12][i].in[0] <== in[i]; - eq[12][i].in[1] <== 0; + eq[12][i].in[1] <== 13; + and[3][i] = AND(); + and[3][i].a <== states[i][0]; + and[3][i].b <== eq[12][i].out; + and[4][i] = AND(); + and[4][i].a <== states[i][3]; + and[4][i].b <== eq[12][i].out; + multi_or[2][i] = MultiOR(2); + multi_or[2][i].in[0] <== and[3][i].out; + multi_or[2][i].in[1] <== and[4][i].out; + states[i+1][2] <== multi_or[2][i].out; + state_changed[i].in[1] <== states[i+1][2]; eq[13][i] = IsEqual(); eq[13][i].in[0] <== in[i]; - eq[13][i].in[1] <== 1; + eq[13][i].in[1] <== 255; + and[5][i] = AND(); + and[5][i].a <== states[i][0]; + and[5][i].b <== eq[13][i].out; eq[14][i] = IsEqual(); eq[14][i].in[0] <== in[i]; - eq[14][i].in[1] <== 2; + eq[14][i].in[1] <== 10; + and[6][i] = AND(); + and[6][i].a <== states[i][2]; + and[6][i].b <== eq[14][i].out; + multi_or[3][i] = MultiOR(2); + multi_or[3][i].in[0] <== and[5][i].out; + multi_or[3][i].in[1] <== and[6][i].out; + states[i+1][3] <== multi_or[3][i].out; + state_changed[i].in[2] <== states[i+1][3]; eq[15][i] = IsEqual(); eq[15][i].in[0] <== in[i]; - eq[15][i].in[1] <== 3; + eq[15][i].in[1] <== 115; + and[7][i] = AND(); + and[7][i].a <== states[i][3]; + and[7][i].b <== eq[15][i].out; + states[i+1][4] <== and[7][i].out; + state_changed[i].in[3] <== states[i+1][4]; eq[16][i] = IsEqual(); eq[16][i].in[0] <== in[i]; - eq[16][i].in[1] <== 4; + eq[16][i].in[1] <== 117; + and[8][i] = AND(); + and[8][i].a <== states[i][4]; + and[8][i].b <== eq[16][i].out; + states[i+1][5] <== and[8][i].out; + state_changed[i].in[4] <== states[i+1][5]; eq[17][i] = IsEqual(); eq[17][i].in[0] <== in[i]; - eq[17][i].in[1] <== 5; + eq[17][i].in[1] <== 98; + and[9][i] = AND(); + and[9][i].a <== states[i][5]; + and[9][i].b <== eq[17][i].out; + states[i+1][6] <== and[9][i].out; + state_changed[i].in[5] <== states[i+1][6]; eq[18][i] = IsEqual(); eq[18][i].in[0] <== in[i]; - eq[18][i].in[1] <== 6; + eq[18][i].in[1] <== 106; + and[10][i] = AND(); + and[10][i].a <== states[i][6]; + and[10][i].b <== eq[18][i].out; + states[i+1][7] <== and[10][i].out; + state_changed[i].in[6] <== states[i+1][7]; eq[19][i] = IsEqual(); eq[19][i].in[0] <== in[i]; - eq[19][i].in[1] <== 7; + eq[19][i].in[1] <== 101; + and[11][i] = AND(); + and[11][i].a <== states[i][7]; + and[11][i].b <== eq[19][i].out; + states[i+1][8] <== and[11][i].out; + state_changed[i].in[7] <== states[i+1][8]; eq[20][i] = IsEqual(); eq[20][i].in[0] <== in[i]; - eq[20][i].in[1] <== 8; + eq[20][i].in[1] <== 99; + and[12][i] = AND(); + and[12][i].a <== states[i][8]; + and[12][i].b <== eq[20][i].out; + states[i+1][9] <== and[12][i].out; + state_changed[i].in[8] <== states[i+1][9]; + and[13][i] = AND(); + and[13][i].a <== states[i][1]; + and[13][i].b <== eq[12][i].out; + states[i+1][10] <== and[13][i].out; + state_changed[i].in[9] <== states[i+1][10]; eq[21][i] = IsEqual(); eq[21][i].in[0] <== in[i]; - eq[21][i].in[1] <== 9; + eq[21][i].in[1] <== 116; + and[14][i] = AND(); + and[14][i].a <== states[i][9]; + and[14][i].b <== eq[21][i].out; + states[i+1][11] <== and[14][i].out; + state_changed[i].in[10] <== states[i+1][11]; eq[22][i] = IsEqual(); eq[22][i].in[0] <== in[i]; - eq[22][i].in[1] <== 11; - eq[23][i] = IsEqual(); - eq[23][i].in[0] <== in[i]; - eq[23][i].in[1] <== 12; - and[3][i] = AND(); - and[3][i].a <== states[i][12]; - multi_or[1][i] = MultiOR(13); - multi_or[1][i].in[0] <== and[2][i].out; - multi_or[1][i].in[1] <== eq[12][i].out; - multi_or[1][i].in[2] <== eq[13][i].out; - multi_or[1][i].in[3] <== eq[14][i].out; - multi_or[1][i].in[4] <== eq[15][i].out; - multi_or[1][i].in[5] <== eq[16][i].out; - multi_or[1][i].in[6] <== eq[17][i].out; - multi_or[1][i].in[7] <== eq[18][i].out; - multi_or[1][i].in[8] <== eq[19][i].out; - multi_or[1][i].in[9] <== eq[20][i].out; - multi_or[1][i].in[10] <== eq[21][i].out; - multi_or[1][i].in[11] <== eq[22][i].out; - multi_or[1][i].in[12] <== eq[23][i].out; - and[3][i].b <== multi_or[1][i].out; - multi_or[2][i] = MultiOR(2); - multi_or[2][i].in[0] <== and[1][i].out; - multi_or[2][i].in[1] <== and[3][i].out; - states[i+1][1] <== multi_or[2][i].out; - state_changed[i].in[0] <== states[i+1][1]; - eq[24][i] = IsEqual(); - eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 13; - and[4][i] = AND(); - and[4][i].a <== states[i][0]; - and[4][i].b <== eq[24][i].out; - eq[25][i] = IsEqual(); - eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 13; - and[5][i] = AND(); - and[5][i].a <== states[i][3]; - and[5][i].b <== eq[25][i].out; - multi_or[3][i] = MultiOR(2); - multi_or[3][i].in[0] <== and[4][i].out; - multi_or[3][i].in[1] <== and[5][i].out; - states[i+1][2] <== multi_or[3][i].out; - state_changed[i].in[1] <== states[i+1][2]; - eq[26][i] = IsEqual(); - eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 255; - and[6][i] = AND(); - and[6][i].a <== states[i][0]; - and[6][i].b <== eq[26][i].out; - eq[27][i] = IsEqual(); - eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 10; - and[7][i] = AND(); - and[7][i].a <== states[i][2]; - and[7][i].b <== eq[27][i].out; - multi_or[4][i] = MultiOR(2); - multi_or[4][i].in[0] <== and[6][i].out; - multi_or[4][i].in[1] <== and[7][i].out; - states[i+1][3] <== multi_or[4][i].out; - state_changed[i].in[2] <== states[i+1][3]; - eq[28][i] = IsEqual(); - eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 115; - and[8][i] = AND(); - and[8][i].a <== states[i][3]; - and[8][i].b <== eq[28][i].out; - states[i+1][4] <== and[8][i].out; - state_changed[i].in[3] <== states[i+1][4]; - eq[29][i] = IsEqual(); - eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 117; - and[9][i] = AND(); - and[9][i].a <== states[i][4]; - and[9][i].b <== eq[29][i].out; - states[i+1][5] <== and[9][i].out; - state_changed[i].in[4] <== states[i+1][5]; - eq[30][i] = IsEqual(); - eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 98; - and[10][i] = AND(); - and[10][i].a <== states[i][5]; - and[10][i].b <== eq[30][i].out; - states[i+1][6] <== and[10][i].out; - state_changed[i].in[5] <== states[i+1][6]; - eq[31][i] = IsEqual(); - eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 106; - and[11][i] = AND(); - and[11][i].a <== states[i][6]; - and[11][i].b <== eq[31][i].out; - states[i+1][7] <== and[11][i].out; - state_changed[i].in[6] <== states[i+1][7]; - eq[32][i] = IsEqual(); - eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 101; - and[12][i] = AND(); - and[12][i].a <== states[i][7]; - and[12][i].b <== eq[32][i].out; - states[i+1][8] <== and[12][i].out; - state_changed[i].in[7] <== states[i+1][8]; - eq[33][i] = IsEqual(); - eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 99; - and[13][i] = AND(); - and[13][i].a <== states[i][8]; - and[13][i].b <== eq[33][i].out; - states[i+1][9] <== and[13][i].out; - state_changed[i].in[8] <== states[i+1][9]; - eq[34][i] = IsEqual(); - eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 13; - and[14][i] = AND(); - and[14][i].a <== states[i][1]; - and[14][i].b <== eq[34][i].out; - states[i+1][10] <== and[14][i].out; - state_changed[i].in[9] <== states[i+1][10]; - eq[35][i] = IsEqual(); - eq[35][i].in[0] <== in[i]; - eq[35][i].in[1] <== 116; + eq[22][i].in[1] <== 58; and[15][i] = AND(); - and[15][i].a <== states[i][9]; - and[15][i].b <== eq[35][i].out; - states[i+1][11] <== and[15][i].out; - state_changed[i].in[10] <== states[i+1][11]; - eq[36][i] = IsEqual(); - eq[36][i].in[0] <== in[i]; - eq[36][i].in[1] <== 58; - and[16][i] = AND(); - and[16][i].a <== states[i][11]; - and[16][i].b <== eq[36][i].out; - states[i+1][12] <== and[16][i].out; + and[15][i].a <== states[i][11]; + and[15][i].b <== eq[22][i].out; + states[i+1][12] <== and[15][i].out; state_changed[i].in[11] <== states[i+1][12]; - eq[37][i] = IsEqual(); - eq[37][i].in[0] <== in[i]; - eq[37][i].in[1] <== 10; - and[17][i] = AND(); - and[17][i].a <== states[i][10]; - and[17][i].b <== eq[37][i].out; - states[i+1][13] <== and[17][i].out; + and[16][i] = AND(); + and[16][i].a <== states[i][10]; + and[16][i].b <== eq[14][i].out; + states[i+1][13] <== and[16][i].out; state_changed[i].in[12] <== states[i+1][13]; states[i+1][0] <== 1 - state_changed[i].out; } diff --git a/packages/circom/circuits/common/timestamp_regex.circom b/packages/circom/circuits/common/timestamp_regex.circom index 9c73593..5f2e99d 100644 --- a/packages/circom/circuits/common/timestamp_regex.circom +++ b/packages/circom/circuits/common/timestamp_regex.circom @@ -13,10 +13,10 @@ template TimestampRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[54][num_bytes]; - component lt[24][num_bytes]; - component and[48][num_bytes]; - component multi_or[13][num_bytes]; + component eq[35][num_bytes]; + component lt[10][num_bytes]; + component and[41][num_bytes]; + component multi_or[10][num_bytes]; signal states[num_bytes+1][27]; component state_changed[num_bytes]; @@ -77,451 +77,313 @@ template TimestampRegex(msg_bytes) { multi_or[0][i].in[5] <== eq[4][i].out; multi_or[0][i].in[6] <== eq[5][i].out; and[3][i].b <== multi_or[0][i].out; + and[4][i] = AND(); + and[4][i].a <== states[i][24]; + and[4][i].b <== and[0][i].out; + and[5][i] = AND(); + and[5][i].a <== states[i][25]; + and[5][i].b <== and[0][i].out; + multi_or[1][i] = MultiOR(4); + multi_or[1][i].in[0] <== and[1][i].out; + multi_or[1][i].in[1] <== and[3][i].out; + multi_or[1][i].in[2] <== and[4][i].out; + multi_or[1][i].in[3] <== and[5][i].out; + states[i+1][1] <== multi_or[1][i].out; + state_changed[i].in[0] <== states[i+1][1]; lt[4][i] = LessEqThan(8); - lt[4][i].in[0] <== 97; + lt[4][i].in[0] <== 0; lt[4][i].in[1] <== in[i]; lt[5][i] = LessEqThan(8); lt[5][i].in[0] <== in[i]; - lt[5][i].in[1] <== 122; - and[4][i] = AND(); - and[4][i].a <== lt[4][i].out; - and[4][i].b <== lt[5][i].out; - and[5][i] = AND(); - and[5][i].a <== states[i][24]; - and[5][i].b <== and[4][i].out; + lt[5][i].in[1] <== 58; + and[6][i] = AND(); + and[6][i].a <== lt[4][i].out; + and[6][i].b <== lt[5][i].out; lt[6][i] = LessEqThan(8); - lt[6][i].in[0] <== 97; + lt[6][i].in[0] <== 60; lt[6][i].in[1] <== in[i]; lt[7][i] = LessEqThan(8); lt[7][i].in[0] <== in[i]; - lt[7][i].in[1] <== 122; - and[6][i] = AND(); - and[6][i].a <== lt[6][i].out; - and[6][i].b <== lt[7][i].out; + lt[7][i].in[1] <== 254; and[7][i] = AND(); - and[7][i].a <== states[i][25]; - and[7][i].b <== and[6][i].out; - multi_or[1][i] = MultiOR(4); - multi_or[1][i].in[0] <== and[1][i].out; - multi_or[1][i].in[1] <== and[3][i].out; - multi_or[1][i].in[2] <== and[5][i].out; - multi_or[1][i].in[3] <== and[7][i].out; - states[i+1][1] <== multi_or[1][i].out; - state_changed[i].in[0] <== states[i+1][1]; + and[7][i].a <== lt[6][i].out; + and[7][i].b <== lt[7][i].out; + and[8][i] = AND(); + and[8][i].a <== states[i][2]; + multi_or[2][i] = MultiOR(2); + multi_or[2][i].in[0] <== and[6][i].out; + multi_or[2][i].in[1] <== and[7][i].out; + and[8][i].b <== multi_or[2][i].out; lt[8][i] = LessEqThan(8); lt[8][i].in[0] <== 0; lt[8][i].in[1] <== in[i]; lt[9][i] = LessEqThan(8); lt[9][i].in[0] <== in[i]; - lt[9][i].in[1] <== 58; - and[8][i] = AND(); - and[8][i].a <== lt[8][i].out; - and[8][i].b <== lt[9][i].out; - lt[10][i] = LessEqThan(8); - lt[10][i].in[0] <== 60; - lt[10][i].in[1] <== in[i]; - lt[11][i] = LessEqThan(8); - lt[11][i].in[0] <== in[i]; - lt[11][i].in[1] <== 254; + lt[9][i].in[1] <== 47; and[9][i] = AND(); - and[9][i].a <== lt[10][i].out; - and[9][i].b <== lt[11][i].out; - and[10][i] = AND(); - and[10][i].a <== states[i][2]; - multi_or[2][i] = MultiOR(2); - multi_or[2][i].in[0] <== and[8][i].out; - multi_or[2][i].in[1] <== and[9][i].out; - and[10][i].b <== multi_or[2][i].out; - lt[12][i] = LessEqThan(8); - lt[12][i].in[0] <== 0; - lt[12][i].in[1] <== in[i]; - lt[13][i] = LessEqThan(8); - lt[13][i].in[0] <== in[i]; - lt[13][i].in[1] <== 47; - and[11][i] = AND(); - and[11][i].a <== lt[12][i].out; - and[11][i].b <== lt[13][i].out; - lt[14][i] = LessEqThan(8); - lt[14][i].in[0] <== 60; - lt[14][i].in[1] <== in[i]; - lt[15][i] = LessEqThan(8); - lt[15][i].in[0] <== in[i]; - lt[15][i].in[1] <== 254; - and[12][i] = AND(); - and[12][i].a <== lt[14][i].out; - and[12][i].b <== lt[15][i].out; + and[9][i].a <== lt[8][i].out; + and[9][i].b <== lt[9][i].out; eq[6][i] = IsEqual(); eq[6][i].in[0] <== in[i]; eq[6][i].in[1] <== 58; - and[13][i] = AND(); - and[13][i].a <== states[i][3]; + and[10][i] = AND(); + and[10][i].a <== states[i][3]; multi_or[3][i] = MultiOR(3); - multi_or[3][i].in[0] <== and[11][i].out; - multi_or[3][i].in[1] <== and[12][i].out; + multi_or[3][i].in[0] <== and[9][i].out; + multi_or[3][i].in[1] <== and[7][i].out; multi_or[3][i].in[2] <== eq[6][i].out; - and[13][i].b <== multi_or[3][i].out; - lt[16][i] = LessEqThan(8); - lt[16][i].in[0] <== 0; - lt[16][i].in[1] <== in[i]; - lt[17][i] = LessEqThan(8); - lt[17][i].in[0] <== in[i]; - lt[17][i].in[1] <== 58; - and[14][i] = AND(); - and[14][i].a <== lt[16][i].out; - and[14][i].b <== lt[17][i].out; - lt[18][i] = LessEqThan(8); - lt[18][i].in[0] <== 60; - lt[18][i].in[1] <== in[i]; - lt[19][i] = LessEqThan(8); - lt[19][i].in[0] <== in[i]; - lt[19][i].in[1] <== 254; - and[15][i] = AND(); - and[15][i].a <== lt[18][i].out; - and[15][i].b <== lt[19][i].out; - and[16][i] = AND(); - and[16][i].a <== states[i][7]; - multi_or[4][i] = MultiOR(2); - multi_or[4][i].in[0] <== and[14][i].out; - multi_or[4][i].in[1] <== and[15][i].out; - and[16][i].b <== multi_or[4][i].out; - lt[20][i] = LessEqThan(8); - lt[20][i].in[0] <== 0; - lt[20][i].in[1] <== in[i]; - lt[21][i] = LessEqThan(8); - lt[21][i].in[0] <== in[i]; - lt[21][i].in[1] <== 47; - and[17][i] = AND(); - and[17][i].a <== lt[20][i].out; - and[17][i].b <== lt[21][i].out; - lt[22][i] = LessEqThan(8); - lt[22][i].in[0] <== 60; - lt[22][i].in[1] <== in[i]; - lt[23][i] = LessEqThan(8); - lt[23][i].in[0] <== in[i]; - lt[23][i].in[1] <== 254; - and[18][i] = AND(); - and[18][i].a <== lt[22][i].out; - and[18][i].b <== lt[23][i].out; + and[10][i].b <== multi_or[3][i].out; + and[11][i] = AND(); + and[11][i].a <== states[i][7]; + and[11][i].b <== multi_or[2][i].out; + and[12][i] = AND(); + and[12][i].a <== states[i][26]; + and[12][i].b <== multi_or[3][i].out; + multi_or[4][i] = MultiOR(4); + multi_or[4][i].in[0] <== and[8][i].out; + multi_or[4][i].in[1] <== and[10][i].out; + multi_or[4][i].in[2] <== and[11][i].out; + multi_or[4][i].in[3] <== and[12][i].out; + states[i+1][2] <== multi_or[4][i].out; + state_changed[i].in[1] <== states[i+1][2]; eq[7][i] = IsEqual(); eq[7][i].in[0] <== in[i]; - eq[7][i].in[1] <== 58; - and[19][i] = AND(); - and[19][i].a <== states[i][26]; - multi_or[5][i] = MultiOR(3); - multi_or[5][i].in[0] <== and[17][i].out; - multi_or[5][i].in[1] <== and[18][i].out; - multi_or[5][i].in[2] <== eq[7][i].out; - and[19][i].b <== multi_or[5][i].out; - multi_or[6][i] = MultiOR(4); - multi_or[6][i].in[0] <== and[10][i].out; - multi_or[6][i].in[1] <== and[13][i].out; - multi_or[6][i].in[2] <== and[16][i].out; - multi_or[6][i].in[3] <== and[19][i].out; - states[i+1][2] <== multi_or[6][i].out; - state_changed[i].in[1] <== states[i+1][2]; + eq[7][i].in[1] <== 48; eq[8][i] = IsEqual(); eq[8][i].in[0] <== in[i]; - eq[8][i].in[1] <== 48; + eq[8][i].in[1] <== 49; eq[9][i] = IsEqual(); eq[9][i].in[0] <== in[i]; - eq[9][i].in[1] <== 49; + eq[9][i].in[1] <== 50; eq[10][i] = IsEqual(); eq[10][i].in[0] <== in[i]; - eq[10][i].in[1] <== 50; + eq[10][i].in[1] <== 51; eq[11][i] = IsEqual(); eq[11][i].in[0] <== in[i]; - eq[11][i].in[1] <== 51; + eq[11][i].in[1] <== 52; eq[12][i] = IsEqual(); eq[12][i].in[0] <== in[i]; - eq[12][i].in[1] <== 52; + eq[12][i].in[1] <== 53; eq[13][i] = IsEqual(); eq[13][i].in[0] <== in[i]; - eq[13][i].in[1] <== 53; + eq[13][i].in[1] <== 54; eq[14][i] = IsEqual(); eq[14][i].in[0] <== in[i]; - eq[14][i].in[1] <== 54; + eq[14][i].in[1] <== 55; eq[15][i] = IsEqual(); eq[15][i].in[0] <== in[i]; - eq[15][i].in[1] <== 55; + eq[15][i].in[1] <== 56; eq[16][i] = IsEqual(); eq[16][i].in[0] <== in[i]; - eq[16][i].in[1] <== 56; + eq[16][i].in[1] <== 57; + and[13][i] = AND(); + and[13][i].a <== states[i][3]; + multi_or[5][i] = MultiOR(10); + multi_or[5][i].in[0] <== eq[7][i].out; + multi_or[5][i].in[1] <== eq[8][i].out; + multi_or[5][i].in[2] <== eq[9][i].out; + multi_or[5][i].in[3] <== eq[10][i].out; + multi_or[5][i].in[4] <== eq[11][i].out; + multi_or[5][i].in[5] <== eq[12][i].out; + multi_or[5][i].in[6] <== eq[13][i].out; + multi_or[5][i].in[7] <== eq[14][i].out; + multi_or[5][i].in[8] <== eq[15][i].out; + multi_or[5][i].in[9] <== eq[16][i].out; + and[13][i].b <== multi_or[5][i].out; + and[14][i] = AND(); + and[14][i].a <== states[i][26]; + and[14][i].b <== multi_or[5][i].out; + multi_or[6][i] = MultiOR(2); + multi_or[6][i].in[0] <== and[13][i].out; + multi_or[6][i].in[1] <== and[14][i].out; + states[i+1][3] <== multi_or[6][i].out; + state_changed[i].in[2] <== states[i+1][3]; eq[17][i] = IsEqual(); eq[17][i].in[0] <== in[i]; - eq[17][i].in[1] <== 57; - and[20][i] = AND(); - and[20][i].a <== states[i][3]; - multi_or[7][i] = MultiOR(10); - multi_or[7][i].in[0] <== eq[8][i].out; - multi_or[7][i].in[1] <== eq[9][i].out; - multi_or[7][i].in[2] <== eq[10][i].out; - multi_or[7][i].in[3] <== eq[11][i].out; - multi_or[7][i].in[4] <== eq[12][i].out; - multi_or[7][i].in[5] <== eq[13][i].out; - multi_or[7][i].in[6] <== eq[14][i].out; - multi_or[7][i].in[7] <== eq[15][i].out; - multi_or[7][i].in[8] <== eq[16][i].out; - multi_or[7][i].in[9] <== eq[17][i].out; - and[20][i].b <== multi_or[7][i].out; + eq[17][i].in[1] <== 59; + and[15][i] = AND(); + and[15][i].a <== states[i][2]; + and[15][i].b <== eq[17][i].out; + states[i+1][4] <== and[15][i].out; + state_changed[i].in[3] <== states[i+1][4]; + and[16][i] = AND(); + and[16][i].a <== states[i][3]; + and[16][i].b <== eq[17][i].out; + states[i+1][5] <== and[16][i].out; + state_changed[i].in[4] <== states[i+1][5]; eq[18][i] = IsEqual(); eq[18][i].in[0] <== in[i]; - eq[18][i].in[1] <== 48; + eq[18][i].in[1] <== 32; + and[17][i] = AND(); + and[17][i].a <== states[i][4]; + and[17][i].b <== eq[18][i].out; + and[18][i] = AND(); + and[18][i].a <== states[i][5]; + and[18][i].b <== eq[18][i].out; + multi_or[7][i] = MultiOR(2); + multi_or[7][i].in[0] <== and[17][i].out; + multi_or[7][i].in[1] <== and[18][i].out; + states[i+1][6] <== multi_or[7][i].out; + state_changed[i].in[5] <== states[i+1][6]; eq[19][i] = IsEqual(); eq[19][i].in[0] <== in[i]; - eq[19][i].in[1] <== 49; + eq[19][i].in[1] <== 61; + and[19][i] = AND(); + and[19][i].a <== states[i][1]; + and[19][i].b <== eq[19][i].out; + states[i+1][7] <== and[19][i].out; + state_changed[i].in[6] <== states[i+1][7]; eq[20][i] = IsEqual(); eq[20][i].in[0] <== in[i]; - eq[20][i].in[1] <== 50; + eq[20][i].in[1] <== 13; + and[20][i] = AND(); + and[20][i].a <== states[i][0]; + and[20][i].b <== eq[20][i].out; + and[21][i] = AND(); + and[21][i].a <== states[i][9]; + and[21][i].b <== eq[20][i].out; + multi_or[8][i] = MultiOR(2); + multi_or[8][i].in[0] <== and[20][i].out; + multi_or[8][i].in[1] <== and[21][i].out; + states[i+1][8] <== multi_or[8][i].out; + state_changed[i].in[7] <== states[i+1][8]; eq[21][i] = IsEqual(); eq[21][i].in[0] <== in[i]; - eq[21][i].in[1] <== 51; + eq[21][i].in[1] <== 255; + and[22][i] = AND(); + and[22][i].a <== states[i][0]; + and[22][i].b <== eq[21][i].out; eq[22][i] = IsEqual(); eq[22][i].in[0] <== in[i]; - eq[22][i].in[1] <== 52; + eq[22][i].in[1] <== 10; + and[23][i] = AND(); + and[23][i].a <== states[i][8]; + and[23][i].b <== eq[22][i].out; + multi_or[9][i] = MultiOR(2); + multi_or[9][i].in[0] <== and[22][i].out; + multi_or[9][i].in[1] <== and[23][i].out; + states[i+1][9] <== multi_or[9][i].out; + state_changed[i].in[8] <== states[i+1][9]; eq[23][i] = IsEqual(); eq[23][i].in[0] <== in[i]; - eq[23][i].in[1] <== 53; + eq[23][i].in[1] <== 100; + and[24][i] = AND(); + and[24][i].a <== states[i][9]; + and[24][i].b <== eq[23][i].out; + states[i+1][10] <== and[24][i].out; + state_changed[i].in[9] <== states[i+1][10]; eq[24][i] = IsEqual(); eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 54; + eq[24][i].in[1] <== 107; + and[25][i] = AND(); + and[25][i].a <== states[i][10]; + and[25][i].b <== eq[24][i].out; + states[i+1][11] <== and[25][i].out; + state_changed[i].in[10] <== states[i+1][11]; eq[25][i] = IsEqual(); eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 55; + eq[25][i].in[1] <== 105; + and[26][i] = AND(); + and[26][i].a <== states[i][11]; + and[26][i].b <== eq[25][i].out; + states[i+1][12] <== and[26][i].out; + state_changed[i].in[11] <== states[i+1][12]; eq[26][i] = IsEqual(); eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 56; + eq[26][i].in[1] <== 109; + and[27][i] = AND(); + and[27][i].a <== states[i][12]; + and[27][i].b <== eq[26][i].out; + states[i+1][13] <== and[27][i].out; + state_changed[i].in[12] <== states[i+1][13]; eq[27][i] = IsEqual(); eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 57; - and[21][i] = AND(); - and[21][i].a <== states[i][26]; - multi_or[8][i] = MultiOR(10); - multi_or[8][i].in[0] <== eq[18][i].out; - multi_or[8][i].in[1] <== eq[19][i].out; - multi_or[8][i].in[2] <== eq[20][i].out; - multi_or[8][i].in[3] <== eq[21][i].out; - multi_or[8][i].in[4] <== eq[22][i].out; - multi_or[8][i].in[5] <== eq[23][i].out; - multi_or[8][i].in[6] <== eq[24][i].out; - multi_or[8][i].in[7] <== eq[25][i].out; - multi_or[8][i].in[8] <== eq[26][i].out; - multi_or[8][i].in[9] <== eq[27][i].out; - and[21][i].b <== multi_or[8][i].out; - multi_or[9][i] = MultiOR(2); - multi_or[9][i].in[0] <== and[20][i].out; - multi_or[9][i].in[1] <== and[21][i].out; - states[i+1][3] <== multi_or[9][i].out; - state_changed[i].in[2] <== states[i+1][3]; + eq[27][i].in[1] <== 45; + and[28][i] = AND(); + and[28][i].a <== states[i][13]; + and[28][i].b <== eq[27][i].out; + states[i+1][14] <== and[28][i].out; + state_changed[i].in[13] <== states[i+1][14]; eq[28][i] = IsEqual(); eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 59; - and[22][i] = AND(); - and[22][i].a <== states[i][2]; - and[22][i].b <== eq[28][i].out; - states[i+1][4] <== and[22][i].out; - state_changed[i].in[3] <== states[i+1][4]; + eq[28][i].in[1] <== 115; + and[29][i] = AND(); + and[29][i].a <== states[i][14]; + and[29][i].b <== eq[28][i].out; + states[i+1][15] <== and[29][i].out; + state_changed[i].in[14] <== states[i+1][15]; + and[30][i] = AND(); + and[30][i].a <== states[i][15]; + and[30][i].b <== eq[25][i].out; + states[i+1][16] <== and[30][i].out; + state_changed[i].in[15] <== states[i+1][16]; eq[29][i] = IsEqual(); eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 59; - and[23][i] = AND(); - and[23][i].a <== states[i][3]; - and[23][i].b <== eq[29][i].out; - states[i+1][5] <== and[23][i].out; - state_changed[i].in[4] <== states[i+1][5]; + eq[29][i].in[1] <== 103; + and[31][i] = AND(); + and[31][i].a <== states[i][16]; + and[31][i].b <== eq[29][i].out; + states[i+1][17] <== and[31][i].out; + state_changed[i].in[16] <== states[i+1][17]; eq[30][i] = IsEqual(); eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 32; - and[24][i] = AND(); - and[24][i].a <== states[i][4]; - and[24][i].b <== eq[30][i].out; + eq[30][i].in[1] <== 110; + and[32][i] = AND(); + and[32][i].a <== states[i][17]; + and[32][i].b <== eq[30][i].out; + states[i+1][18] <== and[32][i].out; + state_changed[i].in[17] <== states[i+1][18]; eq[31][i] = IsEqual(); eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 32; - and[25][i] = AND(); - and[25][i].a <== states[i][5]; - and[25][i].b <== eq[31][i].out; - multi_or[10][i] = MultiOR(2); - multi_or[10][i].in[0] <== and[24][i].out; - multi_or[10][i].in[1] <== and[25][i].out; - states[i+1][6] <== multi_or[10][i].out; - state_changed[i].in[5] <== states[i+1][6]; + eq[31][i].in[1] <== 97; + and[33][i] = AND(); + and[33][i].a <== states[i][18]; + and[33][i].b <== eq[31][i].out; + states[i+1][19] <== and[33][i].out; + state_changed[i].in[18] <== states[i+1][19]; eq[32][i] = IsEqual(); eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 61; - and[26][i] = AND(); - and[26][i].a <== states[i][1]; - and[26][i].b <== eq[32][i].out; - states[i+1][7] <== and[26][i].out; - state_changed[i].in[6] <== states[i+1][7]; + eq[32][i].in[1] <== 116; + and[34][i] = AND(); + and[34][i].a <== states[i][19]; + and[34][i].b <== eq[32][i].out; + states[i+1][20] <== and[34][i].out; + state_changed[i].in[19] <== states[i+1][20]; + and[35][i] = AND(); + and[35][i].a <== states[i][20]; + and[35][i].b <== eq[0][i].out; + states[i+1][21] <== and[35][i].out; + state_changed[i].in[20] <== states[i+1][21]; eq[33][i] = IsEqual(); eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 13; - and[27][i] = AND(); - and[27][i].a <== states[i][0]; - and[27][i].b <== eq[33][i].out; + eq[33][i].in[1] <== 114; + and[36][i] = AND(); + and[36][i].a <== states[i][21]; + and[36][i].b <== eq[33][i].out; + states[i+1][22] <== and[36][i].out; + state_changed[i].in[21] <== states[i+1][22]; eq[34][i] = IsEqual(); eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 13; - and[28][i] = AND(); - and[28][i].a <== states[i][9]; - and[28][i].b <== eq[34][i].out; - multi_or[11][i] = MultiOR(2); - multi_or[11][i].in[0] <== and[27][i].out; - multi_or[11][i].in[1] <== and[28][i].out; - states[i+1][8] <== multi_or[11][i].out; - state_changed[i].in[7] <== states[i+1][8]; - eq[35][i] = IsEqual(); - eq[35][i].in[0] <== in[i]; - eq[35][i].in[1] <== 255; - and[29][i] = AND(); - and[29][i].a <== states[i][0]; - and[29][i].b <== eq[35][i].out; - eq[36][i] = IsEqual(); - eq[36][i].in[0] <== in[i]; - eq[36][i].in[1] <== 10; - and[30][i] = AND(); - and[30][i].a <== states[i][8]; - and[30][i].b <== eq[36][i].out; - multi_or[12][i] = MultiOR(2); - multi_or[12][i].in[0] <== and[29][i].out; - multi_or[12][i].in[1] <== and[30][i].out; - states[i+1][9] <== multi_or[12][i].out; - state_changed[i].in[8] <== states[i+1][9]; - eq[37][i] = IsEqual(); - eq[37][i].in[0] <== in[i]; - eq[37][i].in[1] <== 100; - and[31][i] = AND(); - and[31][i].a <== states[i][9]; - and[31][i].b <== eq[37][i].out; - states[i+1][10] <== and[31][i].out; - state_changed[i].in[9] <== states[i+1][10]; - eq[38][i] = IsEqual(); - eq[38][i].in[0] <== in[i]; - eq[38][i].in[1] <== 107; - and[32][i] = AND(); - and[32][i].a <== states[i][10]; - and[32][i].b <== eq[38][i].out; - states[i+1][11] <== and[32][i].out; - state_changed[i].in[10] <== states[i+1][11]; - eq[39][i] = IsEqual(); - eq[39][i].in[0] <== in[i]; - eq[39][i].in[1] <== 105; - and[33][i] = AND(); - and[33][i].a <== states[i][11]; - and[33][i].b <== eq[39][i].out; - states[i+1][12] <== and[33][i].out; - state_changed[i].in[11] <== states[i+1][12]; - eq[40][i] = IsEqual(); - eq[40][i].in[0] <== in[i]; - eq[40][i].in[1] <== 109; - and[34][i] = AND(); - and[34][i].a <== states[i][12]; - and[34][i].b <== eq[40][i].out; - states[i+1][13] <== and[34][i].out; - state_changed[i].in[12] <== states[i+1][13]; - eq[41][i] = IsEqual(); - eq[41][i].in[0] <== in[i]; - eq[41][i].in[1] <== 45; - and[35][i] = AND(); - and[35][i].a <== states[i][13]; - and[35][i].b <== eq[41][i].out; - states[i+1][14] <== and[35][i].out; - state_changed[i].in[13] <== states[i+1][14]; - eq[42][i] = IsEqual(); - eq[42][i].in[0] <== in[i]; - eq[42][i].in[1] <== 115; - and[36][i] = AND(); - and[36][i].a <== states[i][14]; - and[36][i].b <== eq[42][i].out; - states[i+1][15] <== and[36][i].out; - state_changed[i].in[14] <== states[i+1][15]; - eq[43][i] = IsEqual(); - eq[43][i].in[0] <== in[i]; - eq[43][i].in[1] <== 105; + eq[34][i].in[1] <== 101; and[37][i] = AND(); - and[37][i].a <== states[i][15]; - and[37][i].b <== eq[43][i].out; - states[i+1][16] <== and[37][i].out; - state_changed[i].in[15] <== states[i+1][16]; - eq[44][i] = IsEqual(); - eq[44][i].in[0] <== in[i]; - eq[44][i].in[1] <== 103; - and[38][i] = AND(); - and[38][i].a <== states[i][16]; - and[38][i].b <== eq[44][i].out; - states[i+1][17] <== and[38][i].out; - state_changed[i].in[16] <== states[i+1][17]; - eq[45][i] = IsEqual(); - eq[45][i].in[0] <== in[i]; - eq[45][i].in[1] <== 110; - and[39][i] = AND(); - and[39][i].a <== states[i][17]; - and[39][i].b <== eq[45][i].out; - states[i+1][18] <== and[39][i].out; - state_changed[i].in[17] <== states[i+1][18]; - eq[46][i] = IsEqual(); - eq[46][i].in[0] <== in[i]; - eq[46][i].in[1] <== 97; - and[40][i] = AND(); - and[40][i].a <== states[i][18]; - and[40][i].b <== eq[46][i].out; - states[i+1][19] <== and[40][i].out; - state_changed[i].in[18] <== states[i+1][19]; - eq[47][i] = IsEqual(); - eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 116; - and[41][i] = AND(); - and[41][i].a <== states[i][19]; - and[41][i].b <== eq[47][i].out; - states[i+1][20] <== and[41][i].out; - state_changed[i].in[19] <== states[i+1][20]; - eq[48][i] = IsEqual(); - eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 117; - and[42][i] = AND(); - and[42][i].a <== states[i][20]; - and[42][i].b <== eq[48][i].out; - states[i+1][21] <== and[42][i].out; - state_changed[i].in[20] <== states[i+1][21]; - eq[49][i] = IsEqual(); - eq[49][i].in[0] <== in[i]; - eq[49][i].in[1] <== 114; - and[43][i] = AND(); - and[43][i].a <== states[i][21]; - and[43][i].b <== eq[49][i].out; - states[i+1][22] <== and[43][i].out; - state_changed[i].in[21] <== states[i+1][22]; - eq[50][i] = IsEqual(); - eq[50][i].in[0] <== in[i]; - eq[50][i].in[1] <== 101; - and[44][i] = AND(); - and[44][i].a <== states[i][22]; - and[44][i].b <== eq[50][i].out; - states[i+1][23] <== and[44][i].out; + and[37][i].a <== states[i][22]; + and[37][i].b <== eq[34][i].out; + states[i+1][23] <== and[37][i].out; state_changed[i].in[22] <== states[i+1][23]; - eq[51][i] = IsEqual(); - eq[51][i].in[0] <== in[i]; - eq[51][i].in[1] <== 58; - and[45][i] = AND(); - and[45][i].a <== states[i][23]; - and[45][i].b <== eq[51][i].out; - states[i+1][24] <== and[45][i].out; + and[38][i] = AND(); + and[38][i].a <== states[i][23]; + and[38][i].b <== eq[6][i].out; + states[i+1][24] <== and[38][i].out; state_changed[i].in[23] <== states[i+1][24]; - eq[52][i] = IsEqual(); - eq[52][i].in[0] <== in[i]; - eq[52][i].in[1] <== 116; - and[46][i] = AND(); - and[46][i].a <== states[i][6]; - and[46][i].b <== eq[52][i].out; - states[i+1][25] <== and[46][i].out; + and[39][i] = AND(); + and[39][i].a <== states[i][6]; + and[39][i].b <== eq[32][i].out; + states[i+1][25] <== and[39][i].out; state_changed[i].in[24] <== states[i+1][25]; - eq[53][i] = IsEqual(); - eq[53][i].in[0] <== in[i]; - eq[53][i].in[1] <== 61; - and[47][i] = AND(); - and[47][i].a <== states[i][25]; - and[47][i].b <== eq[53][i].out; - states[i+1][26] <== and[47][i].out; + and[40][i] = AND(); + and[40][i].a <== states[i][25]; + and[40][i].b <== eq[19][i].out; + states[i+1][26] <== and[40][i].out; state_changed[i].in[25] <== states[i+1][26]; states[i+1][0] <== 1 - state_changed[i].out; } diff --git a/packages/circom/tests/circuits/negate1_regex.circom b/packages/circom/tests/circuits/negate1_regex.circom index 2c7d4c2..58e1ce6 100644 --- a/packages/circom/tests/circuits/negate1_regex.circom +++ b/packages/circom/tests/circuits/negate1_regex.circom @@ -14,9 +14,9 @@ template Negate1Regex(msg_bytes) { } component eq[3][num_bytes]; - component lt[12][num_bytes]; - component and[11][num_bytes]; - component multi_or[3][num_bytes]; + component lt[6][num_bytes]; + component and[8][num_bytes]; + component multi_or[2][num_bytes]; signal states[num_bytes+1][5]; component state_changed[num_bytes]; @@ -61,68 +61,37 @@ template Negate1Regex(msg_bytes) { multi_or[0][i].in[1] <== and[1][i].out; multi_or[0][i].in[2] <== and[2][i].out; and[3][i].b <== multi_or[0][i].out; - lt[6][i] = LessEqThan(8); - lt[6][i].in[0] <== 0; - lt[6][i].in[1] <== in[i]; - lt[7][i] = LessEqThan(8); - lt[7][i].in[0] <== in[i]; - lt[7][i].in[1] <== 45; and[4][i] = AND(); - and[4][i].a <== lt[6][i].out; - and[4][i].b <== lt[7][i].out; - lt[8][i] = LessEqThan(8); - lt[8][i].in[0] <== 47; - lt[8][i].in[1] <== in[i]; - lt[9][i] = LessEqThan(8); - lt[9][i].in[0] <== in[i]; - lt[9][i].in[1] <== 96; - and[5][i] = AND(); - and[5][i].a <== lt[8][i].out; - and[5][i].b <== lt[9][i].out; - lt[10][i] = LessEqThan(8); - lt[10][i].in[0] <== 123; - lt[10][i].in[1] <== in[i]; - lt[11][i] = LessEqThan(8); - lt[11][i].in[0] <== in[i]; - lt[11][i].in[1] <== 254; - and[6][i] = AND(); - and[6][i].a <== lt[10][i].out; - and[6][i].b <== lt[11][i].out; - and[7][i] = AND(); - and[7][i].a <== states[i][3]; - multi_or[1][i] = MultiOR(3); - multi_or[1][i].in[0] <== and[4][i].out; - multi_or[1][i].in[1] <== and[5][i].out; - multi_or[1][i].in[2] <== and[6][i].out; - and[7][i].b <== multi_or[1][i].out; - multi_or[2][i] = MultiOR(2); - multi_or[2][i].in[0] <== and[3][i].out; - multi_or[2][i].in[1] <== and[7][i].out; - states[i+1][1] <== multi_or[2][i].out; + and[4][i].a <== states[i][3]; + and[4][i].b <== multi_or[0][i].out; + multi_or[1][i] = MultiOR(2); + multi_or[1][i].in[0] <== and[3][i].out; + multi_or[1][i].in[1] <== and[4][i].out; + states[i+1][1] <== multi_or[1][i].out; state_changed[i].in[0] <== states[i+1][1]; eq[0][i] = IsEqual(); eq[0][i].in[0] <== in[i]; eq[0][i].in[1] <== 97; - and[8][i] = AND(); - and[8][i].a <== states[i][0]; - and[8][i].b <== eq[0][i].out; - states[i+1][2] <== and[8][i].out; + and[5][i] = AND(); + and[5][i].a <== states[i][0]; + and[5][i].b <== eq[0][i].out; + states[i+1][2] <== and[5][i].out; state_changed[i].in[1] <== states[i+1][2]; eq[1][i] = IsEqual(); eq[1][i].in[0] <== in[i]; eq[1][i].in[1] <== 58; - and[9][i] = AND(); - and[9][i].a <== states[i][2]; - and[9][i].b <== eq[1][i].out; - states[i+1][3] <== and[9][i].out; + and[6][i] = AND(); + and[6][i].a <== states[i][2]; + and[6][i].b <== eq[1][i].out; + states[i+1][3] <== and[6][i].out; state_changed[i].in[2] <== states[i+1][3]; eq[2][i] = IsEqual(); eq[2][i].in[0] <== in[i]; eq[2][i].in[1] <== 46; - and[10][i] = AND(); - and[10][i].a <== states[i][1]; - and[10][i].b <== eq[2][i].out; - states[i+1][4] <== and[10][i].out; + and[7][i] = AND(); + and[7][i].a <== states[i][1]; + and[7][i].b <== eq[2][i].out; + states[i+1][4] <== and[7][i].out; state_changed[i].in[3] <== states[i+1][4]; states[i+1][0] <== 1 - state_changed[i].out; } diff --git a/packages/circom/tests/circuits/simple_regex.circom b/packages/circom/tests/circuits/simple_regex.circom index 40a90de..f24bced 100644 --- a/packages/circom/tests/circuits/simple_regex.circom +++ b/packages/circom/tests/circuits/simple_regex.circom @@ -13,9 +13,9 @@ template SimpleRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[14][num_bytes]; + component eq[8][num_bytes]; component and[11][num_bytes]; - component multi_or[5][num_bytes]; + component multi_or[4][num_bytes]; signal states[num_bytes+1][10]; component state_changed[num_bytes]; @@ -70,68 +70,47 @@ template SimpleRegex(msg_bytes) { and[4][i] = AND(); and[4][i].a <== states[i][4]; and[4][i].b <== eq[5][i].out; - eq[6][i] = IsEqual(); - eq[6][i].in[0] <== in[i]; - eq[6][i].in[1] <== 50; and[5][i] = AND(); and[5][i].a <== states[i][8]; - and[5][i].b <== eq[6][i].out; + and[5][i].b <== eq[5][i].out; multi_or[1][i] = MultiOR(2); multi_or[1][i].in[0] <== and[4][i].out; multi_or[1][i].in[1] <== and[5][i].out; states[i+1][5] <== multi_or[1][i].out; state_changed[i].in[4] <== states[i+1][5]; - eq[7][i] = IsEqual(); - eq[7][i].in[0] <== in[i]; - eq[7][i].in[1] <== 61; and[6][i] = AND(); and[6][i].a <== states[i][5]; - and[6][i].b <== eq[7][i].out; + and[6][i].b <== eq[1][i].out; states[i+1][6] <== and[6][i].out; state_changed[i].in[5] <== states[i+1][6]; - eq[8][i] = IsEqual(); - eq[8][i].in[0] <== in[i]; - eq[8][i].in[1] <== 98; - eq[9][i] = IsEqual(); - eq[9][i].in[0] <== in[i]; - eq[9][i].in[1] <== 99; + eq[6][i] = IsEqual(); + eq[6][i].in[0] <== in[i]; + eq[6][i].in[1] <== 99; and[7][i] = AND(); and[7][i].a <== states[i][6]; multi_or[2][i] = MultiOR(2); - multi_or[2][i].in[0] <== eq[8][i].out; - multi_or[2][i].in[1] <== eq[9][i].out; + multi_or[2][i].in[0] <== eq[3][i].out; + multi_or[2][i].in[1] <== eq[6][i].out; and[7][i].b <== multi_or[2][i].out; - eq[10][i] = IsEqual(); - eq[10][i].in[0] <== in[i]; - eq[10][i].in[1] <== 98; - eq[11][i] = IsEqual(); - eq[11][i].in[0] <== in[i]; - eq[11][i].in[1] <== 99; and[8][i] = AND(); and[8][i].a <== states[i][7]; + and[8][i].b <== multi_or[2][i].out; multi_or[3][i] = MultiOR(2); - multi_or[3][i].in[0] <== eq[10][i].out; - multi_or[3][i].in[1] <== eq[11][i].out; - and[8][i].b <== multi_or[3][i].out; - multi_or[4][i] = MultiOR(2); - multi_or[4][i].in[0] <== and[7][i].out; - multi_or[4][i].in[1] <== and[8][i].out; - states[i+1][7] <== multi_or[4][i].out; + multi_or[3][i].in[0] <== and[7][i].out; + multi_or[3][i].in[1] <== and[8][i].out; + states[i+1][7] <== multi_or[3][i].out; state_changed[i].in[6] <== states[i+1][7]; - eq[12][i] = IsEqual(); - eq[12][i].in[0] <== in[i]; - eq[12][i].in[1] <== 32; and[9][i] = AND(); and[9][i].a <== states[i][7]; - and[9][i].b <== eq[12][i].out; + and[9][i].b <== eq[4][i].out; states[i+1][8] <== and[9][i].out; state_changed[i].in[7] <== states[i+1][8]; - eq[13][i] = IsEqual(); - eq[13][i].in[0] <== in[i]; - eq[13][i].in[1] <== 100; + eq[7][i] = IsEqual(); + eq[7][i].in[0] <== in[i]; + eq[7][i].in[1] <== 100; and[10][i] = AND(); and[10][i].a <== states[i][8]; - and[10][i].b <== eq[13][i].out; + and[10][i].b <== eq[7][i].out; states[i+1][9] <== and[10][i].out; state_changed[i].in[8] <== states[i+1][9]; states[i+1][0] <== 1 - state_changed[i].out; From 611ba25d48c6369f738f6e1476eb1ac1dd2b5e7a Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Tue, 28 Nov 2023 01:17:25 +0900 Subject: [PATCH 6/7] Update gitignore. --- .gitignore | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 5d544c5..bc9f413 100644 --- a/.gitignore +++ b/.gitignore @@ -116,4 +116,6 @@ Cargo.lock packages/*/build package-lock.json -yarn.lock \ No newline at end of file +yarn.lock + +packages/compiler/src/*.js \ No newline at end of file From 4b88aa343162a581bcc93468cf9c61371113a3aa Mon Sep 17 00:00:00 2001 From: SoraSuegami Date: Fri, 1 Dec 2023 20:30:33 +0900 Subject: [PATCH 7/7] Fix genCircomAllstr. --- .../circuits/common/email_addr_regex.circom | 353 +--- .../common/email_addr_with_name_regex.circom | 1510 ++++------------- .../circuits/common/email_domain_regex.circom | 353 +--- packages/compiler/src/gen_circom.ts | 7 +- 4 files changed, 468 insertions(+), 1755 deletions(-) diff --git a/packages/circom/circuits/common/email_addr_regex.circom b/packages/circom/circuits/common/email_addr_regex.circom index 29a9f81..9a029d5 100644 --- a/packages/circom/circuits/common/email_addr_regex.circom +++ b/packages/circom/circuits/common/email_addr_regex.circom @@ -13,9 +13,9 @@ template EmailAddrRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[84][num_bytes]; - component lt[6][num_bytes]; - component and[8][num_bytes]; + component eq[25][num_bytes]; + component lt[8][num_bytes]; + component and[9][num_bytes]; component multi_or[5][num_bytes]; signal states[num_bytes+1][4]; component state_changed[num_bytes]; @@ -147,296 +147,71 @@ template EmailAddrRegex(msg_bytes) { multi_or[0][i].in[24] <== eq[22][i].out; multi_or[0][i].in[25] <== eq[23][i].out; and[2][i].b <== multi_or[0][i].out; - eq[24][i] = IsEqual(); - eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 65; - eq[25][i] = IsEqual(); - eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 66; - eq[26][i] = IsEqual(); - eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 67; - eq[27][i] = IsEqual(); - eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 68; - eq[28][i] = IsEqual(); - eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 69; - eq[29][i] = IsEqual(); - eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 70; - eq[30][i] = IsEqual(); - eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 71; - eq[31][i] = IsEqual(); - eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 72; - eq[32][i] = IsEqual(); - eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 73; - eq[33][i] = IsEqual(); - eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 74; - eq[34][i] = IsEqual(); - eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 75; - eq[35][i] = IsEqual(); - eq[35][i].in[0] <== in[i]; - eq[35][i].in[1] <== 76; - eq[36][i] = IsEqual(); - eq[36][i].in[0] <== in[i]; - eq[36][i].in[1] <== 77; - eq[37][i] = IsEqual(); - eq[37][i].in[0] <== in[i]; - eq[37][i].in[1] <== 78; - eq[38][i] = IsEqual(); - eq[38][i].in[0] <== in[i]; - eq[38][i].in[1] <== 79; - eq[39][i] = IsEqual(); - eq[39][i].in[0] <== in[i]; - eq[39][i].in[1] <== 80; - eq[40][i] = IsEqual(); - eq[40][i].in[0] <== in[i]; - eq[40][i].in[1] <== 81; - eq[41][i] = IsEqual(); - eq[41][i].in[0] <== in[i]; - eq[41][i].in[1] <== 82; - eq[42][i] = IsEqual(); - eq[42][i].in[0] <== in[i]; - eq[42][i].in[1] <== 83; - eq[43][i] = IsEqual(); - eq[43][i].in[0] <== in[i]; - eq[43][i].in[1] <== 84; - eq[44][i] = IsEqual(); - eq[44][i].in[0] <== in[i]; - eq[44][i].in[1] <== 85; - eq[45][i] = IsEqual(); - eq[45][i].in[0] <== in[i]; - eq[45][i].in[1] <== 86; - eq[46][i] = IsEqual(); - eq[46][i].in[0] <== in[i]; - eq[46][i].in[1] <== 87; - eq[47][i] = IsEqual(); - eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 88; - eq[48][i] = IsEqual(); - eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 89; - eq[49][i] = IsEqual(); - eq[49][i].in[0] <== in[i]; - eq[49][i].in[1] <== 90; - eq[50][i] = IsEqual(); - eq[50][i].in[0] <== in[i]; - eq[50][i].in[1] <== 94; - eq[51][i] = IsEqual(); - eq[51][i].in[0] <== in[i]; - eq[51][i].in[1] <== 95; - eq[52][i] = IsEqual(); - eq[52][i].in[0] <== in[i]; - eq[52][i].in[1] <== 96; - eq[53][i] = IsEqual(); - eq[53][i].in[0] <== in[i]; - eq[53][i].in[1] <== 97; - eq[54][i] = IsEqual(); - eq[54][i].in[0] <== in[i]; - eq[54][i].in[1] <== 98; - eq[55][i] = IsEqual(); - eq[55][i].in[0] <== in[i]; - eq[55][i].in[1] <== 99; - eq[56][i] = IsEqual(); - eq[56][i].in[0] <== in[i]; - eq[56][i].in[1] <== 100; - eq[57][i] = IsEqual(); - eq[57][i].in[0] <== in[i]; - eq[57][i].in[1] <== 101; - eq[58][i] = IsEqual(); - eq[58][i].in[0] <== in[i]; - eq[58][i].in[1] <== 102; - eq[59][i] = IsEqual(); - eq[59][i].in[0] <== in[i]; - eq[59][i].in[1] <== 103; - eq[60][i] = IsEqual(); - eq[60][i].in[0] <== in[i]; - eq[60][i].in[1] <== 104; - eq[61][i] = IsEqual(); - eq[61][i].in[0] <== in[i]; - eq[61][i].in[1] <== 105; - eq[62][i] = IsEqual(); - eq[62][i].in[0] <== in[i]; - eq[62][i].in[1] <== 106; - eq[63][i] = IsEqual(); - eq[63][i].in[0] <== in[i]; - eq[63][i].in[1] <== 107; - eq[64][i] = IsEqual(); - eq[64][i].in[0] <== in[i]; - eq[64][i].in[1] <== 108; - eq[65][i] = IsEqual(); - eq[65][i].in[0] <== in[i]; - eq[65][i].in[1] <== 109; - eq[66][i] = IsEqual(); - eq[66][i].in[0] <== in[i]; - eq[66][i].in[1] <== 110; - eq[67][i] = IsEqual(); - eq[67][i].in[0] <== in[i]; - eq[67][i].in[1] <== 111; - eq[68][i] = IsEqual(); - eq[68][i].in[0] <== in[i]; - eq[68][i].in[1] <== 112; - eq[69][i] = IsEqual(); - eq[69][i].in[0] <== in[i]; - eq[69][i].in[1] <== 113; - eq[70][i] = IsEqual(); - eq[70][i].in[0] <== in[i]; - eq[70][i].in[1] <== 114; - eq[71][i] = IsEqual(); - eq[71][i].in[0] <== in[i]; - eq[71][i].in[1] <== 115; - eq[72][i] = IsEqual(); - eq[72][i].in[0] <== in[i]; - eq[72][i].in[1] <== 116; - eq[73][i] = IsEqual(); - eq[73][i].in[0] <== in[i]; - eq[73][i].in[1] <== 117; - eq[74][i] = IsEqual(); - eq[74][i].in[0] <== in[i]; - eq[74][i].in[1] <== 118; - eq[75][i] = IsEqual(); - eq[75][i].in[0] <== in[i]; - eq[75][i].in[1] <== 119; - eq[76][i] = IsEqual(); - eq[76][i].in[0] <== in[i]; - eq[76][i].in[1] <== 120; - eq[77][i] = IsEqual(); - eq[77][i].in[0] <== in[i]; - eq[77][i].in[1] <== 121; - eq[78][i] = IsEqual(); - eq[78][i].in[0] <== in[i]; - eq[78][i].in[1] <== 122; - eq[79][i] = IsEqual(); - eq[79][i].in[0] <== in[i]; - eq[79][i].in[1] <== 123; - eq[80][i] = IsEqual(); - eq[80][i].in[0] <== in[i]; - eq[80][i].in[1] <== 124; - eq[81][i] = IsEqual(); - eq[81][i].in[0] <== in[i]; - eq[81][i].in[1] <== 125; - eq[82][i] = IsEqual(); - eq[82][i].in[0] <== in[i]; - eq[82][i].in[1] <== 126; + lt[4][i] = LessEqThan(8); + lt[4][i].in[0] <== 94; + lt[4][i].in[1] <== in[i]; + lt[5][i] = LessEqThan(8); + lt[5][i].in[0] <== in[i]; + lt[5][i].in[1] <== 126; and[3][i] = AND(); - and[3][i].a <== states[i][1]; - multi_or[1][i] = MultiOR(82); - multi_or[1][i].in[0] <== eq[0][i].out; - multi_or[1][i].in[1] <== eq[1][i].out; - multi_or[1][i].in[2] <== eq[2][i].out; - multi_or[1][i].in[3] <== eq[3][i].out; - multi_or[1][i].in[4] <== eq[4][i].out; - multi_or[1][i].in[5] <== eq[5][i].out; - multi_or[1][i].in[6] <== eq[6][i].out; - multi_or[1][i].in[7] <== eq[7][i].out; - multi_or[1][i].in[8] <== eq[8][i].out; - multi_or[1][i].in[9] <== eq[9][i].out; - multi_or[1][i].in[10] <== eq[10][i].out; - multi_or[1][i].in[11] <== eq[11][i].out; - multi_or[1][i].in[12] <== eq[12][i].out; - multi_or[1][i].in[13] <== eq[13][i].out; - multi_or[1][i].in[14] <== eq[14][i].out; - multi_or[1][i].in[15] <== eq[15][i].out; - multi_or[1][i].in[16] <== eq[16][i].out; - multi_or[1][i].in[17] <== eq[17][i].out; - multi_or[1][i].in[18] <== eq[18][i].out; - multi_or[1][i].in[19] <== eq[19][i].out; - multi_or[1][i].in[20] <== eq[20][i].out; - multi_or[1][i].in[21] <== eq[21][i].out; - multi_or[1][i].in[22] <== eq[22][i].out; - multi_or[1][i].in[23] <== eq[24][i].out; - multi_or[1][i].in[24] <== eq[25][i].out; - multi_or[1][i].in[25] <== eq[26][i].out; - multi_or[1][i].in[26] <== eq[27][i].out; - multi_or[1][i].in[27] <== eq[28][i].out; - multi_or[1][i].in[28] <== eq[29][i].out; - multi_or[1][i].in[29] <== eq[30][i].out; - multi_or[1][i].in[30] <== eq[31][i].out; - multi_or[1][i].in[31] <== eq[32][i].out; - multi_or[1][i].in[32] <== eq[33][i].out; - multi_or[1][i].in[33] <== eq[34][i].out; - multi_or[1][i].in[34] <== eq[35][i].out; - multi_or[1][i].in[35] <== eq[36][i].out; - multi_or[1][i].in[36] <== eq[37][i].out; - multi_or[1][i].in[37] <== eq[38][i].out; - multi_or[1][i].in[38] <== eq[39][i].out; - multi_or[1][i].in[39] <== eq[40][i].out; - multi_or[1][i].in[40] <== eq[41][i].out; - multi_or[1][i].in[41] <== eq[42][i].out; - multi_or[1][i].in[42] <== eq[43][i].out; - multi_or[1][i].in[43] <== eq[44][i].out; - multi_or[1][i].in[44] <== eq[45][i].out; - multi_or[1][i].in[45] <== eq[46][i].out; - multi_or[1][i].in[46] <== eq[47][i].out; - multi_or[1][i].in[47] <== eq[48][i].out; - multi_or[1][i].in[48] <== eq[49][i].out; - multi_or[1][i].in[49] <== eq[50][i].out; - multi_or[1][i].in[50] <== eq[51][i].out; - multi_or[1][i].in[51] <== eq[52][i].out; - multi_or[1][i].in[52] <== eq[53][i].out; - multi_or[1][i].in[53] <== eq[54][i].out; - multi_or[1][i].in[54] <== eq[55][i].out; - multi_or[1][i].in[55] <== eq[56][i].out; - multi_or[1][i].in[56] <== eq[57][i].out; - multi_or[1][i].in[57] <== eq[58][i].out; - multi_or[1][i].in[58] <== eq[59][i].out; - multi_or[1][i].in[59] <== eq[60][i].out; - multi_or[1][i].in[60] <== eq[61][i].out; - multi_or[1][i].in[61] <== eq[62][i].out; - multi_or[1][i].in[62] <== eq[63][i].out; - multi_or[1][i].in[63] <== eq[64][i].out; - multi_or[1][i].in[64] <== eq[65][i].out; - multi_or[1][i].in[65] <== eq[66][i].out; - multi_or[1][i].in[66] <== eq[67][i].out; - multi_or[1][i].in[67] <== eq[68][i].out; - multi_or[1][i].in[68] <== eq[69][i].out; - multi_or[1][i].in[69] <== eq[70][i].out; - multi_or[1][i].in[70] <== eq[71][i].out; - multi_or[1][i].in[71] <== eq[72][i].out; - multi_or[1][i].in[72] <== eq[73][i].out; - multi_or[1][i].in[73] <== eq[74][i].out; - multi_or[1][i].in[74] <== eq[75][i].out; - multi_or[1][i].in[75] <== eq[76][i].out; - multi_or[1][i].in[76] <== eq[77][i].out; - multi_or[1][i].in[77] <== eq[78][i].out; - multi_or[1][i].in[78] <== eq[79][i].out; - multi_or[1][i].in[79] <== eq[80][i].out; - multi_or[1][i].in[80] <== eq[81][i].out; - multi_or[1][i].in[81] <== eq[82][i].out; - and[3][i].b <== multi_or[1][i].out; + and[3][i].a <== lt[4][i].out; + and[3][i].b <== lt[5][i].out; + and[4][i] = AND(); + and[4][i].a <== states[i][1]; + multi_or[1][i] = MultiOR(25); + multi_or[1][i].in[0] <== and[0][i].out; + multi_or[1][i].in[1] <== and[3][i].out; + multi_or[1][i].in[2] <== eq[0][i].out; + multi_or[1][i].in[3] <== eq[1][i].out; + multi_or[1][i].in[4] <== eq[2][i].out; + multi_or[1][i].in[5] <== eq[3][i].out; + multi_or[1][i].in[6] <== eq[4][i].out; + multi_or[1][i].in[7] <== eq[5][i].out; + multi_or[1][i].in[8] <== eq[6][i].out; + multi_or[1][i].in[9] <== eq[7][i].out; + multi_or[1][i].in[10] <== eq[8][i].out; + multi_or[1][i].in[11] <== eq[9][i].out; + multi_or[1][i].in[12] <== eq[10][i].out; + multi_or[1][i].in[13] <== eq[11][i].out; + multi_or[1][i].in[14] <== eq[12][i].out; + multi_or[1][i].in[15] <== eq[13][i].out; + multi_or[1][i].in[16] <== eq[14][i].out; + multi_or[1][i].in[17] <== eq[15][i].out; + multi_or[1][i].in[18] <== eq[16][i].out; + multi_or[1][i].in[19] <== eq[17][i].out; + multi_or[1][i].in[20] <== eq[18][i].out; + multi_or[1][i].in[21] <== eq[19][i].out; + multi_or[1][i].in[22] <== eq[20][i].out; + multi_or[1][i].in[23] <== eq[21][i].out; + multi_or[1][i].in[24] <== eq[22][i].out; + and[4][i].b <== multi_or[1][i].out; multi_or[2][i] = MultiOR(2); multi_or[2][i].in[0] <== and[2][i].out; - multi_or[2][i].in[1] <== and[3][i].out; + multi_or[2][i].in[1] <== and[4][i].out; states[i+1][1] <== multi_or[2][i].out; state_changed[i].in[0] <== states[i+1][1]; - eq[83][i] = IsEqual(); - eq[83][i].in[0] <== in[i]; - eq[83][i].in[1] <== 64; - and[4][i] = AND(); - and[4][i].a <== states[i][1]; - and[4][i].b <== eq[83][i].out; - states[i+1][2] <== and[4][i].out; - state_changed[i].in[1] <== states[i+1][2]; - lt[4][i] = LessEqThan(8); - lt[4][i].in[0] <== 97; - lt[4][i].in[1] <== in[i]; - lt[5][i] = LessEqThan(8); - lt[5][i].in[0] <== in[i]; - lt[5][i].in[1] <== 122; + eq[24][i] = IsEqual(); + eq[24][i].in[0] <== in[i]; + eq[24][i].in[1] <== 64; and[5][i] = AND(); - and[5][i].a <== lt[4][i].out; - and[5][i].b <== lt[5][i].out; + and[5][i].a <== states[i][1]; + and[5][i].b <== eq[24][i].out; + states[i+1][2] <== and[5][i].out; + state_changed[i].in[1] <== states[i+1][2]; + lt[6][i] = LessEqThan(8); + lt[6][i].in[0] <== 97; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessEqThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 122; and[6][i] = AND(); - and[6][i].a <== states[i][2]; + and[6][i].a <== lt[6][i].out; + and[6][i].b <== lt[7][i].out; + and[7][i] = AND(); + and[7][i].a <== states[i][2]; multi_or[3][i] = MultiOR(14); multi_or[3][i].in[0] <== and[0][i].out; - multi_or[3][i].in[1] <== and[5][i].out; + multi_or[3][i].in[1] <== and[6][i].out; multi_or[3][i].in[2] <== eq[8][i].out; multi_or[3][i].in[3] <== eq[9][i].out; multi_or[3][i].in[4] <== eq[11][i].out; @@ -449,13 +224,13 @@ template EmailAddrRegex(msg_bytes) { multi_or[3][i].in[11] <== eq[18][i].out; multi_or[3][i].in[12] <== eq[19][i].out; multi_or[3][i].in[13] <== eq[20][i].out; - and[6][i].b <== multi_or[3][i].out; - and[7][i] = AND(); - and[7][i].a <== states[i][3]; and[7][i].b <== multi_or[3][i].out; + and[8][i] = AND(); + and[8][i].a <== states[i][3]; + and[8][i].b <== multi_or[3][i].out; multi_or[4][i] = MultiOR(2); - multi_or[4][i].in[0] <== and[6][i].out; - multi_or[4][i].in[1] <== and[7][i].out; + multi_or[4][i].in[0] <== and[7][i].out; + multi_or[4][i].in[1] <== and[8][i].out; states[i+1][3] <== multi_or[4][i].out; state_changed[i].in[2] <== states[i+1][3]; states[i+1][0] <== 1 - state_changed[i].out; diff --git a/packages/circom/circuits/common/email_addr_with_name_regex.circom b/packages/circom/circuits/common/email_addr_with_name_regex.circom index a620711..4727729 100644 --- a/packages/circom/circuits/common/email_addr_with_name_regex.circom +++ b/packages/circom/circuits/common/email_addr_with_name_regex.circom @@ -13,9 +13,9 @@ template EmailAddrWithNameRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[253][num_bytes]; - component lt[22][num_bytes]; - component and[30][num_bytes]; + component eq[50][num_bytes]; + component lt[24][num_bytes]; + component and[31][num_bytes]; component multi_or[13][num_bytes]; signal states[num_bytes+1][7]; component state_changed[num_bytes]; @@ -99,1009 +99,85 @@ template EmailAddrWithNameRegex(msg_bytes) { multi_or[0][i].in[12] <== eq[10][i].out; multi_or[0][i].in[13] <== eq[11][i].out; and[2][i].b <== multi_or[0][i].out; + lt[4][i] = LessEqThan(8); + lt[4][i].in[0] <== 14; + lt[4][i].in[1] <== in[i]; + lt[5][i] = LessEqThan(8); + lt[5][i].in[0] <== in[i]; + lt[5][i].in[1] <== 254; + and[3][i] = AND(); + and[3][i].a <== lt[4][i].out; + and[3][i].b <== lt[5][i].out; + and[4][i] = AND(); + and[4][i].a <== states[i][1]; + multi_or[1][i] = MultiOR(13); + multi_or[1][i].in[0] <== and[3][i].out; + multi_or[1][i].in[1] <== eq[0][i].out; + multi_or[1][i].in[2] <== eq[1][i].out; + multi_or[1][i].in[3] <== eq[2][i].out; + multi_or[1][i].in[4] <== eq[3][i].out; + multi_or[1][i].in[5] <== eq[4][i].out; + multi_or[1][i].in[6] <== eq[5][i].out; + multi_or[1][i].in[7] <== eq[6][i].out; + multi_or[1][i].in[8] <== eq[7][i].out; + multi_or[1][i].in[9] <== eq[8][i].out; + multi_or[1][i].in[10] <== eq[9][i].out; + multi_or[1][i].in[11] <== eq[10][i].out; + multi_or[1][i].in[12] <== eq[11][i].out; + and[4][i].b <== multi_or[1][i].out; + lt[6][i] = LessEqThan(8); + lt[6][i].in[0] <== 14; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessEqThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 32; + and[5][i] = AND(); + and[5][i].a <== lt[6][i].out; + and[5][i].b <== lt[7][i].out; + lt[8][i] = LessEqThan(8); + lt[8][i].in[0] <== 127; + lt[8][i].in[1] <== in[i]; + lt[9][i] = LessEqThan(8); + lt[9][i].in[0] <== in[i]; + lt[9][i].in[1] <== 254; + and[6][i] = AND(); + and[6][i].a <== lt[8][i].out; + and[6][i].b <== lt[9][i].out; eq[12][i] = IsEqual(); eq[12][i].in[0] <== in[i]; - eq[12][i].in[1] <== 14; + eq[12][i].in[1] <== 34; eq[13][i] = IsEqual(); eq[13][i].in[0] <== in[i]; - eq[13][i].in[1] <== 15; + eq[13][i].in[1] <== 40; eq[14][i] = IsEqual(); eq[14][i].in[0] <== in[i]; - eq[14][i].in[1] <== 16; + eq[14][i].in[1] <== 41; eq[15][i] = IsEqual(); eq[15][i].in[0] <== in[i]; - eq[15][i].in[1] <== 17; + eq[15][i].in[1] <== 44; eq[16][i] = IsEqual(); eq[16][i].in[0] <== in[i]; - eq[16][i].in[1] <== 18; + eq[16][i].in[1] <== 58; eq[17][i] = IsEqual(); eq[17][i].in[0] <== in[i]; - eq[17][i].in[1] <== 19; + eq[17][i].in[1] <== 59; eq[18][i] = IsEqual(); eq[18][i].in[0] <== in[i]; - eq[18][i].in[1] <== 20; + eq[18][i].in[1] <== 62; eq[19][i] = IsEqual(); eq[19][i].in[0] <== in[i]; - eq[19][i].in[1] <== 21; + eq[19][i].in[1] <== 91; eq[20][i] = IsEqual(); eq[20][i].in[0] <== in[i]; - eq[20][i].in[1] <== 22; + eq[20][i].in[1] <== 92; eq[21][i] = IsEqual(); eq[21][i].in[0] <== in[i]; - eq[21][i].in[1] <== 23; - eq[22][i] = IsEqual(); - eq[22][i].in[0] <== in[i]; - eq[22][i].in[1] <== 24; - eq[23][i] = IsEqual(); - eq[23][i].in[0] <== in[i]; - eq[23][i].in[1] <== 25; - eq[24][i] = IsEqual(); - eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 26; - eq[25][i] = IsEqual(); - eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 27; - eq[26][i] = IsEqual(); - eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 28; - eq[27][i] = IsEqual(); - eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 29; - eq[28][i] = IsEqual(); - eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 30; - eq[29][i] = IsEqual(); - eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 31; - eq[30][i] = IsEqual(); - eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 32; - eq[31][i] = IsEqual(); - eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 33; - eq[32][i] = IsEqual(); - eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 34; - eq[33][i] = IsEqual(); - eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 35; - eq[34][i] = IsEqual(); - eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 36; - eq[35][i] = IsEqual(); - eq[35][i].in[0] <== in[i]; - eq[35][i].in[1] <== 37; - eq[36][i] = IsEqual(); - eq[36][i].in[0] <== in[i]; - eq[36][i].in[1] <== 38; - eq[37][i] = IsEqual(); - eq[37][i].in[0] <== in[i]; - eq[37][i].in[1] <== 39; - eq[38][i] = IsEqual(); - eq[38][i].in[0] <== in[i]; - eq[38][i].in[1] <== 40; - eq[39][i] = IsEqual(); - eq[39][i].in[0] <== in[i]; - eq[39][i].in[1] <== 41; - eq[40][i] = IsEqual(); - eq[40][i].in[0] <== in[i]; - eq[40][i].in[1] <== 42; - eq[41][i] = IsEqual(); - eq[41][i].in[0] <== in[i]; - eq[41][i].in[1] <== 43; - eq[42][i] = IsEqual(); - eq[42][i].in[0] <== in[i]; - eq[42][i].in[1] <== 44; - eq[43][i] = IsEqual(); - eq[43][i].in[0] <== in[i]; - eq[43][i].in[1] <== 45; - eq[44][i] = IsEqual(); - eq[44][i].in[0] <== in[i]; - eq[44][i].in[1] <== 46; - eq[45][i] = IsEqual(); - eq[45][i].in[0] <== in[i]; - eq[45][i].in[1] <== 47; - eq[46][i] = IsEqual(); - eq[46][i].in[0] <== in[i]; - eq[46][i].in[1] <== 48; - eq[47][i] = IsEqual(); - eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 49; - eq[48][i] = IsEqual(); - eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 50; - eq[49][i] = IsEqual(); - eq[49][i].in[0] <== in[i]; - eq[49][i].in[1] <== 51; - eq[50][i] = IsEqual(); - eq[50][i].in[0] <== in[i]; - eq[50][i].in[1] <== 52; - eq[51][i] = IsEqual(); - eq[51][i].in[0] <== in[i]; - eq[51][i].in[1] <== 53; - eq[52][i] = IsEqual(); - eq[52][i].in[0] <== in[i]; - eq[52][i].in[1] <== 54; - eq[53][i] = IsEqual(); - eq[53][i].in[0] <== in[i]; - eq[53][i].in[1] <== 55; - eq[54][i] = IsEqual(); - eq[54][i].in[0] <== in[i]; - eq[54][i].in[1] <== 56; - eq[55][i] = IsEqual(); - eq[55][i].in[0] <== in[i]; - eq[55][i].in[1] <== 57; - eq[56][i] = IsEqual(); - eq[56][i].in[0] <== in[i]; - eq[56][i].in[1] <== 58; - eq[57][i] = IsEqual(); - eq[57][i].in[0] <== in[i]; - eq[57][i].in[1] <== 59; - eq[58][i] = IsEqual(); - eq[58][i].in[0] <== in[i]; - eq[58][i].in[1] <== 60; - eq[59][i] = IsEqual(); - eq[59][i].in[0] <== in[i]; - eq[59][i].in[1] <== 61; - eq[60][i] = IsEqual(); - eq[60][i].in[0] <== in[i]; - eq[60][i].in[1] <== 62; - eq[61][i] = IsEqual(); - eq[61][i].in[0] <== in[i]; - eq[61][i].in[1] <== 63; - eq[62][i] = IsEqual(); - eq[62][i].in[0] <== in[i]; - eq[62][i].in[1] <== 64; - eq[63][i] = IsEqual(); - eq[63][i].in[0] <== in[i]; - eq[63][i].in[1] <== 65; - eq[64][i] = IsEqual(); - eq[64][i].in[0] <== in[i]; - eq[64][i].in[1] <== 66; - eq[65][i] = IsEqual(); - eq[65][i].in[0] <== in[i]; - eq[65][i].in[1] <== 67; - eq[66][i] = IsEqual(); - eq[66][i].in[0] <== in[i]; - eq[66][i].in[1] <== 68; - eq[67][i] = IsEqual(); - eq[67][i].in[0] <== in[i]; - eq[67][i].in[1] <== 69; - eq[68][i] = IsEqual(); - eq[68][i].in[0] <== in[i]; - eq[68][i].in[1] <== 70; - eq[69][i] = IsEqual(); - eq[69][i].in[0] <== in[i]; - eq[69][i].in[1] <== 71; - eq[70][i] = IsEqual(); - eq[70][i].in[0] <== in[i]; - eq[70][i].in[1] <== 72; - eq[71][i] = IsEqual(); - eq[71][i].in[0] <== in[i]; - eq[71][i].in[1] <== 73; - eq[72][i] = IsEqual(); - eq[72][i].in[0] <== in[i]; - eq[72][i].in[1] <== 74; - eq[73][i] = IsEqual(); - eq[73][i].in[0] <== in[i]; - eq[73][i].in[1] <== 75; - eq[74][i] = IsEqual(); - eq[74][i].in[0] <== in[i]; - eq[74][i].in[1] <== 76; - eq[75][i] = IsEqual(); - eq[75][i].in[0] <== in[i]; - eq[75][i].in[1] <== 77; - eq[76][i] = IsEqual(); - eq[76][i].in[0] <== in[i]; - eq[76][i].in[1] <== 78; - eq[77][i] = IsEqual(); - eq[77][i].in[0] <== in[i]; - eq[77][i].in[1] <== 79; - eq[78][i] = IsEqual(); - eq[78][i].in[0] <== in[i]; - eq[78][i].in[1] <== 80; - eq[79][i] = IsEqual(); - eq[79][i].in[0] <== in[i]; - eq[79][i].in[1] <== 81; - eq[80][i] = IsEqual(); - eq[80][i].in[0] <== in[i]; - eq[80][i].in[1] <== 82; - eq[81][i] = IsEqual(); - eq[81][i].in[0] <== in[i]; - eq[81][i].in[1] <== 83; - eq[82][i] = IsEqual(); - eq[82][i].in[0] <== in[i]; - eq[82][i].in[1] <== 84; - eq[83][i] = IsEqual(); - eq[83][i].in[0] <== in[i]; - eq[83][i].in[1] <== 85; - eq[84][i] = IsEqual(); - eq[84][i].in[0] <== in[i]; - eq[84][i].in[1] <== 86; - eq[85][i] = IsEqual(); - eq[85][i].in[0] <== in[i]; - eq[85][i].in[1] <== 87; - eq[86][i] = IsEqual(); - eq[86][i].in[0] <== in[i]; - eq[86][i].in[1] <== 88; - eq[87][i] = IsEqual(); - eq[87][i].in[0] <== in[i]; - eq[87][i].in[1] <== 89; - eq[88][i] = IsEqual(); - eq[88][i].in[0] <== in[i]; - eq[88][i].in[1] <== 90; - eq[89][i] = IsEqual(); - eq[89][i].in[0] <== in[i]; - eq[89][i].in[1] <== 91; - eq[90][i] = IsEqual(); - eq[90][i].in[0] <== in[i]; - eq[90][i].in[1] <== 92; - eq[91][i] = IsEqual(); - eq[91][i].in[0] <== in[i]; - eq[91][i].in[1] <== 93; - eq[92][i] = IsEqual(); - eq[92][i].in[0] <== in[i]; - eq[92][i].in[1] <== 94; - eq[93][i] = IsEqual(); - eq[93][i].in[0] <== in[i]; - eq[93][i].in[1] <== 95; - eq[94][i] = IsEqual(); - eq[94][i].in[0] <== in[i]; - eq[94][i].in[1] <== 96; - eq[95][i] = IsEqual(); - eq[95][i].in[0] <== in[i]; - eq[95][i].in[1] <== 97; - eq[96][i] = IsEqual(); - eq[96][i].in[0] <== in[i]; - eq[96][i].in[1] <== 98; - eq[97][i] = IsEqual(); - eq[97][i].in[0] <== in[i]; - eq[97][i].in[1] <== 99; - eq[98][i] = IsEqual(); - eq[98][i].in[0] <== in[i]; - eq[98][i].in[1] <== 100; - eq[99][i] = IsEqual(); - eq[99][i].in[0] <== in[i]; - eq[99][i].in[1] <== 101; - eq[100][i] = IsEqual(); - eq[100][i].in[0] <== in[i]; - eq[100][i].in[1] <== 102; - eq[101][i] = IsEqual(); - eq[101][i].in[0] <== in[i]; - eq[101][i].in[1] <== 103; - eq[102][i] = IsEqual(); - eq[102][i].in[0] <== in[i]; - eq[102][i].in[1] <== 104; - eq[103][i] = IsEqual(); - eq[103][i].in[0] <== in[i]; - eq[103][i].in[1] <== 105; - eq[104][i] = IsEqual(); - eq[104][i].in[0] <== in[i]; - eq[104][i].in[1] <== 106; - eq[105][i] = IsEqual(); - eq[105][i].in[0] <== in[i]; - eq[105][i].in[1] <== 107; - eq[106][i] = IsEqual(); - eq[106][i].in[0] <== in[i]; - eq[106][i].in[1] <== 108; - eq[107][i] = IsEqual(); - eq[107][i].in[0] <== in[i]; - eq[107][i].in[1] <== 109; - eq[108][i] = IsEqual(); - eq[108][i].in[0] <== in[i]; - eq[108][i].in[1] <== 110; - eq[109][i] = IsEqual(); - eq[109][i].in[0] <== in[i]; - eq[109][i].in[1] <== 111; - eq[110][i] = IsEqual(); - eq[110][i].in[0] <== in[i]; - eq[110][i].in[1] <== 112; - eq[111][i] = IsEqual(); - eq[111][i].in[0] <== in[i]; - eq[111][i].in[1] <== 113; - eq[112][i] = IsEqual(); - eq[112][i].in[0] <== in[i]; - eq[112][i].in[1] <== 114; - eq[113][i] = IsEqual(); - eq[113][i].in[0] <== in[i]; - eq[113][i].in[1] <== 115; - eq[114][i] = IsEqual(); - eq[114][i].in[0] <== in[i]; - eq[114][i].in[1] <== 116; - eq[115][i] = IsEqual(); - eq[115][i].in[0] <== in[i]; - eq[115][i].in[1] <== 117; - eq[116][i] = IsEqual(); - eq[116][i].in[0] <== in[i]; - eq[116][i].in[1] <== 118; - eq[117][i] = IsEqual(); - eq[117][i].in[0] <== in[i]; - eq[117][i].in[1] <== 119; - eq[118][i] = IsEqual(); - eq[118][i].in[0] <== in[i]; - eq[118][i].in[1] <== 120; - eq[119][i] = IsEqual(); - eq[119][i].in[0] <== in[i]; - eq[119][i].in[1] <== 121; - eq[120][i] = IsEqual(); - eq[120][i].in[0] <== in[i]; - eq[120][i].in[1] <== 122; - eq[121][i] = IsEqual(); - eq[121][i].in[0] <== in[i]; - eq[121][i].in[1] <== 123; - eq[122][i] = IsEqual(); - eq[122][i].in[0] <== in[i]; - eq[122][i].in[1] <== 124; - eq[123][i] = IsEqual(); - eq[123][i].in[0] <== in[i]; - eq[123][i].in[1] <== 125; - eq[124][i] = IsEqual(); - eq[124][i].in[0] <== in[i]; - eq[124][i].in[1] <== 126; - eq[125][i] = IsEqual(); - eq[125][i].in[0] <== in[i]; - eq[125][i].in[1] <== 127; - eq[126][i] = IsEqual(); - eq[126][i].in[0] <== in[i]; - eq[126][i].in[1] <== 128; - eq[127][i] = IsEqual(); - eq[127][i].in[0] <== in[i]; - eq[127][i].in[1] <== 129; - eq[128][i] = IsEqual(); - eq[128][i].in[0] <== in[i]; - eq[128][i].in[1] <== 130; - eq[129][i] = IsEqual(); - eq[129][i].in[0] <== in[i]; - eq[129][i].in[1] <== 131; - eq[130][i] = IsEqual(); - eq[130][i].in[0] <== in[i]; - eq[130][i].in[1] <== 132; - eq[131][i] = IsEqual(); - eq[131][i].in[0] <== in[i]; - eq[131][i].in[1] <== 133; - eq[132][i] = IsEqual(); - eq[132][i].in[0] <== in[i]; - eq[132][i].in[1] <== 134; - eq[133][i] = IsEqual(); - eq[133][i].in[0] <== in[i]; - eq[133][i].in[1] <== 135; - eq[134][i] = IsEqual(); - eq[134][i].in[0] <== in[i]; - eq[134][i].in[1] <== 136; - eq[135][i] = IsEqual(); - eq[135][i].in[0] <== in[i]; - eq[135][i].in[1] <== 137; - eq[136][i] = IsEqual(); - eq[136][i].in[0] <== in[i]; - eq[136][i].in[1] <== 138; - eq[137][i] = IsEqual(); - eq[137][i].in[0] <== in[i]; - eq[137][i].in[1] <== 139; - eq[138][i] = IsEqual(); - eq[138][i].in[0] <== in[i]; - eq[138][i].in[1] <== 140; - eq[139][i] = IsEqual(); - eq[139][i].in[0] <== in[i]; - eq[139][i].in[1] <== 141; - eq[140][i] = IsEqual(); - eq[140][i].in[0] <== in[i]; - eq[140][i].in[1] <== 142; - eq[141][i] = IsEqual(); - eq[141][i].in[0] <== in[i]; - eq[141][i].in[1] <== 143; - eq[142][i] = IsEqual(); - eq[142][i].in[0] <== in[i]; - eq[142][i].in[1] <== 144; - eq[143][i] = IsEqual(); - eq[143][i].in[0] <== in[i]; - eq[143][i].in[1] <== 145; - eq[144][i] = IsEqual(); - eq[144][i].in[0] <== in[i]; - eq[144][i].in[1] <== 146; - eq[145][i] = IsEqual(); - eq[145][i].in[0] <== in[i]; - eq[145][i].in[1] <== 147; - eq[146][i] = IsEqual(); - eq[146][i].in[0] <== in[i]; - eq[146][i].in[1] <== 148; - eq[147][i] = IsEqual(); - eq[147][i].in[0] <== in[i]; - eq[147][i].in[1] <== 149; - eq[148][i] = IsEqual(); - eq[148][i].in[0] <== in[i]; - eq[148][i].in[1] <== 150; - eq[149][i] = IsEqual(); - eq[149][i].in[0] <== in[i]; - eq[149][i].in[1] <== 151; - eq[150][i] = IsEqual(); - eq[150][i].in[0] <== in[i]; - eq[150][i].in[1] <== 152; - eq[151][i] = IsEqual(); - eq[151][i].in[0] <== in[i]; - eq[151][i].in[1] <== 153; - eq[152][i] = IsEqual(); - eq[152][i].in[0] <== in[i]; - eq[152][i].in[1] <== 154; - eq[153][i] = IsEqual(); - eq[153][i].in[0] <== in[i]; - eq[153][i].in[1] <== 155; - eq[154][i] = IsEqual(); - eq[154][i].in[0] <== in[i]; - eq[154][i].in[1] <== 156; - eq[155][i] = IsEqual(); - eq[155][i].in[0] <== in[i]; - eq[155][i].in[1] <== 157; - eq[156][i] = IsEqual(); - eq[156][i].in[0] <== in[i]; - eq[156][i].in[1] <== 158; - eq[157][i] = IsEqual(); - eq[157][i].in[0] <== in[i]; - eq[157][i].in[1] <== 159; - eq[158][i] = IsEqual(); - eq[158][i].in[0] <== in[i]; - eq[158][i].in[1] <== 160; - eq[159][i] = IsEqual(); - eq[159][i].in[0] <== in[i]; - eq[159][i].in[1] <== 161; - eq[160][i] = IsEqual(); - eq[160][i].in[0] <== in[i]; - eq[160][i].in[1] <== 162; - eq[161][i] = IsEqual(); - eq[161][i].in[0] <== in[i]; - eq[161][i].in[1] <== 163; - eq[162][i] = IsEqual(); - eq[162][i].in[0] <== in[i]; - eq[162][i].in[1] <== 164; - eq[163][i] = IsEqual(); - eq[163][i].in[0] <== in[i]; - eq[163][i].in[1] <== 165; - eq[164][i] = IsEqual(); - eq[164][i].in[0] <== in[i]; - eq[164][i].in[1] <== 166; - eq[165][i] = IsEqual(); - eq[165][i].in[0] <== in[i]; - eq[165][i].in[1] <== 167; - eq[166][i] = IsEqual(); - eq[166][i].in[0] <== in[i]; - eq[166][i].in[1] <== 168; - eq[167][i] = IsEqual(); - eq[167][i].in[0] <== in[i]; - eq[167][i].in[1] <== 169; - eq[168][i] = IsEqual(); - eq[168][i].in[0] <== in[i]; - eq[168][i].in[1] <== 170; - eq[169][i] = IsEqual(); - eq[169][i].in[0] <== in[i]; - eq[169][i].in[1] <== 171; - eq[170][i] = IsEqual(); - eq[170][i].in[0] <== in[i]; - eq[170][i].in[1] <== 172; - eq[171][i] = IsEqual(); - eq[171][i].in[0] <== in[i]; - eq[171][i].in[1] <== 173; - eq[172][i] = IsEqual(); - eq[172][i].in[0] <== in[i]; - eq[172][i].in[1] <== 174; - eq[173][i] = IsEqual(); - eq[173][i].in[0] <== in[i]; - eq[173][i].in[1] <== 175; - eq[174][i] = IsEqual(); - eq[174][i].in[0] <== in[i]; - eq[174][i].in[1] <== 176; - eq[175][i] = IsEqual(); - eq[175][i].in[0] <== in[i]; - eq[175][i].in[1] <== 177; - eq[176][i] = IsEqual(); - eq[176][i].in[0] <== in[i]; - eq[176][i].in[1] <== 178; - eq[177][i] = IsEqual(); - eq[177][i].in[0] <== in[i]; - eq[177][i].in[1] <== 179; - eq[178][i] = IsEqual(); - eq[178][i].in[0] <== in[i]; - eq[178][i].in[1] <== 180; - eq[179][i] = IsEqual(); - eq[179][i].in[0] <== in[i]; - eq[179][i].in[1] <== 181; - eq[180][i] = IsEqual(); - eq[180][i].in[0] <== in[i]; - eq[180][i].in[1] <== 182; - eq[181][i] = IsEqual(); - eq[181][i].in[0] <== in[i]; - eq[181][i].in[1] <== 183; - eq[182][i] = IsEqual(); - eq[182][i].in[0] <== in[i]; - eq[182][i].in[1] <== 184; - eq[183][i] = IsEqual(); - eq[183][i].in[0] <== in[i]; - eq[183][i].in[1] <== 185; - eq[184][i] = IsEqual(); - eq[184][i].in[0] <== in[i]; - eq[184][i].in[1] <== 186; - eq[185][i] = IsEqual(); - eq[185][i].in[0] <== in[i]; - eq[185][i].in[1] <== 187; - eq[186][i] = IsEqual(); - eq[186][i].in[0] <== in[i]; - eq[186][i].in[1] <== 188; - eq[187][i] = IsEqual(); - eq[187][i].in[0] <== in[i]; - eq[187][i].in[1] <== 189; - eq[188][i] = IsEqual(); - eq[188][i].in[0] <== in[i]; - eq[188][i].in[1] <== 190; - eq[189][i] = IsEqual(); - eq[189][i].in[0] <== in[i]; - eq[189][i].in[1] <== 191; - eq[190][i] = IsEqual(); - eq[190][i].in[0] <== in[i]; - eq[190][i].in[1] <== 192; - eq[191][i] = IsEqual(); - eq[191][i].in[0] <== in[i]; - eq[191][i].in[1] <== 193; - eq[192][i] = IsEqual(); - eq[192][i].in[0] <== in[i]; - eq[192][i].in[1] <== 194; - eq[193][i] = IsEqual(); - eq[193][i].in[0] <== in[i]; - eq[193][i].in[1] <== 195; - eq[194][i] = IsEqual(); - eq[194][i].in[0] <== in[i]; - eq[194][i].in[1] <== 196; - eq[195][i] = IsEqual(); - eq[195][i].in[0] <== in[i]; - eq[195][i].in[1] <== 197; - eq[196][i] = IsEqual(); - eq[196][i].in[0] <== in[i]; - eq[196][i].in[1] <== 198; - eq[197][i] = IsEqual(); - eq[197][i].in[0] <== in[i]; - eq[197][i].in[1] <== 199; - eq[198][i] = IsEqual(); - eq[198][i].in[0] <== in[i]; - eq[198][i].in[1] <== 200; - eq[199][i] = IsEqual(); - eq[199][i].in[0] <== in[i]; - eq[199][i].in[1] <== 201; - eq[200][i] = IsEqual(); - eq[200][i].in[0] <== in[i]; - eq[200][i].in[1] <== 202; - eq[201][i] = IsEqual(); - eq[201][i].in[0] <== in[i]; - eq[201][i].in[1] <== 203; - eq[202][i] = IsEqual(); - eq[202][i].in[0] <== in[i]; - eq[202][i].in[1] <== 204; - eq[203][i] = IsEqual(); - eq[203][i].in[0] <== in[i]; - eq[203][i].in[1] <== 205; - eq[204][i] = IsEqual(); - eq[204][i].in[0] <== in[i]; - eq[204][i].in[1] <== 206; - eq[205][i] = IsEqual(); - eq[205][i].in[0] <== in[i]; - eq[205][i].in[1] <== 207; - eq[206][i] = IsEqual(); - eq[206][i].in[0] <== in[i]; - eq[206][i].in[1] <== 208; - eq[207][i] = IsEqual(); - eq[207][i].in[0] <== in[i]; - eq[207][i].in[1] <== 209; - eq[208][i] = IsEqual(); - eq[208][i].in[0] <== in[i]; - eq[208][i].in[1] <== 210; - eq[209][i] = IsEqual(); - eq[209][i].in[0] <== in[i]; - eq[209][i].in[1] <== 211; - eq[210][i] = IsEqual(); - eq[210][i].in[0] <== in[i]; - eq[210][i].in[1] <== 212; - eq[211][i] = IsEqual(); - eq[211][i].in[0] <== in[i]; - eq[211][i].in[1] <== 213; - eq[212][i] = IsEqual(); - eq[212][i].in[0] <== in[i]; - eq[212][i].in[1] <== 214; - eq[213][i] = IsEqual(); - eq[213][i].in[0] <== in[i]; - eq[213][i].in[1] <== 215; - eq[214][i] = IsEqual(); - eq[214][i].in[0] <== in[i]; - eq[214][i].in[1] <== 216; - eq[215][i] = IsEqual(); - eq[215][i].in[0] <== in[i]; - eq[215][i].in[1] <== 217; - eq[216][i] = IsEqual(); - eq[216][i].in[0] <== in[i]; - eq[216][i].in[1] <== 218; - eq[217][i] = IsEqual(); - eq[217][i].in[0] <== in[i]; - eq[217][i].in[1] <== 219; - eq[218][i] = IsEqual(); - eq[218][i].in[0] <== in[i]; - eq[218][i].in[1] <== 220; - eq[219][i] = IsEqual(); - eq[219][i].in[0] <== in[i]; - eq[219][i].in[1] <== 221; - eq[220][i] = IsEqual(); - eq[220][i].in[0] <== in[i]; - eq[220][i].in[1] <== 222; - eq[221][i] = IsEqual(); - eq[221][i].in[0] <== in[i]; - eq[221][i].in[1] <== 223; - eq[222][i] = IsEqual(); - eq[222][i].in[0] <== in[i]; - eq[222][i].in[1] <== 224; - eq[223][i] = IsEqual(); - eq[223][i].in[0] <== in[i]; - eq[223][i].in[1] <== 225; - eq[224][i] = IsEqual(); - eq[224][i].in[0] <== in[i]; - eq[224][i].in[1] <== 226; - eq[225][i] = IsEqual(); - eq[225][i].in[0] <== in[i]; - eq[225][i].in[1] <== 227; - eq[226][i] = IsEqual(); - eq[226][i].in[0] <== in[i]; - eq[226][i].in[1] <== 228; - eq[227][i] = IsEqual(); - eq[227][i].in[0] <== in[i]; - eq[227][i].in[1] <== 229; - eq[228][i] = IsEqual(); - eq[228][i].in[0] <== in[i]; - eq[228][i].in[1] <== 230; - eq[229][i] = IsEqual(); - eq[229][i].in[0] <== in[i]; - eq[229][i].in[1] <== 231; - eq[230][i] = IsEqual(); - eq[230][i].in[0] <== in[i]; - eq[230][i].in[1] <== 232; - eq[231][i] = IsEqual(); - eq[231][i].in[0] <== in[i]; - eq[231][i].in[1] <== 233; - eq[232][i] = IsEqual(); - eq[232][i].in[0] <== in[i]; - eq[232][i].in[1] <== 234; - eq[233][i] = IsEqual(); - eq[233][i].in[0] <== in[i]; - eq[233][i].in[1] <== 235; - eq[234][i] = IsEqual(); - eq[234][i].in[0] <== in[i]; - eq[234][i].in[1] <== 236; - eq[235][i] = IsEqual(); - eq[235][i].in[0] <== in[i]; - eq[235][i].in[1] <== 237; - eq[236][i] = IsEqual(); - eq[236][i].in[0] <== in[i]; - eq[236][i].in[1] <== 238; - eq[237][i] = IsEqual(); - eq[237][i].in[0] <== in[i]; - eq[237][i].in[1] <== 239; - eq[238][i] = IsEqual(); - eq[238][i].in[0] <== in[i]; - eq[238][i].in[1] <== 240; - eq[239][i] = IsEqual(); - eq[239][i].in[0] <== in[i]; - eq[239][i].in[1] <== 241; - eq[240][i] = IsEqual(); - eq[240][i].in[0] <== in[i]; - eq[240][i].in[1] <== 242; - eq[241][i] = IsEqual(); - eq[241][i].in[0] <== in[i]; - eq[241][i].in[1] <== 243; - eq[242][i] = IsEqual(); - eq[242][i].in[0] <== in[i]; - eq[242][i].in[1] <== 244; - eq[243][i] = IsEqual(); - eq[243][i].in[0] <== in[i]; - eq[243][i].in[1] <== 245; - eq[244][i] = IsEqual(); - eq[244][i].in[0] <== in[i]; - eq[244][i].in[1] <== 246; - eq[245][i] = IsEqual(); - eq[245][i].in[0] <== in[i]; - eq[245][i].in[1] <== 247; - eq[246][i] = IsEqual(); - eq[246][i].in[0] <== in[i]; - eq[246][i].in[1] <== 248; - eq[247][i] = IsEqual(); - eq[247][i].in[0] <== in[i]; - eq[247][i].in[1] <== 249; - eq[248][i] = IsEqual(); - eq[248][i].in[0] <== in[i]; - eq[248][i].in[1] <== 250; - eq[249][i] = IsEqual(); - eq[249][i].in[0] <== in[i]; - eq[249][i].in[1] <== 251; - eq[250][i] = IsEqual(); - eq[250][i].in[0] <== in[i]; - eq[250][i].in[1] <== 252; - eq[251][i] = IsEqual(); - eq[251][i].in[0] <== in[i]; - eq[251][i].in[1] <== 253; - eq[252][i] = IsEqual(); - eq[252][i].in[0] <== in[i]; - eq[252][i].in[1] <== 254; - and[3][i] = AND(); - and[3][i].a <== states[i][1]; - multi_or[1][i] = MultiOR(253); - multi_or[1][i].in[0] <== eq[0][i].out; - multi_or[1][i].in[1] <== eq[1][i].out; - multi_or[1][i].in[2] <== eq[2][i].out; - multi_or[1][i].in[3] <== eq[3][i].out; - multi_or[1][i].in[4] <== eq[4][i].out; - multi_or[1][i].in[5] <== eq[5][i].out; - multi_or[1][i].in[6] <== eq[6][i].out; - multi_or[1][i].in[7] <== eq[7][i].out; - multi_or[1][i].in[8] <== eq[8][i].out; - multi_or[1][i].in[9] <== eq[9][i].out; - multi_or[1][i].in[10] <== eq[10][i].out; - multi_or[1][i].in[11] <== eq[11][i].out; - multi_or[1][i].in[12] <== eq[12][i].out; - multi_or[1][i].in[13] <== eq[13][i].out; - multi_or[1][i].in[14] <== eq[14][i].out; - multi_or[1][i].in[15] <== eq[15][i].out; - multi_or[1][i].in[16] <== eq[16][i].out; - multi_or[1][i].in[17] <== eq[17][i].out; - multi_or[1][i].in[18] <== eq[18][i].out; - multi_or[1][i].in[19] <== eq[19][i].out; - multi_or[1][i].in[20] <== eq[20][i].out; - multi_or[1][i].in[21] <== eq[21][i].out; - multi_or[1][i].in[22] <== eq[22][i].out; - multi_or[1][i].in[23] <== eq[23][i].out; - multi_or[1][i].in[24] <== eq[24][i].out; - multi_or[1][i].in[25] <== eq[25][i].out; - multi_or[1][i].in[26] <== eq[26][i].out; - multi_or[1][i].in[27] <== eq[27][i].out; - multi_or[1][i].in[28] <== eq[28][i].out; - multi_or[1][i].in[29] <== eq[29][i].out; - multi_or[1][i].in[30] <== eq[30][i].out; - multi_or[1][i].in[31] <== eq[31][i].out; - multi_or[1][i].in[32] <== eq[32][i].out; - multi_or[1][i].in[33] <== eq[33][i].out; - multi_or[1][i].in[34] <== eq[34][i].out; - multi_or[1][i].in[35] <== eq[35][i].out; - multi_or[1][i].in[36] <== eq[36][i].out; - multi_or[1][i].in[37] <== eq[37][i].out; - multi_or[1][i].in[38] <== eq[38][i].out; - multi_or[1][i].in[39] <== eq[39][i].out; - multi_or[1][i].in[40] <== eq[40][i].out; - multi_or[1][i].in[41] <== eq[41][i].out; - multi_or[1][i].in[42] <== eq[42][i].out; - multi_or[1][i].in[43] <== eq[43][i].out; - multi_or[1][i].in[44] <== eq[44][i].out; - multi_or[1][i].in[45] <== eq[45][i].out; - multi_or[1][i].in[46] <== eq[46][i].out; - multi_or[1][i].in[47] <== eq[47][i].out; - multi_or[1][i].in[48] <== eq[48][i].out; - multi_or[1][i].in[49] <== eq[49][i].out; - multi_or[1][i].in[50] <== eq[50][i].out; - multi_or[1][i].in[51] <== eq[51][i].out; - multi_or[1][i].in[52] <== eq[52][i].out; - multi_or[1][i].in[53] <== eq[53][i].out; - multi_or[1][i].in[54] <== eq[54][i].out; - multi_or[1][i].in[55] <== eq[55][i].out; - multi_or[1][i].in[56] <== eq[56][i].out; - multi_or[1][i].in[57] <== eq[57][i].out; - multi_or[1][i].in[58] <== eq[58][i].out; - multi_or[1][i].in[59] <== eq[59][i].out; - multi_or[1][i].in[60] <== eq[60][i].out; - multi_or[1][i].in[61] <== eq[61][i].out; - multi_or[1][i].in[62] <== eq[62][i].out; - multi_or[1][i].in[63] <== eq[63][i].out; - multi_or[1][i].in[64] <== eq[64][i].out; - multi_or[1][i].in[65] <== eq[65][i].out; - multi_or[1][i].in[66] <== eq[66][i].out; - multi_or[1][i].in[67] <== eq[67][i].out; - multi_or[1][i].in[68] <== eq[68][i].out; - multi_or[1][i].in[69] <== eq[69][i].out; - multi_or[1][i].in[70] <== eq[70][i].out; - multi_or[1][i].in[71] <== eq[71][i].out; - multi_or[1][i].in[72] <== eq[72][i].out; - multi_or[1][i].in[73] <== eq[73][i].out; - multi_or[1][i].in[74] <== eq[74][i].out; - multi_or[1][i].in[75] <== eq[75][i].out; - multi_or[1][i].in[76] <== eq[76][i].out; - multi_or[1][i].in[77] <== eq[77][i].out; - multi_or[1][i].in[78] <== eq[78][i].out; - multi_or[1][i].in[79] <== eq[79][i].out; - multi_or[1][i].in[80] <== eq[80][i].out; - multi_or[1][i].in[81] <== eq[81][i].out; - multi_or[1][i].in[82] <== eq[82][i].out; - multi_or[1][i].in[83] <== eq[83][i].out; - multi_or[1][i].in[84] <== eq[84][i].out; - multi_or[1][i].in[85] <== eq[85][i].out; - multi_or[1][i].in[86] <== eq[86][i].out; - multi_or[1][i].in[87] <== eq[87][i].out; - multi_or[1][i].in[88] <== eq[88][i].out; - multi_or[1][i].in[89] <== eq[89][i].out; - multi_or[1][i].in[90] <== eq[90][i].out; - multi_or[1][i].in[91] <== eq[91][i].out; - multi_or[1][i].in[92] <== eq[92][i].out; - multi_or[1][i].in[93] <== eq[93][i].out; - multi_or[1][i].in[94] <== eq[94][i].out; - multi_or[1][i].in[95] <== eq[95][i].out; - multi_or[1][i].in[96] <== eq[96][i].out; - multi_or[1][i].in[97] <== eq[97][i].out; - multi_or[1][i].in[98] <== eq[98][i].out; - multi_or[1][i].in[99] <== eq[99][i].out; - multi_or[1][i].in[100] <== eq[100][i].out; - multi_or[1][i].in[101] <== eq[101][i].out; - multi_or[1][i].in[102] <== eq[102][i].out; - multi_or[1][i].in[103] <== eq[103][i].out; - multi_or[1][i].in[104] <== eq[104][i].out; - multi_or[1][i].in[105] <== eq[105][i].out; - multi_or[1][i].in[106] <== eq[106][i].out; - multi_or[1][i].in[107] <== eq[107][i].out; - multi_or[1][i].in[108] <== eq[108][i].out; - multi_or[1][i].in[109] <== eq[109][i].out; - multi_or[1][i].in[110] <== eq[110][i].out; - multi_or[1][i].in[111] <== eq[111][i].out; - multi_or[1][i].in[112] <== eq[112][i].out; - multi_or[1][i].in[113] <== eq[113][i].out; - multi_or[1][i].in[114] <== eq[114][i].out; - multi_or[1][i].in[115] <== eq[115][i].out; - multi_or[1][i].in[116] <== eq[116][i].out; - multi_or[1][i].in[117] <== eq[117][i].out; - multi_or[1][i].in[118] <== eq[118][i].out; - multi_or[1][i].in[119] <== eq[119][i].out; - multi_or[1][i].in[120] <== eq[120][i].out; - multi_or[1][i].in[121] <== eq[121][i].out; - multi_or[1][i].in[122] <== eq[122][i].out; - multi_or[1][i].in[123] <== eq[123][i].out; - multi_or[1][i].in[124] <== eq[124][i].out; - multi_or[1][i].in[125] <== eq[125][i].out; - multi_or[1][i].in[126] <== eq[126][i].out; - multi_or[1][i].in[127] <== eq[127][i].out; - multi_or[1][i].in[128] <== eq[128][i].out; - multi_or[1][i].in[129] <== eq[129][i].out; - multi_or[1][i].in[130] <== eq[130][i].out; - multi_or[1][i].in[131] <== eq[131][i].out; - multi_or[1][i].in[132] <== eq[132][i].out; - multi_or[1][i].in[133] <== eq[133][i].out; - multi_or[1][i].in[134] <== eq[134][i].out; - multi_or[1][i].in[135] <== eq[135][i].out; - multi_or[1][i].in[136] <== eq[136][i].out; - multi_or[1][i].in[137] <== eq[137][i].out; - multi_or[1][i].in[138] <== eq[138][i].out; - multi_or[1][i].in[139] <== eq[139][i].out; - multi_or[1][i].in[140] <== eq[140][i].out; - multi_or[1][i].in[141] <== eq[141][i].out; - multi_or[1][i].in[142] <== eq[142][i].out; - multi_or[1][i].in[143] <== eq[143][i].out; - multi_or[1][i].in[144] <== eq[144][i].out; - multi_or[1][i].in[145] <== eq[145][i].out; - multi_or[1][i].in[146] <== eq[146][i].out; - multi_or[1][i].in[147] <== eq[147][i].out; - multi_or[1][i].in[148] <== eq[148][i].out; - multi_or[1][i].in[149] <== eq[149][i].out; - multi_or[1][i].in[150] <== eq[150][i].out; - multi_or[1][i].in[151] <== eq[151][i].out; - multi_or[1][i].in[152] <== eq[152][i].out; - multi_or[1][i].in[153] <== eq[153][i].out; - multi_or[1][i].in[154] <== eq[154][i].out; - multi_or[1][i].in[155] <== eq[155][i].out; - multi_or[1][i].in[156] <== eq[156][i].out; - multi_or[1][i].in[157] <== eq[157][i].out; - multi_or[1][i].in[158] <== eq[158][i].out; - multi_or[1][i].in[159] <== eq[159][i].out; - multi_or[1][i].in[160] <== eq[160][i].out; - multi_or[1][i].in[161] <== eq[161][i].out; - multi_or[1][i].in[162] <== eq[162][i].out; - multi_or[1][i].in[163] <== eq[163][i].out; - multi_or[1][i].in[164] <== eq[164][i].out; - multi_or[1][i].in[165] <== eq[165][i].out; - multi_or[1][i].in[166] <== eq[166][i].out; - multi_or[1][i].in[167] <== eq[167][i].out; - multi_or[1][i].in[168] <== eq[168][i].out; - multi_or[1][i].in[169] <== eq[169][i].out; - multi_or[1][i].in[170] <== eq[170][i].out; - multi_or[1][i].in[171] <== eq[171][i].out; - multi_or[1][i].in[172] <== eq[172][i].out; - multi_or[1][i].in[173] <== eq[173][i].out; - multi_or[1][i].in[174] <== eq[174][i].out; - multi_or[1][i].in[175] <== eq[175][i].out; - multi_or[1][i].in[176] <== eq[176][i].out; - multi_or[1][i].in[177] <== eq[177][i].out; - multi_or[1][i].in[178] <== eq[178][i].out; - multi_or[1][i].in[179] <== eq[179][i].out; - multi_or[1][i].in[180] <== eq[180][i].out; - multi_or[1][i].in[181] <== eq[181][i].out; - multi_or[1][i].in[182] <== eq[182][i].out; - multi_or[1][i].in[183] <== eq[183][i].out; - multi_or[1][i].in[184] <== eq[184][i].out; - multi_or[1][i].in[185] <== eq[185][i].out; - multi_or[1][i].in[186] <== eq[186][i].out; - multi_or[1][i].in[187] <== eq[187][i].out; - multi_or[1][i].in[188] <== eq[188][i].out; - multi_or[1][i].in[189] <== eq[189][i].out; - multi_or[1][i].in[190] <== eq[190][i].out; - multi_or[1][i].in[191] <== eq[191][i].out; - multi_or[1][i].in[192] <== eq[192][i].out; - multi_or[1][i].in[193] <== eq[193][i].out; - multi_or[1][i].in[194] <== eq[194][i].out; - multi_or[1][i].in[195] <== eq[195][i].out; - multi_or[1][i].in[196] <== eq[196][i].out; - multi_or[1][i].in[197] <== eq[197][i].out; - multi_or[1][i].in[198] <== eq[198][i].out; - multi_or[1][i].in[199] <== eq[199][i].out; - multi_or[1][i].in[200] <== eq[200][i].out; - multi_or[1][i].in[201] <== eq[201][i].out; - multi_or[1][i].in[202] <== eq[202][i].out; - multi_or[1][i].in[203] <== eq[203][i].out; - multi_or[1][i].in[204] <== eq[204][i].out; - multi_or[1][i].in[205] <== eq[205][i].out; - multi_or[1][i].in[206] <== eq[206][i].out; - multi_or[1][i].in[207] <== eq[207][i].out; - multi_or[1][i].in[208] <== eq[208][i].out; - multi_or[1][i].in[209] <== eq[209][i].out; - multi_or[1][i].in[210] <== eq[210][i].out; - multi_or[1][i].in[211] <== eq[211][i].out; - multi_or[1][i].in[212] <== eq[212][i].out; - multi_or[1][i].in[213] <== eq[213][i].out; - multi_or[1][i].in[214] <== eq[214][i].out; - multi_or[1][i].in[215] <== eq[215][i].out; - multi_or[1][i].in[216] <== eq[216][i].out; - multi_or[1][i].in[217] <== eq[217][i].out; - multi_or[1][i].in[218] <== eq[218][i].out; - multi_or[1][i].in[219] <== eq[219][i].out; - multi_or[1][i].in[220] <== eq[220][i].out; - multi_or[1][i].in[221] <== eq[221][i].out; - multi_or[1][i].in[222] <== eq[222][i].out; - multi_or[1][i].in[223] <== eq[223][i].out; - multi_or[1][i].in[224] <== eq[224][i].out; - multi_or[1][i].in[225] <== eq[225][i].out; - multi_or[1][i].in[226] <== eq[226][i].out; - multi_or[1][i].in[227] <== eq[227][i].out; - multi_or[1][i].in[228] <== eq[228][i].out; - multi_or[1][i].in[229] <== eq[229][i].out; - multi_or[1][i].in[230] <== eq[230][i].out; - multi_or[1][i].in[231] <== eq[231][i].out; - multi_or[1][i].in[232] <== eq[232][i].out; - multi_or[1][i].in[233] <== eq[233][i].out; - multi_or[1][i].in[234] <== eq[234][i].out; - multi_or[1][i].in[235] <== eq[235][i].out; - multi_or[1][i].in[236] <== eq[236][i].out; - multi_or[1][i].in[237] <== eq[237][i].out; - multi_or[1][i].in[238] <== eq[238][i].out; - multi_or[1][i].in[239] <== eq[239][i].out; - multi_or[1][i].in[240] <== eq[240][i].out; - multi_or[1][i].in[241] <== eq[241][i].out; - multi_or[1][i].in[242] <== eq[242][i].out; - multi_or[1][i].in[243] <== eq[243][i].out; - multi_or[1][i].in[244] <== eq[244][i].out; - multi_or[1][i].in[245] <== eq[245][i].out; - multi_or[1][i].in[246] <== eq[246][i].out; - multi_or[1][i].in[247] <== eq[247][i].out; - multi_or[1][i].in[248] <== eq[248][i].out; - multi_or[1][i].in[249] <== eq[249][i].out; - multi_or[1][i].in[250] <== eq[250][i].out; - multi_or[1][i].in[251] <== eq[251][i].out; - multi_or[1][i].in[252] <== eq[252][i].out; - and[3][i].b <== multi_or[1][i].out; - lt[4][i] = LessEqThan(8); - lt[4][i].in[0] <== 14; - lt[4][i].in[1] <== in[i]; - lt[5][i] = LessEqThan(8); - lt[5][i].in[0] <== in[i]; - lt[5][i].in[1] <== 32; - and[4][i] = AND(); - and[4][i].a <== lt[4][i].out; - and[4][i].b <== lt[5][i].out; - lt[6][i] = LessEqThan(8); - lt[6][i].in[0] <== 127; - lt[6][i].in[1] <== in[i]; - lt[7][i] = LessEqThan(8); - lt[7][i].in[0] <== in[i]; - lt[7][i].in[1] <== 254; - and[5][i] = AND(); - and[5][i].a <== lt[6][i].out; - and[5][i].b <== lt[7][i].out; - and[6][i] = AND(); - and[6][i].a <== states[i][2]; + eq[21][i].in[1] <== 93; + and[7][i] = AND(); + and[7][i].a <== states[i][2]; multi_or[2][i] = MultiOR(24); - multi_or[2][i].in[0] <== and[4][i].out; - multi_or[2][i].in[1] <== and[5][i].out; + multi_or[2][i].in[0] <== and[5][i].out; + multi_or[2][i].in[1] <== and[6][i].out; multi_or[2][i].in[2] <== eq[0][i].out; multi_or[2][i].in[3] <== eq[1][i].out; multi_or[2][i].in[4] <== eq[2][i].out; @@ -1114,40 +190,58 @@ template EmailAddrWithNameRegex(msg_bytes) { multi_or[2][i].in[11] <== eq[9][i].out; multi_or[2][i].in[12] <== eq[10][i].out; multi_or[2][i].in[13] <== eq[11][i].out; - multi_or[2][i].in[14] <== eq[32][i].out; - multi_or[2][i].in[15] <== eq[38][i].out; - multi_or[2][i].in[16] <== eq[39][i].out; - multi_or[2][i].in[17] <== eq[42][i].out; - multi_or[2][i].in[18] <== eq[56][i].out; - multi_or[2][i].in[19] <== eq[57][i].out; - multi_or[2][i].in[20] <== eq[60][i].out; - multi_or[2][i].in[21] <== eq[89][i].out; - multi_or[2][i].in[22] <== eq[90][i].out; - multi_or[2][i].in[23] <== eq[91][i].out; - and[6][i].b <== multi_or[2][i].out; - lt[8][i] = LessEqThan(8); - lt[8][i].in[0] <== 14; - lt[8][i].in[1] <== in[i]; - lt[9][i] = LessEqThan(8); - lt[9][i].in[0] <== in[i]; - lt[9][i].in[1] <== 44; - and[7][i] = AND(); - and[7][i].a <== lt[8][i].out; - and[7][i].b <== lt[9][i].out; + multi_or[2][i].in[14] <== eq[12][i].out; + multi_or[2][i].in[15] <== eq[13][i].out; + multi_or[2][i].in[16] <== eq[14][i].out; + multi_or[2][i].in[17] <== eq[15][i].out; + multi_or[2][i].in[18] <== eq[16][i].out; + multi_or[2][i].in[19] <== eq[17][i].out; + multi_or[2][i].in[20] <== eq[18][i].out; + multi_or[2][i].in[21] <== eq[19][i].out; + multi_or[2][i].in[22] <== eq[20][i].out; + multi_or[2][i].in[23] <== eq[21][i].out; + and[7][i].b <== multi_or[2][i].out; lt[10][i] = LessEqThan(8); - lt[10][i].in[0] <== 123; + lt[10][i].in[0] <== 14; lt[10][i].in[1] <== in[i]; lt[11][i] = LessEqThan(8); lt[11][i].in[0] <== in[i]; - lt[11][i].in[1] <== 254; + lt[11][i].in[1] <== 44; and[8][i] = AND(); and[8][i].a <== lt[10][i].out; and[8][i].b <== lt[11][i].out; + lt[12][i] = LessEqThan(8); + lt[12][i].in[0] <== 123; + lt[12][i].in[1] <== in[i]; + lt[13][i] = LessEqThan(8); + lt[13][i].in[0] <== in[i]; + lt[13][i].in[1] <== 254; and[9][i] = AND(); - and[9][i].a <== states[i][3]; + and[9][i].a <== lt[12][i].out; + and[9][i].b <== lt[13][i].out; + eq[22][i] = IsEqual(); + eq[22][i].in[0] <== in[i]; + eq[22][i].in[1] <== 47; + eq[23][i] = IsEqual(); + eq[23][i].in[0] <== in[i]; + eq[23][i].in[1] <== 61; + eq[24][i] = IsEqual(); + eq[24][i].in[0] <== in[i]; + eq[24][i].in[1] <== 63; + eq[25][i] = IsEqual(); + eq[25][i].in[0] <== in[i]; + eq[25][i].in[1] <== 64; + eq[26][i] = IsEqual(); + eq[26][i].in[0] <== in[i]; + eq[26][i].in[1] <== 94; + eq[27][i] = IsEqual(); + eq[27][i].in[0] <== in[i]; + eq[27][i].in[1] <== 96; + and[10][i] = AND(); + and[10][i].a <== states[i][3]; multi_or[3][i] = MultiOR(25); - multi_or[3][i].in[0] <== and[7][i].out; - multi_or[3][i].in[1] <== and[8][i].out; + multi_or[3][i].in[0] <== and[8][i].out; + multi_or[3][i].in[1] <== and[9][i].out; multi_or[3][i].in[2] <== eq[0][i].out; multi_or[3][i].in[3] <== eq[1][i].out; multi_or[3][i].in[4] <== eq[2][i].out; @@ -1160,41 +254,41 @@ template EmailAddrWithNameRegex(msg_bytes) { multi_or[3][i].in[11] <== eq[9][i].out; multi_or[3][i].in[12] <== eq[10][i].out; multi_or[3][i].in[13] <== eq[11][i].out; - multi_or[3][i].in[14] <== eq[45][i].out; - multi_or[3][i].in[15] <== eq[56][i].out; - multi_or[3][i].in[16] <== eq[57][i].out; - multi_or[3][i].in[17] <== eq[59][i].out; - multi_or[3][i].in[18] <== eq[61][i].out; - multi_or[3][i].in[19] <== eq[62][i].out; - multi_or[3][i].in[20] <== eq[89][i].out; - multi_or[3][i].in[21] <== eq[90][i].out; - multi_or[3][i].in[22] <== eq[91][i].out; - multi_or[3][i].in[23] <== eq[92][i].out; - multi_or[3][i].in[24] <== eq[94][i].out; - and[9][i].b <== multi_or[3][i].out; - lt[12][i] = LessEqThan(8); - lt[12][i].in[0] <== 14; - lt[12][i].in[1] <== in[i]; - lt[13][i] = LessEqThan(8); - lt[13][i].in[0] <== in[i]; - lt[13][i].in[1] <== 59; - and[10][i] = AND(); - and[10][i].a <== lt[12][i].out; - and[10][i].b <== lt[13][i].out; + multi_or[3][i].in[14] <== eq[22][i].out; + multi_or[3][i].in[15] <== eq[16][i].out; + multi_or[3][i].in[16] <== eq[17][i].out; + multi_or[3][i].in[17] <== eq[23][i].out; + multi_or[3][i].in[18] <== eq[24][i].out; + multi_or[3][i].in[19] <== eq[25][i].out; + multi_or[3][i].in[20] <== eq[19][i].out; + multi_or[3][i].in[21] <== eq[20][i].out; + multi_or[3][i].in[22] <== eq[21][i].out; + multi_or[3][i].in[23] <== eq[26][i].out; + multi_or[3][i].in[24] <== eq[27][i].out; + and[10][i].b <== multi_or[3][i].out; lt[14][i] = LessEqThan(8); - lt[14][i].in[0] <== 61; + lt[14][i].in[0] <== 14; lt[14][i].in[1] <== in[i]; lt[15][i] = LessEqThan(8); lt[15][i].in[0] <== in[i]; - lt[15][i].in[1] <== 254; + lt[15][i].in[1] <== 59; and[11][i] = AND(); and[11][i].a <== lt[14][i].out; and[11][i].b <== lt[15][i].out; + lt[16][i] = LessEqThan(8); + lt[16][i].in[0] <== 61; + lt[16][i].in[1] <== in[i]; + lt[17][i] = LessEqThan(8); + lt[17][i].in[0] <== in[i]; + lt[17][i].in[1] <== 254; and[12][i] = AND(); - and[12][i].a <== states[i][4]; + and[12][i].a <== lt[16][i].out; + and[12][i].b <== lt[17][i].out; + and[13][i] = AND(); + and[13][i].a <== states[i][4]; multi_or[4][i] = MultiOR(14); - multi_or[4][i].in[0] <== and[10][i].out; - multi_or[4][i].in[1] <== and[11][i].out; + multi_or[4][i].in[0] <== and[11][i].out; + multi_or[4][i].in[1] <== and[12][i].out; multi_or[4][i].in[2] <== eq[0][i].out; multi_or[4][i].in[3] <== eq[1][i].out; multi_or[4][i].in[4] <== eq[2][i].out; @@ -1207,12 +301,12 @@ template EmailAddrWithNameRegex(msg_bytes) { multi_or[4][i].in[11] <== eq[9][i].out; multi_or[4][i].in[12] <== eq[10][i].out; multi_or[4][i].in[13] <== eq[11][i].out; - and[12][i].b <== multi_or[4][i].out; - and[13][i] = AND(); - and[13][i].a <== states[i][5]; + and[13][i].b <== multi_or[4][i].out; + and[14][i] = AND(); + and[14][i].a <== states[i][5]; multi_or[5][i] = MultiOR(25); - multi_or[5][i].in[0] <== and[4][i].out; - multi_or[5][i].in[1] <== and[5][i].out; + multi_or[5][i].in[0] <== and[5][i].out; + multi_or[5][i].in[1] <== and[6][i].out; multi_or[5][i].in[2] <== eq[0][i].out; multi_or[5][i].in[3] <== eq[1][i].out; multi_or[5][i].in[4] <== eq[2][i].out; @@ -1225,23 +319,23 @@ template EmailAddrWithNameRegex(msg_bytes) { multi_or[5][i].in[11] <== eq[9][i].out; multi_or[5][i].in[12] <== eq[10][i].out; multi_or[5][i].in[13] <== eq[11][i].out; - multi_or[5][i].in[14] <== eq[32][i].out; - multi_or[5][i].in[15] <== eq[38][i].out; - multi_or[5][i].in[16] <== eq[39][i].out; - multi_or[5][i].in[17] <== eq[42][i].out; - multi_or[5][i].in[18] <== eq[56][i].out; - multi_or[5][i].in[19] <== eq[57][i].out; - multi_or[5][i].in[20] <== eq[60][i].out; - multi_or[5][i].in[21] <== eq[62][i].out; - multi_or[5][i].in[22] <== eq[89][i].out; - multi_or[5][i].in[23] <== eq[90][i].out; - multi_or[5][i].in[24] <== eq[91][i].out; - and[13][i].b <== multi_or[5][i].out; - and[14][i] = AND(); - and[14][i].a <== states[i][6]; + multi_or[5][i].in[14] <== eq[12][i].out; + multi_or[5][i].in[15] <== eq[13][i].out; + multi_or[5][i].in[16] <== eq[14][i].out; + multi_or[5][i].in[17] <== eq[15][i].out; + multi_or[5][i].in[18] <== eq[16][i].out; + multi_or[5][i].in[19] <== eq[17][i].out; + multi_or[5][i].in[20] <== eq[18][i].out; + multi_or[5][i].in[21] <== eq[25][i].out; + multi_or[5][i].in[22] <== eq[19][i].out; + multi_or[5][i].in[23] <== eq[20][i].out; + multi_or[5][i].in[24] <== eq[21][i].out; + and[14][i].b <== multi_or[5][i].out; + and[15][i] = AND(); + and[15][i].a <== states[i][6]; multi_or[6][i] = MultiOR(26); - multi_or[6][i].in[0] <== and[7][i].out; - multi_or[6][i].in[1] <== and[8][i].out; + multi_or[6][i].in[0] <== and[8][i].out; + multi_or[6][i].in[1] <== and[9][i].out; multi_or[6][i].in[2] <== eq[0][i].out; multi_or[6][i].in[3] <== eq[1][i].out; multi_or[6][i].in[4] <== eq[2][i].out; @@ -1254,156 +348,222 @@ template EmailAddrWithNameRegex(msg_bytes) { multi_or[6][i].in[11] <== eq[9][i].out; multi_or[6][i].in[12] <== eq[10][i].out; multi_or[6][i].in[13] <== eq[11][i].out; - multi_or[6][i].in[14] <== eq[45][i].out; - multi_or[6][i].in[15] <== eq[56][i].out; - multi_or[6][i].in[16] <== eq[57][i].out; - multi_or[6][i].in[17] <== eq[59][i].out; - multi_or[6][i].in[18] <== eq[60][i].out; - multi_or[6][i].in[19] <== eq[61][i].out; - multi_or[6][i].in[20] <== eq[62][i].out; - multi_or[6][i].in[21] <== eq[89][i].out; - multi_or[6][i].in[22] <== eq[90][i].out; - multi_or[6][i].in[23] <== eq[91][i].out; - multi_or[6][i].in[24] <== eq[92][i].out; - multi_or[6][i].in[25] <== eq[94][i].out; - and[14][i].b <== multi_or[6][i].out; + multi_or[6][i].in[14] <== eq[22][i].out; + multi_or[6][i].in[15] <== eq[16][i].out; + multi_or[6][i].in[16] <== eq[17][i].out; + multi_or[6][i].in[17] <== eq[23][i].out; + multi_or[6][i].in[18] <== eq[18][i].out; + multi_or[6][i].in[19] <== eq[24][i].out; + multi_or[6][i].in[20] <== eq[25][i].out; + multi_or[6][i].in[21] <== eq[19][i].out; + multi_or[6][i].in[22] <== eq[20][i].out; + multi_or[6][i].in[23] <== eq[21][i].out; + multi_or[6][i].in[24] <== eq[26][i].out; + multi_or[6][i].in[25] <== eq[27][i].out; + and[15][i].b <== multi_or[6][i].out; multi_or[7][i] = MultiOR(7); multi_or[7][i].in[0] <== and[2][i].out; - multi_or[7][i].in[1] <== and[3][i].out; - multi_or[7][i].in[2] <== and[6][i].out; - multi_or[7][i].in[3] <== and[9][i].out; - multi_or[7][i].in[4] <== and[12][i].out; - multi_or[7][i].in[5] <== and[13][i].out; - multi_or[7][i].in[6] <== and[14][i].out; + multi_or[7][i].in[1] <== and[4][i].out; + multi_or[7][i].in[2] <== and[7][i].out; + multi_or[7][i].in[3] <== and[10][i].out; + multi_or[7][i].in[4] <== and[13][i].out; + multi_or[7][i].in[5] <== and[14][i].out; + multi_or[7][i].in[6] <== and[15][i].out; states[i+1][1] <== multi_or[7][i].out; state_changed[i].in[0] <== states[i+1][1]; - lt[16][i] = LessEqThan(8); - lt[16][i].in[0] <== 65; - lt[16][i].in[1] <== in[i]; - lt[17][i] = LessEqThan(8); - lt[17][i].in[0] <== in[i]; - lt[17][i].in[1] <== 90; - and[15][i] = AND(); - and[15][i].a <== lt[16][i].out; - and[15][i].b <== lt[17][i].out; lt[18][i] = LessEqThan(8); - lt[18][i].in[0] <== 94; + lt[18][i].in[0] <== 65; lt[18][i].in[1] <== in[i]; lt[19][i] = LessEqThan(8); lt[19][i].in[0] <== in[i]; - lt[19][i].in[1] <== 126; + lt[19][i].in[1] <== 90; and[16][i] = AND(); and[16][i].a <== lt[18][i].out; and[16][i].b <== lt[19][i].out; + lt[20][i] = LessEqThan(8); + lt[20][i].in[0] <== 94; + lt[20][i].in[1] <== in[i]; + lt[21][i] = LessEqThan(8); + lt[21][i].in[0] <== in[i]; + lt[21][i].in[1] <== 126; and[17][i] = AND(); - and[17][i].a <== states[i][2]; - multi_or[8][i] = MultiOR(25); - multi_or[8][i].in[0] <== and[15][i].out; - multi_or[8][i].in[1] <== and[16][i].out; - multi_or[8][i].in[2] <== eq[31][i].out; - multi_or[8][i].in[3] <== eq[33][i].out; - multi_or[8][i].in[4] <== eq[34][i].out; - multi_or[8][i].in[5] <== eq[35][i].out; - multi_or[8][i].in[6] <== eq[36][i].out; - multi_or[8][i].in[7] <== eq[37][i].out; - multi_or[8][i].in[8] <== eq[40][i].out; - multi_or[8][i].in[9] <== eq[41][i].out; - multi_or[8][i].in[10] <== eq[43][i].out; - multi_or[8][i].in[11] <== eq[44][i].out; - multi_or[8][i].in[12] <== eq[45][i].out; - multi_or[8][i].in[13] <== eq[46][i].out; - multi_or[8][i].in[14] <== eq[47][i].out; - multi_or[8][i].in[15] <== eq[48][i].out; - multi_or[8][i].in[16] <== eq[49][i].out; - multi_or[8][i].in[17] <== eq[50][i].out; - multi_or[8][i].in[18] <== eq[51][i].out; - multi_or[8][i].in[19] <== eq[52][i].out; - multi_or[8][i].in[20] <== eq[53][i].out; - multi_or[8][i].in[21] <== eq[54][i].out; - multi_or[8][i].in[22] <== eq[55][i].out; - multi_or[8][i].in[23] <== eq[59][i].out; - multi_or[8][i].in[24] <== eq[61][i].out; - and[17][i].b <== multi_or[8][i].out; + and[17][i].a <== lt[20][i].out; + and[17][i].b <== lt[21][i].out; + eq[28][i] = IsEqual(); + eq[28][i].in[0] <== in[i]; + eq[28][i].in[1] <== 33; + eq[29][i] = IsEqual(); + eq[29][i].in[0] <== in[i]; + eq[29][i].in[1] <== 35; + eq[30][i] = IsEqual(); + eq[30][i].in[0] <== in[i]; + eq[30][i].in[1] <== 36; + eq[31][i] = IsEqual(); + eq[31][i].in[0] <== in[i]; + eq[31][i].in[1] <== 37; + eq[32][i] = IsEqual(); + eq[32][i].in[0] <== in[i]; + eq[32][i].in[1] <== 38; + eq[33][i] = IsEqual(); + eq[33][i].in[0] <== in[i]; + eq[33][i].in[1] <== 39; + eq[34][i] = IsEqual(); + eq[34][i].in[0] <== in[i]; + eq[34][i].in[1] <== 42; + eq[35][i] = IsEqual(); + eq[35][i].in[0] <== in[i]; + eq[35][i].in[1] <== 43; + eq[36][i] = IsEqual(); + eq[36][i].in[0] <== in[i]; + eq[36][i].in[1] <== 45; + eq[37][i] = IsEqual(); + eq[37][i].in[0] <== in[i]; + eq[37][i].in[1] <== 46; + eq[38][i] = IsEqual(); + eq[38][i].in[0] <== in[i]; + eq[38][i].in[1] <== 48; + eq[39][i] = IsEqual(); + eq[39][i].in[0] <== in[i]; + eq[39][i].in[1] <== 49; + eq[40][i] = IsEqual(); + eq[40][i].in[0] <== in[i]; + eq[40][i].in[1] <== 50; + eq[41][i] = IsEqual(); + eq[41][i].in[0] <== in[i]; + eq[41][i].in[1] <== 51; + eq[42][i] = IsEqual(); + eq[42][i].in[0] <== in[i]; + eq[42][i].in[1] <== 52; + eq[43][i] = IsEqual(); + eq[43][i].in[0] <== in[i]; + eq[43][i].in[1] <== 53; + eq[44][i] = IsEqual(); + eq[44][i].in[0] <== in[i]; + eq[44][i].in[1] <== 54; + eq[45][i] = IsEqual(); + eq[45][i].in[0] <== in[i]; + eq[45][i].in[1] <== 55; + eq[46][i] = IsEqual(); + eq[46][i].in[0] <== in[i]; + eq[46][i].in[1] <== 56; + eq[47][i] = IsEqual(); + eq[47][i].in[0] <== in[i]; + eq[47][i].in[1] <== 57; and[18][i] = AND(); - and[18][i].a <== states[i][5]; + and[18][i].a <== states[i][2]; + multi_or[8][i] = MultiOR(25); + multi_or[8][i].in[0] <== and[16][i].out; + multi_or[8][i].in[1] <== and[17][i].out; + multi_or[8][i].in[2] <== eq[28][i].out; + multi_or[8][i].in[3] <== eq[29][i].out; + multi_or[8][i].in[4] <== eq[30][i].out; + multi_or[8][i].in[5] <== eq[31][i].out; + multi_or[8][i].in[6] <== eq[32][i].out; + multi_or[8][i].in[7] <== eq[33][i].out; + multi_or[8][i].in[8] <== eq[34][i].out; + multi_or[8][i].in[9] <== eq[35][i].out; + multi_or[8][i].in[10] <== eq[36][i].out; + multi_or[8][i].in[11] <== eq[37][i].out; + multi_or[8][i].in[12] <== eq[22][i].out; + multi_or[8][i].in[13] <== eq[38][i].out; + multi_or[8][i].in[14] <== eq[39][i].out; + multi_or[8][i].in[15] <== eq[40][i].out; + multi_or[8][i].in[16] <== eq[41][i].out; + multi_or[8][i].in[17] <== eq[42][i].out; + multi_or[8][i].in[18] <== eq[43][i].out; + multi_or[8][i].in[19] <== eq[44][i].out; + multi_or[8][i].in[20] <== eq[45][i].out; + multi_or[8][i].in[21] <== eq[46][i].out; + multi_or[8][i].in[22] <== eq[47][i].out; + multi_or[8][i].in[23] <== eq[23][i].out; + multi_or[8][i].in[24] <== eq[24][i].out; and[18][i].b <== multi_or[8][i].out; + and[19][i] = AND(); + and[19][i].a <== states[i][5]; + and[19][i].b <== multi_or[8][i].out; multi_or[9][i] = MultiOR(2); - multi_or[9][i].in[0] <== and[17][i].out; - multi_or[9][i].in[1] <== and[18][i].out; + multi_or[9][i].in[0] <== and[18][i].out; + multi_or[9][i].in[1] <== and[19][i].out; states[i+1][2] <== multi_or[9][i].out; state_changed[i].in[1] <== states[i+1][2]; - lt[20][i] = LessEqThan(8); - lt[20][i].in[0] <== 97; - lt[20][i].in[1] <== in[i]; - lt[21][i] = LessEqThan(8); - lt[21][i].in[0] <== in[i]; - lt[21][i].in[1] <== 122; - and[19][i] = AND(); - and[19][i].a <== lt[20][i].out; - and[19][i].b <== lt[21][i].out; + lt[22][i] = LessEqThan(8); + lt[22][i].in[0] <== 97; + lt[22][i].in[1] <== in[i]; + lt[23][i] = LessEqThan(8); + lt[23][i].in[0] <== in[i]; + lt[23][i].in[1] <== 122; and[20][i] = AND(); - and[20][i].a <== states[i][3]; - multi_or[10][i] = MultiOR(15); - multi_or[10][i].in[0] <== and[15][i].out; - multi_or[10][i].in[1] <== and[19][i].out; - multi_or[10][i].in[2] <== eq[43][i].out; - multi_or[10][i].in[3] <== eq[44][i].out; - multi_or[10][i].in[4] <== eq[46][i].out; - multi_or[10][i].in[5] <== eq[47][i].out; - multi_or[10][i].in[6] <== eq[48][i].out; - multi_or[10][i].in[7] <== eq[49][i].out; - multi_or[10][i].in[8] <== eq[50][i].out; - multi_or[10][i].in[9] <== eq[51][i].out; - multi_or[10][i].in[10] <== eq[52][i].out; - multi_or[10][i].in[11] <== eq[53][i].out; - multi_or[10][i].in[12] <== eq[54][i].out; - multi_or[10][i].in[13] <== eq[55][i].out; - multi_or[10][i].in[14] <== eq[93][i].out; - and[20][i].b <== multi_or[10][i].out; + and[20][i].a <== lt[22][i].out; + and[20][i].b <== lt[23][i].out; + eq[48][i] = IsEqual(); + eq[48][i].in[0] <== in[i]; + eq[48][i].in[1] <== 95; and[21][i] = AND(); - and[21][i].a <== states[i][6]; + and[21][i].a <== states[i][3]; + multi_or[10][i] = MultiOR(15); + multi_or[10][i].in[0] <== and[16][i].out; + multi_or[10][i].in[1] <== and[20][i].out; + multi_or[10][i].in[2] <== eq[36][i].out; + multi_or[10][i].in[3] <== eq[37][i].out; + multi_or[10][i].in[4] <== eq[38][i].out; + multi_or[10][i].in[5] <== eq[39][i].out; + multi_or[10][i].in[6] <== eq[40][i].out; + multi_or[10][i].in[7] <== eq[41][i].out; + multi_or[10][i].in[8] <== eq[42][i].out; + multi_or[10][i].in[9] <== eq[43][i].out; + multi_or[10][i].in[10] <== eq[44][i].out; + multi_or[10][i].in[11] <== eq[45][i].out; + multi_or[10][i].in[12] <== eq[46][i].out; + multi_or[10][i].in[13] <== eq[47][i].out; + multi_or[10][i].in[14] <== eq[48][i].out; and[21][i].b <== multi_or[10][i].out; + and[22][i] = AND(); + and[22][i].a <== states[i][6]; + and[22][i].b <== multi_or[10][i].out; multi_or[11][i] = MultiOR(2); - multi_or[11][i].in[0] <== and[20][i].out; - multi_or[11][i].in[1] <== and[21][i].out; + multi_or[11][i].in[0] <== and[21][i].out; + multi_or[11][i].in[1] <== and[22][i].out; states[i+1][3] <== multi_or[11][i].out; state_changed[i].in[2] <== states[i+1][3]; - and[22][i] = AND(); - and[22][i].a <== states[i][3]; - and[22][i].b <== eq[60][i].out; - states[i+1][4] <== and[22][i].out; - state_changed[i].in[3] <== states[i+1][4]; and[23][i] = AND(); - and[23][i].a <== states[i][1]; - and[23][i].b <== eq[58][i].out; + and[23][i].a <== states[i][3]; + and[23][i].b <== eq[18][i].out; + states[i+1][4] <== and[23][i].out; + state_changed[i].in[3] <== states[i+1][4]; + eq[49][i] = IsEqual(); + eq[49][i].in[0] <== in[i]; + eq[49][i].in[1] <== 60; and[24][i] = AND(); - and[24][i].a <== states[i][2]; - and[24][i].b <== eq[58][i].out; + and[24][i].a <== states[i][1]; + and[24][i].b <== eq[49][i].out; and[25][i] = AND(); - and[25][i].a <== states[i][3]; - and[25][i].b <== eq[58][i].out; + and[25][i].a <== states[i][2]; + and[25][i].b <== eq[49][i].out; and[26][i] = AND(); - and[26][i].a <== states[i][4]; - and[26][i].b <== eq[58][i].out; + and[26][i].a <== states[i][3]; + and[26][i].b <== eq[49][i].out; and[27][i] = AND(); - and[27][i].a <== states[i][5]; - and[27][i].b <== eq[58][i].out; + and[27][i].a <== states[i][4]; + and[27][i].b <== eq[49][i].out; and[28][i] = AND(); - and[28][i].a <== states[i][6]; - and[28][i].b <== eq[58][i].out; + and[28][i].a <== states[i][5]; + and[28][i].b <== eq[49][i].out; + and[29][i] = AND(); + and[29][i].a <== states[i][6]; + and[29][i].b <== eq[49][i].out; multi_or[12][i] = MultiOR(6); - multi_or[12][i].in[0] <== and[23][i].out; - multi_or[12][i].in[1] <== and[24][i].out; - multi_or[12][i].in[2] <== and[25][i].out; - multi_or[12][i].in[3] <== and[26][i].out; - multi_or[12][i].in[4] <== and[27][i].out; - multi_or[12][i].in[5] <== and[28][i].out; + multi_or[12][i].in[0] <== and[24][i].out; + multi_or[12][i].in[1] <== and[25][i].out; + multi_or[12][i].in[2] <== and[26][i].out; + multi_or[12][i].in[3] <== and[27][i].out; + multi_or[12][i].in[4] <== and[28][i].out; + multi_or[12][i].in[5] <== and[29][i].out; states[i+1][5] <== multi_or[12][i].out; state_changed[i].in[4] <== states[i+1][5]; - and[29][i] = AND(); - and[29][i].a <== states[i][2]; - and[29][i].b <== eq[62][i].out; - states[i+1][6] <== and[29][i].out; + and[30][i] = AND(); + and[30][i].a <== states[i][2]; + and[30][i].b <== eq[25][i].out; + states[i+1][6] <== and[30][i].out; state_changed[i].in[5] <== states[i+1][6]; states[i+1][0] <== 1 - state_changed[i].out; } diff --git a/packages/circom/circuits/common/email_domain_regex.circom b/packages/circom/circuits/common/email_domain_regex.circom index 3283054..20f3cc5 100644 --- a/packages/circom/circuits/common/email_domain_regex.circom +++ b/packages/circom/circuits/common/email_domain_regex.circom @@ -13,9 +13,9 @@ template EmailDomainRegex(msg_bytes) { in[i+1] <== msg[i]; } - component eq[84][num_bytes]; - component lt[6][num_bytes]; - component and[8][num_bytes]; + component eq[25][num_bytes]; + component lt[8][num_bytes]; + component and[9][num_bytes]; component multi_or[5][num_bytes]; signal states[num_bytes+1][4]; component state_changed[num_bytes]; @@ -147,296 +147,71 @@ template EmailDomainRegex(msg_bytes) { multi_or[0][i].in[24] <== eq[22][i].out; multi_or[0][i].in[25] <== eq[23][i].out; and[2][i].b <== multi_or[0][i].out; - eq[24][i] = IsEqual(); - eq[24][i].in[0] <== in[i]; - eq[24][i].in[1] <== 65; - eq[25][i] = IsEqual(); - eq[25][i].in[0] <== in[i]; - eq[25][i].in[1] <== 66; - eq[26][i] = IsEqual(); - eq[26][i].in[0] <== in[i]; - eq[26][i].in[1] <== 67; - eq[27][i] = IsEqual(); - eq[27][i].in[0] <== in[i]; - eq[27][i].in[1] <== 68; - eq[28][i] = IsEqual(); - eq[28][i].in[0] <== in[i]; - eq[28][i].in[1] <== 69; - eq[29][i] = IsEqual(); - eq[29][i].in[0] <== in[i]; - eq[29][i].in[1] <== 70; - eq[30][i] = IsEqual(); - eq[30][i].in[0] <== in[i]; - eq[30][i].in[1] <== 71; - eq[31][i] = IsEqual(); - eq[31][i].in[0] <== in[i]; - eq[31][i].in[1] <== 72; - eq[32][i] = IsEqual(); - eq[32][i].in[0] <== in[i]; - eq[32][i].in[1] <== 73; - eq[33][i] = IsEqual(); - eq[33][i].in[0] <== in[i]; - eq[33][i].in[1] <== 74; - eq[34][i] = IsEqual(); - eq[34][i].in[0] <== in[i]; - eq[34][i].in[1] <== 75; - eq[35][i] = IsEqual(); - eq[35][i].in[0] <== in[i]; - eq[35][i].in[1] <== 76; - eq[36][i] = IsEqual(); - eq[36][i].in[0] <== in[i]; - eq[36][i].in[1] <== 77; - eq[37][i] = IsEqual(); - eq[37][i].in[0] <== in[i]; - eq[37][i].in[1] <== 78; - eq[38][i] = IsEqual(); - eq[38][i].in[0] <== in[i]; - eq[38][i].in[1] <== 79; - eq[39][i] = IsEqual(); - eq[39][i].in[0] <== in[i]; - eq[39][i].in[1] <== 80; - eq[40][i] = IsEqual(); - eq[40][i].in[0] <== in[i]; - eq[40][i].in[1] <== 81; - eq[41][i] = IsEqual(); - eq[41][i].in[0] <== in[i]; - eq[41][i].in[1] <== 82; - eq[42][i] = IsEqual(); - eq[42][i].in[0] <== in[i]; - eq[42][i].in[1] <== 83; - eq[43][i] = IsEqual(); - eq[43][i].in[0] <== in[i]; - eq[43][i].in[1] <== 84; - eq[44][i] = IsEqual(); - eq[44][i].in[0] <== in[i]; - eq[44][i].in[1] <== 85; - eq[45][i] = IsEqual(); - eq[45][i].in[0] <== in[i]; - eq[45][i].in[1] <== 86; - eq[46][i] = IsEqual(); - eq[46][i].in[0] <== in[i]; - eq[46][i].in[1] <== 87; - eq[47][i] = IsEqual(); - eq[47][i].in[0] <== in[i]; - eq[47][i].in[1] <== 88; - eq[48][i] = IsEqual(); - eq[48][i].in[0] <== in[i]; - eq[48][i].in[1] <== 89; - eq[49][i] = IsEqual(); - eq[49][i].in[0] <== in[i]; - eq[49][i].in[1] <== 90; - eq[50][i] = IsEqual(); - eq[50][i].in[0] <== in[i]; - eq[50][i].in[1] <== 94; - eq[51][i] = IsEqual(); - eq[51][i].in[0] <== in[i]; - eq[51][i].in[1] <== 95; - eq[52][i] = IsEqual(); - eq[52][i].in[0] <== in[i]; - eq[52][i].in[1] <== 96; - eq[53][i] = IsEqual(); - eq[53][i].in[0] <== in[i]; - eq[53][i].in[1] <== 97; - eq[54][i] = IsEqual(); - eq[54][i].in[0] <== in[i]; - eq[54][i].in[1] <== 98; - eq[55][i] = IsEqual(); - eq[55][i].in[0] <== in[i]; - eq[55][i].in[1] <== 99; - eq[56][i] = IsEqual(); - eq[56][i].in[0] <== in[i]; - eq[56][i].in[1] <== 100; - eq[57][i] = IsEqual(); - eq[57][i].in[0] <== in[i]; - eq[57][i].in[1] <== 101; - eq[58][i] = IsEqual(); - eq[58][i].in[0] <== in[i]; - eq[58][i].in[1] <== 102; - eq[59][i] = IsEqual(); - eq[59][i].in[0] <== in[i]; - eq[59][i].in[1] <== 103; - eq[60][i] = IsEqual(); - eq[60][i].in[0] <== in[i]; - eq[60][i].in[1] <== 104; - eq[61][i] = IsEqual(); - eq[61][i].in[0] <== in[i]; - eq[61][i].in[1] <== 105; - eq[62][i] = IsEqual(); - eq[62][i].in[0] <== in[i]; - eq[62][i].in[1] <== 106; - eq[63][i] = IsEqual(); - eq[63][i].in[0] <== in[i]; - eq[63][i].in[1] <== 107; - eq[64][i] = IsEqual(); - eq[64][i].in[0] <== in[i]; - eq[64][i].in[1] <== 108; - eq[65][i] = IsEqual(); - eq[65][i].in[0] <== in[i]; - eq[65][i].in[1] <== 109; - eq[66][i] = IsEqual(); - eq[66][i].in[0] <== in[i]; - eq[66][i].in[1] <== 110; - eq[67][i] = IsEqual(); - eq[67][i].in[0] <== in[i]; - eq[67][i].in[1] <== 111; - eq[68][i] = IsEqual(); - eq[68][i].in[0] <== in[i]; - eq[68][i].in[1] <== 112; - eq[69][i] = IsEqual(); - eq[69][i].in[0] <== in[i]; - eq[69][i].in[1] <== 113; - eq[70][i] = IsEqual(); - eq[70][i].in[0] <== in[i]; - eq[70][i].in[1] <== 114; - eq[71][i] = IsEqual(); - eq[71][i].in[0] <== in[i]; - eq[71][i].in[1] <== 115; - eq[72][i] = IsEqual(); - eq[72][i].in[0] <== in[i]; - eq[72][i].in[1] <== 116; - eq[73][i] = IsEqual(); - eq[73][i].in[0] <== in[i]; - eq[73][i].in[1] <== 117; - eq[74][i] = IsEqual(); - eq[74][i].in[0] <== in[i]; - eq[74][i].in[1] <== 118; - eq[75][i] = IsEqual(); - eq[75][i].in[0] <== in[i]; - eq[75][i].in[1] <== 119; - eq[76][i] = IsEqual(); - eq[76][i].in[0] <== in[i]; - eq[76][i].in[1] <== 120; - eq[77][i] = IsEqual(); - eq[77][i].in[0] <== in[i]; - eq[77][i].in[1] <== 121; - eq[78][i] = IsEqual(); - eq[78][i].in[0] <== in[i]; - eq[78][i].in[1] <== 122; - eq[79][i] = IsEqual(); - eq[79][i].in[0] <== in[i]; - eq[79][i].in[1] <== 123; - eq[80][i] = IsEqual(); - eq[80][i].in[0] <== in[i]; - eq[80][i].in[1] <== 124; - eq[81][i] = IsEqual(); - eq[81][i].in[0] <== in[i]; - eq[81][i].in[1] <== 125; - eq[82][i] = IsEqual(); - eq[82][i].in[0] <== in[i]; - eq[82][i].in[1] <== 126; + lt[4][i] = LessEqThan(8); + lt[4][i].in[0] <== 94; + lt[4][i].in[1] <== in[i]; + lt[5][i] = LessEqThan(8); + lt[5][i].in[0] <== in[i]; + lt[5][i].in[1] <== 126; and[3][i] = AND(); - and[3][i].a <== states[i][1]; - multi_or[1][i] = MultiOR(82); - multi_or[1][i].in[0] <== eq[0][i].out; - multi_or[1][i].in[1] <== eq[1][i].out; - multi_or[1][i].in[2] <== eq[2][i].out; - multi_or[1][i].in[3] <== eq[3][i].out; - multi_or[1][i].in[4] <== eq[4][i].out; - multi_or[1][i].in[5] <== eq[5][i].out; - multi_or[1][i].in[6] <== eq[6][i].out; - multi_or[1][i].in[7] <== eq[7][i].out; - multi_or[1][i].in[8] <== eq[8][i].out; - multi_or[1][i].in[9] <== eq[9][i].out; - multi_or[1][i].in[10] <== eq[10][i].out; - multi_or[1][i].in[11] <== eq[11][i].out; - multi_or[1][i].in[12] <== eq[12][i].out; - multi_or[1][i].in[13] <== eq[13][i].out; - multi_or[1][i].in[14] <== eq[14][i].out; - multi_or[1][i].in[15] <== eq[15][i].out; - multi_or[1][i].in[16] <== eq[16][i].out; - multi_or[1][i].in[17] <== eq[17][i].out; - multi_or[1][i].in[18] <== eq[18][i].out; - multi_or[1][i].in[19] <== eq[19][i].out; - multi_or[1][i].in[20] <== eq[20][i].out; - multi_or[1][i].in[21] <== eq[21][i].out; - multi_or[1][i].in[22] <== eq[22][i].out; - multi_or[1][i].in[23] <== eq[24][i].out; - multi_or[1][i].in[24] <== eq[25][i].out; - multi_or[1][i].in[25] <== eq[26][i].out; - multi_or[1][i].in[26] <== eq[27][i].out; - multi_or[1][i].in[27] <== eq[28][i].out; - multi_or[1][i].in[28] <== eq[29][i].out; - multi_or[1][i].in[29] <== eq[30][i].out; - multi_or[1][i].in[30] <== eq[31][i].out; - multi_or[1][i].in[31] <== eq[32][i].out; - multi_or[1][i].in[32] <== eq[33][i].out; - multi_or[1][i].in[33] <== eq[34][i].out; - multi_or[1][i].in[34] <== eq[35][i].out; - multi_or[1][i].in[35] <== eq[36][i].out; - multi_or[1][i].in[36] <== eq[37][i].out; - multi_or[1][i].in[37] <== eq[38][i].out; - multi_or[1][i].in[38] <== eq[39][i].out; - multi_or[1][i].in[39] <== eq[40][i].out; - multi_or[1][i].in[40] <== eq[41][i].out; - multi_or[1][i].in[41] <== eq[42][i].out; - multi_or[1][i].in[42] <== eq[43][i].out; - multi_or[1][i].in[43] <== eq[44][i].out; - multi_or[1][i].in[44] <== eq[45][i].out; - multi_or[1][i].in[45] <== eq[46][i].out; - multi_or[1][i].in[46] <== eq[47][i].out; - multi_or[1][i].in[47] <== eq[48][i].out; - multi_or[1][i].in[48] <== eq[49][i].out; - multi_or[1][i].in[49] <== eq[50][i].out; - multi_or[1][i].in[50] <== eq[51][i].out; - multi_or[1][i].in[51] <== eq[52][i].out; - multi_or[1][i].in[52] <== eq[53][i].out; - multi_or[1][i].in[53] <== eq[54][i].out; - multi_or[1][i].in[54] <== eq[55][i].out; - multi_or[1][i].in[55] <== eq[56][i].out; - multi_or[1][i].in[56] <== eq[57][i].out; - multi_or[1][i].in[57] <== eq[58][i].out; - multi_or[1][i].in[58] <== eq[59][i].out; - multi_or[1][i].in[59] <== eq[60][i].out; - multi_or[1][i].in[60] <== eq[61][i].out; - multi_or[1][i].in[61] <== eq[62][i].out; - multi_or[1][i].in[62] <== eq[63][i].out; - multi_or[1][i].in[63] <== eq[64][i].out; - multi_or[1][i].in[64] <== eq[65][i].out; - multi_or[1][i].in[65] <== eq[66][i].out; - multi_or[1][i].in[66] <== eq[67][i].out; - multi_or[1][i].in[67] <== eq[68][i].out; - multi_or[1][i].in[68] <== eq[69][i].out; - multi_or[1][i].in[69] <== eq[70][i].out; - multi_or[1][i].in[70] <== eq[71][i].out; - multi_or[1][i].in[71] <== eq[72][i].out; - multi_or[1][i].in[72] <== eq[73][i].out; - multi_or[1][i].in[73] <== eq[74][i].out; - multi_or[1][i].in[74] <== eq[75][i].out; - multi_or[1][i].in[75] <== eq[76][i].out; - multi_or[1][i].in[76] <== eq[77][i].out; - multi_or[1][i].in[77] <== eq[78][i].out; - multi_or[1][i].in[78] <== eq[79][i].out; - multi_or[1][i].in[79] <== eq[80][i].out; - multi_or[1][i].in[80] <== eq[81][i].out; - multi_or[1][i].in[81] <== eq[82][i].out; - and[3][i].b <== multi_or[1][i].out; + and[3][i].a <== lt[4][i].out; + and[3][i].b <== lt[5][i].out; + and[4][i] = AND(); + and[4][i].a <== states[i][1]; + multi_or[1][i] = MultiOR(25); + multi_or[1][i].in[0] <== and[0][i].out; + multi_or[1][i].in[1] <== and[3][i].out; + multi_or[1][i].in[2] <== eq[0][i].out; + multi_or[1][i].in[3] <== eq[1][i].out; + multi_or[1][i].in[4] <== eq[2][i].out; + multi_or[1][i].in[5] <== eq[3][i].out; + multi_or[1][i].in[6] <== eq[4][i].out; + multi_or[1][i].in[7] <== eq[5][i].out; + multi_or[1][i].in[8] <== eq[6][i].out; + multi_or[1][i].in[9] <== eq[7][i].out; + multi_or[1][i].in[10] <== eq[8][i].out; + multi_or[1][i].in[11] <== eq[9][i].out; + multi_or[1][i].in[12] <== eq[10][i].out; + multi_or[1][i].in[13] <== eq[11][i].out; + multi_or[1][i].in[14] <== eq[12][i].out; + multi_or[1][i].in[15] <== eq[13][i].out; + multi_or[1][i].in[16] <== eq[14][i].out; + multi_or[1][i].in[17] <== eq[15][i].out; + multi_or[1][i].in[18] <== eq[16][i].out; + multi_or[1][i].in[19] <== eq[17][i].out; + multi_or[1][i].in[20] <== eq[18][i].out; + multi_or[1][i].in[21] <== eq[19][i].out; + multi_or[1][i].in[22] <== eq[20][i].out; + multi_or[1][i].in[23] <== eq[21][i].out; + multi_or[1][i].in[24] <== eq[22][i].out; + and[4][i].b <== multi_or[1][i].out; multi_or[2][i] = MultiOR(2); multi_or[2][i].in[0] <== and[2][i].out; - multi_or[2][i].in[1] <== and[3][i].out; + multi_or[2][i].in[1] <== and[4][i].out; states[i+1][1] <== multi_or[2][i].out; state_changed[i].in[0] <== states[i+1][1]; - eq[83][i] = IsEqual(); - eq[83][i].in[0] <== in[i]; - eq[83][i].in[1] <== 64; - and[4][i] = AND(); - and[4][i].a <== states[i][1]; - and[4][i].b <== eq[83][i].out; - states[i+1][2] <== and[4][i].out; - state_changed[i].in[1] <== states[i+1][2]; - lt[4][i] = LessEqThan(8); - lt[4][i].in[0] <== 97; - lt[4][i].in[1] <== in[i]; - lt[5][i] = LessEqThan(8); - lt[5][i].in[0] <== in[i]; - lt[5][i].in[1] <== 122; + eq[24][i] = IsEqual(); + eq[24][i].in[0] <== in[i]; + eq[24][i].in[1] <== 64; and[5][i] = AND(); - and[5][i].a <== lt[4][i].out; - and[5][i].b <== lt[5][i].out; + and[5][i].a <== states[i][1]; + and[5][i].b <== eq[24][i].out; + states[i+1][2] <== and[5][i].out; + state_changed[i].in[1] <== states[i+1][2]; + lt[6][i] = LessEqThan(8); + lt[6][i].in[0] <== 97; + lt[6][i].in[1] <== in[i]; + lt[7][i] = LessEqThan(8); + lt[7][i].in[0] <== in[i]; + lt[7][i].in[1] <== 122; and[6][i] = AND(); - and[6][i].a <== states[i][2]; + and[6][i].a <== lt[6][i].out; + and[6][i].b <== lt[7][i].out; + and[7][i] = AND(); + and[7][i].a <== states[i][2]; multi_or[3][i] = MultiOR(14); multi_or[3][i].in[0] <== and[0][i].out; - multi_or[3][i].in[1] <== and[5][i].out; + multi_or[3][i].in[1] <== and[6][i].out; multi_or[3][i].in[2] <== eq[8][i].out; multi_or[3][i].in[3] <== eq[9][i].out; multi_or[3][i].in[4] <== eq[11][i].out; @@ -449,13 +224,13 @@ template EmailDomainRegex(msg_bytes) { multi_or[3][i].in[11] <== eq[18][i].out; multi_or[3][i].in[12] <== eq[19][i].out; multi_or[3][i].in[13] <== eq[20][i].out; - and[6][i].b <== multi_or[3][i].out; - and[7][i] = AND(); - and[7][i].a <== states[i][3]; and[7][i].b <== multi_or[3][i].out; + and[8][i] = AND(); + and[8][i].a <== states[i][3]; + and[8][i].b <== multi_or[3][i].out; multi_or[4][i] = MultiOR(2); - multi_or[4][i].in[0] <== and[6][i].out; - multi_or[4][i].in[1] <== and[7][i].out; + multi_or[4][i].in[0] <== and[7][i].out; + multi_or[4][i].in[1] <== and[8][i].out; states[i+1][3] <== multi_or[4][i].out; state_changed[i].in[2] <== states[i+1][3]; states[i+1][0] <== 1 - state_changed[i].out; diff --git a/packages/compiler/src/gen_circom.ts b/packages/compiler/src/gen_circom.ts index 7fdf6ac..b06854c 100644 --- a/packages/compiler/src/gen_circom.ts +++ b/packages/compiler/src/gen_circom.ts @@ -51,6 +51,7 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { rev_graph[going_state_num][init_going_state] = []; } rev_graph[going_state_num][init_going_state] = rev_graph[going_state_num][init_going_state].concat(chars); + } } @@ -125,7 +126,10 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { let cur_max: number = k[0]; for (let idx = 1; idx < k.length; ++idx) { - if (cur_max + 1 === k[idx]) { + if (cur_max === k[idx]) { + continue; + } + else if (cur_max + 1 === k[idx]) { cur_max += 1; } else { if (cur_max - cur_min >= 16) { @@ -197,7 +201,6 @@ function genCircomAllstr(graph_json: Graph, template_name: string): string { } } - for (let code of vals) { if (eq_checks[code] === undefined) { lines.push(`\t\teq[${eq_i}][i] = IsEqual();`);