Can't compile example_imagesegmentation.cpp [UBUNTU]

75 views
Skip to first unread message

reyfr...@gmail.com

unread,
Nov 9, 2015, 1:22:16 AM11/9/15
to libDAI
Hi,

We have run all the tests in libDAI 0.3.2 and no errors were found.
We also didn't change anything in makefiles and just followed the instructions as prescribed in the documentation.
But when we try to compile example_imagesegmentation.cpp under the examples folder, we get this error:


example_imagesegmentation.cpp: In function ‘double doInference(dai::FactorGraph&, std::__cxx11::string, size_t, double, std::vector<double, std::allocator<double> >&, size_t, size_t, cimg_library::CImgDisplay&)’:
example_imagesegmentation.cpp:174:14: error: no match for ‘operator<<’ (operand types are ‘cimg_library::CImgDisplay’ and ‘cimg_library::CImg<unsigned char>’)
         disp << image;
              ^
In file included from /usr/local/include/dai/bipgraph.h:20:0,
                 from /usr/local/include/dai/factorgraph.h:19,
                 from /usr/local/include/dai/daialg.h:20,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/local/include/dai/util.h:194:15: note: candidate: template<class T> std::ostream& dai::operator<<(std::ostream&, const std::vector<T>&)
 std::ostream& operator << (std::ostream& os, const std::vector<T> & x) {
               ^
/usr/local/include/dai/util.h:194:15: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   cannot convert ‘disp’ (type ‘cimg_library::CImgDisplay’) to type ‘std::ostream& {aka std::basic_ostream<char>&}’
         disp << image;
                 ^
In file included from /usr/local/include/dai/bipgraph.h:20:0,
                 from /usr/local/include/dai/factorgraph.h:19,
                 from /usr/local/include/dai/daialg.h:20,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/local/include/dai/util.h:204:15: note: candidate: template<class T> std::ostream& dai::operator<<(std::ostream&, const std::set<T>&)
 std::ostream& operator << (std::ostream& os, const std::set<T> & x) {
               ^
/usr/local/include/dai/util.h:204:15: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   cannot convert ‘disp’ (type ‘cimg_library::CImgDisplay’) to type ‘std::ostream& {aka std::basic_ostream<char>&}’
         disp << image;
                 ^
In file included from /usr/local/include/dai/bipgraph.h:20:0,
                 from /usr/local/include/dai/factorgraph.h:19,
                 from /usr/local/include/dai/daialg.h:20,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/local/include/dai/util.h:214:15: note: candidate: template<class T1, class T2> std::ostream& dai::operator<<(std::ostream&, const std::map<T1, T2>&)
 std::ostream& operator << (std::ostream& os, const std::map<T1,T2> & x) {
               ^
/usr/local/include/dai/util.h:214:15: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   cannot convert ‘disp’ (type ‘cimg_library::CImgDisplay’) to type ‘std::ostream& {aka std::basic_ostream<char>&}’
         disp << image;
                 ^
In file included from /usr/local/include/dai/bipgraph.h:20:0,
                 from /usr/local/include/dai/factorgraph.h:19,
                 from /usr/local/include/dai/daialg.h:20,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/local/include/dai/util.h:224:15: note: candidate: template<class T1, class T2> std::ostream& dai::operator<<(std::ostream&, const std::pair<_T1, _T2>&)
 std::ostream& operator << (std::ostream& os, const std::pair<T1,T2> & x) {
               ^
/usr/local/include/dai/util.h:224:15: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   cannot convert ‘disp’ (type ‘cimg_library::CImgDisplay’) to type ‘std::ostream& {aka std::basic_ostream<char>&}’
         disp << image;
                 ^
In file included from /usr/local/include/dai/factor.h:20:0,
                 from /usr/local/include/dai/factorgraph.h:21,
                 from /usr/local/include/dai/daialg.h:20,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/local/include/dai/prob.h:738:36: note: candidate: template<class T> std::ostream& dai::operator<<(std::ostream&, const dai::TProb<T>&)
 template<typename T> std::ostream& operator<< (std::ostream& os, const TProb<T>
                                    ^
/usr/local/include/dai/prob.h:738:36: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   cannot convert ‘disp’ (type ‘cimg_library::CImgDisplay’) to type ‘std::ostream& {aka std::basic_ostream<char>&}’
         disp << image;
                 ^
In file included from /usr/local/include/dai/factorgraph.h:21:0,
                 from /usr/local/include/dai/daialg.h:20,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/local/include/dai/factor.h:583:36: note: candidate: template<class T> std::ostream& dai::operator<<(std::ostream&, const dai::TFactor<T>&)
 template<typename T> std::ostream& operator<< (std::ostream& os, const TFactor<
                                    ^
/usr/local/include/dai/factor.h:583:36: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   cannot convert ‘disp’ (type ‘cimg_library::CImgDisplay’) to type ‘std::ostream& {aka std::basic_ostream<char>&}’
         disp << image;
                 ^
In file included from /usr/local/include/dai/daialg.h:23:0,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/local/include/dai/properties.h:46:15: note: candidate: std::ostream& dai::operator<<(std::ostream&, const Property&)
 std::ostream& operator<< ( std::ostream & os, const Property &p );
               ^
/usr/local/include/dai/properties.h:46:15: note:   no known conversion for argument 1 from ‘cimg_library::CImgDisplay’ to ‘std::ostream& {aka std::basic_ostream<char>&}’
In file included from /usr/include/c++/5/string:52:0,
                 from /usr/include/c++/5/bits/locale_classes.h:40,
                 from /usr/include/c++/5/bits/ios_base.h:41,
                 from /usr/include/c++/5/ios:42,
                 from /usr/include/c++/5/ostream:38,
                 from /usr/include/c++/5/iostream:39,
                 from example_imagesegmentation.cpp:9:
/usr/include/c++/5/bits/basic_string.h:5170:5: note: candidate: template<class _CharT, class _Traits, class _Alloc> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::__cxx11::basic_string<_CharT, _Traits, _Alloc>&)
     operator<<(basic_ostream<_CharT, _Traits>& __os,
     ^
/usr/include/c++/5/bits/basic_string.h:5170:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/c++/5/iostream:39:0,
                 from example_imagesegmentation.cpp:9:
/usr/include/c++/5/ostream:497:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, _CharT)
     operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
     ^
/usr/include/c++/5/ostream:497:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/c++/5/iostream:39:0,
                 from example_imagesegmentation.cpp:9:
/usr/include/c++/5/ostream:502:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, char)
     operator<<(basic_ostream<_CharT, _Traits>& __out, char __c)
     ^
/usr/include/c++/5/ostream:502:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/c++/5/iostream:39:0,
                 from example_imagesegmentation.cpp:9:
/usr/include/c++/5/ostream:508:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, char)
     operator<<(basic_ostream<char, _Traits>& __out, char __c)
     ^
/usr/include/c++/5/ostream:508:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<char, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/c++/5/iostream:39:0,
                 from example_imagesegmentation.cpp:9:
/usr/include/c++/5/ostream:514:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, signed char)
     operator<<(basic_ostream<char, _Traits>& __out, signed char __c)
     ^
/usr/include/c++/5/ostream:514:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<char, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/c++/5/iostream:39:0,
                 from example_imagesegmentation.cpp:9:
/usr/include/c++/5/ostream:519:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, unsigned char)
     operator<<(basic_ostream<char, _Traits>& __out, unsigned char __c)
     ^
/usr/include/c++/5/ostream:519:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<char, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/c++/5/iostream:39:0,
                 from example_imagesegmentation.cpp:9:
/usr/include/c++/5/ostream:539:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const _CharT*)
     operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)
     ^
