pragma circom 2.0.0; include "utils/row_hasher.circom"; include "utils/pixels.circom"; include "node_modules/circomlib/circuits/bitify.circom"; template GrayscaleChecker(n) { signal input orig[n][3]; signal input gray[n]; signal output n_check; component lt[n][2]; for (var i = 0; i < n; i++) { var inter = 299 * orig[i][0] + 587 * orig[i][1] + 114 * orig[i][2]; lt[i][0] = LessEqThan(18); lt[i][1] = LessEqThan(18); lt[i][0].in[1] <== 1000; lt[i][0].in[0] <== inter - 1000 * gray[i]; lt[i][0].out === 1; lt[i][1].in[1] <== 1000; lt[i][1].in[0] <== 1000 * gray[i] - inter; lt[i][1].out === 1; } n_check <== n; } template GrayScale(width){ signal input original[width]; signal input transformed[width]; component decompressor[width]; component decompressor_grey[width]; component greychecker[width]; for (var j=0; j