28     template<
typename ppT, 
typename snarkT>
 
   31         ppT::init_public_params();
 
   32         libff::inhibit_profiling_info = 
true;
 
   33         libff::inhibit_profiling_counters = 
true;
 
   35         typename snarkT::proof proof;
 
   38             snarkT::proof_read_bytes(proof, in_s);
 
   41         snarkT::proof_write_json(proof, std::cout);
 
   48         boost::program_options::options_description &options,
 
   49         boost::program_options::options_description &all_options,
 
   50         boost::program_options::positional_options_description &pos)
 override 
   54         all_options.add(options).add_options()(
 
   55             "proof_file", po::value<std::string>(), 
"(Output) Proof file");
 
   56         pos.add(
"proof_file", 1);
 
   60         const boost::program_options::variables_map &vm)
 override 
   64         if (vm.count(
"proof_file") == 0) {
 
   65             throw po::error(
"proof_file not specified");
 
   67         proof_file = vm[
"proof_file"].as<std::string>();
 
   72         std::cout << 
"Usage:\n  " << argv0 << 
" dump-proof [proof_file]\n";