/usr/include/c++/5/ostream:539:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/c++/5/ostream:638:0,
                 from /usr/include/c++/5/iostream:39,
                 from example_imagesegmentation.cpp:9:
/usr/include/c++/5/bits/ostream.tcc:321:5: note: candidate: template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const char*)
     operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s)
     ^
/usr/include/c++/5/bits/ostream.tcc:321:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/c++/5/iostream:39:0,
                 from example_imagesegmentation.cpp:9:
/usr/include/c++/5/ostream:556:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const char*)
     operator<<(basic_ostream<char, _Traits>& __out, const char* __s)
     ^
/usr/include/c++/5/ostream:556:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<char, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/c++/5/iostream:39:0,
                 from example_imagesegmentation.cpp:9:
/usr/include/c++/5/ostream:569:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const signed char*)
     operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)
     ^
/usr/include/c++/5/ostream:569:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<char, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/c++/5/iostream:39:0,
                 from example_imagesegmentation.cpp:9:
/usr/include/c++/5/ostream:574:5: note: candidate: template<class _Traits> std::basic_ostream<char, _Traits>& std::operator<<(std::basic_ostream<char, _Traits>&, const unsigned char*)
     operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)
     ^
/usr/include/c++/5/ostream:574:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<char, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/boost/detail/container_fwd.hpp:96:0,
                 from /usr/include/boost/functional/hash/extensions.hpp:22,
                 from /usr/include/boost/functional/hash/hash.hpp:558,
                 from /usr/include/boost/functional/hash.hpp:6,
                 from /usr/local/include/dai/util.h:23,
                 from /usr/local/include/dai/bipgraph.h:20,
                 from /usr/local/include/dai/factorgraph.h:19,
                 from /usr/local/include/dai/daialg.h:20,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/include/c++/5/bitset:1532:5: note: candidate: template<class _CharT, class _Traits, long unsigned int _Nb> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::bitset<_Nb>&)
     operator<<(std::basic_ostream<_CharT, _Traits>& __os,
     ^
/usr/include/c++/5/bitset:1532:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/boost/detail/container_fwd.hpp:98:0,
                 from /usr/include/boost/functional/hash/extensions.hpp:22,
                 from /usr/include/boost/functional/hash/hash.hpp:558,
                 from /usr/include/boost/functional/hash.hpp:6,
                 from /usr/local/include/dai/util.h:23,
                 from /usr/local/include/dai/bipgraph.h:20,
                 from /usr/local/include/dai/factorgraph.h:19,
                 from /usr/local/include/dai/daialg.h:20,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/include/c++/5/complex:526:5: note: candidate: template<class _Tp, class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::complex<_Tp>&)
     operator<<(basic_ostream<_CharT, _Traits>& __os, const complex<_Tp>& __x)
     ^
/usr/include/c++/5/complex:526:5: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
         disp << image;
                 ^
In file included from /usr/include/boost/graph/adjacency_list.hpp:41:0,
                 from /usr/local/include/dai/weightedgraph.h:26,
                 from /usr/local/include/dai/regiongraph.h:20,
                 from /usr/local/include/dai/daialg.h:21,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/include/boost/graph/detail/edge.hpp:101:3: note: candidate: template<class Char, class Traits, class D, class V> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const boost::detail::edge_desc_impl<D, V>&)
   operator<<(std::basic_ostream<Char, Traits>& os,
   ^
/usr/include/boost/graph/detail/edge.hpp:101:3: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘std::basic_ostream<_CharT, _Traits>’
         disp << image;
                 ^
In file included from /usr/local/include/dai/util.h:31:0,
                 from /usr/local/include/dai/bipgraph.h:20,
                 from /usr/local/include/dai/factorgraph.h:19,
                 from /usr/local/include/dai/daialg.h:20,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/include/gmpxx.h:2971:1: note: candidate: template<class T, class U> __gmp_expr<T, __gmp_binary_expr<__gmp_expr<T, U>, long unsigned int, __gmp_binary_lshift> > operator<<(const __gmp_expr<T, U>&, mp_bitcnt_t)
 __GMP_DEFINE_BINARY_FUNCTION_UI(operator<<, __gmp_binary_lshift)
 ^
/usr/include/gmpxx.h:2971:1: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   ‘cimg_library::CImgDisplay’ is not derived from ‘const __gmp_expr<T, U>’
         disp << image;
                 ^
In file included from /usr/local/include/dai/util.h:31:0,
                 from /usr/local/include/dai/bipgraph.h:20,
                 from /usr/local/include/dai/factorgraph.h:19,
                 from /usr/local/include/dai/daialg.h:20,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/include/gmpxx.h:1950:23: note: candidate: template<class T, class U> std::ostream& operator<<(std::ostream&, const __gmp_expr<T, U>&)
 inline std::ostream & operator<<
                       ^
/usr/include/gmpxx.h:1950:23: note:   template argument deduction/substitution failed:
example_imagesegmentation.cpp:174:17: note:   cannot convert ‘disp’ (type ‘cimg_library::CImgDisplay’) to type ‘std::ostream& {aka std::basic_ostream<char>&}’
         disp << image;
                 ^
In file included from /usr/include/gmpxx.h:43:0,
                 from /usr/local/include/dai/util.h:31,
                 from /usr/local/include/dai/bipgraph.h:20,
                 from /usr/local/include/dai/factorgraph.h:19,
                 from /usr/local/include/dai/daialg.h:20,
                 from /usr/local/include/dai/alldai.h:24,
                 from example_imagesegmentation.cpp:10:
/usr/include/x86_64-linux-gnu/gmp.h:2252:33: note: candidate: std::ostream& operator<<(std::ostream&, mpf_srcptr)
 __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpf_srcptr);
                                 ^
/usr/include/x86_64-linux-gnu/gmp.h:2252:33: note:   no known conversion for argument 1 from ‘cimg_library::CImgDisplay’ to ‘std::ostream& {aka std::basic_ostream<char>&}’
/usr/include/x86_64-linux-gnu/gmp.h:2251:33: note: candidate: std::ostream& operator<<(std::ostream&, mpq_srcptr)
 __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpq_srcptr);
                                 ^
/usr/include/x86_64-linux-gnu/gmp.h:2251:33: note:   no known conversion for argument 1 from ‘cimg_library::CImgDisplay’ to ‘std::ostream& {aka std::basic_ostream<char>&}’
/usr/include/x86_64-linux-gnu/gmp.h:2250:33: note: candidate: std::ostream& operator<<(std::ostream&, mpz_srcptr)
 __GMP_DECLSPEC_XX std::ostream& operator<< (std::ostream &, mpz_srcptr);
                                 ^
/usr/include/x86_64-linux-gnu/gmp.h:2250:33: note:   no known conversion for argument 1 from ‘cimg_library::CImgDisplay’ to ‘std::ostream& {aka std::basic_ostream<char>&}’
example_imagesegmentation.cpp: In function ‘int main(int, char**)’:
example_imagesegmentation.cpp:232:33: error: invalid use of member function (did you forget the ‘()’ ?)
     if( (image1.width != image2.width) || (image1.height != image2.height) )
                                 ^
example_imagesegmentation.cpp:232:33: error: invalid use of member function (did you forget the ‘()’ ?)
example_imagesegmentation.cpp:232:68: error: invalid use of member function (did you forget the ‘()’ ?)
     if( (image1.width != image2.width) || (image1.height != image2.height) )
                                                                    ^
example_imagesegmentation.cpp:232:68: error: invalid use of member function (did you forget the ‘()’ ?)
example_imagesegmentation.cpp:234:26: error: cannot convert ‘cimg_library::CImg<T>::width<unsigned char>’ from type ‘int (cimg_library::CImg<unsigned char>::)() const’ to type ‘size_t {aka long unsigned int}’
     size_t dimx = image1.width;
                          ^
example_imagesegmentation.cpp:235:26: error: cannot convert ‘cimg_library::CImg<T>::height<unsigned char>’ from type ‘int (cimg_library::CImg<unsigned char>::)() const’ to type ‘size_t {aka long unsigned int}’
     size_t dimy = image1.height;
                          ^
example_imagesegmentation.cpp:262:40: error: ‘struct cimg_library::CImg<unsigned char>’ has no member named ‘dimv’
             for( int c = 0; c < image1.dimv(); c++ )
                                        ^
example_imagesegmentation.cpp:264:27: error: ‘struct cimg_library::CImg<unsigned char>’ has no member named ‘dimv’
             avg /= image1.dimv();
                           ^
example_imagesegmentation.cpp:311:55: error: ‘struct cimg_library::CImg<unsigned char>’ has no member named ‘dimv’
                 for( size_t c = 0; c < (size_t)image4.dimv(); c++ )
                                                       ^
example_imagesegmentation.cpp:326:23: error: cannot convert ‘cimg_library::CImgDisplay::is_closed’ from type ‘bool (cimg_library::CImgDisplay::)() const’ to type ‘bool’
     while( !main_disp.is_closed )
                       ^
example_imagesegmentation.cpp:326:23: error: in argument to unary !
example_imagesegmentation.cpp: In instantiation of ‘dai::FactorGraph img2fg(const cimg_library::CImg<T>&, double, double, double, double, double, cimg_library::CImg<unsigned char>&) [with T = int]’:
example_imagesegmentation.cpp:283:76:   required from here
example_imagesegmentation.cpp:38:23: error: cannot convert ‘cimg_library::CImg<T>::width<int>’ from type ‘int (cimg_library::CImg<int>::)() const’ to type ‘size_t {aka long unsigned int}’
     size_t dimx = img.width;   // Width of the image in pixels
                       ^
example_imagesegmentation.cpp:39:23: error: cannot convert ‘cimg_library::CImg<T>::height<int>’ from type ‘int (cimg_library::CImg<int>::)() const’ to type ‘size_t {aka long unsigned int}’
     size_t dimy = img.height;  // Height of the image in pixels
                       ^
 
How can we fix this?
Reply all
Reply to author
Forward
0 new messages