]> git.wh0rd.org Git - ICEs.git/blob - 198528/ice.ii.1
initial import
[ICEs.git] / 198528 / ice.ii.1
1 typedef long int ptrdiff_t;
2  
3 # 214 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 3 4
4 typedef long unsigned int size_t;
5  
6 # 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstddef" 2 3
7  namespace std __attribute__ ((__visibility__ ("default"))) {    using ::ptrdiff_t;   using ::size_t;  }
8  
9 # 28 "/usr/include/boost/array.hpp" 2 3 4
10    extern "C++" {  namespace std { 
11 # 56 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/exception" 3
12   class exception   {   public:     exception() throw() { }     virtual ~exception() throw();        virtual const char* what() const throw();   };      class bad_exception : public exception   {   public:     bad_exception() throw() { }        virtual ~bad_exception() throw();       virtual const char* what() const throw();   };     typedef void (*terminate_handler) ();     typedef void (*unexpected_handler) ();     terminate_handler set_terminate(terminate_handler) throw();      void terminate() __attribute__ ((__noreturn__));     unexpected_handler set_unexpected(unexpected_handler) throw();      void unexpected() __attribute__ ((__noreturn__)); 
13 # 112 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/exception" 3
14   bool uncaught_exception() throw(); }  namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { 
15 # 127 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/exception" 3
16   void __verbose_terminate_handler ();  }  }
17   
18 #pragma GCC visibility pop
19         
20 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stringfwd.h" 3
21    namespace std __attribute__ ((__visibility__ ("default"))) {    template<typename _Alloc>     class allocator;    template<class _CharT>     struct char_traits;    template<typename _CharT, typename _Traits = char_traits<_CharT>,            typename _Alloc = allocator<_CharT> >     class basic_string;    template<> struct char_traits<char>;    typedef basic_string<char> string;     template<> struct char_traits<wchar_t>;    typedef basic_string<wchar_t> wstring;   }
22
23 # 27 "/usr/include/gentoo-multilib/amd64/string.h" 2 3 4
24  extern "C" {     
25 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
26
27 # 34 "/usr/include/gentoo-multilib/amd64/string.h" 2 3 4
28     extern void *memcpy (void *__restrict __dest,        __const void *__restrict __src, size_t __n)      throw () __attribute__ ((__nonnull__ (1, 2)));   extern void *memmove (void *__dest, __const void *__src, size_t __n)      throw () __attribute__ ((__nonnull__ (1, 2)));       extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,         int __c, size_t __n)      throw () __attribute__ ((__nonnull__ (1, 2)));      extern void *memset (void *__s, int __c, size_t __n) throw () __attribute__ ((__nonnull__ (1)));   extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));   extern void *memchr (__const void *__s, int __c, size_t __n)       throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));      extern void *rawmemchr (__const void *__s, int __c)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));   extern void *memrchr (__const void *__s, int __c, size_t __n)       throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));      extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)      throw () __attribute__ ((__nonnull__ (1, 2)));  extern char *strncpy (char *__restrict __dest,         __const char *__restrict __src, size_t __n)      throw () __attribute__ ((__nonnull__ (1, 2)));   extern char *strcat (char *__restrict __dest, __const char *__restrict __src)      throw () __attribute__ ((__nonnull__ (1, 2)));  extern char *strncat (char *__restrict __dest, __const char *__restrict __src,         size_t __n) throw () __attribute__ ((__nonnull__ (1, 2)));   extern int strcmp (__const char *__s1, __const char *__s2)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));  extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));   extern int strcoll (__const char *__s1, __const char *__s2)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));  extern size_t strxfrm (char *__restrict __dest,          __const char *__restrict __src, size_t __n)      throw () __attribute__ ((__nonnull__ (2)));       
29
30 # 28 "/usr/include/gentoo-multilib/amd64/xlocale.h" 3 4
31 typedef struct __locale_struct {    struct locale_data *__locales[13];     const unsigned short int *__ctype_b;   const int *__ctype_tolower;   const int *__ctype_toupper;     const char *__names[13]; } *__locale_t; 
32   extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2, 3)));  extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,     __locale_t __l) throw () __attribute__ ((__nonnull__ (2, 4)));     extern char *strdup (__const char *__s)      throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1)));       extern char *strndup (__const char *__string, size_t __n)      throw () __attribute__ ((__malloc__)) __attribute__ ((__nonnull__ (1))); 
33 # 165 "/usr/include/gentoo-multilib/amd64/string.h" 3 4
34   extern char *strchr (__const char *__s, int __c)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));  extern char *strrchr (__const char *__s, int __c)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));      extern char *strchrnul (__const char *__s, int __c)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));      extern size_t strcspn (__const char *__s, __const char *__reject)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));   extern size_t strspn (__const char *__s, __const char *__accept)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));  extern char *strpbrk (__const char *__s, __const char *__accept)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));  extern char *strstr (__const char *__haystack, __const char *__needle)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));    extern char *strtok (char *__restrict __s, __const char *__restrict __delim)      throw () __attribute__ ((__nonnull__ (2)));     extern char *__strtok_r (char *__restrict __s,     __const char *__restrict __delim,     char **__restrict __save_ptr)      throw () __attribute__ ((__nonnull__ (2, 3)));  extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,          char **__restrict __save_ptr)      throw () __attribute__ ((__nonnull__ (2, 3)));     extern char *strcasestr (__const char *__haystack, __const char *__needle)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 2)));       extern void *memmem (__const void *__haystack, size_t __haystacklen,        __const void *__needle, size_t __needlelen)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1, 3)));    extern void *__mempcpy (void *__restrict __dest,    __const void *__restrict __src, size_t __n)      throw () __attribute__ ((__nonnull__ (1, 2))); extern void *mempcpy (void *__restrict __dest,         __const void *__restrict __src, size_t __n)      throw () __attribute__ ((__nonnull__ (1, 2)));      extern size_t strlen (__const char *__s)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));      extern size_t strnlen (__const char *__string, size_t __maxlen)      throw () __attribute__ ((__pure__)) __attribute__ ((__nonnull__ (1)));      extern char *strerror (int __errnum) throw ();  
35 }
36  
37 # 9 "/usr/include/string.h" 2 3 4
38 # 78 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstring" 3
39 namespace std __attribute__ ((__visibility__ ("default"))) {    using ::memcpy;   using ::memmove;   using ::strcpy;   using ::strncpy;   using ::strcat;   using ::strncat;   using ::memcmp;   using ::strcmp;   using ::strcoll;   using ::strncmp;   using ::strxfrm;   using ::strcspn;   using ::strspn;   using ::strtok;   using ::memset;   using ::strerror;   using ::strlen;    using ::memchr;    inline void*   memchr(void* __p, int __c, size_t __n)   { return memchr(const_cast<const void*>(__p), __c, __n); }    using ::strchr;    inline char*   strchr(char* __s1, int __n)   { return __builtin_strchr(const_cast<const char*>(__s1), __n); }    using ::strpbrk;    inline char*   strpbrk(char* __s1, const char* __s2)   { return __builtin_strpbrk(const_cast<const char*>(__s1), __s2); }    using ::strrchr;    inline char*   strrchr(char* __s1, int __n)   { return __builtin_strrchr(const_cast<const char*>(__s1), __n); }    using ::strstr;    inline char*   strstr(char* __s1, const char* __s2)   { return __builtin_strstr(const_cast<const char*>(__s1), __s2); }  }
40  
41 # 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 2 3
42  extern "C" {       
43 # 1 "/usr/include/bits/waitflags.h" 1 3 4
44        
45
46 # 28 "/usr/include/gentoo-multilib/amd64/sys/types.h" 2 3 4
47  extern "C" {  
48
49 # 32 "/usr/include/gentoo-multilib/amd64/bits/types.h" 2 3 4
50   typedef unsigned char __u_char; typedef unsigned short int __u_short; typedef unsigned int __u_int; typedef unsigned long int __u_long;   typedef signed char __int8_t; typedef unsigned char __uint8_t; typedef signed short int __int16_t; typedef unsigned short int __uint16_t; typedef signed int __int32_t; typedef unsigned int __uint32_t;  typedef signed long int __int64_t; typedef unsigned long int __uint64_t;        typedef long int __quad_t; typedef unsigned long int __u_quad_t; 
51   typedef unsigned long int __dev_t; typedef unsigned int __uid_t; typedef unsigned int __gid_t; typedef unsigned long int __ino_t; typedef unsigned long int __ino64_t; typedef unsigned int __mode_t; typedef unsigned long int __nlink_t; typedef long int __off_t; typedef long int __off64_t; typedef int __pid_t; typedef struct { int __val[2]; } __fsid_t; typedef long int __clock_t; typedef unsigned long int __rlim_t; typedef unsigned long int __rlim64_t; typedef unsigned int __id_t; typedef long int __time_t; typedef unsigned int __useconds_t; typedef long int __suseconds_t;  typedef int __daddr_t; typedef long int __swblk_t; typedef int __key_t;   typedef int __clockid_t;   typedef void * __timer_t;   typedef long int __blksize_t;     typedef long int __blkcnt_t; typedef long int __blkcnt64_t;   typedef unsigned long int __fsblkcnt_t; typedef unsigned long int __fsblkcnt64_t;   typedef unsigned long int __fsfilcnt_t; typedef unsigned long int __fsfilcnt64_t;  typedef long int __ssize_t;    typedef __off64_t __loff_t; typedef __quad_t *__qaddr_t; typedef char *__caddr_t;   typedef long int __intptr_t;   typedef unsigned int __socklen_t; 
52 # 9 "/usr/include/bits/types.h" 2 3 4
53
54 # 32 "/usr/include/gentoo-multilib/amd64/sys/types.h" 2 3 4
55    typedef __u_char u_char; typedef __u_short u_short; typedef __u_int u_int; typedef __u_long u_long; typedef __quad_t quad_t; typedef __u_quad_t u_quad_t; typedef __fsid_t fsid_t;     typedef __loff_t loff_t;    typedef __ino_t ino_t;       typedef __ino64_t ino64_t;     typedef __dev_t dev_t;     typedef __gid_t gid_t;     typedef __mode_t mode_t;     typedef __nlink_t nlink_t;     typedef __uid_t uid_t;      typedef __off_t off_t;       typedef __off64_t off64_t;     typedef __pid_t pid_t;     typedef __id_t id_t;     typedef __ssize_t ssize_t;      typedef __daddr_t daddr_t; typedef __caddr_t caddr_t;      typedef __key_t key_t; 
56 # 133 "/usr/include/gentoo-multilib/amd64/sys/types.h" 3 4
57 # 195 "/usr/include/gentoo-multilib/amd64/sys/types.h" 3 4
58 typedef int int8_t __attribute__ ((__mode__ (__QI__))); typedef int int16_t __attribute__ ((__mode__ (__HI__))); typedef int int32_t __attribute__ ((__mode__ (__SI__))); typedef int int64_t __attribute__ ((__mode__ (__DI__)));   typedef unsigned int u_int8_t __attribute__ ((__mode__ (__QI__))); typedef unsigned int u_int16_t __attribute__ ((__mode__ (__HI__))); typedef unsigned int u_int32_t __attribute__ ((__mode__ (__SI__))); typedef unsigned int u_int64_t __attribute__ ((__mode__ (__DI__)));  typedef int register_t __attribute__ ((__mode__ (__word__))); 
59 # 217 "/usr/include/gentoo-multilib/amd64/sys/types.h" 3 4
60    struct timespec   {     __time_t tv_sec;     long int tv_nsec;   }; 
61 # 9 "/usr/include/time.h" 2 3 4
62
63 # 24 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 2 3 4
64
65 # 50 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 3 4
66 typedef unsigned long int pthread_t;   typedef union {   char __size[56];   long int __align; } pthread_attr_t;    typedef struct __pthread_internal_list {   struct __pthread_internal_list *__prev;   struct __pthread_internal_list *__next; } __pthread_list_t; 
67 # 76 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 3 4
68 typedef union {   struct __pthread_mutex_s   {     int __lock;     unsigned int __count;     int __owner;      unsigned int __nusers;        int __kind;      int __spins;     __pthread_list_t __list; 
69 # 101 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 3 4
70   } __data;   char __size[40];   long int __align; } pthread_mutex_t;  typedef union {   char __size[4];   int __align; } pthread_mutexattr_t;     typedef union {   struct   {     int __lock;     unsigned int __futex;     __extension__ unsigned long long int __total_seq;     __extension__ unsigned long long int __wakeup_seq;     __extension__ unsigned long long int __woken_seq;     void *__mutex;     unsigned int __nwaiters;     unsigned int __broadcast_seq;   } __data;   char __size[48];   __extension__ long long int __align; } pthread_cond_t;  typedef union {   char __size[4];   int __align; } pthread_condattr_t;    typedef unsigned int pthread_key_t;    typedef int pthread_once_t;      typedef union {    struct   {     int __lock;     unsigned int __nr_readers;     unsigned int __readers_wakeup;     unsigned int __writer_wakeup;     unsigned int __nr_readers_queued;     unsigned int __nr_writers_queued;     int __writer;     int __pad1;     unsigned long int __pad2;     unsigned long int __pad3;       unsigned int __flags;   } __data; 
71 # 184 "/usr/include/gentoo-multilib/amd64/bits/pthreadtypes.h" 3 4
72   char __size[56];   long int __align; } pthread_rwlock_t;  typedef union {   char __size[8];   long int __align; } pthread_rwlockattr_t;      typedef volatile int pthread_spinlock_t;     typedef union {   char __size[32];   long int __align; } pthread_barrier_t;  typedef union {   char __size[4];   int __align; } pthread_barrierattr_t; 
73   } 
74 # 9 "/usr/include/sys/types.h" 2 3 4
75
76     extern void *valloc (size_t __size) throw () __attribute__ ((__malloc__)) ;     extern int posix_memalign (void **__memptr, size_t __alignment, size_t __size)      throw () __attribute__ ((__nonnull__ (1))) ;     extern void abort (void) throw () __attribute__ ((__noreturn__));    extern int atexit (void (*__func) (void)) throw () __attribute__ ((__nonnull__ (1)));      extern int on_exit (void (*__func) (int __status, void *__arg), void *__arg)      throw () __attribute__ ((__nonnull__ (1)));       extern void exit (int __status) throw () __attribute__ ((__noreturn__));       extern void _Exit (int __status) throw () __attribute__ ((__noreturn__));       extern char *getenv (__const char *__name) throw () __attribute__ ((__nonnull__ (1))) ;     extern char *__secure_getenv (__const char *__name)      throw () __attribute__ ((__nonnull__ (1))) ;      extern int putenv (char *__string) throw () __attribute__ ((__nonnull__ (1)));      extern int setenv (__const char *__name, __const char *__value, int __replace)      throw () __attribute__ ((__nonnull__ (2)));   extern int unsetenv (__const char *__name) throw ();       extern int clearenv (void) throw (); 
77 # 698 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
78 extern char *mktemp (char *__template) throw () __attribute__ ((__nonnull__ (1))) ; 
79 # 976 "/usr/include/gentoo-multilib/amd64/stdlib.h" 3 4
80 }
81  
82
83 # 29 "/usr/include/gentoo-multilib/amd64/stdio.h" 2 3 4
84  extern "C" {    
85 struct _IO_FILE;    typedef struct _IO_FILE FILE;      
86 # 65 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
87 typedef struct _IO_FILE __FILE; 
88
89 # 355 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 3 4
90 typedef unsigned int wint_t; 
91
92 # 76 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
93 typedef struct {   int __count;   union   {     wint_t __wch;     char __wchb[4];   } __value; } __mbstate_t; 
94  typedef struct {   __off_t __pos;   __mbstate_t __state; } _G_fpos_t; typedef struct {   __off64_t __pos;   __mbstate_t __state; } _G_fpos64_t; 
95 # 44 "/usr/include/gentoo-multilib/amd64/_G_config.h" 3 4
96
97 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stdarg.h" 3 4
98 typedef __builtin_va_list __gnuc_va_list; 
99 # 54 "/usr/include/gentoo-multilib/amd64/libio.h" 2 3 4
100 # 177 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
101 typedef void _IO_lock_t;      struct _IO_marker {   struct _IO_marker *_next;   struct _IO_FILE *_sbuf;      int _pos; 
102 # 200 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
103   void *__pad1;   void *__pad2;   void *__pad3;   void *__pad4;   size_t __pad5;    int _mode;    char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];  };      struct _IO_FILE_plus;  extern struct _IO_FILE_plus _IO_2_1_stdin_; extern struct _IO_FILE_plus _IO_2_1_stdout_; extern struct _IO_FILE_plus _IO_2_1_stderr_; 
104 # 361 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
105 typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);        typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,      size_t __n);        typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);   typedef int __io_close_fn (void *__cookie);     typedef __io_read_fn cookie_read_function_t; typedef __io_write_fn cookie_write_function_t; typedef __io_seek_fn cookie_seek_function_t; typedef __io_close_fn cookie_close_function_t;   typedef struct {   __io_read_fn *read;   __io_write_fn *write;   __io_seek_fn *seek;   __io_close_fn *close; } _IO_cookie_io_functions_t; typedef _IO_cookie_io_functions_t cookie_io_functions_t;  struct _IO_cookie_file;   extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,         void *__cookie, _IO_cookie_io_functions_t __fns);     extern "C" {   extern int __underflow (_IO_FILE *); extern int __uflow (_IO_FILE *); extern int __overflow (_IO_FILE *, int); extern wint_t __wunderflow (_IO_FILE *); extern wint_t __wuflow (_IO_FILE *); extern wint_t __woverflow (_IO_FILE *, wint_t); 
106 # 543 "/usr/include/gentoo-multilib/amd64/libio.h" 3 4
107
108 # 9 "/usr/include/libio.h" 2 3 4
109
110 # 76 "/usr/include/gentoo-multilib/amd64/stdio.h" 2 3 4
111     typedef __gnuc_va_list va_list; 
112 # 89 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
113   typedef _G_fpos_t fpos_t;      typedef _G_fpos64_t fpos64_t; 
114 # 141 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
115
116 # 142 "/usr/include/gentoo-multilib/amd64/stdio.h" 2 3 4
117    extern struct _IO_FILE *stdin; extern struct _IO_FILE *stdout; extern struct _IO_FILE *stderr;        extern int remove (__const char *__filename) throw ();  extern int rename (__const char *__old, __const char *__new) throw ();     extern int renameat (int __oldfd, __const char *__old, int __newfd,        __const char *__new) throw ();         extern FILE *tmpfile (void) ; 
118 extern char *tempnam (__const char *__dir, __const char *__pfx)      throw () __attribute__ ((__malloc__)) ;         extern int fclose (FILE *__stream);     extern int fflush (FILE *__stream);  
119 # 229 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
120 extern int fflush_unlocked (FILE *__stream); 
121 # 239 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
122 extern int fcloseall (void);          extern FILE *fopen (__const char *__restrict __filename,       __const char *__restrict __modes) ;     extern FILE *freopen (__const char *__restrict __filename,         __const char *__restrict __modes,         FILE *__restrict __stream) ; 
123 # 272 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
124   extern FILE *fopen64 (__const char *__restrict __filename,         __const char *__restrict __modes) ; extern FILE *freopen64 (__const char *__restrict __filename,    __const char *__restrict __modes,    FILE *__restrict __stream) ;     extern FILE *fdopen (int __fd, __const char *__modes) throw () ;      extern FILE *fopencookie (void *__restrict __magic_cookie,      __const char *__restrict __modes,      _IO_cookie_io_functions_t __io_funcs) throw () ;   extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)   throw () ;     extern FILE *open_memstream (char **__bufloc, size_t *__sizeloc) throw () ;       extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) throw ();    extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,       int __modes, size_t __n) throw ();      extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,          size_t __size) throw ();   extern void setlinebuf (FILE *__stream) throw ();         extern int fprintf (FILE *__restrict __stream,       __const char *__restrict __format, ...);     extern int printf (__const char *__restrict __format, ...);  extern int sprintf (char *__restrict __s,       __const char *__restrict __format, ...) throw ();      extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,        __gnuc_va_list __arg);     extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);  extern int vsprintf (char *__restrict __s, __const char *__restrict __format,        __gnuc_va_list __arg) throw ();      extern int snprintf (char *__restrict __s, size_t __maxlen,        __const char *__restrict __format, ...)      throw () __attribute__ ((__format__ (__printf__, 3, 4)));  extern int vsnprintf (char *__restrict __s, size_t __maxlen,         __const char *__restrict __format, __gnuc_va_list __arg)      throw () __attribute__ ((__format__ (__printf__, 3, 0)));       extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,         __gnuc_va_list __arg)      throw () __attribute__ ((__format__ (__printf__, 2, 0))) ; extern int __asprintf (char **__restrict __ptr,          __const char *__restrict __fmt, ...)      throw () __attribute__ ((__format__ (__printf__, 2, 3))) ; extern int asprintf (char **__restrict __ptr,        __const char *__restrict __fmt, ...)      throw () __attribute__ ((__format__ (__printf__, 2, 3))) ;        extern int vdprintf (int __fd, __const char *__restrict __fmt,        __gnuc_va_list __arg)      __attribute__ ((__format__ (__printf__, 2, 0))); extern int dprintf (int __fd, __const char *__restrict __fmt, ...)      __attribute__ ((__format__ (__printf__, 2, 3)));         extern int fscanf (FILE *__restrict __stream,      __const char *__restrict __format, ...) ;     extern int scanf (__const char *__restrict __format, ...) ;  extern int sscanf (__const char *__restrict __s,      __const char *__restrict __format, ...) throw ();         extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,       __gnuc_va_list __arg)      __attribute__ ((__format__ (__scanf__, 2, 0))) ;      extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)      __attribute__ ((__format__ (__scanf__, 1, 0))) ;   extern int vsscanf (__const char *__restrict __s,       __const char *__restrict __format, __gnuc_va_list __arg)      throw () __attribute__ ((__format__ (__scanf__, 2, 0)));          extern int fgetc (FILE *__stream); extern int getc (FILE *__stream);      extern int getchar (void);  
125 # 464 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
126 extern int getc_unlocked (FILE *__stream); extern int getchar_unlocked (void); 
127 # 570 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
128 extern __ssize_t __getdelim (char **__restrict __lineptr,           size_t *__restrict __n, int __delimiter,           FILE *__restrict __stream) ; extern __ssize_t getdelim (char **__restrict __lineptr,         size_t *__restrict __n, int __delimiter,         FILE *__restrict __stream) ;        extern __ssize_t getline (char **__restrict __lineptr,        size_t *__restrict __n,        FILE *__restrict __stream) ;         extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);      extern int puts (__const char *__s);       extern int ungetc (int __c, FILE *__stream);       extern size_t fread (void *__restrict __ptr, size_t __size,        size_t __n, FILE *__restrict __stream) ;     extern size_t fwrite (__const void *__restrict __ptr, size_t __size,         size_t __n, FILE *__restrict __s) ;  
129 # 631 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
130 extern int fputs_unlocked (__const char *__restrict __s,       FILE *__restrict __stream); 
131 # 642 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
132 extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,          size_t __n, FILE *__restrict __stream) ; extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,           size_t __n, FILE *__restrict __stream) ;         extern int fseek (FILE *__stream, long int __off, int __whence);     extern long int ftell (FILE *__stream) ;     extern void rewind (FILE *__stream);  
133       extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos);     extern int fsetpos (FILE *__stream, __const fpos_t *__pos); 
134 # 720 "/usr/include/gentoo-multilib/amd64/stdio.h" 3 4
135    extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence); extern __off64_t ftello64 (FILE *__stream) ; extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos); extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);     extern void clearerr (FILE *__stream) throw ();  extern int feof (FILE *__stream) throw () ;  extern int ferror (FILE *__stream) throw () ;     extern void clearerr_unlocked (FILE *__stream) throw (); extern int feof_unlocked (FILE *__stream) throw () ; extern int ferror_unlocked (FILE *__stream) throw () ;         extern void perror (__const char *__s);       
136 # 1 "/usr/include/bits/sys_errlist.h" 1 3 4
137 }
138  
139 # 9 "/usr/include/stdio.h" 2 3 4
140 # 155 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdio" 3
141 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { 
142 # 170 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cstdio" 3
143   using ::snprintf;   using ::vfscanf;   using ::vscanf;   using ::vsnprintf;   using ::vsscanf;   }
144   namespace std __attribute__ ((__visibility__ ("default"))) {    using ::__gnu_cxx::snprintf;   using ::__gnu_cxx::vfscanf;   using ::__gnu_cxx::vscanf;   using ::__gnu_cxx::vsnprintf;   using ::__gnu_cxx::vsscanf;  }
145  
146 # 31 "/usr/include/gentoo-multilib/amd64/locale.h" 2 3 4
147  extern "C" { 
148 # 51 "/usr/include/gentoo-multilib/amd64/locale.h" 3 4
149 # 189 "/usr/include/gentoo-multilib/amd64/locale.h" 3 4
150 extern __locale_t duplocale (__locale_t __dataset) throw ();    extern void freelocale (__locale_t __dataset) throw ();       extern __locale_t uselocale (__locale_t __dataset) throw ();        }
151  
152  
153 # 54 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/c++locale.h" 2 3
154       namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {    extern "C" __typeof(uselocale) __uselocale;  }
155    namespace std __attribute__ ((__visibility__ ("default"))) {    typedef __locale_t __c_locale;        inline int   __convert_from_v(const __c_locale& __cloc __attribute__ ((__unused__)),      char* __out,      const int __size __attribute__ ((__unused__)),      const char* __fmt, ...)   {      __c_locale __old = __gnu_cxx::__uselocale(__cloc);            va_list __args;     __builtin_va_start(__args,__fmt);       const int __ret = std::vsnprintf(__out, __size, __fmt, __args);         __builtin_va_end(__args);       __gnu_cxx::__uselocale(__old);         return __ret;   }  }
156  
157 # 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 2 3
158 typedef unsigned long int __cpu_mask;
159        typedef struct {   __cpu_mask __bits[1024 / (8 * sizeof (__cpu_mask))]; }
160  cpu_set_t;
161  extern "C" {        
162 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/stddef.h" 1 3 4
163
164 extern struct tm *getdate (__const char *__string); 
165 # 412 "/usr/include/gentoo-multilib/amd64/time.h" 3 4
166 extern int getdate_r (__const char *__restrict __string,         struct tm *__restrict __resbufp);   }
167     typedef long int __jmp_buf[8];
168  
169 # 9 "/usr/include/bits/setjmp.h" 2 3 4
170 struct _pthread_cleanup_buffer {   void (*__routine) (void *);   void *__arg;   int __canceltype;   struct _pthread_cleanup_buffer *__prev; };
171    enum {   PTHREAD_CANCEL_ENABLE,    PTHREAD_CANCEL_DISABLE  };
172  enum {   PTHREAD_CANCEL_DEFERRED,    PTHREAD_CANCEL_ASYNCHRONOUS  };
173  
174 # 217 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
175 extern "C" {     extern int pthread_create (pthread_t *__restrict __newthread,       __const pthread_attr_t *__restrict __attr,       void *(*__start_routine) (void *),       void *__restrict __arg) throw () __attribute__ ((__nonnull__ (1, 3)));      extern void pthread_exit (void *__retval) __attribute__ ((__noreturn__));        extern int pthread_join (pthread_t __th, void **__thread_return);     extern int pthread_tryjoin_np (pthread_t __th, void **__thread_return) throw ();        extern int pthread_timedjoin_np (pthread_t __th, void **__thread_return,      __const struct timespec *__abstime);       extern int pthread_detach (pthread_t __th) throw ();    extern pthread_t pthread_self (void) throw () __attribute__ ((__const__));   extern int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw ();        extern int pthread_attr_init (pthread_attr_t *__attr) throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_attr_destroy (pthread_attr_t *__attr)      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_attr_getdetachstate (__const pthread_attr_t *__attr,      int *__detachstate)      throw () __attribute__ ((__nonnull__ (1, 2)));   extern int pthread_attr_setdetachstate (pthread_attr_t *__attr,      int __detachstate)      throw () __attribute__ ((__nonnull__ (1)));    extern int pthread_attr_getguardsize (__const pthread_attr_t *__attr,           size_t *__guardsize)      throw () __attribute__ ((__nonnull__ (1, 2)));   extern int pthread_attr_setguardsize (pthread_attr_t *__attr,           size_t __guardsize)      throw () __attribute__ ((__nonnull__ (1)));    extern int pthread_attr_getschedparam (__const pthread_attr_t *__restrict            __attr,            struct sched_param *__restrict __param)      throw () __attribute__ ((__nonnull__ (1, 2)));   extern int pthread_attr_setschedparam (pthread_attr_t *__restrict __attr,            __const struct sched_param *__restrict            __param) throw () __attribute__ ((__nonnull__ (1, 2)));   extern int pthread_attr_getschedpolicy (__const pthread_attr_t *__restrict      __attr, int *__restrict __policy)      throw () __attribute__ ((__nonnull__ (1, 2)));   extern int pthread_attr_setschedpolicy (pthread_attr_t *__attr, int __policy)      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_attr_getinheritsched (__const pthread_attr_t *__restrict       __attr, int *__restrict __inherit)      throw () __attribute__ ((__nonnull__ (1, 2)));   extern int pthread_attr_setinheritsched (pthread_attr_t *__attr,       int __inherit)      throw () __attribute__ ((__nonnull__ (1)));    extern int pthread_attr_getscope (__const pthread_attr_t *__restrict __attr,       int *__restrict __scope)      throw () __attribute__ ((__nonnull__ (1, 2)));   extern int pthread_attr_setscope (pthread_attr_t *__attr, int __scope)      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_attr_getstackaddr (__const pthread_attr_t *__restrict           __attr, void **__restrict __stackaddr)      throw () __attribute__ ((__nonnull__ (1, 2))) __attribute__ ((__deprecated__));      extern int pthread_attr_setstackaddr (pthread_attr_t *__attr,           void *__stackaddr)      throw () __attribute__ ((__nonnull__ (1))) __attribute__ ((__deprecated__));   extern int pthread_attr_getstacksize (__const pthread_attr_t *__restrict           __attr, size_t *__restrict __stacksize)      throw () __attribute__ ((__nonnull__ (1, 2)));     extern int pthread_attr_setstacksize (pthread_attr_t *__attr,           size_t __stacksize)      throw () __attribute__ ((__nonnull__ (1)));    extern int pthread_attr_getstack (__const pthread_attr_t *__restrict __attr,       void **__restrict __stackaddr,       size_t *__restrict __stacksize)      throw () __attribute__ ((__nonnull__ (1, 2, 3)));     extern int pthread_attr_setstack (pthread_attr_t *__attr, void *__stackaddr,       size_t __stacksize) throw () __attribute__ ((__nonnull__ (1)));      extern int pthread_attr_setaffinity_np (pthread_attr_t *__attr,      size_t __cpusetsize,      __const cpu_set_t *__cpuset)      throw () __attribute__ ((__nonnull__ (1, 3)));    extern int pthread_attr_getaffinity_np (__const pthread_attr_t *__attr,      size_t __cpusetsize,      cpu_set_t *__cpuset)      throw () __attribute__ ((__nonnull__ (1, 3)));      extern int pthread_getattr_np (pthread_t __th, pthread_attr_t *__attr)      throw () __attribute__ ((__nonnull__ (2)));        extern int pthread_setschedparam (pthread_t __target_thread, int __policy,       __const struct sched_param *__param)      throw () __attribute__ ((__nonnull__ (3)));   extern int pthread_getschedparam (pthread_t __target_thread,       int *__restrict __policy,       struct sched_param *__restrict __param)      throw () __attribute__ ((__nonnull__ (2, 3)));   extern int pthread_setschedprio (pthread_t __target_thread, int __prio)      throw ();     extern int pthread_getconcurrency (void) throw ();   extern int pthread_setconcurrency (int __level) throw ();        extern int pthread_yield (void) throw ();     extern int pthread_setaffinity_np (pthread_t __th, size_t __cpusetsize,        __const cpu_set_t *__cpuset)      throw () __attribute__ ((__nonnull__ (3)));   extern int pthread_getaffinity_np (pthread_t __th, size_t __cpusetsize,        cpu_set_t *__cpuset)      throw () __attribute__ ((__nonnull__ (3))); 
176 extern int pthread_setcancelstate (int __state, int *__oldstate);    extern int pthread_setcanceltype (int __type, int *__oldtype);   extern int pthread_cancel (pthread_t __th);     extern void pthread_testcancel (void);     typedef struct {   struct   {     __jmp_buf __cancel_jmp_buf;     int __mask_was_saved;   } __cancel_jmp_buf[1];   void *__pad[4]; } __pthread_unwind_buf_t __attribute__ ((__aligned__)); 
177 # 509 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
178 struct __pthread_cleanup_frame {   void (*__cancel_routine) (void *);   void *__cancel_arg;   int __do_it;   int __cancel_type; };     class __pthread_cleanup_class {   void (*__cancel_routine) (void *);   void *__cancel_arg;   int __do_it;   int __cancel_type;   public:   __pthread_cleanup_class (void (*__fct) (void *), void *__arg)     : __cancel_routine (__fct), __cancel_arg (__arg), __do_it (1) { }   ~__pthread_cleanup_class () { if (__do_it) __cancel_routine (__cancel_arg); }   void __setdoit (int __newval) { __do_it = __newval; }   void __defer () { pthread_setcanceltype (PTHREAD_CANCEL_DEFERRED,         &__cancel_type); }   void __restore () const { pthread_setcanceltype (__cancel_type, 0); } }; 
179 # 709 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
180 extern int pthread_spin_init (pthread_spinlock_t *__lock, int __pshared)      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_spin_destroy (pthread_spinlock_t *__lock)      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_spin_lock (pthread_spinlock_t *__lock)      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_spin_trylock (pthread_spinlock_t *__lock)      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_spin_unlock (pthread_spinlock_t *__lock)      throw () __attribute__ ((__nonnull__ (1)));       extern int pthread_barrier_init (pthread_barrier_t *__restrict __barrier,      __const pthread_barrierattr_t *__restrict      __attr, unsigned int __count)      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_barrier_destroy (pthread_barrier_t *__barrier)      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_barrier_wait (pthread_barrier_t *__barrier)      throw () __attribute__ ((__nonnull__ (1)));    extern int pthread_barrierattr_init (pthread_barrierattr_t *__attr)      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_barrierattr_destroy (pthread_barrierattr_t *__attr)      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_barrierattr_getpshared (__const pthread_barrierattr_t *         __restrict __attr,         int *__restrict __pshared)      throw () __attribute__ ((__nonnull__ (1, 2)));   extern int pthread_barrierattr_setpshared (pthread_barrierattr_t *__attr,                                            int __pshared)      throw () __attribute__ ((__nonnull__ (1))); 
181 # 1066 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
182 extern int pthread_key_create (pthread_key_t *__key,           void (*__destr_function) (void *))      throw () __attribute__ ((__nonnull__ (1)));   extern int pthread_key_delete (pthread_key_t __key) throw ();   extern void *pthread_getspecific (pthread_key_t __key) throw ();   extern int pthread_setspecific (pthread_key_t __key,     __const void *__pointer) throw () ;     extern int pthread_getcpuclockid (pthread_t __thread_id,       __clockid_t *__clock_id)      throw () __attribute__ ((__nonnull__ (2))); 
183 # 1100 "/usr/include/gentoo-multilib/amd64/pthread.h" 3 4
184 extern int pthread_atfork (void (*__prepare) (void),       void (*__parent) (void),       void (*__child) (void)) throw ();     extern __inline int pthread_equal (pthread_t __thread1, pthread_t __thread2) throw () {   return __thread1 == __thread2; }   }
185  
186 # 27 "/usr/include/gentoo-multilib/amd64/unistd.h" 2 3 4
187  extern "C" { 
188 # 173 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
189 extern __off64_t lseek64 (int __fd, __off64_t __offset, int __whence)      throw ();       extern int close (int __fd);       extern ssize_t read (int __fd, void *__buf, size_t __nbytes) ;      extern ssize_t write (int __fd, __const void *__buf, size_t __n) ; 
190 # 343 "/usr/include/gentoo-multilib/amd64/unistd.h" 3 4
191 extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,         __off_t __offset) ;       extern ssize_t pwrite (int __fd, __const void *__buf, size_t __n,          __off_t __offset) ; 
192 }
193  
194 # 9 "/usr/include/unistd.h" 2 3 4
195
196 # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 2 3
197  typedef pthread_key_t __gthread_key_t;
198  typedef pthread_once_t __gthread_once_t;
199  typedef pthread_mutex_t __gthread_mutex_t;
200  typedef pthread_mutex_t __gthread_recursive_mutex_t;
201  
202  static __typeof(pthread_setspecific) __gthrw_pthread_setspecific __attribute__ ((__weakref__("pthread_setspecific")));
203  static __typeof(pthread_create) __gthrw_pthread_create __attribute__ ((__weakref__("pthread_create")));
204  static __typeof(pthread_cancel) __gthrw_pthread_cancel __attribute__ ((__weakref__("pthread_cancel")));
205  
206 # 202 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/gthr-default.h" 3
207 static inline int __gthread_active_p (void) {   static void *const __gthread_active_ptr     = __extension__ (void *) &__gthrw_pthread_cancel;   return __gthread_active_ptr != 0; }
208  namespace std __attribute__ ((__visibility__ ("default"))) {    typedef __gthread_mutex_t __c_lock;     typedef FILE __c_file;  }
209  
210 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 2 3
211 # 29 "/usr/include/gentoo-multilib/amd64/ctype.h" 2 3 4
212  extern "C" { 
213 # 41 "/usr/include/gentoo-multilib/amd64/ctype.h" 3 4
214 # 42 "/usr/include/gentoo-multilib/amd64/ctype.h" 2 3 4
215       enum {   _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),   _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),   _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),   _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),   _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),   _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),   _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),   _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),   _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),   _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),   _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),   _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8)) }; 
216 # 81 "/usr/include/gentoo-multilib/amd64/ctype.h" 3 4
217 }
218  
219 # 9 "/usr/include/ctype.h" 2 3 4
220   typedef __mbstate_t mbstate_t;
221     
222 # 118 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
223 extern "C" {     struct tm;          extern wchar_t *wcscpy (wchar_t *__restrict __dest,    __const wchar_t *__restrict __src) throw ();  extern wchar_t *wcsncpy (wchar_t *__restrict __dest,     __const wchar_t *__restrict __src, size_t __n)      throw ();   extern wchar_t *wcscat (wchar_t *__restrict __dest,    __const wchar_t *__restrict __src) throw ();  extern wchar_t *wcsncat (wchar_t *__restrict __dest,     __const wchar_t *__restrict __src, size_t __n)      throw ();   extern int wcscmp (__const wchar_t *__s1, __const wchar_t *__s2)      throw () __attribute__ ((__pure__));  extern int wcsncmp (__const wchar_t *__s1, __const wchar_t *__s2, size_t __n)      throw () __attribute__ ((__pure__));     extern int wcscasecmp (__const wchar_t *__s1, __const wchar_t *__s2) throw ();   extern int wcsncasecmp (__const wchar_t *__s1, __const wchar_t *__s2,    size_t __n) throw ();    
224 # 1 "/usr/include/xlocale.h" 1 3 4
225
226 # 167 "/usr/include/gentoo-multilib/amd64/wchar.h" 2 3 4
227  extern int wcscasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,     __locale_t __loc) throw ();  extern int wcsncasecmp_l (__const wchar_t *__s1, __const wchar_t *__s2,      size_t __n, __locale_t __loc) throw ();      extern int wcscoll (__const wchar_t *__s1, __const wchar_t *__s2) throw ();    extern size_t wcsxfrm (wchar_t *__restrict __s1,          __const wchar_t *__restrict __s2, size_t __n) throw ();         extern int wcscoll_l (__const wchar_t *__s1, __const wchar_t *__s2,         __locale_t __loc) throw ();     extern size_t wcsxfrm_l (wchar_t *__s1, __const wchar_t *__s2,     size_t __n, __locale_t __loc) throw ();   extern wchar_t *wcsdup (__const wchar_t *__s) throw () __attribute__ ((__malloc__));     extern wchar_t *wcschr (__const wchar_t *__wcs, wchar_t __wc)      throw () __attribute__ ((__pure__));  extern wchar_t *wcsrchr (__const wchar_t *__wcs, wchar_t __wc)      throw () __attribute__ ((__pure__));      extern wchar_t *wcschrnul (__const wchar_t *__s, wchar_t __wc)      throw () __attribute__ ((__pure__));      extern size_t wcscspn (__const wchar_t *__wcs, __const wchar_t *__reject)      throw () __attribute__ ((__pure__));   extern size_t wcsspn (__const wchar_t *__wcs, __const wchar_t *__accept)      throw () __attribute__ ((__pure__));  extern wchar_t *wcspbrk (__const wchar_t *__wcs, __const wchar_t *__accept)      throw () __attribute__ ((__pure__));  extern wchar_t *wcsstr (__const wchar_t *__haystack, __const wchar_t *__needle)      throw () __attribute__ ((__pure__));   extern wchar_t *wcstok (wchar_t *__restrict __s,    __const wchar_t *__restrict __delim,    wchar_t **__restrict __ptr) throw ();   extern size_t wcslen (__const wchar_t *__s) throw () __attribute__ ((__pure__));     extern wchar_t *wcswcs (__const wchar_t *__haystack, __const wchar_t *__needle)      throw () __attribute__ ((__pure__));     extern size_t wcsnlen (__const wchar_t *__s, size_t __maxlen)      throw () __attribute__ ((__pure__));      extern wchar_t *wmemchr (__const wchar_t *__s, wchar_t __c, size_t __n)      throw () __attribute__ ((__pure__));   extern int wmemcmp (__const wchar_t *__restrict __s1,       __const wchar_t *__restrict __s2, size_t __n)      throw () __attribute__ ((__pure__));   extern wchar_t *wmemcpy (wchar_t *__restrict __s1,     __const wchar_t *__restrict __s2, size_t __n) throw ();    extern wchar_t *wmemmove (wchar_t *__s1, __const wchar_t *__s2, size_t __n)      throw ();   extern wchar_t *wmemset (wchar_t *__s, wchar_t __c, size_t __n) throw ();      extern wchar_t *wmempcpy (wchar_t *__restrict __s1,      __const wchar_t *__restrict __s2, size_t __n)      throw ();       extern wint_t btowc (int __c) throw ();    extern int wctob (wint_t __c) throw ();    extern int mbsinit (__const mbstate_t *__ps) throw () __attribute__ ((__pure__));    extern size_t mbrtowc (wchar_t *__restrict __pwc,          __const char *__restrict __s, size_t __n,          mbstate_t *__p) throw ();   extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,          mbstate_t *__restrict __ps) throw ();   extern size_t __mbrlen (__const char *__restrict __s, size_t __n,    mbstate_t *__restrict __ps) throw (); extern size_t mbrlen (__const char *__restrict __s, size_t __n,         mbstate_t *__restrict __ps) throw ();  
228 # 341 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
229 # 858 "/usr/include/gentoo-multilib/amd64/wchar.h" 3 4
230 }
231  
232
233 # 70 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/cwchar" 3
234 namespace std __attribute__ ((__visibility__ ("default"))) {    using ::mbstate_t;  }
235
236 # 50 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 2 3
237   namespace std __attribute__ ((__visibility__ ("default"))) { 
238 # 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 3
239   typedef int64_t streamoff;        typedef ptrdiff_t streamsize;    template<typename _StateT>     class fpos; 
240 # 94 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 3
241   template<typename _StateT>     class fpos     {     private:       streamoff _M_off;       _StateT _M_state;      public:           fpos()       : _M_off(0), _M_state() { } 
242 # 116 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/postypes.h" 3
243       fpos(streamoff __off)       : _M_off(__off), _M_state() { }         operator streamoff() const { return _M_off; }         void       state(_StateT __st)       { _M_state = __st; }         _StateT       state() const       { return _M_state; }            fpos&       operator+=(streamoff __off)       {  _M_off += __off;  return *this;       }            fpos&       operator-=(streamoff __off)       {  _M_off -= __off;  return *this;       }              fpos       operator+(streamoff __off) const       {  fpos __pos(*this);  __pos += __off;  return __pos;       }              fpos       operator-(streamoff __off) const       {  fpos __pos(*this);  __pos -= __off;  return __pos;       }             streamoff       operator-(const fpos& __other) const       { return _M_off - __other._M_off; }     };         template<typename _StateT>     inline bool     operator==(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)     { return streamoff(__lhs) == streamoff(__rhs); }    template<typename _StateT>     inline bool     operator!=(const fpos<_StateT>& __lhs, const fpos<_StateT>& __rhs)     { return streamoff(__lhs) != streamoff(__rhs); }        typedef fpos<mbstate_t> streampos;    typedef fpos<mbstate_t> wstreampos;  }
244 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/functexcept.h" 2 3
245  namespace std __attribute__ ((__visibility__ ("default"))) {     void   __throw_bad_exception(void) __attribute__((__noreturn__));     void   __throw_bad_alloc(void) __attribute__((__noreturn__));     void   __throw_bad_cast(void) __attribute__((__noreturn__));    void   __throw_bad_typeid(void) __attribute__((__noreturn__));     void   __throw_logic_error(const char*) __attribute__((__noreturn__));    void   __throw_domain_error(const char*) __attribute__((__noreturn__));    void   __throw_invalid_argument(const char*) __attribute__((__noreturn__));    void   __throw_length_error(const char*) __attribute__((__noreturn__));    void   __throw_out_of_range(const char*) __attribute__((__noreturn__));    void   __throw_runtime_error(const char*) __attribute__((__noreturn__));    void   __throw_range_error(const char*) __attribute__((__noreturn__));    void   __throw_overflow_error(const char*) __attribute__((__noreturn__));    void   __throw_underflow_error(const char*) __attribute__((__noreturn__));     void   __throw_ios_failure(const char*) __attribute__((__noreturn__));  }
246  
247 # 51 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 2 3
248  namespace std __attribute__ ((__visibility__ ("default"))) {    template<typename _CharT, typename _Traits = char_traits<_CharT> >     class basic_ios;    template<typename _CharT, typename _Traits = char_traits<_CharT> >     class basic_streambuf;    template<typename _CharT, typename _Traits = char_traits<_CharT> >     class basic_istream;    template<typename _CharT, typename _Traits = char_traits<_CharT> >     class basic_ostream;    template<typename _CharT, typename _Traits = char_traits<_CharT> >     class basic_iostream;    template<typename _CharT, typename _Traits = char_traits<_CharT>,      typename _Alloc = allocator<_CharT> >     class basic_stringbuf;    template<typename _CharT, typename _Traits = char_traits<_CharT>,     typename _Alloc = allocator<_CharT> >     class basic_istringstream;    template<typename _CharT, typename _Traits = char_traits<_CharT>,     typename _Alloc = allocator<_CharT> >     class basic_ostringstream;    template<typename _CharT, typename _Traits = char_traits<_CharT>,     typename _Alloc = allocator<_CharT> >     class basic_stringstream;    template<typename _CharT, typename _Traits = char_traits<_CharT> >     class basic_filebuf;    template<typename _CharT, typename _Traits = char_traits<_CharT> >     class basic_ifstream;    template<typename _CharT, typename _Traits = char_traits<_CharT> >     class basic_ofstream;    template<typename _CharT, typename _Traits = char_traits<_CharT> >     class basic_fstream;    template<typename _CharT, typename _Traits = char_traits<_CharT> >     class istreambuf_iterator;    template<typename _CharT, typename _Traits = char_traits<_CharT> >     class ostreambuf_iterator;      class ios_base; 
249 # 135 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iosfwd" 3
250   typedef basic_ios<char> ios;   typedef basic_streambuf<char> streambuf;   typedef basic_istream<char> istream;   typedef basic_ostream<char> ostream;   typedef basic_iostream<char> iostream;   typedef basic_stringbuf<char> stringbuf;   typedef basic_istringstream<char> istringstream;   typedef basic_ostringstream<char> ostringstream;   typedef basic_stringstream<char> stringstream;   typedef basic_filebuf<char> filebuf;   typedef basic_ifstream<char> ifstream;   typedef basic_ofstream<char> ofstream;   typedef basic_fstream<char> fstream;     typedef basic_ios<wchar_t> wios;   typedef basic_streambuf<wchar_t> wstreambuf;   typedef basic_istream<wchar_t> wistream;   typedef basic_ostream<wchar_t> wostream;   typedef basic_iostream<wchar_t> wiostream;   typedef basic_stringbuf<wchar_t> wstringbuf;   typedef basic_istringstream<wchar_t> wistringstream;   typedef basic_ostringstream<wchar_t> wostringstream;   typedef basic_stringstream<wchar_t> wstringstream;   typedef basic_filebuf<wchar_t> wfilebuf;   typedef basic_ifstream<wchar_t> wifstream;   typedef basic_ofstream<wchar_t> wofstream;   typedef basic_fstream<wchar_t> wfstream;    }
251  
252 # 71 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
253 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_pair.h" 3
254 namespace std __attribute__ ((__visibility__ ("default"))) {     template<class _T1, class _T2>     struct pair     {       typedef _T1 first_type;       typedef _T2 second_type;        _T1 first;       _T2 second;            pair()       : first(), second() { }         pair(const _T1& __a, const _T2& __b)       : first(__a), second(__b) { }         template<class _U1, class _U2>         pair(const pair<_U1, _U2>& __p)  : first(__p.first), second(__p.second) { }     };     template<class _T1, class _T2>     inline bool     operator==(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)     { return __x.first == __y.first && __x.second == __y.second; }     template<class _T1, class _T2>     inline bool     operator<(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)     { return __x.first < __y.first       || (!(__y.first < __x.first) && __x.second < __y.second); }     template<class _T1, class _T2>     inline bool     operator!=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)     { return !(__x == __y); }     template<class _T1, class _T2>     inline bool     operator>(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)     { return __y < __x; }     template<class _T1, class _T2>     inline bool     operator<=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)     { return !(__y < __x); }     template<class _T1, class _T2>     inline bool     operator>=(const pair<_T1, _T2>& __x, const pair<_T1, _T2>& __y)     { return !(__x < __y); } 
255 # 142 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_pair.h" 3
256   template<class _T1, class _T2>     inline pair<_T1, _T2>     make_pair(_T1 __x, _T2 __y)     { return pair<_T1, _T2>(__x, __y); }  }
257  
258 # 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
259 # 74 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/cpp_type_traits.h" 3
260 namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {    template<typename _Iterator, typename _Container>     class __normal_iterator;  }
261   namespace std __attribute__ ((__visibility__ ("default"))) {  namespace __detail {     typedef char __one;   typedef char __two[2];    template<typename _Tp>   __one __test_type(int _Tp::*);   template<typename _Tp>   __two& __test_type(...); }     struct __true_type { };   struct __false_type { };    template<bool>     struct __truth_type     { typedef __false_type __type; };    template<>     struct __truth_type<true>     { typedef __true_type __type; };      template<class _Sp, class _Tp>     struct __traitor     {       enum { __value = bool(_Sp::__value) || bool(_Tp::__value) };       typedef typename __truth_type<__value>::__type __type;     };     template<typename, typename>     struct __are_same     {       enum { __value = 0 };       typedef __false_type __type;     };    template<typename _Tp>     struct __are_same<_Tp, _Tp>     {       enum { __value = 1 };       typedef __true_type __type;     };     template<typename _Tp>     struct __is_void     {       enum { __value = 0 };       typedef __false_type __type;     };    template<>     struct __is_void<void>     {       enum { __value = 1 };       typedef __true_type __type;     };       template<typename _Tp>     struct __is_integer     {       enum { __value = 0 };       typedef __false_type __type;     };       template<>     struct __is_integer<bool>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_integer<char>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_integer<signed char>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_integer<unsigned char>     {       enum { __value = 1 };       typedef __true_type __type;     };     template<>     struct __is_integer<wchar_t>     {       enum { __value = 1 };       typedef __true_type __type;     };     template<>     struct __is_integer<short>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_integer<unsigned short>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_integer<int>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_integer<unsigned int>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_integer<long>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_integer<unsigned long>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_integer<long long>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_integer<unsigned long long>     {       enum { __value = 1 };       typedef __true_type __type;     };       template<typename _Tp>     struct __is_floating     {       enum { __value = 0 };       typedef __false_type __type;     };     template<>     struct __is_floating<float>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_floating<double>     {       enum { __value = 1 };       typedef __true_type __type;     };    template<>     struct __is_floating<long double>     {       enum { __value = 1 };       typedef __true_type __type;     };       template<typename _Tp>     struct __is_pointer     {       enum { __value = 0 };       typedef __false_type __type;     };    template<typename _Tp>     struct __is_pointer<_Tp*>     {       enum { __value = 1 };       typedef __true_type __type;     };       template<typename _Tp>     struct __is_normal_iterator     {       enum { __value = 0 };       typedef __false_type __type;     };    template<typename _Iterator, typename _Container>     struct __is_normal_iterator< __gnu_cxx::__normal_iterator<_Iterator,              _Container> >     {       enum { __value = 1 };       typedef __true_type __type;     };       template<typename _Tp>     struct __is_arithmetic     : public __traitor<__is_integer<_Tp>, __is_floating<_Tp> >     { };       template<typename _Tp>     struct __is_fundamental     : public __traitor<__is_void<_Tp>, __is_arithmetic<_Tp> >     { };       template<typename _Tp>     struct __is_scalar     : public __traitor<__is_arithmetic<_Tp>, __is_pointer<_Tp> >     { };     template<typename _Tp>     struct __is_pod     {       enum  {    __value = (sizeof(__detail::__test_type<_Tp>(0))        != sizeof(__detail::__one))  };     };       template<typename _Tp>     struct __is_empty     {     private:       template<typename>         struct __first { };       template<typename _Up>         struct __second         : public _Up { };      public:       enum  {    __value = sizeof(__first<_Tp>) == sizeof(__second<_Tp>)  };     };       template<typename _Tp>     struct __is_char     {       enum { __value = 0 };       typedef __false_type __type;     };    template<>     struct __is_char<char>     {       enum { __value = 1 };       typedef __true_type __type;     };     template<>     struct __is_char<wchar_t>     {       enum { __value = 1 };       typedef __true_type __type;     };   }
262 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/type_traits.h" 2 3
263   namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {     template<bool, typename>     struct __enable_if     { };    template<typename _Tp>     struct __enable_if<true, _Tp>     { typedef _Tp __type; };      template<bool _Cond, typename _Iftrue, typename _Iffalse>     struct __conditional_type     { typedef _Iftrue __type; };    template<typename _Iftrue, typename _Iffalse>     struct __conditional_type<false, _Iftrue, _Iffalse>     { typedef _Iffalse __type; };      template<typename _Tp>     struct __add_unsigned     {     private:       typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;      public:       typedef typename __if_type::__type __type;     };    template<>     struct __add_unsigned<char>     { typedef unsigned char __type; };    template<>     struct __add_unsigned<signed char>     { typedef unsigned char __type; };    template<>     struct __add_unsigned<short>     { typedef unsigned short __type; };    template<>     struct __add_unsigned<int>     { typedef unsigned int __type; };    template<>     struct __add_unsigned<long>     { typedef unsigned long __type; };    template<>     struct __add_unsigned<long long>     { typedef unsigned long long __type; };     template<>     struct __add_unsigned<bool>;    template<>     struct __add_unsigned<wchar_t>;      template<typename _Tp>     struct __remove_unsigned     {     private:       typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;      public:       typedef typename __if_type::__type __type;     };    template<>     struct __remove_unsigned<char>     { typedef signed char __type; };    template<>     struct __remove_unsigned<unsigned char>     { typedef signed char __type; };    template<>     struct __remove_unsigned<unsigned short>     { typedef short __type; };    template<>     struct __remove_unsigned<unsigned int>     { typedef int __type; };    template<>     struct __remove_unsigned<unsigned long>     { typedef long __type; };    template<>     struct __remove_unsigned<unsigned long long>     { typedef long long __type; };     template<>     struct __remove_unsigned<bool>;    template<>     struct __remove_unsigned<wchar_t>;  }
264  
265 # 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
266  namespace std __attribute__ ((__visibility__ ("default"))) { 
267 # 80 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
268   struct input_iterator_tag {};    struct output_iterator_tag {};    struct forward_iterator_tag : public input_iterator_tag {};     struct bidirectional_iterator_tag : public forward_iterator_tag {};     struct random_access_iterator_tag : public bidirectional_iterator_tag {}; 
269 # 104 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_types.h" 3
270   template<typename _Category, typename _Tp, typename _Distance = ptrdiff_t,            typename _Pointer = _Tp*, typename _Reference = _Tp&>     struct iterator     {        typedef _Category iterator_category;        typedef _Tp value_type;        typedef _Distance difference_type;        typedef _Pointer pointer;        typedef _Reference reference;     };          template<typename _Iterator>     struct iterator_traits     {       typedef typename _Iterator::iterator_category iterator_category;       typedef typename _Iterator::value_type value_type;       typedef typename _Iterator::difference_type difference_type;       typedef typename _Iterator::pointer pointer;       typedef typename _Iterator::reference reference;     };    template<typename _Tp>     struct iterator_traits<_Tp*>     {       typedef random_access_iterator_tag iterator_category;       typedef _Tp value_type;       typedef ptrdiff_t difference_type;       typedef _Tp* pointer;       typedef _Tp& reference;     };    template<typename _Tp>     struct iterator_traits<const _Tp*>     {       typedef random_access_iterator_tag iterator_category;       typedef _Tp value_type;       typedef ptrdiff_t difference_type;       typedef const _Tp* pointer;       typedef const _Tp& reference;     };          template<typename _Iter>     inline typename iterator_traits<_Iter>::iterator_category     __iterator_category(const _Iter&)     { return typename iterator_traits<_Iter>::iterator_category(); }  }
271  
272  namespace std __attribute__ ((__visibility__ ("default"))) {    template<typename _InputIterator>     inline typename iterator_traits<_InputIterator>::difference_type     __distance(_InputIterator __first, _InputIterator __last,                input_iterator_tag)     {               typename iterator_traits<_InputIterator>::difference_type __n = 0;       while (__first != __last)  {    ++__first;    ++__n;  }       return __n;     }    template<typename _RandomAccessIterator>     inline typename iterator_traits<_RandomAccessIterator>::difference_type     __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,                random_access_iterator_tag)     {               return __last - __first;     } 
273 # 113 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 3
274   template<typename _InputIterator>     inline typename iterator_traits<_InputIterator>::difference_type     distance(_InputIterator __first, _InputIterator __last)     {        return std::__distance(__first, __last,         std::__iterator_category(__first));     }    template<typename _InputIterator, typename _Distance>     inline void     __advance(_InputIterator& __i, _Distance __n, input_iterator_tag)     {              while (__n--)  ++__i;     }    template<typename _BidirectionalIterator, typename _Distance>     inline void     __advance(_BidirectionalIterator& __i, _Distance __n,        bidirectional_iterator_tag)     {               if (__n > 0)         while (__n--)    ++__i;       else         while (__n++)    --__i;     }    template<typename _RandomAccessIterator, typename _Distance>     inline void     __advance(_RandomAccessIterator& __i, _Distance __n,               random_access_iterator_tag)     {               __i += __n;     } 
275 # 171 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator_base_funcs.h" 3
276   template<typename _InputIterator, typename _Distance>     inline void     advance(_InputIterator& __i, _Distance __n)     {        typename iterator_traits<_InputIterator>::difference_type __d = __n;       std::__advance(__i, __d, std::__iterator_category(__i));     }  }
277  
278 # 76 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
279 # 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
280 namespace std __attribute__ ((__visibility__ ("default"))) { 
281 # 93 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
282   template<typename _Iterator>     class reverse_iterator     : public iterator<typename iterator_traits<_Iterator>::iterator_category,         typename iterator_traits<_Iterator>::value_type,         typename iterator_traits<_Iterator>::difference_type,         typename iterator_traits<_Iterator>::pointer,                       typename iterator_traits<_Iterator>::reference>     {     protected:       _Iterator current;      public:       typedef _Iterator iterator_type;       typedef typename iterator_traits<_Iterator>::difference_type               difference_type;       typedef typename iterator_traits<_Iterator>::reference reference;       typedef typename iterator_traits<_Iterator>::pointer pointer;      public:             reverse_iterator() : current() { }           explicit       reverse_iterator(iterator_type __x) : current(__x) { }           reverse_iterator(const reverse_iterator& __x)       : current(__x.current) { }            template<typename _Iter>         reverse_iterator(const reverse_iterator<_Iter>& __x)  : current(__x.base()) { }           iterator_type       base() const       { return current; }             reference       operator*() const       {  _Iterator __tmp = current;  return *--__tmp;       }             pointer       operator->() const       { return &(operator*()); }             reverse_iterator&       operator++()       {  --current;  return *this;       }             reverse_iterator       operator++(int)       {  reverse_iterator __tmp = *this;  --current;  return __tmp;       }             reverse_iterator&       operator--()       {  ++current;  return *this;       }             reverse_iterator       operator--(int)       {  reverse_iterator __tmp = *this;  ++current;  return __tmp;       }             reverse_iterator       operator+(difference_type __n) const       { return reverse_iterator(current - __n); }             reverse_iterator&       operator+=(difference_type __n)       {  current -= __n;  return *this;       }             reverse_iterator       operator-(difference_type __n) const       { return reverse_iterator(current + __n); }             reverse_iterator&       operator-=(difference_type __n)       {  current += __n;  return *this;       }             reference       operator[](difference_type __n) const       { return *(*this + __n); }     }; 
283 # 280 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
284   template<typename _Iterator>     inline bool     operator==(const reverse_iterator<_Iterator>& __x,         const reverse_iterator<_Iterator>& __y)     { return __x.base() == __y.base(); }    template<typename _Iterator>     inline bool     operator<(const reverse_iterator<_Iterator>& __x,        const reverse_iterator<_Iterator>& __y)     { return __y.base() < __x.base(); }    template<typename _Iterator>     inline bool     operator!=(const reverse_iterator<_Iterator>& __x,         const reverse_iterator<_Iterator>& __y)     { return !(__x == __y); }    template<typename _Iterator>     inline bool     operator>(const reverse_iterator<_Iterator>& __x,        const reverse_iterator<_Iterator>& __y)     { return __y < __x; }    template<typename _Iterator>     inline bool     operator<=(const reverse_iterator<_Iterator>& __x,         const reverse_iterator<_Iterator>& __y)     { return !(__y < __x); }    template<typename _Iterator>     inline bool     operator>=(const reverse_iterator<_Iterator>& __x,         const reverse_iterator<_Iterator>& __y)     { return !(__x < __y); }    template<typename _Iterator>     inline typename reverse_iterator<_Iterator>::difference_type     operator-(const reverse_iterator<_Iterator>& __x,        const reverse_iterator<_Iterator>& __y)     { return __y.base() - __x.base(); }    template<typename _Iterator>     inline reverse_iterator<_Iterator>     operator+(typename reverse_iterator<_Iterator>::difference_type __n,        const reverse_iterator<_Iterator>& __x)     { return reverse_iterator<_Iterator>(__x.base() - __n); }      template<typename _IteratorL, typename _IteratorR>     inline bool     operator==(const reverse_iterator<_IteratorL>& __x,         const reverse_iterator<_IteratorR>& __y)     { return __x.base() == __y.base(); }    template<typename _IteratorL, typename _IteratorR>     inline bool     operator<(const reverse_iterator<_IteratorL>& __x,        const reverse_iterator<_IteratorR>& __y)     { return __y.base() < __x.base(); }    template<typename _IteratorL, typename _IteratorR>     inline bool     operator!=(const reverse_iterator<_IteratorL>& __x,         const reverse_iterator<_IteratorR>& __y)     { return !(__x == __y); }    template<typename _IteratorL, typename _IteratorR>     inline bool     operator>(const reverse_iterator<_IteratorL>& __x,        const reverse_iterator<_IteratorR>& __y)     { return __y < __x; }    template<typename _IteratorL, typename _IteratorR>     inline bool     operator<=(const reverse_iterator<_IteratorL>& __x,         const reverse_iterator<_IteratorR>& __y)     { return !(__y < __x); }    template<typename _IteratorL, typename _IteratorR>     inline bool     operator>=(const reverse_iterator<_IteratorL>& __x,         const reverse_iterator<_IteratorR>& __y)     { return !(__x < __y); }    template<typename _IteratorL, typename _IteratorR>     inline typename reverse_iterator<_IteratorL>::difference_type     operator-(const reverse_iterator<_IteratorL>& __x,        const reverse_iterator<_IteratorR>& __y)     { return __y.base() - __x.base(); } 
285 # 384 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
286   template<typename _Container>     class back_insert_iterator     : public iterator<output_iterator_tag, void, void, void, void>     {     protected:       _Container* container;      public:        typedef _Container container_type;         explicit       back_insert_iterator(_Container& __x) : container(&__x) { } 
287 # 410 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
288       back_insert_iterator&       operator=(typename _Container::const_reference __value)       {  container->push_back(__value);  return *this;       }         back_insert_iterator&       operator*()       { return *this; }         back_insert_iterator&       operator++()       { return *this; }         back_insert_iterator       operator++(int)       { return *this; }     }; 
289 # 444 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
290   template<typename _Container>     inline back_insert_iterator<_Container>     back_inserter(_Container& __x)     { return back_insert_iterator<_Container>(__x); } 
291 # 459 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
292   template<typename _Container>     class front_insert_iterator     : public iterator<output_iterator_tag, void, void, void, void>     {     protected:       _Container* container;      public:        typedef _Container container_type;         explicit front_insert_iterator(_Container& __x) : container(&__x) { } 
293 # 484 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
294       front_insert_iterator&       operator=(typename _Container::const_reference __value)       {  container->push_front(__value);  return *this;       }         front_insert_iterator&       operator*()       { return *this; }         front_insert_iterator&       operator++()       { return *this; }         front_insert_iterator       operator++(int)       { return *this; }     }; 
295 # 518 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
296   template<typename _Container>     inline front_insert_iterator<_Container>     front_inserter(_Container& __x)     { return front_insert_iterator<_Container>(__x); } 
297 # 537 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
298   template<typename _Container>     class insert_iterator     : public iterator<output_iterator_tag, void, void, void, void>     {     protected:       _Container* container;       typename _Container::iterator iter;      public:        typedef _Container container_type;            insert_iterator(_Container& __x, typename _Container::iterator __i)       : container(&__x), iter(__i) {} 
299 # 579 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
300       insert_iterator&       operator=(const typename _Container::const_reference __value)       {  iter = container->insert(iter, __value);  ++iter;  return *this;       }         insert_iterator&       operator*()       { return *this; }         insert_iterator&       operator++()       { return *this; }         insert_iterator&       operator++(int)       { return *this; }     }; 
301 # 614 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
302   template<typename _Container, typename _Iterator>     inline insert_iterator<_Container>     inserter(_Container& __x, _Iterator __i)     {       return insert_iterator<_Container>(__x,       typename _Container::iterator(__i));     }  }
303   namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { 
304 # 633 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
305   using std::iterator_traits;   using std::iterator;   template<typename _Iterator, typename _Container>     class __normal_iterator     {     protected:       _Iterator _M_current;      public:       typedef typename iterator_traits<_Iterator>::iterator_category                                                              iterator_category;       typedef typename iterator_traits<_Iterator>::value_type value_type;       typedef typename iterator_traits<_Iterator>::difference_type                                                              difference_type;       typedef typename iterator_traits<_Iterator>::reference reference;       typedef typename iterator_traits<_Iterator>::pointer pointer;        __normal_iterator() : _M_current(_Iterator()) { }        explicit       __normal_iterator(const _Iterator& __i) : _M_current(__i) { }         template<typename _Iter>         __normal_iterator(const __normal_iterator<_Iter,      typename __enable_if<               (std::__are_same<_Iter, typename _Container::pointer>::__value),         _Container>::__type>& __i)         : _M_current(__i.base()) { }         reference       operator*() const       { return *_M_current; }        pointer       operator->() const       { return _M_current; }        __normal_iterator&       operator++()       {  ++_M_current;  return *this;       }        __normal_iterator       operator++(int)       { return __normal_iterator(_M_current++); }         __normal_iterator&       operator--()       {  --_M_current;  return *this;       }        __normal_iterator       operator--(int)       { return __normal_iterator(_M_current--); }         reference       operator[](const difference_type& __n) const       { return _M_current[__n]; }        __normal_iterator&       operator+=(const difference_type& __n)       { _M_current += __n; return *this; }        __normal_iterator       operator+(const difference_type& __n) const       { return __normal_iterator(_M_current + __n); }        __normal_iterator&       operator-=(const difference_type& __n)       { _M_current -= __n; return *this; }        __normal_iterator       operator-(const difference_type& __n) const       { return __normal_iterator(_M_current - __n); }        const _Iterator&       base() const       { return _M_current; }     }; 
306 # 730 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_iterator.h" 3
307   template<typename _IteratorL, typename _IteratorR, typename _Container>     inline bool     operator==(const __normal_iterator<_IteratorL, _Container>& __lhs,         const __normal_iterator<_IteratorR, _Container>& __rhs)     { return __lhs.base() == __rhs.base(); }    template<typename _Iterator, typename _Container>     inline bool     operator==(const __normal_iterator<_Iterator, _Container>& __lhs,         const __normal_iterator<_Iterator, _Container>& __rhs)     { return __lhs.base() == __rhs.base(); }    template<typename _IteratorL, typename _IteratorR, typename _Container>     inline bool     operator!=(const __normal_iterator<_IteratorL, _Container>& __lhs,         const __normal_iterator<_IteratorR, _Container>& __rhs)     { return __lhs.base() != __rhs.base(); }    template<typename _Iterator, typename _Container>     inline bool     operator!=(const __normal_iterator<_Iterator, _Container>& __lhs,         const __normal_iterator<_Iterator, _Container>& __rhs)     { return __lhs.base() != __rhs.base(); }     template<typename _IteratorL, typename _IteratorR, typename _Container>     inline bool     operator<(const __normal_iterator<_IteratorL, _Container>& __lhs,        const __normal_iterator<_IteratorR, _Container>& __rhs)     { return __lhs.base() < __rhs.base(); }    template<typename _Iterator, typename _Container>     inline bool     operator<(const __normal_iterator<_Iterator, _Container>& __lhs,        const __normal_iterator<_Iterator, _Container>& __rhs)     { return __lhs.base() < __rhs.base(); }    template<typename _IteratorL, typename _IteratorR, typename _Container>     inline bool     operator>(const __normal_iterator<_IteratorL, _Container>& __lhs,        const __normal_iterator<_IteratorR, _Container>& __rhs)     { return __lhs.base() > __rhs.base(); }    template<typename _Iterator, typename _Container>     inline bool     operator>(const __normal_iterator<_Iterator, _Container>& __lhs,        const __normal_iterator<_Iterator, _Container>& __rhs)     { return __lhs.base() > __rhs.base(); }    template<typename _IteratorL, typename _IteratorR, typename _Container>     inline bool     operator<=(const __normal_iterator<_IteratorL, _Container>& __lhs,         const __normal_iterator<_IteratorR, _Container>& __rhs)     { return __lhs.base() <= __rhs.base(); }    template<typename _Iterator, typename _Container>     inline bool     operator<=(const __normal_iterator<_Iterator, _Container>& __lhs,         const __normal_iterator<_Iterator, _Container>& __rhs)     { return __lhs.base() <= __rhs.base(); }    template<typename _IteratorL, typename _IteratorR, typename _Container>     inline bool     operator>=(const __normal_iterator<_IteratorL, _Container>& __lhs,         const __normal_iterator<_IteratorR, _Container>& __rhs)     { return __lhs.base() >= __rhs.base(); }    template<typename _Iterator, typename _Container>     inline bool     operator>=(const __normal_iterator<_Iterator, _Container>& __lhs,         const __normal_iterator<_Iterator, _Container>& __rhs)     { return __lhs.base() >= __rhs.base(); }        template<typename _IteratorL, typename _IteratorR, typename _Container>     inline typename __normal_iterator<_IteratorL, _Container>::difference_type     operator-(const __normal_iterator<_IteratorL, _Container>& __lhs,        const __normal_iterator<_IteratorR, _Container>& __rhs)     { return __lhs.base() - __rhs.base(); }    template<typename _Iterator, typename _Container>     inline typename __normal_iterator<_Iterator, _Container>::difference_type     operator-(const __normal_iterator<_Iterator, _Container>& __lhs,        const __normal_iterator<_Iterator, _Container>& __rhs)     { return __lhs.base() - __rhs.base(); }    template<typename _Iterator, typename _Container>     inline __normal_iterator<_Iterator, _Container>     operator+(typename __normal_iterator<_Iterator, _Container>::difference_type        __n, const __normal_iterator<_Iterator, _Container>& __i)     { return __normal_iterator<_Iterator, _Container>(__i.base() + __n); }  }
308  
309 # 77 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 2 3
310  namespace std __attribute__ ((__visibility__ ("default"))) { 
311 # 91 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
312   template<typename _Tp>     inline void     swap(_Tp& __a, _Tp& __b)     {               _Tp __tmp = __a;       __a = __b;       __b = __tmp;     }       template<bool _BoolType>     struct __iter_swap     {       template<typename _ForwardIterator1, typename _ForwardIterator2>         static void         iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)         {           typedef typename iterator_traits<_ForwardIterator1>::value_type             _ValueType1;           _ValueType1 __tmp = *__a;           *__a = *__b;           *__b = __tmp;  }     };    template<>     struct __iter_swap<true>     {       template<typename _ForwardIterator1, typename _ForwardIterator2>         static void         iter_swap(_ForwardIterator1 __a, _ForwardIterator2 __b)         {           swap(*__a, *__b);         }     }; 
313   template<typename _Tp>     inline const _Tp&     min(const _Tp& __a, const _Tp& __b)     {               if (__b < __a)  return __b;       return __a;     } 
314 # 202 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
315   template<typename _Tp>     inline const _Tp&     max(const _Tp& __a, const _Tp& __b)     {               if (__a < __b)  return __b;       return __a;     } 
316   template<typename _Tp, typename _Compare>     inline const _Tp&     max(const _Tp& __a, const _Tp& __b, _Compare __comp)     {        if (__comp(__a, __b))  return __b;       return __a;     }          template<bool, typename>     struct __copy     {       template<typename _II, typename _OI>         static _OI         copy(_II __first, _II __last, _OI __result)         {    for (; __first != __last; ++__result, ++__first)      *__result = *__first;    return __result;  }     };    template<bool _BoolType>     struct __copy<_BoolType, random_access_iterator_tag>     {       template<typename _II, typename _OI>         static _OI         copy(_II __first, _II __last, _OI __result)         {    typedef typename iterator_traits<_II>::difference_type _Distance;    for(_Distance __n = __last - __first; __n > 0; --__n)      {        *__result = *__first;        ++__first;        ++__result;      }    return __result;  }     };    template<>     struct __copy<true, random_access_iterator_tag>     {       template<typename _Tp>         static _Tp*         copy(const _Tp* __first, const _Tp* __last, _Tp* __result)         {    std::memmove(__result, __first, sizeof(_Tp) * (__last - __first));    return __result + (__last - __first);  }     };    template<typename _II, typename _OI>     inline _OI     __copy_aux(_II __first, _II __last, _OI __result)     {       typedef typename iterator_traits<_II>::value_type _ValueTypeI;       typedef typename iterator_traits<_OI>::value_type _ValueTypeO;       typedef typename iterator_traits<_II>::iterator_category _Category;       const bool __simple = (__is_scalar<_ValueTypeI>::__value                       && __is_pointer<_II>::__value                       && __is_pointer<_OI>::__value         && __are_same<_ValueTypeI, _ValueTypeO>::__value);        return std::__copy<__simple, _Category>::copy(__first, __last, __result);     }     template<typename _CharT>   typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,       ostreambuf_iterator<_CharT> >::__type     __copy_aux(_CharT*, _CharT*, ostreambuf_iterator<_CharT>);    template<typename _CharT>     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,         ostreambuf_iterator<_CharT> >::__type     __copy_aux(const _CharT*, const _CharT*, ostreambuf_iterator<_CharT>);    template<typename _CharT>   typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, _CharT*>::__type     __copy_aux(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,         _CharT*);    template<bool, bool>     struct __copy_normal     {       template<typename _II, typename _OI>         static _OI         __copy_n(_II __first, _II __last, _OI __result)         { return std::__copy_aux(__first, __last, __result); }     };    template<>     struct __copy_normal<true, false>     {       template<typename _II, typename _OI>         static _OI         __copy_n(_II __first, _II __last, _OI __result)         { return std::__copy_aux(__first.base(), __last.base(), __result); }     };    template<>     struct __copy_normal<false, true>     {       template<typename _II, typename _OI>         static _OI         __copy_n(_II __first, _II __last, _OI __result)         { return _OI(std::__copy_aux(__first, __last, __result.base())); }     };    template<>     struct __copy_normal<true, true>     {       template<typename _II, typename _OI>         static _OI         __copy_n(_II __first, _II __last, _OI __result)         { return _OI(std::__copy_aux(__first.base(), __last.base(),          __result.base())); }     }; 
317 # 387 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
318   template<typename _InputIterator, typename _OutputIterator>     inline _OutputIterator     copy(_InputIterator __first, _InputIterator __last,   _OutputIterator __result)     {                     ;         const bool __in = __is_normal_iterator<_InputIterator>::__value;        const bool __out = __is_normal_iterator<_OutputIterator>::__value;        return std::__copy_normal<__in, __out>::__copy_n(__first, __last,        __result);     }     template<typename _CharT>     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,                  ostreambuf_iterator<_CharT> >::__type     copy(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,   ostreambuf_iterator<_CharT>);    template<bool, typename>     struct __copy_backward     {       template<typename _BI1, typename _BI2>         static _BI2         __copy_b(_BI1 __first, _BI1 __last, _BI2 __result)         {    while (__first != __last)      *--__result = *--__last;    return __result;  }     };    template<bool _BoolType>     struct __copy_backward<_BoolType, random_access_iterator_tag>     {       template<typename _BI1, typename _BI2>         static _BI2         __copy_b(_BI1 __first, _BI1 __last, _BI2 __result)         {    typename iterator_traits<_BI1>::difference_type __n;    for (__n = __last - __first; __n > 0; --__n)      *--__result = *--__last;    return __result;  }     };    template<>     struct __copy_backward<true, random_access_iterator_tag>     {       template<typename _Tp>         static _Tp*         __copy_b(const _Tp* __first, const _Tp* __last, _Tp* __result)         {    const ptrdiff_t _Num = __last - __first;    std::memmove(__result - _Num, __first, sizeof(_Tp) * _Num);    return __result - _Num;  }     };    template<typename _BI1, typename _BI2>     inline _BI2     __copy_backward_aux(_BI1 __first, _BI1 __last, _BI2 __result)     {       typedef typename iterator_traits<_BI1>::value_type _ValueType1;       typedef typename iterator_traits<_BI2>::value_type _ValueType2;       typedef typename iterator_traits<_BI1>::iterator_category _Category;       const bool __simple = (__is_scalar<_ValueType1>::__value                       && __is_pointer<_BI1>::__value                       && __is_pointer<_BI2>::__value         && __are_same<_ValueType1, _ValueType2>::__value);        return std::__copy_backward<__simple, _Category>::__copy_b(__first,          __last,          __result);     }    template<bool, bool>     struct __copy_backward_normal     {       template<typename _BI1, typename _BI2>         static _BI2         __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)         { return std::__copy_backward_aux(__first, __last, __result); }     };    template<>     struct __copy_backward_normal<true, false>     {       template<typename _BI1, typename _BI2>         static _BI2         __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)         { return std::__copy_backward_aux(__first.base(), __last.base(),        __result); }     };    template<>     struct __copy_backward_normal<false, true>     {       template<typename _BI1, typename _BI2>         static _BI2         __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)         { return _BI2(std::__copy_backward_aux(__first, __last,             __result.base())); }     };    template<>     struct __copy_backward_normal<true, true>     {       template<typename _BI1, typename _BI2>         static _BI2         __copy_b_n(_BI1 __first, _BI1 __last, _BI2 __result)         { return _BI2(std::__copy_backward_aux(__first.base(), __last.base(),             __result.base())); }     }; 
319 # 524 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
320   template <typename _BI1, typename _BI2>     inline _BI2     copy_backward(_BI1 __first, _BI1 __last, _BI2 __result)     {                            ;        const bool __bi1 = __is_normal_iterator<_BI1>::__value;       const bool __bi2 = __is_normal_iterator<_BI2>::__value;       return std::__copy_backward_normal<__bi1, __bi2>::__copy_b_n(__first,            __last,            __result);     }    template<bool>     struct __fill     {       template<typename _ForwardIterator, typename _Tp>         static void         fill(_ForwardIterator __first, _ForwardIterator __last,       const _Tp& __value)         {    for (; __first != __last; ++__first)      *__first = __value;  }     };    template<>     struct __fill<true>     {       template<typename _ForwardIterator, typename _Tp>         static void         fill(_ForwardIterator __first, _ForwardIterator __last,       const _Tp& __value)         {    const _Tp __tmp = __value;    for (; __first != __last; ++__first)      *__first = __tmp;  }     }; 
321 # 581 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
322   template<typename _ForwardIterator, typename _Tp>     void     fill(_ForwardIterator __first, _ForwardIterator __last, const _Tp& __value)     {               ;        const bool __scalar = __is_scalar<_Tp>::__value;       std::__fill<__scalar>::fill(__first, __last, __value);     }     inline void   fill(unsigned char* __first, unsigned char* __last, const unsigned char& __c)   {     ;     const unsigned char __tmp = __c;     std::memset(__first, __tmp, __last - __first);   }    inline void   fill(signed char* __first, signed char* __last, const signed char& __c)   {     ;     const signed char __tmp = __c;     std::memset(__first, static_cast<unsigned char>(__tmp), __last - __first);   }    inline void   fill(char* __first, char* __last, const char& __c)   {     ;     const char __tmp = __c;     std::memset(__first, static_cast<unsigned char>(__tmp), __last - __first);   }    template<bool>     struct __fill_n     {       template<typename _OutputIterator, typename _Size, typename _Tp>         static _OutputIterator         fill_n(_OutputIterator __first, _Size __n, const _Tp& __value)         {    for (; __n > 0; --__n, ++__first)      *__first = __value;    return __first;  }     };    template<>     struct __fill_n<true>     {       template<typename _OutputIterator, typename _Size, typename _Tp>         static _OutputIterator         fill_n(_OutputIterator __first, _Size __n, const _Tp& __value)         {    const _Tp __tmp = __value;    for (; __n > 0; --__n, ++__first)      *__first = __tmp;    return __first;  }     }; 
323 # 657 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
324   template<typename _OutputIterator, typename _Size, typename _Tp>     _OutputIterator     fill_n(_OutputIterator __first, _Size __n, const _Tp& __value)     {               const bool __scalar = __is_scalar<_Tp>::__value;       return std::__fill_n<__scalar>::fill_n(__first, __n, __value);     }    template<typename _Size>     inline unsigned char*     fill_n(unsigned char* __first, _Size __n, const unsigned char& __c)     {       std::fill(__first, __first + __n, __c);       return __first + __n;     }    template<typename _Size>     inline signed char*     fill_n(signed char* __first, _Size __n, const signed char& __c)     {       std::fill(__first, __first + __n, __c);       return __first + __n;     }    template<typename _Size>     inline char*     fill_n(char* __first, _Size __n, const char& __c)     {       std::fill(__first, __first + __n, __c);       return __first + __n;     } 
325 # 801 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
326   template<typename _InputIterator1, typename _InputIterator2,     typename _BinaryPredicate>     inline bool     equal(_InputIterator1 __first1, _InputIterator1 __last1,    _InputIterator2 __first2,    _BinaryPredicate __binary_pred)     {                    ;        for (; __first1 != __last1; ++__first1, ++__first2)  if (!__binary_pred(*__first1, *__first2))    return false;       return true;     } 
327 # 833 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
328   template<typename _InputIterator1, typename _InputIterator2>     bool     lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1,        _InputIterator2 __first2, _InputIterator2 __last2)     {                                    ;       ;        for (; __first1 != __last1 && __first2 != __last2;     ++__first1, ++__first2)  {    if (*__first1 < *__first2)      return true;    if (*__first2 < *__first1)      return false;  }       return __first1 == __last1 && __first2 != __last2;     } 
329 # 873 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algobase.h" 3
330   template<typename _InputIterator1, typename _InputIterator2,     typename _Compare>     bool     lexicographical_compare(_InputIterator1 __first1, _InputIterator1 __last1,        _InputIterator2 __first2, _InputIterator2 __last2,        _Compare __comp)     {                    ;       ;        for (; __first1 != __last1 && __first2 != __last2;     ++__first1, ++__first2)  {    if (__comp(*__first1, *__first2))      return true;    if (__comp(*__first2, *__first1))      return false;  }       return __first1 == __last1 && __first2 != __last2;     }    inline bool   lexicographical_compare(const unsigned char* __first1,      const unsigned char* __last1,      const unsigned char* __first2,      const unsigned char* __last2)   {     ;     ;      const size_t __len1 = __last1 - __first1;     const size_t __len2 = __last2 - __first2;     const int __result = std::memcmp(__first1, __first2,          std::min(__len1, __len2));     return __result != 0 ? __result < 0 : __len1 < __len2;   }    inline bool   lexicographical_compare(const char* __first1, const char* __last1,      const char* __first2, const char* __last2)   {     ;     ;       return std::lexicographical_compare((const signed char*) __first1,      (const signed char*) __last1,      (const signed char*) __first2,      (const signed char*) __last2);         }  }
331  
332 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 2 3
333   namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) { 
334 # 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 3
335   template <class _CharT>     struct _Char_types     {       typedef unsigned long int_type;       typedef std::streampos pos_type;       typedef std::streamoff off_type;       typedef std::mbstate_t state_type;     }; 
336 # 86 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 3
337   template<typename _CharT>     struct char_traits     {       typedef _CharT char_type;       typedef typename _Char_types<_CharT>::int_type int_type;       typedef typename _Char_types<_CharT>::pos_type pos_type;       typedef typename _Char_types<_CharT>::off_type off_type;       typedef typename _Char_types<_CharT>::state_type state_type;        static void       assign(char_type& __c1, const char_type& __c2)       { __c1 = __c2; }        static bool       eq(const char_type& __c1, const char_type& __c2)       { return __c1 == __c2; }        static bool       lt(const char_type& __c1, const char_type& __c2)       { return __c1 < __c2; }        static int       compare(const char_type* __s1, const char_type* __s2, std::size_t __n);        static std::size_t       length(const char_type* __s);        static const char_type*       find(const char_type* __s, std::size_t __n, const char_type& __a);        static char_type*       move(char_type* __s1, const char_type* __s2, std::size_t __n);        static char_type*       copy(char_type* __s1, const char_type* __s2, std::size_t __n);        static char_type*       assign(char_type* __s, std::size_t __n, char_type __a);        static char_type       to_char_type(const int_type& __c)       { return static_cast<char_type>(__c); }        static int_type       to_int_type(const char_type& __c)       { return static_cast<int_type>(__c); }        static bool       eq_int_type(const int_type& __c1, const int_type& __c2)       { return __c1 == __c2; }        static int_type       eof()       { return static_cast<int_type>((-1)); }        static int_type       not_eof(const int_type& __c)       { return !eq_int_type(__c, eof()) ? __c : to_int_type(char_type()); }     };    template<typename _CharT>     int     char_traits<_CharT>::     compare(const char_type* __s1, const char_type* __s2, std::size_t __n)     {       for (std::size_t __i = 0; __i < __n; ++__i)  if (lt(__s1[__i], __s2[__i]))    return -1;  else if (lt(__s2[__i], __s1[__i]))    return 1;       return 0;     }    template<typename _CharT>     std::size_t     char_traits<_CharT>::     length(const char_type* __p)     {       std::size_t __i = 0;       while (!eq(__p[__i], char_type()))         ++__i;       return __i;     }    template<typename _CharT>     const typename char_traits<_CharT>::char_type*     char_traits<_CharT>::     find(const char_type* __s, std::size_t __n, const char_type& __a)     {       for (std::size_t __i = 0; __i < __n; ++__i)         if (eq(__s[__i], __a))           return __s + __i;       return 0;     }    template<typename _CharT>     typename char_traits<_CharT>::char_type*     char_traits<_CharT>::     move(char_type* __s1, const char_type* __s2, std::size_t __n)     {       return static_cast<_CharT*>(std::memmove(__s1, __s2,             __n * sizeof(char_type)));     }    template<typename _CharT>     typename char_traits<_CharT>::char_type*     char_traits<_CharT>::     copy(char_type* __s1, const char_type* __s2, std::size_t __n)     {       std::copy(__s2, __s2 + __n, __s1);       return __s1;     }    template<typename _CharT>     typename char_traits<_CharT>::char_type*     char_traits<_CharT>::     assign(char_type* __s, std::size_t __n, char_type __a)     {       std::fill_n(__s, __n, __a);       return __s;     }  }
338   namespace std __attribute__ ((__visibility__ ("default"))) { 
339 # 225 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/char_traits.h" 3
340   template<class _CharT>     struct char_traits : public __gnu_cxx::char_traits<_CharT>     { };      template<>     struct char_traits<char>     {       typedef char char_type;       typedef int int_type;       typedef streampos pos_type;       typedef streamoff off_type;       typedef mbstate_t state_type;        static void       assign(char_type& __c1, const char_type& __c2)       { __c1 = __c2; }        static bool       eq(const char_type& __c1, const char_type& __c2)       { return __c1 == __c2; }        static bool       lt(const char_type& __c1, const char_type& __c2)       { return __c1 < __c2; }        static int       compare(const char_type* __s1, const char_type* __s2, size_t __n)       { return memcmp(__s1, __s2, __n); }        static size_t       length(const char_type* __s)       { return strlen(__s); }        static const char_type*       find(const char_type* __s, size_t __n, const char_type& __a)       { return static_cast<const char_type*>(memchr(__s, __a, __n)); }        static char_type*       move(char_type* __s1, const char_type* __s2, size_t __n)       { return static_cast<char_type*>(memmove(__s1, __s2, __n)); }        static char_type*       copy(char_type* __s1, const char_type* __s2, size_t __n)       { return static_cast<char_type*>(memcpy(__s1, __s2, __n)); }        static char_type*       assign(char_type* __s, size_t __n, char_type __a)       { return static_cast<char_type*>(memset(__s, __a, __n)); }        static char_type       to_char_type(const int_type& __c)       { return static_cast<char_type>(__c); }          static int_type       to_int_type(const char_type& __c)       { return static_cast<int_type>(static_cast<unsigned char>(__c)); }        static bool       eq_int_type(const int_type& __c1, const int_type& __c2)       { return __c1 == __c2; }        static int_type       eof() { return static_cast<int_type>((-1)); }        static int_type       not_eof(const int_type& __c)       { return (__c == eof()) ? 0 : __c; }   };       template<>     struct char_traits<wchar_t>     {       typedef wchar_t char_type;       typedef wint_t int_type;       typedef streamoff off_type;       typedef wstreampos pos_type;       typedef mbstate_t state_type;        static void       assign(char_type& __c1, const char_type& __c2)       { __c1 = __c2; }        static bool       eq(const char_type& __c1, const char_type& __c2)       { return __c1 == __c2; }        static bool       lt(const char_type& __c1, const char_type& __c2)       { return __c1 < __c2; }        static int       compare(const char_type* __s1, const char_type* __s2, size_t __n)       { return wmemcmp(__s1, __s2, __n); }        static size_t       length(const char_type* __s)       { return wcslen(__s); }        static const char_type*       find(const char_type* __s, size_t __n, const char_type& __a)       { return wmemchr(__s, __a, __n); }        static char_type*       move(char_type* __s1, const char_type* __s2, size_t __n)       { return wmemmove(__s1, __s2, __n); }        static char_type*       copy(char_type* __s1, const char_type* __s2, size_t __n)       { return wmemcpy(__s1, __s2, __n); }        static char_type*       assign(char_type* __s, size_t __n, char_type __a)       { return wmemset(__s, __a, __n); }        static char_type       to_char_type(const int_type& __c) { return char_type(__c); }        static int_type       to_int_type(const char_type& __c) { return int_type(__c); }        static bool       eq_int_type(const int_type& __c1, const int_type& __c2)       { return __c1 == __c2; }        static int_type       eof() { return static_cast<int_type>((0xffffffffu)); }        static int_type       not_eof(const int_type& __c)       { return eq_int_type(__c, eof()) ? 0 : __c; }   };   }
341
342 #pragma GCC visibility push(default)
343  extern "C++" {  namespace std {        class bad_alloc : public exception   {   public:     bad_alloc() throw() { }        virtual ~bad_alloc() throw();       virtual const char* what() const throw();   };    struct nothrow_t { };    extern const nothrow_t nothrow;      typedef void (*new_handler)();      new_handler set_new_handler(new_handler) throw(); } 
344 # 95 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/new" 3
345 void* operator new(std::size_t) throw (std::bad_alloc); void* operator new[](std::size_t) throw (std::bad_alloc); void operator delete(void*) throw(); void operator delete[](void*) throw(); void* operator new(std::size_t, const std::nothrow_t&) throw(); void* operator new[](std::size_t, const std::nothrow_t&) throw(); void operator delete(void*, const std::nothrow_t&) throw(); void operator delete[](void*, const std::nothrow_t&) throw();   inline void* operator new(std::size_t, void* __p) throw() { return __p; } inline void* operator new[](std::size_t, void* __p) throw() { return __p; }   inline void operator delete (void*, void*) throw() { } inline void operator delete[](void*, void*) throw() { }  }
346   
347   namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {    using std::size_t;   using std::ptrdiff_t; 
348 # 52 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/new_allocator.h" 3
349   template<typename _Tp>     class new_allocator     {     public:       typedef size_t size_type;       typedef ptrdiff_t difference_type;       typedef _Tp* pointer;       typedef const _Tp* const_pointer;       typedef _Tp& reference;       typedef const _Tp& const_reference;       typedef _Tp value_type;        template<typename _Tp1>         struct rebind         { typedef new_allocator<_Tp1> other; };        new_allocator() throw() { }        new_allocator(const new_allocator&) throw() { }        template<typename _Tp1>         new_allocator(const new_allocator<_Tp1>&) throw() { }        ~new_allocator() throw() { }        pointer       address(reference __x) const { return &__x; }        const_pointer       address(const_reference __x) const { return &__x; }          pointer       allocate(size_type __n, const void* = 0)       {  if (__builtin_expect(__n > this->max_size(), false))    std::__throw_bad_alloc();   return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));       }         void       deallocate(pointer __p, size_type)       { ::operator delete(__p); }        size_type       max_size() const throw()       { return size_t(-1) / sizeof(_Tp); }          void       construct(pointer __p, const _Tp& __val)       { ::new(__p) _Tp(__val); }        void       destroy(pointer __p) { __p->~_Tp(); }     };    template<typename _Tp>     inline bool     operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)     { return true; }    template<typename _Tp>     inline bool     operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)     { return false; }  }
350  
351    namespace std __attribute__ ((__visibility__ ("default"))) {    template<typename _Tp>     class allocator;     template<>     class allocator<void>     {     public:       typedef size_t size_type;       typedef ptrdiff_t difference_type;       typedef void* pointer;       typedef const void* const_pointer;       typedef void value_type;        template<typename _Tp1>         struct rebind         { typedef allocator<_Tp1> other; };     };          template<typename _Tp>     class allocator: public __gnu_cxx::new_allocator<_Tp>     {    public:       typedef size_t size_type;       typedef ptrdiff_t difference_type;       typedef _Tp* pointer;       typedef const _Tp* const_pointer;       typedef _Tp& reference;       typedef const _Tp& const_reference;       typedef _Tp value_type;        template<typename _Tp1>         struct rebind         { typedef allocator<_Tp1> other; };        allocator() throw() { }        allocator(const allocator& __a) throw()       : __gnu_cxx::new_allocator<_Tp>(__a) { }        template<typename _Tp1>         allocator(const allocator<_Tp1>&) throw() { }        ~allocator() throw() { }       };    template<typename _T1, typename _T2>     inline bool     operator==(const allocator<_T1>&, const allocator<_T2>&)     { return true; }    template<typename _T1, typename _T2>     inline bool     operator!=(const allocator<_T1>&, const allocator<_T2>&)     { return false; }        extern template class allocator<char>;   extern template class allocator<wchar_t>;         template<typename _Alloc, bool = std::__is_empty<_Alloc>::__value>     struct __alloc_swap     { static void _S_do_it(_Alloc&, _Alloc&) { } };    template<typename _Alloc>     struct __alloc_swap<_Alloc, false>     {       static void       _S_do_it(_Alloc& __one, _Alloc& __two)       {   if (__one != __two)    swap(__one, __two);       }     };  }
352  
353 # 55 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 2 3
354 # 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_construct.h" 3
355 namespace std __attribute__ ((__visibility__ ("default"))) {          template<typename _T1, typename _T2>     inline void     _Construct(_T1* __p, const _T2& __value)     {         ::new(static_cast<void*>(__p)) _T1(__value);     }          template<typename _T1>     inline void     _Construct(_T1* __p)     {         ::new(static_cast<void*>(__p)) _T1();     }         template<typename _Tp>     inline void     _Destroy(_Tp* __pointer)     { __pointer->~_Tp(); } 
356 # 116 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_construct.h" 3
357   template<typename _ForwardIterator>     inline void     __destroy_aux(_ForwardIterator __first, _ForwardIterator __last,     __false_type)     {       for (; __first != __last; ++__first)  std::_Destroy(&*__first);     } 
358 # 134 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_construct.h" 3
359   template<typename _ForwardIterator>     inline void     __destroy_aux(_ForwardIterator, _ForwardIterator, __true_type)     { } 
360 # 146 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_construct.h" 3
361   template<typename _ForwardIterator>     inline void     _Destroy(_ForwardIterator __first, _ForwardIterator __last)     {       typedef typename iterator_traits<_ForwardIterator>::value_type                        _Value_type;       typedef typename std::__is_scalar<_Value_type>::__type                 _Has_trivial_destructor;        std::__destroy_aux(__first, __last, _Has_trivial_destructor());     } 
362 # 166 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_construct.h" 3
363   template <typename _Tp> class allocator;    template<typename _ForwardIterator, typename _Allocator>     void     _Destroy(_ForwardIterator __first, _ForwardIterator __last,       _Allocator __alloc)     {       for (; __first != __last; ++__first)  __alloc.destroy(&*__first);     }    template<typename _ForwardIterator, typename _Tp>     inline void     _Destroy(_ForwardIterator __first, _ForwardIterator __last,       allocator<_Tp>)     {       _Destroy(__first, __last);     }  }
364  
365 # 56 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 2 3
366 # 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_uninitialized.h" 3
367 namespace std __attribute__ ((__visibility__ ("default"))) {     template<typename _InputIterator, typename _ForwardIterator>     inline _ForwardIterator     __uninitialized_copy_aux(_InputIterator __first, _InputIterator __last,         _ForwardIterator __result,         __true_type)     { return std::copy(__first, __last, __result); }    template<typename _InputIterator, typename _ForwardIterator>     inline _ForwardIterator     __uninitialized_copy_aux(_InputIterator __first, _InputIterator __last,         _ForwardIterator __result,         __false_type)     {       _ForwardIterator __cur = __result;       try  {    for (; __first != __last; ++__first, ++__cur)      std::_Construct(&*__cur, *__first);    return __cur;  }       catch(...)  {    std::_Destroy(__result, __cur);    throw;  }     } 
368 # 106 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_uninitialized.h" 3
369   template<typename _InputIterator, typename _ForwardIterator>     inline _ForwardIterator     uninitialized_copy(_InputIterator __first, _InputIterator __last,          _ForwardIterator __result)     {       typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType;       typedef typename std::__is_scalar<_ValueType>::__type _Is_POD;       return std::__uninitialized_copy_aux(__first, __last, __result,         _Is_POD());     }    inline char*   uninitialized_copy(const char* __first, const char* __last, char* __result)   {     std::memmove(__result, __first, __last - __first);     return __result + (__last - __first);   }    inline wchar_t*   uninitialized_copy(const wchar_t* __first, const wchar_t* __last,        wchar_t* __result)   {     std::memmove(__result, __first, sizeof(wchar_t) * (__last - __first));     return __result + (__last - __first);   }      template<typename _ForwardIterator, typename _Tp>     inline void     __uninitialized_fill_aux(_ForwardIterator __first,         _ForwardIterator __last,         const _Tp& __x, __true_type)     { std::fill(__first, __last, __x); }    template<typename _ForwardIterator, typename _Tp>     void     __uninitialized_fill_aux(_ForwardIterator __first, _ForwardIterator __last,         const _Tp& __x, __false_type)     {       _ForwardIterator __cur = __first;       try  {    for (; __cur != __last; ++__cur)      std::_Construct(&*__cur, __x);  }       catch(...)  {    std::_Destroy(__first, __cur);    throw;  }     } 
370 # 168 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_uninitialized.h" 3
371   template<typename _ForwardIterator, typename _Tp>     inline void     uninitialized_fill(_ForwardIterator __first, _ForwardIterator __last,          const _Tp& __x)     {       typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType;       typedef typename std::__is_scalar<_ValueType>::__type _Is_POD;       std::__uninitialized_fill_aux(__first, __last, __x, _Is_POD());     }      template<typename _ForwardIterator, typename _Size, typename _Tp>     inline void     __uninitialized_fill_n_aux(_ForwardIterator __first, _Size __n,           const _Tp& __x, __true_type)     { std::fill_n(__first, __n, __x); }    template<typename _ForwardIterator, typename _Size, typename _Tp>     void     __uninitialized_fill_n_aux(_ForwardIterator __first, _Size __n,           const _Tp& __x, __false_type)     {       _ForwardIterator __cur = __first;       try  {    for (; __n > 0; --__n, ++__cur)      std::_Construct(&*__cur, __x);  }       catch(...)  {    std::_Destroy(__first, __cur);    throw;  }     } 
372 # 213 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_uninitialized.h" 3
373   template<typename _ForwardIterator, typename _Size, typename _Tp>     inline void     uninitialized_fill_n(_ForwardIterator __first, _Size __n, const _Tp& __x)     {       typedef typename iterator_traits<_ForwardIterator>::value_type _ValueType;       typedef typename std::__is_scalar<_ValueType>::__type _Is_POD;       std::__uninitialized_fill_n_aux(__first, __n, __x, _Is_POD());     }          template<typename _InputIterator, typename _ForwardIterator,     typename _Allocator>     _ForwardIterator     __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,       _ForwardIterator __result,       _Allocator __alloc)     {       _ForwardIterator __cur = __result;       try  {    for (; __first != __last; ++__first, ++__cur)      __alloc.construct(&*__cur, *__first);    return __cur;  }       catch(...)  {    std::_Destroy(__result, __cur, __alloc);    throw;  }     }    template<typename _InputIterator, typename _ForwardIterator, typename _Tp>     inline _ForwardIterator     __uninitialized_copy_a(_InputIterator __first, _InputIterator __last,       _ForwardIterator __result,       allocator<_Tp>)     { return std::uninitialized_copy(__first, __last, __result); }    template<typename _ForwardIterator, typename _Tp, typename _Allocator>     void     __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,       const _Tp& __x, _Allocator __alloc)     {       _ForwardIterator __cur = __first;       try  {    for (; __cur != __last; ++__cur)      __alloc.construct(&*__cur, __x);  }       catch(...)  {    std::_Destroy(__first, __cur, __alloc);    throw;  }     }    template<typename _ForwardIterator, typename _Tp, typename _Tp2>     inline void     __uninitialized_fill_a(_ForwardIterator __first, _ForwardIterator __last,       const _Tp& __x, allocator<_Tp2>)     { std::uninitialized_fill(__first, __last, __x); }    template<typename _ForwardIterator, typename _Size, typename _Tp,     typename _Allocator>     void     __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,         const _Tp& __x,         _Allocator __alloc)     {       _ForwardIterator __cur = __first;       try  {    for (; __n > 0; --__n, ++__cur)      __alloc.construct(&*__cur, __x);  }       catch(...)  {    std::_Destroy(__first, __cur, __alloc);    throw;  }     }    template<typename _ForwardIterator, typename _Size, typename _Tp,     typename _Tp2>     inline void     __uninitialized_fill_n_a(_ForwardIterator __first, _Size __n,         const _Tp& __x,         allocator<_Tp2>)     { std::uninitialized_fill_n(__first, __n, __x); } 
374 # 318 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_uninitialized.h" 3
375   template<typename _InputIterator1, typename _InputIterator2,     typename _ForwardIterator, typename _Allocator>     inline _ForwardIterator     __uninitialized_copy_copy(_InputIterator1 __first1,          _InputIterator1 __last1,          _InputIterator2 __first2,          _InputIterator2 __last2,          _ForwardIterator __result,          _Allocator __alloc)     {       _ForwardIterator __mid = std::__uninitialized_copy_a(__first1, __last1,           __result,           __alloc);       try  {    return std::__uninitialized_copy_a(__first2, __last2, __mid, __alloc);  }       catch(...)  {    std::_Destroy(__result, __mid, __alloc);    throw;  }     }       template<typename _ForwardIterator, typename _Tp, typename _InputIterator,     typename _Allocator>     inline _ForwardIterator     __uninitialized_fill_copy(_ForwardIterator __result, _ForwardIterator __mid,          const _Tp& __x, _InputIterator __first,          _InputIterator __last,          _Allocator __alloc)     {       std::__uninitialized_fill_a(__result, __mid, __x, __alloc);       try  {    return std::__uninitialized_copy_a(__first, __last, __mid, __alloc);  }       catch(...)  {    std::_Destroy(__result, __mid, __alloc);    throw;  }     }       template<typename _InputIterator, typename _ForwardIterator, typename _Tp,     typename _Allocator>     inline void     __uninitialized_copy_fill(_InputIterator __first1, _InputIterator __last1,          _ForwardIterator __first2,          _ForwardIterator __last2, const _Tp& __x,          _Allocator __alloc)     {       _ForwardIterator __mid2 = std::__uninitialized_copy_a(__first1, __last1,            __first2,            __alloc);       try  {    std::__uninitialized_fill_a(__mid2, __last2, __x, __alloc);  }       catch(...)  {    std::_Destroy(__first2, __mid2, __alloc);    throw;  }     }  }
376  
377 # 58 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 2 3
378
379 # 150 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/limits" 3
380 namespace std __attribute__ ((__visibility__ ("default"))) {         enum float_round_style   {     round_indeterminate = -1,     round_toward_zero = 0,     round_to_nearest = 1,     round_toward_infinity = 2,     round_toward_neg_infinity = 3   };          enum float_denorm_style   {      denorm_indeterminate = -1,      denorm_absent = 0,      denorm_present = 1   }; 
381 # 192 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/limits" 3
382   struct __numeric_limits_base   {       static const bool is_specialized = false;         static const int digits = 0;      static const int digits10 = 0;      static const bool is_signed = false;          static const bool is_integer = false;         static const bool is_exact = false;       static const int radix = 0;        static const int min_exponent = 0;       static const int min_exponent10 = 0;        static const int max_exponent = 0;       static const int max_exponent10 = 0;       static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;      static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static const bool is_iec559 = false;        static const bool is_bounded = false;         static const bool is_modulo = false;       static const bool traps = false;      static const bool tinyness_before = false;        static const float_round_style round_style = round_toward_zero;   }; 
383 # 285 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/limits" 3
384   template<typename _Tp>     struct numeric_limits : public __numeric_limits_base     {         static _Tp min() throw() { return static_cast<_Tp>(0); }        static _Tp max() throw() { return static_cast<_Tp>(0); }         static _Tp epsilon() throw() { return static_cast<_Tp>(0); }        static _Tp round_error() throw() { return static_cast<_Tp>(0); }        static _Tp infinity() throw() { return static_cast<_Tp>(0); }        static _Tp quiet_NaN() throw() { return static_cast<_Tp>(0); }         static _Tp signaling_NaN() throw() { return static_cast<_Tp>(0); }          static _Tp denorm_min() throw() { return static_cast<_Tp>(0); }     };        template<>     struct numeric_limits<bool>     {       static const bool is_specialized = true;        static bool min() throw()       { return false; }       static bool max() throw()       { return true; }        static const int digits = 1;       static const int digits10 = 0;       static const bool is_signed = false;       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static bool epsilon() throw()       { return false; }       static bool round_error() throw()       { return false; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static bool infinity() throw()       { return false; }       static bool quiet_NaN() throw()       { return false; }       static bool signaling_NaN() throw()       { return false; }       static bool denorm_min() throw()       { return false; }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = false;           static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<char>     {       static const bool is_specialized = true;        static char min() throw()       { return (((char)(-1) < 0) ? (char)1 << (sizeof(char) * 8 - ((char)(-1) < 0)) : (char)0); }       static char max() throw()       { return (((char)(-1) < 0) ? ((char)1 << (sizeof(char) * 8 - ((char)(-1) < 0))) - 1 : ~(char)0); }        static const int digits = (sizeof(char) * 8 - ((char)(-1) < 0));       static const int digits10 = ((sizeof(char) * 8 - ((char)(-1) < 0)) * 643 / 2136);       static const bool is_signed = ((char)(-1) < 0);       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static char epsilon() throw()       { return 0; }       static char round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static char infinity() throw()       { return char(); }       static char quiet_NaN() throw()       { return char(); }       static char signaling_NaN() throw()       { return char(); }       static char denorm_min() throw()       { return static_cast<char>(0); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<signed char>     {       static const bool is_specialized = true;        static signed char min() throw()       { return -127 - 1; }       static signed char max() throw()       { return 127; }        static const int digits = (sizeof(signed char) * 8 - ((signed char)(-1) < 0));       static const int digits10 = ((sizeof(signed char) * 8 - ((signed char)(-1) < 0)) * 643 / 2136);       static const bool is_signed = true;       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static signed char epsilon() throw()       { return 0; }       static signed char round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static signed char infinity() throw()       { return static_cast<signed char>(0); }       static signed char quiet_NaN() throw()       { return static_cast<signed char>(0); }       static signed char signaling_NaN() throw()       { return static_cast<signed char>(0); }       static signed char denorm_min() throw()       { return static_cast<signed char>(0); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<unsigned char>     {       static const bool is_specialized = true;        static unsigned char min() throw()       { return 0; }       static unsigned char max() throw()       { return 127 * 2U + 1; }        static const int digits = (sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0));       static const int digits10 = ((sizeof(unsigned char) * 8 - ((unsigned char)(-1) < 0)) * 643 / 2136);       static const bool is_signed = false;       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static unsigned char epsilon() throw()       { return 0; }       static unsigned char round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static unsigned char infinity() throw()       { return static_cast<unsigned char>(0); }       static unsigned char quiet_NaN() throw()       { return static_cast<unsigned char>(0); }       static unsigned char signaling_NaN() throw()       { return static_cast<unsigned char>(0); }       static unsigned char denorm_min() throw()       { return static_cast<unsigned char>(0); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<wchar_t>     {       static const bool is_specialized = true;        static wchar_t min() throw()       { return (((wchar_t)(-1) < 0) ? (wchar_t)1 << (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) : (wchar_t)0); }       static wchar_t max() throw()       { return (((wchar_t)(-1) < 0) ? ((wchar_t)1 << (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0))) - 1 : ~(wchar_t)0); }        static const int digits = (sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0));       static const int digits10 = ((sizeof(wchar_t) * 8 - ((wchar_t)(-1) < 0)) * 643 / 2136);       static const bool is_signed = ((wchar_t)(-1) < 0);       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static wchar_t epsilon() throw()       { return 0; }       static wchar_t round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static wchar_t infinity() throw()       { return wchar_t(); }       static wchar_t quiet_NaN() throw()       { return wchar_t(); }       static wchar_t signaling_NaN() throw()       { return wchar_t(); }       static wchar_t denorm_min() throw()       { return wchar_t(); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<short>     {       static const bool is_specialized = true;        static short min() throw()       { return -32767 - 1; }       static short max() throw()       { return 32767; }        static const int digits = (sizeof(short) * 8 - ((short)(-1) < 0));       static const int digits10 = ((sizeof(short) * 8 - ((short)(-1) < 0)) * 643 / 2136);       static const bool is_signed = true;       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static short epsilon() throw()       { return 0; }       static short round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static short infinity() throw()       { return short(); }       static short quiet_NaN() throw()       { return short(); }       static short signaling_NaN() throw()       { return short(); }       static short denorm_min() throw()       { return short(); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<unsigned short>     {       static const bool is_specialized = true;        static unsigned short min() throw()       { return 0; }       static unsigned short max() throw()       { return 32767 * 2U + 1; }        static const int digits = (sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0));       static const int digits10 = ((sizeof(unsigned short) * 8 - ((unsigned short)(-1) < 0)) * 643 / 2136);       static const bool is_signed = false;       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static unsigned short epsilon() throw()       { return 0; }       static unsigned short round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static unsigned short infinity() throw()       { return static_cast<unsigned short>(0); }       static unsigned short quiet_NaN() throw()       { return static_cast<unsigned short>(0); }       static unsigned short signaling_NaN() throw()       { return static_cast<unsigned short>(0); }       static unsigned short denorm_min() throw()       { return static_cast<unsigned short>(0); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<int>     {       static const bool is_specialized = true;        static int min() throw()       { return -2147483647 - 1; }       static int max() throw()       { return 2147483647; }        static const int digits = (sizeof(int) * 8 - ((int)(-1) < 0));       static const int digits10 = ((sizeof(int) * 8 - ((int)(-1) < 0)) * 643 / 2136);       static const bool is_signed = true;       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static int epsilon() throw()       { return 0; }       static int round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static int infinity() throw()       { return static_cast<int>(0); }       static int quiet_NaN() throw()       { return static_cast<int>(0); }       static int signaling_NaN() throw()       { return static_cast<int>(0); }       static int denorm_min() throw()       { return static_cast<int>(0); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<unsigned int>     {       static const bool is_specialized = true;        static unsigned int min() throw()       { return 0; }       static unsigned int max() throw()       { return 2147483647 * 2U + 1; }        static const int digits = (sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0));       static const int digits10 = ((sizeof(unsigned int) * 8 - ((unsigned int)(-1) < 0)) * 643 / 2136);       static const bool is_signed = false;       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static unsigned int epsilon() throw()       { return 0; }       static unsigned int round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static unsigned int infinity() throw()       { return static_cast<unsigned int>(0); }       static unsigned int quiet_NaN() throw()       { return static_cast<unsigned int>(0); }       static unsigned int signaling_NaN() throw()       { return static_cast<unsigned int>(0); }       static unsigned int denorm_min() throw()       { return static_cast<unsigned int>(0); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<long>     {       static const bool is_specialized = true;        static long min() throw()       { return -9223372036854775807L - 1; }       static long max() throw()       { return 9223372036854775807L; }        static const int digits = (sizeof(long) * 8 - ((long)(-1) < 0));       static const int digits10 = ((sizeof(long) * 8 - ((long)(-1) < 0)) * 643 / 2136);       static const bool is_signed = true;       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static long epsilon() throw()       { return 0; }       static long round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static long infinity() throw()       { return static_cast<long>(0); }       static long quiet_NaN() throw()       { return static_cast<long>(0); }       static long signaling_NaN() throw()       { return static_cast<long>(0); }       static long denorm_min() throw()       { return static_cast<long>(0); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<unsigned long>     {       static const bool is_specialized = true;        static unsigned long min() throw()       { return 0; }       static unsigned long max() throw()       { return 9223372036854775807L * 2UL + 1; }        static const int digits = (sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0));       static const int digits10 = ((sizeof(unsigned long) * 8 - ((unsigned long)(-1) < 0)) * 643 / 2136);       static const bool is_signed = false;       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static unsigned long epsilon() throw()       { return 0; }       static unsigned long round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static unsigned long infinity() throw()       { return static_cast<unsigned long>(0); }       static unsigned long quiet_NaN() throw()       { return static_cast<unsigned long>(0); }       static unsigned long signaling_NaN() throw()       { return static_cast<unsigned long>(0); }       static unsigned long denorm_min() throw()       { return static_cast<unsigned long>(0); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<long long>     {       static const bool is_specialized = true;        static long long min() throw()       { return -9223372036854775807LL - 1; }       static long long max() throw()       { return 9223372036854775807LL; }        static const int digits = (sizeof(long long) * 8 - ((long long)(-1) < 0));       static const int digits10 = ((sizeof(long long) * 8 - ((long long)(-1) < 0)) * 643 / 2136);       static const bool is_signed = true;       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static long long epsilon() throw()       { return 0; }       static long long round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static long long infinity() throw()       { return static_cast<long long>(0); }       static long long quiet_NaN() throw()       { return static_cast<long long>(0); }       static long long signaling_NaN() throw()       { return static_cast<long long>(0); }       static long long denorm_min() throw()       { return static_cast<long long>(0); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<unsigned long long>     {       static const bool is_specialized = true;        static unsigned long long min() throw()       { return 0; }       static unsigned long long max() throw()       { return 9223372036854775807LL * 2ULL + 1; }        static const int digits = (sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0));       static const int digits10 = ((sizeof(unsigned long long) * 8 - ((unsigned long long)(-1) < 0)) * 643 / 2136);       static const bool is_signed = false;       static const bool is_integer = true;       static const bool is_exact = true;       static const int radix = 2;       static unsigned long long epsilon() throw()       { return 0; }       static unsigned long long round_error() throw()       { return 0; }        static const int min_exponent = 0;       static const int min_exponent10 = 0;       static const int max_exponent = 0;       static const int max_exponent10 = 0;        static const bool has_infinity = false;       static const bool has_quiet_NaN = false;       static const bool has_signaling_NaN = false;       static const float_denorm_style has_denorm = denorm_absent;       static const bool has_denorm_loss = false;        static unsigned long long infinity() throw()       { return static_cast<unsigned long long>(0); }       static unsigned long long quiet_NaN() throw()       { return static_cast<unsigned long long>(0); }       static unsigned long long signaling_NaN() throw()       { return static_cast<unsigned long long>(0); }       static unsigned long long denorm_min() throw()       { return static_cast<unsigned long long>(0); }        static const bool is_iec559 = false;       static const bool is_bounded = true;       static const bool is_modulo = true;        static const bool traps = true;       static const bool tinyness_before = false;       static const float_round_style round_style = round_toward_zero;     };     template<>     struct numeric_limits<float>     {       static const bool is_specialized = true;        static float min() throw()       { return 1.17549435e-38F; }       static float max() throw()       { return 3.40282347e+38F; }        static const int digits = 24;       static const int digits10 = 6;       static const bool is_signed = true;       static const bool is_integer = false;       static const bool is_exact = false;       static const int radix = 2;       static float epsilon() throw()       { return 1.19209290e-7F; }       static float round_error() throw()       { return 0.5F; }        static const int min_exponent = (-125);       static const int min_exponent10 = (-37);       static const int max_exponent = 128;       static const int max_exponent10 = 38;        static const bool has_infinity = 1;       static const bool has_quiet_NaN = 1;       static const bool has_signaling_NaN = has_quiet_NaN;       static const float_denorm_style has_denorm  = bool(1) ? denorm_present : denorm_absent;       static const bool has_denorm_loss = false;        static float infinity() throw()       { return __builtin_huge_valf (); }       static float quiet_NaN() throw()       { return __builtin_nanf (""); }       static float signaling_NaN() throw()       { return __builtin_nansf (""); }       static float denorm_min() throw()       { return 1.40129846e-45F; }        static const bool is_iec559  = has_infinity && has_quiet_NaN && has_denorm == denorm_present;       static const bool is_bounded = true;       static const bool is_modulo = false;        static const bool traps = false;       static const bool tinyness_before = false;       static const float_round_style round_style = round_to_nearest;     };         template<>     struct numeric_limits<double>     {       static const bool is_specialized = true;        static double min() throw()       { return 2.2250738585072014e-308; }       static double max() throw()       { return 1.7976931348623157e+308; }        static const int digits = 53;       static const int digits10 = 15;       static const bool is_signed = true;       static const bool is_integer = false;       static const bool is_exact = false;       static const int radix = 2;       static double epsilon() throw()       { return 2.2204460492503131e-16; }       static double round_error() throw()       { return 0.5; }        static const int min_exponent = (-1021);       static const int min_exponent10 = (-307);       static const int max_exponent = 1024;       static const int max_exponent10 = 308;        static const bool has_infinity = 1;       static const bool has_quiet_NaN = 1;       static const bool has_signaling_NaN = has_quiet_NaN;       static const float_denorm_style has_denorm  = bool(1) ? denorm_present : denorm_absent;       static const bool has_denorm_loss = false;        static double infinity() throw()       { return __builtin_huge_val(); }       static double quiet_NaN() throw()       { return __builtin_nan (""); }       static double signaling_NaN() throw()       { return __builtin_nans (""); }       static double denorm_min() throw()       { return 4.9406564584124654e-324; }        static const bool is_iec559  = has_infinity && has_quiet_NaN && has_denorm == denorm_present;       static const bool is_bounded = true;       static const bool is_modulo = false;        static const bool traps = false;       static const bool tinyness_before = false;       static const float_round_style round_style = round_to_nearest;     };         template<>     struct numeric_limits<long double>     {       static const bool is_specialized = true;        static long double min() throw()       { return 3.36210314311209350626e-4932L; }       static long double max() throw()       { return 1.18973149535723176502e+4932L; }        static const int digits = 64;       static const int digits10 = 18;       static const bool is_signed = true;       static const bool is_integer = false;       static const bool is_exact = false;       static const int radix = 2;       static long double epsilon() throw()       { return 1.08420217248550443401e-19L; }       static long double round_error() throw()       { return 0.5L; }        static const int min_exponent = (-16381);       static const int min_exponent10 = (-4931);       static const int max_exponent = 16384;       static const int max_exponent10 = 4932;        static const bool has_infinity = 1;       static const bool has_quiet_NaN = 1;       static const bool has_signaling_NaN = has_quiet_NaN;       static const float_denorm_style has_denorm  = bool(1) ? denorm_present : denorm_absent;       static const bool has_denorm_loss  = false;        static long double infinity() throw()       { return __builtin_huge_vall (); }       static long double quiet_NaN() throw()       { return __builtin_nanl (""); }       static long double signaling_NaN() throw()       { return __builtin_nansl (""); }       static long double denorm_min() throw()       { return 3.64519953188247460253e-4951L; }        static const bool is_iec559  = has_infinity && has_quiet_NaN && has_denorm == denorm_present;       static const bool is_bounded = true;       static const bool is_modulo = false;        static const bool traps = false;       static const bool tinyness_before = false;       static const float_round_style round_style = round_to_nearest;     };      }
385  
386 # 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 2 3
387  namespace std __attribute__ ((__visibility__ ("default"))) { 
388 # 72 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
389   template<typename _Tp>     pair<_Tp*, ptrdiff_t>     __get_temporary_buffer(ptrdiff_t __len, _Tp*)     {       const ptrdiff_t __max = numeric_limits<ptrdiff_t>::max() / sizeof(_Tp);       if (__len > __max)  __len = __max;        while (__len > 0)  {    _Tp* __tmp = static_cast<_Tp*>(::operator new(__len * sizeof(_Tp),        nothrow));    if (__tmp != 0)      return pair<_Tp*, ptrdiff_t>(__tmp, __len);    __len /= 2;  }       return pair<_Tp*, ptrdiff_t>(static_cast<_Tp*>(0), 0);     } 
390   template<typename _Tp>     void     return_temporary_buffer(_Tp* __p)     { ::operator delete(__p, nothrow); } 
391 # 132 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
392   template<typename _Tp1>     struct auto_ptr_ref     {       _Tp1* _M_ptr;        explicit       auto_ptr_ref(_Tp1* __p): _M_ptr(__p) { }     }; 
393 # 173 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
394   template<typename _Tp>     class auto_ptr     {     private:       _Tp* _M_ptr;      public:        typedef _Tp element_type;              explicit       auto_ptr(element_type* __p = 0) throw() : _M_ptr(__p) { } 
395 # 199 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
396       void       reset(element_type* __p = 0) throw()       {  if (__p != _M_ptr)    {      delete _M_ptr;      _M_ptr = __p;    }       } 
397 # 349 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/memory" 3
398       auto_ptr(auto_ptr_ref<element_type> __ref) throw()       : _M_ptr(__ref._M_ptr) { }        auto_ptr&       operator=(auto_ptr_ref<element_type> __ref) throw()       {  if (__ref._M_ptr != this->get())    {      delete _M_ptr;      _M_ptr = __ref._M_ptr;    }  return *this;       }        template<typename _Tp1>         operator auto_ptr_ref<_Tp1>() throw()         { return auto_ptr_ref<_Tp1>(this->release()); }        template<typename _Tp1>         operator auto_ptr<_Tp1>() throw()         { return auto_ptr<_Tp1>(this->release()); }   };  }
399         
400 # 39 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ostream_insert.h" 3
401    namespace std __attribute__ ((__visibility__ ("default"))) {    template<typename _CharT, typename _Traits>     inline void     __ostream_write(basic_ostream<_CharT, _Traits>& __out,       const _CharT* __s, streamsize __n)     {       typedef basic_ostream<_CharT, _Traits> __ostream_type;       typedef typename __ostream_type::ios_base __ios_base;        const streamsize __put = __out.rdbuf()->sputn(__s, __n);       if (__put != __n)  __out.setstate(__ios_base::badbit);     }    template<typename _CharT, typename _Traits>     inline void     __ostream_fill(basic_ostream<_CharT, _Traits>& __out, streamsize __n)     {       typedef basic_ostream<_CharT, _Traits> __ostream_type;       typedef typename __ostream_type::ios_base __ios_base;        const _CharT __c = __out.fill();       for (; __n > 0; --__n)  {    const typename _Traits::int_type __put = __out.rdbuf()->sputc(__c);    if (_Traits::eq_int_type(__put, _Traits::eof()))      {        __out.setstate(__ios_base::badbit);        break;      }  }     }    template<typename _CharT, typename _Traits>     basic_ostream<_CharT, _Traits>&     __ostream_insert(basic_ostream<_CharT, _Traits>& __out,        const _CharT* __s, streamsize __n)     {       typedef basic_ostream<_CharT, _Traits> __ostream_type;       typedef typename __ostream_type::ios_base __ios_base;        typename __ostream_type::sentry __cerb(__out);       if (__cerb)  {    try      {        const streamsize __w = __out.width();        if (__w > __n)   {     const bool __left = ((__out.flags()      & __ios_base::adjustfield)            == __ios_base::left);     if (!__left)       __ostream_fill(__out, __w - __n);     if (__out.good())       __ostream_write(__out, __s, __n);     if (__left && __out.good())       __ostream_fill(__out, __w - __n);   }        else   __ostream_write(__out, __s, __n);        __out.width(0);      }    catch(...)      { __out._M_setstate(__ios_base::badbit); }  }       return __out;     }        extern template ostream& __ostream_insert(ostream&, const char*, streamsize);     extern template wostream& __ostream_insert(wostream&, const wchar_t*,           streamsize);    }
402  
403
404 # 64 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
405 namespace std __attribute__ ((__visibility__ ("default"))) { 
406 # 101 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
407   template <class _Arg, class _Result>     struct unary_function     {       typedef _Arg argument_type;         typedef _Result result_type;     };       template <class _Arg1, class _Arg2, class _Result>     struct binary_function     {       typedef _Arg1 first_argument_type;         typedef _Arg2 second_argument_type;       typedef _Result result_type;     }; 
408 # 133 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
409   template <class _Tp>     struct plus : public binary_function<_Tp, _Tp, _Tp>     {       _Tp       operator()(const _Tp& __x, const _Tp& __y) const       { return __x + __y; }     };     template <class _Tp>     struct minus : public binary_function<_Tp, _Tp, _Tp>     {       _Tp       operator()(const _Tp& __x, const _Tp& __y) const       { return __x - __y; }     };     template <class _Tp>     struct multiplies : public binary_function<_Tp, _Tp, _Tp>     {       _Tp       operator()(const _Tp& __x, const _Tp& __y) const       { return __x * __y; }     };     template <class _Tp>     struct divides : public binary_function<_Tp, _Tp, _Tp>     {       _Tp       operator()(const _Tp& __x, const _Tp& __y) const       { return __x / __y; }     };     template <class _Tp>     struct modulus : public binary_function<_Tp, _Tp, _Tp>     {       _Tp       operator()(const _Tp& __x, const _Tp& __y) const       { return __x % __y; }     };     template <class _Tp>     struct negate : public unary_function<_Tp, _Tp>     {       _Tp       operator()(const _Tp& __x) const       { return -__x; }     }; 
410 # 195 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
411   template <class _Tp>     struct equal_to : public binary_function<_Tp, _Tp, bool>     {       bool       operator()(const _Tp& __x, const _Tp& __y) const       { return __x == __y; }     };     template <class _Tp>     struct not_equal_to : public binary_function<_Tp, _Tp, bool>     {       bool       operator()(const _Tp& __x, const _Tp& __y) const       { return __x != __y; }     };     template <class _Tp>     struct greater : public binary_function<_Tp, _Tp, bool>     {       bool       operator()(const _Tp& __x, const _Tp& __y) const       { return __x > __y; }     };     template <class _Tp>     struct less : public binary_function<_Tp, _Tp, bool>     {       bool       operator()(const _Tp& __x, const _Tp& __y) const       { return __x < __y; }     };     template <class _Tp>     struct greater_equal : public binary_function<_Tp, _Tp, bool>     {       bool       operator()(const _Tp& __x, const _Tp& __y) const       { return __x >= __y; }     };     template <class _Tp>     struct less_equal : public binary_function<_Tp, _Tp, bool>     {       bool       operator()(const _Tp& __x, const _Tp& __y) const       { return __x <= __y; }     }; 
412 # 480 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
413   template <class _Arg, class _Result>     class pointer_to_unary_function : public unary_function<_Arg, _Result>     {     protected:       _Result (*_M_ptr)(_Arg);     public:       pointer_to_unary_function() {}        explicit       pointer_to_unary_function(_Result (*__x)(_Arg))       : _M_ptr(__x) {}        _Result       operator()(_Arg __x) const       { return _M_ptr(__x); }     };     template <class _Arg, class _Result>     inline pointer_to_unary_function<_Arg, _Result>     ptr_fun(_Result (*__x)(_Arg))     { return pointer_to_unary_function<_Arg, _Result>(__x); }     template <class _Arg1, class _Arg2, class _Result>     class pointer_to_binary_function     : public binary_function<_Arg1, _Arg2, _Result>     {     protected:       _Result (*_M_ptr)(_Arg1, _Arg2);     public:       pointer_to_binary_function() {}        explicit       pointer_to_binary_function(_Result (*__x)(_Arg1, _Arg2))       : _M_ptr(__x) {}        _Result       operator()(_Arg1 __x, _Arg2 __y) const       { return _M_ptr(__x, __y); }     };     template <class _Arg1, class _Arg2, class _Result>     inline pointer_to_binary_function<_Arg1, _Arg2, _Result>     ptr_fun(_Result (*__x)(_Arg1, _Arg2))     { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__x); }     template <class _Tp>     struct _Identity : public unary_function<_Tp,_Tp>     {       _Tp&       operator()(_Tp& __x) const       { return __x; }        const _Tp&       operator()(const _Tp& __x) const       { return __x; }     };    template <class _Pair>     struct _Select1st : public unary_function<_Pair,            typename _Pair::first_type>     {       typename _Pair::first_type&       operator()(_Pair& __x) const       { return __x.first; }        const typename _Pair::first_type&       operator()(const _Pair& __x) const       { return __x.first; }     };    template <class _Pair>     struct _Select2nd : public unary_function<_Pair,            typename _Pair::second_type>     {       typename _Pair::second_type&       operator()(_Pair& __x) const       { return __x.second; }        const typename _Pair::second_type&       operator()(const _Pair& __x) const       { return __x.second; }     }; 
414 # 582 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_function.h" 3
415   template <class _Ret, class _Tp>     class mem_fun_t : public unary_function<_Tp*, _Ret>     {     public:       explicit       mem_fun_t(_Ret (_Tp::*__pf)())       : _M_f(__pf) {}        _Ret       operator()(_Tp* __p) const       { return (__p->*_M_f)(); }     private:       _Ret (_Tp::*_M_f)();     };     template <class _Ret, class _Tp>     class const_mem_fun_t : public unary_function<const _Tp*, _Ret>     {     public:       explicit       const_mem_fun_t(_Ret (_Tp::*__pf)() const)       : _M_f(__pf) {}        _Ret       operator()(const _Tp* __p) const       { return (__p->*_M_f)(); }     private:       _Ret (_Tp::*_M_f)() const;     };     template <class _Ret, class _Tp>     class mem_fun_ref_t : public unary_function<_Tp, _Ret>     {     public:       explicit       mem_fun_ref_t(_Ret (_Tp::*__pf)())       : _M_f(__pf) {}        _Ret       operator()(_Tp& __r) const       { return (__r.*_M_f)(); }     private:       _Ret (_Tp::*_M_f)();   };     template <class _Ret, class _Tp>     class const_mem_fun_ref_t : public unary_function<_Tp, _Ret>     {     public:       explicit       const_mem_fun_ref_t(_Ret (_Tp::*__pf)() const)       : _M_f(__pf) {}        _Ret       operator()(const _Tp& __r) const       { return (__r.*_M_f)(); }     private:       _Ret (_Tp::*_M_f)() const;     };     template <class _Ret, class _Tp, class _Arg>     class mem_fun1_t : public binary_function<_Tp*, _Arg, _Ret>     {     public:       explicit       mem_fun1_t(_Ret (_Tp::*__pf)(_Arg))       : _M_f(__pf) {}        _Ret       operator()(_Tp* __p, _Arg __x) const       { return (__p->*_M_f)(__x); }     private:       _Ret (_Tp::*_M_f)(_Arg);     };     template <class _Ret, class _Tp, class _Arg>     class const_mem_fun1_t : public binary_function<const _Tp*, _Arg, _Ret>     {     public:       explicit       const_mem_fun1_t(_Ret (_Tp::*__pf)(_Arg) const)       : _M_f(__pf) {}        _Ret       operator()(const _Tp* __p, _Arg __x) const       { return (__p->*_M_f)(__x); }     private:       _Ret (_Tp::*_M_f)(_Arg) const;     };     template <class _Ret, class _Tp, class _Arg>     class mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>     {     public:       explicit       mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg))       : _M_f(__pf) {}        _Ret       operator()(_Tp& __r, _Arg __x) const       { return (__r.*_M_f)(__x); }     private:       _Ret (_Tp::*_M_f)(_Arg);     };     template <class _Ret, class _Tp, class _Arg>     class const_mem_fun1_ref_t : public binary_function<_Tp, _Arg, _Ret>     {     public:       explicit       const_mem_fun1_ref_t(_Ret (_Tp::*__pf)(_Arg) const)       : _M_f(__pf) {}        _Ret       operator()(const _Tp& __r, _Arg __x) const       { return (__r.*_M_f)(__x); }     private:       _Ret (_Tp::*_M_f)(_Arg) const;     };      template <class _Ret, class _Tp>     inline mem_fun_t<_Ret, _Tp>     mem_fun(_Ret (_Tp::*__f)())     { return mem_fun_t<_Ret, _Tp>(__f); }    template <class _Ret, class _Tp>     inline const_mem_fun_t<_Ret, _Tp>     mem_fun(_Ret (_Tp::*__f)() const)     { return const_mem_fun_t<_Ret, _Tp>(__f); }    template <class _Ret, class _Tp>     inline mem_fun_ref_t<_Ret, _Tp>     mem_fun_ref(_Ret (_Tp::*__f)())     { return mem_fun_ref_t<_Ret, _Tp>(__f); }    template <class _Ret, class _Tp>     inline const_mem_fun_ref_t<_Ret, _Tp>     mem_fun_ref(_Ret (_Tp::*__f)() const)     { return const_mem_fun_ref_t<_Ret, _Tp>(__f); }    template <class _Ret, class _Tp, class _Arg>     inline mem_fun1_t<_Ret, _Tp, _Arg>     mem_fun(_Ret (_Tp::*__f)(_Arg))     { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }    template <class _Ret, class _Tp, class _Arg>     inline const_mem_fun1_t<_Ret, _Tp, _Arg>     mem_fun(_Ret (_Tp::*__f)(_Arg) const)     { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }    template <class _Ret, class _Tp, class _Arg>     inline mem_fun1_ref_t<_Ret, _Tp, _Arg>     mem_fun_ref(_Ret (_Tp::*__f)(_Arg))     { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }    template <class _Ret, class _Tp, class _Arg>     inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>     mem_fun_ref(_Ret (_Tp::*__f)(_Arg) const)     { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }    }
416  
417 # 54 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/string" 2 3
418
419 # 37 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/atomic_word.h" 3
420 typedef int _Atomic_word;
421  
422 # 41 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/atomicity.h" 2 3
423  namespace __gnu_cxx __attribute__ ((__visibility__ ("default"))) {         static inline _Atomic_word   __exchange_and_add(volatile _Atomic_word* __mem, int __val)   { return __sync_fetch_and_add(__mem, __val); }    static inline void   __atomic_add(volatile _Atomic_word* __mem, int __val)   { __sync_fetch_and_add(__mem, __val); } 
424 # 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ext/atomicity.h" 3
425   static inline _Atomic_word   __exchange_and_add_single(_Atomic_word* __mem, int __val)   {     _Atomic_word __result = *__mem;     *__mem += __val;     return __result;   }    static inline void   __atomic_add_single(_Atomic_word* __mem, int __val)   { *__mem += __val; }    static inline _Atomic_word   __attribute__ ((__unused__))   __exchange_and_add_dispatch(_Atomic_word* __mem, int __val)   {      if (__gthread_active_p())       return __exchange_and_add(__mem, __val);     else       return __exchange_and_add_single(__mem, __val);      }    static inline void   __attribute__ ((__unused__))   __atomic_add_dispatch(_Atomic_word* __mem, int __val)   {      if (__gthread_active_p())       __atomic_add(__mem, __val);     else       __atomic_add_single(__mem, __val);      }  }
426  
427 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 2 3
428   namespace std __attribute__ ((__visibility__ ("default"))) { 
429 # 110 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
430   template<typename _CharT, typename _Traits, typename _Alloc>     class basic_string     {       typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;       public:       typedef _Traits traits_type;       typedef typename _Traits::char_type value_type;       typedef _Alloc allocator_type;       typedef typename _CharT_alloc_type::size_type size_type;       typedef typename _CharT_alloc_type::difference_type difference_type;       typedef typename _CharT_alloc_type::reference reference;       typedef typename _CharT_alloc_type::const_reference const_reference;       typedef typename _CharT_alloc_type::pointer pointer;       typedef typename _CharT_alloc_type::const_pointer const_pointer;       typedef __gnu_cxx::__normal_iterator<pointer, basic_string> iterator;       typedef __gnu_cxx::__normal_iterator<const_pointer, basic_string>                                                             const_iterator;       typedef std::reverse_iterator<const_iterator> const_reverse_iterator;       typedef std::reverse_iterator<iterator> reverse_iterator;      private: 
431 # 147 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
432       struct _Rep_base       {  size_type _M_length;  size_type _M_capacity;  _Atomic_word _M_refcount;       };        struct _Rep : _Rep_base       {   typedef typename _Alloc::template rebind<char>::other _Raw_bytes_alloc; 
433 # 172 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
434  static const size_type _S_max_size;  static const _CharT _S_terminal;            static size_type _S_empty_rep_storage[];          static _Rep&         _S_empty_rep()         {       void* __p = reinterpret_cast<void*>(&_S_empty_rep_storage);    return *reinterpret_cast<_Rep*>(__p);  }          bool  _M_is_leaked() const         { return this->_M_refcount < 0; }          bool  _M_is_shared() const         { return this->_M_refcount > 0; }          void  _M_set_leaked()         { this->_M_refcount = -1; }          void  _M_set_sharable()         { this->_M_refcount = 0; }   void  _M_set_length_and_sharable(size_type __n)  {    this->_M_set_sharable();    this->_M_length = __n;    traits_type::assign(this->_M_refdata()[__n], _S_terminal);    }   _CharT*  _M_refdata() throw()  { return reinterpret_cast<_CharT*>(this + 1); }   _CharT*  _M_grab(const _Alloc& __alloc1, const _Alloc& __alloc2)  {    return (!_M_is_leaked() && __alloc1 == __alloc2)            ? _M_refcopy() : _M_clone(__alloc1);  }    static _Rep*  _S_create(size_type, size_type, const _Alloc&);   void  _M_dispose(const _Alloc& __a)  {     if (__builtin_expect(this != &_S_empty_rep(), false))       if (__gnu_cxx::__exchange_and_add_dispatch(&this->_M_refcount,              -1) <= 0)        _M_destroy(__a);  }   void  _M_destroy(const _Alloc&) throw();   _CharT*  _M_refcopy() throw()  {     if (__builtin_expect(this != &_S_empty_rep(), false))              __gnu_cxx::__atomic_add_dispatch(&this->_M_refcount, 1);    return _M_refdata();  }   _CharT*  _M_clone(const _Alloc&, size_type __res = 0);       };         struct _Alloc_hider : _Alloc       {  _Alloc_hider(_CharT* __dat, const _Alloc& __a)  : _Alloc(__a), _M_p(__dat) { }   _CharT* _M_p;       };      public:           static const size_type npos = static_cast<size_type>(-1);      private:        mutable _Alloc_hider _M_dataplus;        _CharT*       _M_data() const       { return _M_dataplus._M_p; }        _CharT*       _M_data(_CharT* __p)       { return (_M_dataplus._M_p = __p); }        _Rep*       _M_rep() const       { return &((reinterpret_cast<_Rep*> (_M_data()))[-1]); }          iterator       _M_ibegin() const       { return iterator(_M_data()); }        iterator       _M_iend() const       { return iterator(_M_data() + this->size()); }        void       _M_leak()       {  if (!_M_rep()->_M_is_leaked())    _M_leak_hard();       }        size_type       _M_check(size_type __pos, const char* __s) const       {  if (__pos > this->size())    __throw_out_of_range((__s));  return __pos;       }        void       _M_check_length(size_type __n1, size_type __n2, const char* __s) const       {  if (this->max_size() - (this->size() - __n1) < __n2)    __throw_length_error((__s));       }         size_type       _M_limit(size_type __pos, size_type __off) const       {  const bool __testoff = __off < this->size() - __pos;  return __testoff ? __off : this->size() - __pos;       }         bool       _M_disjunct(const _CharT* __s) const       {  return (less<const _CharT*>()(__s, _M_data())   || less<const _CharT*>()(_M_data() + this->size(), __s));       }          static void       _M_copy(_CharT* __d, const _CharT* __s, size_type __n)       {  if (__n == 1)    traits_type::assign(*__d, *__s);  else    traits_type::copy(__d, __s, __n);       }        static void       _M_move(_CharT* __d, const _CharT* __s, size_type __n)       {  if (__n == 1)    traits_type::assign(*__d, *__s);  else    traits_type::move(__d, __s, __n);       }        static void       _M_assign(_CharT* __d, size_type __n, _CharT __c)       {  if (__n == 1)    traits_type::assign(*__d, __c);  else    traits_type::assign(__d, __n, __c);       }          template<class _Iterator>         static void         _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)         {    for (; __k1 != __k2; ++__k1, ++__p)      traits_type::assign(*__p, *__k1);  }        static void       _S_copy_chars(_CharT* __p, iterator __k1, iterator __k2)       { _S_copy_chars(__p, __k1.base(), __k2.base()); }        static void       _S_copy_chars(_CharT* __p, const_iterator __k1, const_iterator __k2)       { _S_copy_chars(__p, __k1.base(), __k2.base()); }        static void       _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)       { _M_copy(__p, __k1, __k2 - __k1); }        static void       _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)       { _M_copy(__p, __k1, __k2 - __k1); }        void       _M_mutate(size_type __pos, size_type __len1, size_type __len2);        void       _M_leak_hard();        static _Rep&       _S_empty_rep()       { return _Rep::_S_empty_rep(); }      public:              inline       basic_string();           explicit       basic_string(const _Alloc& __a);             basic_string(const basic_string& __str);             basic_string(const basic_string& __str, size_type __pos,      size_type __n = npos);              basic_string(const basic_string& __str, size_type __pos,      size_type __n, const _Alloc& __a); 
435 # 453 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
436       basic_string(const _CharT* __s, size_type __n,      const _Alloc& __a = _Alloc());            basic_string(const _CharT* __s, const _Alloc& __a = _Alloc());             basic_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc());              template<class _InputIterator>         basic_string(_InputIterator __beg, _InputIterator __end,        const _Alloc& __a = _Alloc());           ~basic_string()       { _M_rep()->_M_dispose(this->get_allocator()); }            basic_string&       operator=(const basic_string& __str)       { return this->assign(__str); }            basic_string&       operator=(const _CharT* __s)       { return this->assign(__s); } 
437 # 508 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
438       basic_string&       operator=(_CharT __c)       {  this->assign(1, __c);  return *this;       }             iterator       begin()       {  _M_leak();  return iterator(_M_data());       }            const_iterator       begin() const       { return const_iterator(_M_data()); }            iterator       end()       {  _M_leak();  return iterator(_M_data() + this->size());       }            const_iterator       end() const       { return const_iterator(_M_data() + this->size()); }             reverse_iterator       rbegin()       { return reverse_iterator(this->end()); }             const_reverse_iterator       rbegin() const       { return const_reverse_iterator(this->end()); }             reverse_iterator       rend()       { return reverse_iterator(this->begin()); }             const_reverse_iterator       rend() const       { return const_reverse_iterator(this->begin()); }      public:          size_type       size() const       { return _M_rep()->_M_length; }          size_type       length() const       { return _M_rep()->_M_length; }         size_type       max_size() const       { return _Rep::_S_max_size; } 
439 # 619 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
440       void       resize(size_type __n, _CharT __c); 
441 # 632 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
442       void       resize(size_type __n)       { this->resize(__n, _CharT()); }            size_type       capacity() const       { return _M_rep()->_M_capacity; } 
443 # 661 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
444       void       reserve(size_type __res_arg = 0);           void       clear()       { _M_mutate(0, this->size(), 0); }           bool       empty() const       { return this->size() == 0; } 
445 # 689 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
446       const_reference       operator[] (size_type __pos) const       {  ;  return _M_data()[__pos];       } 
447 # 706 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
448       reference       operator[](size_type __pos)       {   ;   ;  _M_leak();  return _M_data()[__pos];       } 
449       reference       at(size_type __n)       {  if (__n >= size())    __throw_out_of_range(("basic_string::at"));  _M_leak();  return _M_data()[__n];       }              basic_string&       operator+=(const basic_string& __str)       { return this->append(__str); }             basic_string&       operator+=(const _CharT* __s)       { return this->append(__s); }             basic_string&       operator+=(_CharT __c)       {  this->push_back(__c);  return *this;       }             basic_string&       append(const basic_string& __str); 
450 # 806 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
451       basic_string&       append(const basic_string& __str, size_type __pos, size_type __n);              basic_string&       append(const _CharT* __s, size_type __n);             basic_string&       append(const _CharT* __s)       {  ;  return this->append(__s, traits_type::length(__s));       } 
452 # 838 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
453       basic_string&       append(size_type __n, _CharT __c); 
454 # 849 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
455       template<class _InputIterator>         basic_string&         append(_InputIterator __first, _InputIterator __last)         { return this->replace(_M_iend(), _M_iend(), __first, __last); }            void       push_back(_CharT __c)       {  const size_type __len = 1 + this->size();  if (__len > this->capacity() || _M_rep()->_M_is_shared())    this->reserve(__len);  traits_type::assign(_M_data()[this->size()], __c);  _M_rep()->_M_set_length_and_sharable(__len);       }             basic_string&       assign(const basic_string& __str); 
456 # 888 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
457       basic_string&       assign(const basic_string& __str, size_type __pos, size_type __n)       { return this->assign(__str._M_data()        + __str._M_check(__pos, "basic_string::assign"),        __str._M_limit(__pos, __n)); } 
458 # 904 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
459       basic_string&       assign(const _CharT* __s, size_type __n); 
460 # 916 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
461       basic_string&       insert(size_type __pos1, const basic_string& __str,       size_type __pos2, size_type __n)       { return this->insert(__pos1, __str._M_data()        + __str._M_check(__pos2, "basic_string::insert"),        __str._M_limit(__pos2, __n)); } 
462 # 1037 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
463       basic_string&       insert(size_type __pos, const _CharT* __s, size_type __n); 
464 # 1055 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
465 # 1228 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
466       basic_string&       replace(size_type __pos, size_type __n1, const _CharT* __s,        size_type __n2); 
467 # 1247 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
468       template<class _InputIterator>         basic_string&         replace(iterator __i1, iterator __i2,   _InputIterator __k1, _InputIterator __k2)         {    ;     ;    typedef typename std::__is_integer<_InputIterator>::__type _Integral;    return _M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());  }          basic_string&       replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)       {  ;   ;  return this->replace(__i1 - _M_ibegin(), __i2 - __i1,         __k1, __k2 - __k1);       }        basic_string&       replace(iterator __i1, iterator __i2,        const _CharT* __k1, const _CharT* __k2)       {  ;   ;  return this->replace(__i1 - _M_ibegin(), __i2 - __i1,         __k1, __k2 - __k1);       }        basic_string&       replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)       {  ;   ;  return this->replace(__i1 - _M_ibegin(), __i2 - __i1,         __k1.base(), __k2 - __k1);       }        basic_string&       replace(iterator __i1, iterator __i2,        const_iterator __k1, const_iterator __k2)       {  ;   ;  return this->replace(__i1 - _M_ibegin(), __i2 - __i1,         __k1.base(), __k2 - __k1);       }      private:       template<class _Integer>  basic_string&  _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,        _Integer __val, __true_type)         { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }        template<class _InputIterator>  basic_string&  _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,        _InputIterator __k2, __false_type);        basic_string&       _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,        _CharT __c);        basic_string&       _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,         size_type __n2);          template<class _InIterator>         static _CharT*         _S_construct_aux(_InIterator __beg, _InIterator __end,     const _Alloc& __a, __false_type)  {           typedef typename iterator_traits<_InIterator>::iterator_category _Tag;           return _S_construct(__beg, __end, __a, _Tag());  }        template<class _InIterator>         static _CharT*         _S_construct_aux(_InIterator __beg, _InIterator __end,     const _Alloc& __a, __true_type)  { return _S_construct(static_cast<size_type>(__beg),          static_cast<value_type>(__end), __a); }        template<class _InIterator>         static _CharT*         _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)  {    typedef typename std::__is_integer<_InIterator>::__type _Integral;    return _S_construct_aux(__beg, __end, __a, _Integral());         }         template<class _InIterator>         static _CharT*          _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,         input_iterator_tag);          template<class _FwdIterator>         static _CharT*         _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,        forward_iterator_tag);        static _CharT*       _S_construct(size_type __req, _CharT __c, const _Alloc& __a);      public: 
469 # 1501 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
470       size_type       copy(_CharT* __s, size_type __n, size_type __pos = 0) const; 
471 # 1511 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
472       void       swap(basic_string& __s); 
473 # 1521 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
474       const _CharT*       c_str() const       { return _M_data(); }              const _CharT*       data() const       { return _M_data(); }           allocator_type       get_allocator() const       { return _M_dataplus; } 
475 # 1553 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
476       size_type       find(const _CharT* __s, size_type __pos, size_type __n) const; 
477       size_type       find(const _CharT* __s, size_type __pos = 0) const       {  ;  return this->find(__s, __pos, traits_type::length(__s));       } 
478 # 1597 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
479       size_type       find(_CharT __c, size_type __pos = 0) const; 
480 # 1610 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
481       size_type       rfind(const basic_string& __str, size_type __pos = npos) const       { return this->rfind(__str.data(), __pos, __str.size()); } 
482 # 1625 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
483       size_type       rfind(const _CharT* __s, size_type __pos, size_type __n) const; 
484       size_type       rfind(_CharT __c, size_type __pos = npos) const; 
485 # 1668 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
486       size_type       find_first_of(const basic_string& __str, size_type __pos = 0) const       { return this->find_first_of(__str.data(), __pos, __str.size()); } 
487 # 1683 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
488       size_type       find_first_of(const _CharT* __s, size_type __pos, size_type __n) const; 
489 # 1696 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
490       size_type       find_last_of(const _CharT* __s, size_type __pos, size_type __n) const; 
491 # 1757 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
492       size_type       find_last_of(const _CharT* __s, size_type __pos = npos) const       {  ;  return this->find_last_of(__s, __pos, traits_type::length(__s));       } 
493 # 1776 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
494       size_type       find_last_of(_CharT __c, size_type __pos = npos) const       { return this->rfind(__c, __pos); } 
495 # 1790 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
496       size_type       find_first_not_of(const basic_string& __str, size_type __pos = 0) const       { return this->find_first_not_of(__str.data(), __pos, __str.size()); } 
497 # 1805 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
498       size_type       find_first_not_of(const _CharT* __s, size_type __pos,    size_type __n) const; 
499 # 1819 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
500       size_type       find_first_not_of(const _CharT* __s, size_type __pos = 0) const       {  ;  return this->find_first_not_of(__s, __pos, traits_type::length(__s));       } 
501 # 1836 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
502       size_type       find_first_not_of(_CharT __c, size_type __pos = 0) const; 
503       size_type       find_last_not_of(const _CharT* __s, size_type __pos,          size_type __n) const; 
504 # 1878 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
505       size_type       find_last_not_of(const _CharT* __s, size_type __pos = npos) const       {  ;  return this->find_last_not_of(__s, __pos, traits_type::length(__s));       } 
506 # 1895 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
507       size_type       find_last_not_of(_CharT __c, size_type __pos = npos) const; 
508 # 1910 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
509       basic_string       substr(size_type __pos = 0, size_type __n = npos) const       { return basic_string(*this,        _M_check(__pos, "basic_string::substr"), __n); } 
510 # 1928 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
511       int       compare(const basic_string& __str) const       {  const size_type __size = this->size();  const size_type __osize = __str.size();  const size_type __len = std::min(__size, __osize);   int __r = traits_type::compare(_M_data(), __str.data(), __len);  if (!__r)    __r = __size - __osize;  return __r;       } 
512 # 1958 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
513       int       compare(size_type __pos, size_type __n, const basic_string& __str) const; 
514 # 1982 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
515       int       compare(size_type __pos1, size_type __n1, const basic_string& __str,        size_type __pos2, size_type __n2) const; 
516 # 2000 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
517       int       compare(const _CharT* __s) const; 
518 # 2023 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
519       int       compare(size_type __pos, size_type __n1, const _CharT* __s) const; 
520 # 2048 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
521       int       compare(size_type __pos, size_type __n1, const _CharT* __s,        size_type __n2) const;   };    template<typename _CharT, typename _Traits, typename _Alloc>     inline basic_string<_CharT, _Traits, _Alloc>::     basic_string()      : _M_dataplus(_S_empty_rep()._M_refdata(), _Alloc()) { } 
522 # 2069 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
523   template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,        const basic_string<_CharT, _Traits, _Alloc>& __rhs)     {       basic_string<_CharT, _Traits, _Alloc> __str(__lhs);       __str.append(__rhs);       return __str;     }          template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT,_Traits,_Alloc>     operator+(const _CharT* __lhs,        const basic_string<_CharT,_Traits,_Alloc>& __rhs);          template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT,_Traits,_Alloc>     operator+(_CharT __lhs, const basic_string<_CharT,_Traits,_Alloc>& __rhs);          template<typename _CharT, typename _Traits, typename _Alloc>     inline basic_string<_CharT, _Traits, _Alloc>     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs,       const _CharT* __rhs)     {       basic_string<_CharT, _Traits, _Alloc> __str(__lhs);       __str.append(__rhs);       return __str;     }          template<typename _CharT, typename _Traits, typename _Alloc>     inline basic_string<_CharT, _Traits, _Alloc>     operator+(const basic_string<_CharT, _Traits, _Alloc>& __lhs, _CharT __rhs)     {       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;       typedef typename __string_type::size_type __size_type;       __string_type __str(__lhs);       __str.append(__size_type(1), __rhs);       return __str;     } 
524 # 2140 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
525 # 2214 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
526   template<typename _CharT, typename _Traits, typename _Alloc>     inline bool     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,        const basic_string<_CharT, _Traits, _Alloc>& __rhs)     { return __lhs.compare(__rhs) < 0; }          template<typename _CharT, typename _Traits, typename _Alloc>     inline bool     operator<(const basic_string<_CharT, _Traits, _Alloc>& __lhs,        const _CharT* __rhs)     { return __lhs.compare(__rhs) < 0; }          template<typename _CharT, typename _Traits, typename _Alloc>     inline bool     operator<(const _CharT* __lhs,        const basic_string<_CharT, _Traits, _Alloc>& __rhs)     { return __rhs.compare(__lhs) > 0; } 
527 # 2251 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
528   template<typename _CharT, typename _Traits, typename _Alloc>     inline void     swap(basic_string<_CharT, _Traits, _Alloc>& __lhs,   basic_string<_CharT, _Traits, _Alloc>& __rhs)     { __lhs.swap(__rhs); } 
529 # 2379 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
530   template<typename _CharT, typename _Traits, typename _Alloc>     basic_istream<_CharT, _Traits>&     operator>>(basic_istream<_CharT, _Traits>& __is,         basic_string<_CharT, _Traits, _Alloc>& __str);    template<>     basic_istream<char>&     operator>>(basic_istream<char>& __is, basic_string<char>& __str); 
531 # 2397 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
532   template<typename _CharT, typename _Traits, typename _Alloc>     inline basic_ostream<_CharT, _Traits>&     operator<<(basic_ostream<_CharT, _Traits>& __os,         const basic_string<_CharT, _Traits, _Alloc>& __str)     {         return __ostream_insert(__os, __str.data(), __str.size());     } 
533 # 2420 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
534   template<typename _CharT, typename _Traits, typename _Alloc>     basic_istream<_CharT, _Traits>&     getline(basic_istream<_CharT, _Traits>& __is,      basic_string<_CharT, _Traits, _Alloc>& __str, _CharT __delim); 
535 # 2437 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.h" 3
536   template<typename _CharT, typename _Traits, typename _Alloc>     inline basic_istream<_CharT, _Traits>&     getline(basic_istream<_CharT, _Traits>& __is,      basic_string<_CharT, _Traits, _Alloc>& __str)     { return getline(__is, __str, __is.widen('\n')); }    template<>     basic_istream<char>&     getline(basic_istream<char>& __in, basic_string<char>& __str,      char __delim);     template<>     basic_istream<wchar_t>&     getline(basic_istream<wchar_t>& __in, basic_string<wchar_t>& __str,      wchar_t __delim);   }
537 # 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
538 namespace std __attribute__ ((__visibility__ ("default"))) {       template<typename _RandomAccessIterator, typename _Distance>     bool     __is_heap(_RandomAccessIterator __first, _Distance __n)     {       _Distance __parent = 0;       for (_Distance __child = 1; __child < __n; ++__child)  {    if (__first[__parent] < __first[__child])      return false;    if ((__child & 1) == 0)      ++__parent;  }       return true;     }    template<typename _RandomAccessIterator, typename _Distance,            typename _StrictWeakOrdering>     bool     __is_heap(_RandomAccessIterator __first, _StrictWeakOrdering __comp,        _Distance __n)     {       _Distance __parent = 0;       for (_Distance __child = 1; __child < __n; ++__child)  {    if (__comp(__first[__parent], __first[__child]))      return false;    if ((__child & 1) == 0)      ++__parent;  }       return true;     }    template<typename _RandomAccessIterator>     bool     __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)     { return std::__is_heap(__first, std::distance(__first, __last)); }    template<typename _RandomAccessIterator, typename _StrictWeakOrdering>     bool     __is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,      _StrictWeakOrdering __comp)     { return std::__is_heap(__first, __comp, std::distance(__first, __last)); }      template<typename _RandomAccessIterator, typename _Distance, typename _Tp>     void     __push_heap(_RandomAccessIterator __first,   _Distance __holeIndex, _Distance __topIndex, _Tp __value)     {       _Distance __parent = (__holeIndex - 1) / 2;       while (__holeIndex > __topIndex && *(__first + __parent) < __value)  {    *(__first + __holeIndex) = *(__first + __parent);    __holeIndex = __parent;    __parent = (__holeIndex - 1) / 2;  }       *(__first + __holeIndex) = __value;     } 
539 # 139 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
540   template<typename _RandomAccessIterator>     inline void     push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)     {       typedef typename iterator_traits<_RandomAccessIterator>::value_type    _ValueType;       typedef typename iterator_traits<_RandomAccessIterator>::difference_type    _DistanceType;                      ;         std::__push_heap(__first, _DistanceType((__last - __first) - 1),          _DistanceType(0), _ValueType(*(__last - 1)));     }    template<typename _RandomAccessIterator, typename _Distance, typename _Tp,      typename _Compare>     void     __push_heap(_RandomAccessIterator __first, _Distance __holeIndex,   _Distance __topIndex, _Tp __value, _Compare __comp)     {       _Distance __parent = (__holeIndex - 1) / 2;       while (__holeIndex > __topIndex       && __comp(*(__first + __parent), __value))  {    *(__first + __holeIndex) = *(__first + __parent);    __holeIndex = __parent;    __parent = (__holeIndex - 1) / 2;  }       *(__first + __holeIndex) = __value;     } 
541 # 187 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
542   template<typename _RandomAccessIterator, typename _Compare>     inline void     push_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,        _Compare __comp)     {       typedef typename iterator_traits<_RandomAccessIterator>::value_type    _ValueType;       typedef typename iterator_traits<_RandomAccessIterator>::difference_type    _DistanceType;                ;       ;        std::__push_heap(__first, _DistanceType((__last - __first) - 1),          _DistanceType(0), _ValueType(*(__last - 1)), __comp);     }    template<typename _RandomAccessIterator, typename _Distance, typename _Tp>     void     __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,     _Distance __len, _Tp __value)     {       const _Distance __topIndex = __holeIndex;       _Distance __secondChild = 2 * __holeIndex + 2;       while (__secondChild < __len)  {    if (*(__first + __secondChild) < *(__first + (__secondChild - 1)))      __secondChild--;    *(__first + __holeIndex) = *(__first + __secondChild);    __holeIndex = __secondChild;    __secondChild = 2 * (__secondChild + 1);  }       if (__secondChild == __len)  {    *(__first + __holeIndex) = *(__first + (__secondChild - 1));    __holeIndex = __secondChild - 1;  }       std::__push_heap(__first, __holeIndex, __topIndex, __value);     }    template<typename _RandomAccessIterator, typename _Tp>     inline void     __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,         _RandomAccessIterator __result, _Tp __value)     {       typedef typename iterator_traits<_RandomAccessIterator>::difference_type  _Distance;       *__result = *__first;       std::__adjust_heap(__first, _Distance(0), _Distance(__last - __first),     __value);     } 
543 # 251 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
544   template<typename _RandomAccessIterator>     inline void     pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)     {       typedef typename iterator_traits<_RandomAccessIterator>::value_type  _ValueType;                      ;       ;        std::__pop_heap(__first, __last - 1, __last - 1,         _ValueType(*(__last - 1)));     }    template<typename _RandomAccessIterator, typename _Distance,     typename _Tp, typename _Compare>     void     __adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,     _Distance __len, _Tp __value, _Compare __comp)     {       const _Distance __topIndex = __holeIndex;       _Distance __secondChild = 2 * __holeIndex + 2;       while (__secondChild < __len)  {    if (__comp(*(__first + __secondChild),        *(__first + (__secondChild - 1))))      __secondChild--;    *(__first + __holeIndex) = *(__first + __secondChild);    __holeIndex = __secondChild;    __secondChild = 2 * (__secondChild + 1);  }       if (__secondChild == __len)  {    *(__first + __holeIndex) = *(__first + (__secondChild - 1));    __holeIndex = __secondChild - 1;  }       std::__push_heap(__first, __holeIndex, __topIndex, __value, __comp);     }    template<typename _RandomAccessIterator, typename _Tp, typename _Compare>     inline void     __pop_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,         _RandomAccessIterator __result, _Tp __value, _Compare __comp)     {       typedef typename iterator_traits<_RandomAccessIterator>::difference_type  _Distance;       *__result = *__first;       std::__adjust_heap(__first, _Distance(0), _Distance(__last - __first),     __value, __comp);     } 
545 # 317 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
546   template<typename _RandomAccessIterator, typename _Compare>     inline void     pop_heap(_RandomAccessIterator __first,       _RandomAccessIterator __last, _Compare __comp)     {               ;       ;        typedef typename iterator_traits<_RandomAccessIterator>::value_type  _ValueType;       std::__pop_heap(__first, __last - 1, __last - 1,         _ValueType(*(__last - 1)), __comp);     } 
547 # 446 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_heap.h" 3
548   template<typename _RandomAccessIterator, typename _Compare>     void     sort_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,        _Compare __comp)     {               ;       ;        while (__last - __first > 1)  std::pop_heap(__first, _RandomAccessIterator(__last--), __comp);     }  }
549  
550 # 67 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 2 3
551     namespace std __attribute__ ((__visibility__ ("default"))) { 
552 # 85 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
553 # 151 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
554   template<typename _InputIterator, typename _Function>     _Function     for_each(_InputIterator __first, _InputIterator __last, _Function __f)     {              ;       for ( ; __first != __last; ++__first)  __f(*__first);       return __f;     }         template<typename _InputIterator, typename _Tp>     inline _InputIterator     __find(_InputIterator __first, _InputIterator __last,     const _Tp& __val, input_iterator_tag)     {       while (__first != __last && !(*__first == __val))  ++__first;       return __first;     }         template<typename _InputIterator, typename _Predicate>     inline _InputIterator     __find_if(_InputIterator __first, _InputIterator __last,        _Predicate __pred, input_iterator_tag)     {       while (__first != __last && !__pred(*__first))  ++__first;       return __first;     }         template<typename _RandomAccessIterator, typename _Tp>     _RandomAccessIterator     __find(_RandomAccessIterator __first, _RandomAccessIterator __last,     const _Tp& __val, random_access_iterator_tag)     {       typename iterator_traits<_RandomAccessIterator>::difference_type  __trip_count = (__last - __first) >> 2;        for ( ; __trip_count > 0 ; --__trip_count)  {    if (*__first == __val)      return __first;    ++__first;     if (*__first == __val)      return __first;    ++__first;     if (*__first == __val)      return __first;    ++__first;     if (*__first == __val)      return __first;    ++__first;  }        switch (__last - __first)  {  case 3:    if (*__first == __val)      return __first;    ++__first;  case 2:    if (*__first == __val)      return __first;    ++__first;  case 1:    if (*__first == __val)      return __first;    ++__first;  case 0:  default:    return __last;  }     }         template<typename _RandomAccessIterator, typename _Predicate>     _RandomAccessIterator     __find_if(_RandomAccessIterator __first, _RandomAccessIterator __last,        _Predicate __pred, random_access_iterator_tag)     {       typename iterator_traits<_RandomAccessIterator>::difference_type  __trip_count = (__last - __first) >> 2;        for ( ; __trip_count > 0 ; --__trip_count)  {    if (__pred(*__first))      return __first;    ++__first;     if (__pred(*__first))      return __first;    ++__first;     if (__pred(*__first))      return __first;    ++__first;     if (__pred(*__first))      return __first;    ++__first;  }        switch (__last - __first)  {  case 3:    if (__pred(*__first))      return __first;    ++__first;  case 2:    if (__pred(*__first))      return __first;    ++__first;  case 1:    if (__pred(*__first))      return __first;    ++__first;  case 0:  default:    return __last;  }     }         template<typename _CharT>     typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,         istreambuf_iterator<_CharT> >::__type     find(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,   const _CharT&); 
555 # 316 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
556   template<typename _ForwardIterator1, typename _ForwardIterator2>     _ForwardIterator1     search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,     _ForwardIterator2 __first2, _ForwardIterator2 __last2)     {                            ;       ;        if (__first1 == __last1 || __first2 == __last2)  return __first1;         _ForwardIterator2 __tmp(__first2);       ++__tmp;       if (__tmp == __last2)  return std::find(__first1, __last1, *__first2);         _ForwardIterator2 __p1, __p;       __p1 = __first2; ++__p1;       _ForwardIterator1 __current = __first1;        while (__first1 != __last1)  {    __first1 = std::find(__first1, __last1, *__first2);    if (__first1 == __last1)      return __last1;     __p = __p1;    __current = __first1;    if (++__current == __last1)      return __last1;     while (*__current == *__p)      {        if (++__p == __last2)   return __first1;        if (++__current == __last1)   return __last1;      }    ++__first1;  }       return __first1;     } 
557 # 556 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
558   template<typename _ForwardIterator1, typename _ForwardIterator2,     typename _BinaryPredicate>     _ForwardIterator1     search(_ForwardIterator1 __first1, _ForwardIterator1 __last1,     _ForwardIterator2 __first2, _ForwardIterator2 __last2,     _BinaryPredicate __predicate)     {                            ;       ;         if (__first1 == __last1 || __first2 == __last2)  return __first1;         _ForwardIterator2 __tmp(__first2);       ++__tmp;       if (__tmp == __last2)  {    while (__first1 != __last1 && !__predicate(*__first1, *__first2))      ++__first1;    return __first1;  }         _ForwardIterator2 __p1, __p;       __p1 = __first2; ++__p1;       _ForwardIterator1 __current = __first1;        while (__first1 != __last1)  {    while (__first1 != __last1)      {        if (__predicate(*__first1, *__first2))   break;        ++__first1;      }    while (__first1 != __last1 && !__predicate(*__first1, *__first2))      ++__first1;    if (__first1 == __last1)      return __last1;     __p = __p1;    __current = __first1;    if (++__current == __last1)      return __last1;     while (__predicate(*__current, *__p))      {        if (++__p == __last2)   return __first1;        if (++__current == __last1)   return __last1;      }    ++__first1;  }       return __first1;     } 
559   template<typename _InputIterator, typename _ForwardIterator,     typename _BinaryPredicate>     _InputIterator     find_first_of(_InputIterator __first1, _InputIterator __last1,     _ForwardIterator __first2, _ForwardIterator __last2,     _BinaryPredicate __comp)     {                            ;       ;        for ( ; __first1 != __last1; ++__first1)  for (_ForwardIterator __iter = __first2; __iter != __last2; ++__iter)    if (__comp(*__first1, *__iter))      return __first1;       return __last1;     } 
560 # 5285 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_algo.h" 3
561   template<typename _ForwardIterator1, typename _ForwardIterator2>     _ForwardIterator1     __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,         _ForwardIterator2 __first2, _ForwardIterator2 __last2,         forward_iterator_tag, forward_iterator_tag)     {       if (__first2 == __last2)  return __last1;       else  {    _ForwardIterator1 __result = __last1;    while (1)      {        _ForwardIterator1 __new_result   = std::search(__first1, __last1, __first2, __last2);        if (__new_result == __last1)   return __result;        else   {     __result = __new_result;     __first1 = __new_result;     ++__first1;   }      }  }     }    template<typename _ForwardIterator1, typename _ForwardIterator2,     typename _BinaryPredicate>     _ForwardIterator1     __find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,         _ForwardIterator2 __first2, _ForwardIterator2 __last2,         forward_iterator_tag, forward_iterator_tag,         _BinaryPredicate __comp)     {       if (__first2 == __last2)  return __last1;       else  {    _ForwardIterator1 __result = __last1;    while (1)      {        _ForwardIterator1 __new_result   = std::search(__first1, __last1, __first2, __last2, __comp);        if (__new_result == __last1)   return __result;        else   {     __result = __new_result;     __first1 = __new_result;     ++__first1;   }      }  }     }     template<typename _BidirectionalIterator1, typename _BidirectionalIterator2>     _BidirectionalIterator1     __find_end(_BidirectionalIterator1 __first1,         _BidirectionalIterator1 __last1,         _BidirectionalIterator2 __first2,         _BidirectionalIterator2 __last2,         bidirectional_iterator_tag, bidirectional_iterator_tag)     {                       typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1;       typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2;        _RevIterator1 __rlast1(__first1);       _RevIterator2 __rlast2(__first2);       _RevIterator1 __rresult = std::search(_RevIterator1(__last1), __rlast1,          _RevIterator2(__last2), __rlast2);        if (__rresult == __rlast1)  return __last1;       else  {    _BidirectionalIterator1 __result = __rresult.base();    std::advance(__result, -std::distance(__first2, __last2));    return __result;  }     }    template<typename _BidirectionalIterator1, typename _BidirectionalIterator2,     typename _BinaryPredicate>     _BidirectionalIterator1     __find_end(_BidirectionalIterator1 __first1,         _BidirectionalIterator1 __last1,         _BidirectionalIterator2 __first2,         _BidirectionalIterator2 __last2,         bidirectional_iterator_tag, bidirectional_iterator_tag,         _BinaryPredicate __comp)     {                       typedef reverse_iterator<_BidirectionalIterator1> _RevIterator1;       typedef reverse_iterator<_BidirectionalIterator2> _RevIterator2;        _RevIterator1 __rlast1(__first1);       _RevIterator2 __rlast2(__first2);       _RevIterator1 __rresult = std::search(_RevIterator1(__last1), __rlast1,          _RevIterator2(__last2), __rlast2,          __comp);        if (__rresult == __rlast1)  return __last1;       else  {    _BidirectionalIterator1 __result = __rresult.base();    std::advance(__result, -std::distance(__first2, __last2));    return __result;  }     } 
562   template<typename _ForwardIterator1, typename _ForwardIterator2,     typename _BinaryPredicate>     inline _ForwardIterator1     find_end(_ForwardIterator1 __first1, _ForwardIterator1 __last1,       _ForwardIterator2 __first2, _ForwardIterator2 __last2,       _BinaryPredicate __comp)     {                            ;       ;        return std::__find_end(__first1, __last1, __first2, __last2,         std::__iterator_category(__first1),         std::__iterator_category(__first2),         __comp);     }  }
563  
564 # 69 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/algorithm" 2 3
565         
566 # 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.tcc" 3
567  namespace std __attribute__ ((__visibility__ ("default"))) {    template<typename _Type>     inline bool     __is_null_pointer(_Type* __ptr)     { return __ptr == 0; }    template<typename _Type>     inline bool     __is_null_pointer(_Type)     { return false; }    template<typename _CharT, typename _Traits, typename _Alloc>     const typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     _Rep::_S_max_size = (((npos - sizeof(_Rep_base))/sizeof(_CharT)) - 1) / 4;    template<typename _CharT, typename _Traits, typename _Alloc>     const _CharT     basic_string<_CharT, _Traits, _Alloc>::     _Rep::_S_terminal = _CharT();    template<typename _CharT, typename _Traits, typename _Alloc>     const typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::npos;      template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::_Rep::_S_empty_rep_storage[     (sizeof(_Rep_base) + sizeof(_CharT) + sizeof(size_type) - 1) /      sizeof(size_type)];        template<typename _CharT, typename _Traits, typename _Alloc>     template<typename _InIterator>       _CharT*       basic_string<_CharT, _Traits, _Alloc>::       _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,      input_iterator_tag)       {   if (__beg == __end && __a == _Alloc())    return _S_empty_rep()._M_refdata();    _CharT __buf[128];  size_type __len = 0;  while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))    {      __buf[__len++] = *__beg;      ++__beg;    }  _Rep* __r = _Rep::_S_create(__len, size_type(0), __a);  _M_copy(__r->_M_refdata(), __buf, __len);  try    {      while (__beg != __end)        {   if (__len == __r->_M_capacity)     {        _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);       _M_copy(__another->_M_refdata(), __r->_M_refdata(), __len);       __r->_M_destroy(__a);       __r = __another;     }   __r->_M_refdata()[__len++] = *__beg;   ++__beg;        }    }  catch(...)    {      __r->_M_destroy(__a);      throw;    }  __r->_M_set_length_and_sharable(__len);  return __r->_M_refdata();       }    template<typename _CharT, typename _Traits, typename _Alloc>     template <typename _InIterator>       _CharT*       basic_string<_CharT, _Traits, _Alloc>::       _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,      forward_iterator_tag)       {   if (__beg == __end && __a == _Alloc())    return _S_empty_rep()._M_refdata();    if (__builtin_expect(__is_null_pointer(__beg) && __beg != __end, 0))    __throw_logic_error(("basic_string::_S_construct NULL not valid"));   const size_type __dnew = static_cast<size_type>(std::distance(__beg,               __end));   _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);  try    { _S_copy_chars(__r->_M_refdata(), __beg, __end); }  catch(...)    {      __r->_M_destroy(__a);      throw;    }  __r->_M_set_length_and_sharable(__dnew);  return __r->_M_refdata();       }    template<typename _CharT, typename _Traits, typename _Alloc>     _CharT*     basic_string<_CharT, _Traits, _Alloc>::     _S_construct(size_type __n, _CharT __c, const _Alloc& __a)     {        if (__n == 0 && __a == _Alloc())  return _S_empty_rep()._M_refdata();         _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);       if (__n)  _M_assign(__r->_M_refdata(), __n, __c);        __r->_M_set_length_and_sharable(__n);       return __r->_M_refdata();     }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>::     basic_string(const basic_string& __str)     : _M_dataplus(__str._M_rep()->_M_grab(_Alloc(__str.get_allocator()),        __str.get_allocator()),     __str.get_allocator())     { }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>::     basic_string(const _Alloc& __a)     : _M_dataplus(_S_construct(size_type(), _CharT(), __a), __a)     { }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>::     basic_string(const basic_string& __str, size_type __pos, size_type __n)     : _M_dataplus(_S_construct(__str._M_data()           + __str._M_check(__pos,       "basic_string::basic_string"),           __str._M_data() + __str._M_limit(__pos, __n)           + __pos, _Alloc()), _Alloc())     { }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>::     basic_string(const basic_string& __str, size_type __pos,    size_type __n, const _Alloc& __a)     : _M_dataplus(_S_construct(__str._M_data()           + __str._M_check(__pos,       "basic_string::basic_string"),           __str._M_data() + __str._M_limit(__pos, __n)           + __pos, __a), __a)     { }     template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>::     basic_string(const _CharT* __s, size_type __n, const _Alloc& __a)     : _M_dataplus(_S_construct(__s, __s + __n, __a), __a)     { }     template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>::     basic_string(const _CharT* __s, const _Alloc& __a)     : _M_dataplus(_S_construct(__s, __s ? __s + traits_type::length(__s) :           __s + npos, __a), __a)     { }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>::     basic_string(size_type __n, _CharT __c, const _Alloc& __a)     : _M_dataplus(_S_construct(__n, __c, __a), __a)     { }     template<typename _CharT, typename _Traits, typename _Alloc>     template<typename _InputIterator>     basic_string<_CharT, _Traits, _Alloc>::     basic_string(_InputIterator __beg, _InputIterator __end, const _Alloc& __a)     : _M_dataplus(_S_construct(__beg, __end, __a), __a)     { }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>&     basic_string<_CharT, _Traits, _Alloc>::     assign(const basic_string& __str)     {       if (_M_rep() != __str._M_rep())  {     const allocator_type __a = this->get_allocator();    _CharT* __tmp = __str._M_rep()->_M_grab(__a, __str.get_allocator());    _M_rep()->_M_dispose(__a);    _M_data(__tmp);  }       return *this;     }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>&     basic_string<_CharT, _Traits, _Alloc>::     assign(const _CharT* __s, size_type __n)     {       ;       _M_check_length(this->size(), __n, "basic_string::assign");       if (_M_disjunct(__s) || _M_rep()->_M_is_shared())  return _M_replace_safe(size_type(0), this->size(), __s, __n);       else  {     const size_type __pos = __s - _M_data();    if (__pos >= __n)      _M_copy(_M_data(), __s, __n);    else if (__pos)      _M_move(_M_data(), __s, __n);    _M_rep()->_M_set_length_and_sharable(__n);    return *this;  }      }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>&     basic_string<_CharT, _Traits, _Alloc>::     append(size_type __n, _CharT __c)     {       if (__n)  {    _M_check_length(size_type(0), __n, "basic_string::append");    const size_type __len = __n + this->size();    if (__len > this->capacity() || _M_rep()->_M_is_shared())      this->reserve(__len);    _M_assign(_M_data() + this->size(), __n, __c);    _M_rep()->_M_set_length_and_sharable(__len);  }       return *this;     }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>&     basic_string<_CharT, _Traits, _Alloc>::     append(const _CharT* __s, size_type __n)     {       ;       if (__n)  {    _M_check_length(size_type(0), __n, "basic_string::append");    const size_type __len = __n + this->size();    if (__len > this->capacity() || _M_rep()->_M_is_shared())      {        if (_M_disjunct(__s))   this->reserve(__len);        else   {     const size_type __off = __s - _M_data();     this->reserve(__len);     __s = _M_data() + __off;   }      }    _M_copy(_M_data() + this->size(), __s, __n);    _M_rep()->_M_set_length_and_sharable(__len);  }       return *this;     }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>&     basic_string<_CharT, _Traits, _Alloc>::     append(const basic_string& __str)     {       const size_type __size = __str.size();       if (__size)  {    const size_type __len = __size + this->size();    if (__len > this->capacity() || _M_rep()->_M_is_shared())      this->reserve(__len);    _M_copy(_M_data() + this->size(), __str._M_data(), __size);    _M_rep()->_M_set_length_and_sharable(__len);  }       return *this;     }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>&     basic_string<_CharT, _Traits, _Alloc>::     append(const basic_string& __str, size_type __pos, size_type __n)     {       __str._M_check(__pos, "basic_string::append");       __n = __str._M_limit(__pos, __n);       if (__n)  {    const size_type __len = __n + this->size();    if (__len > this->capacity() || _M_rep()->_M_is_shared())      this->reserve(__len);    _M_copy(_M_data() + this->size(), __str._M_data() + __pos, __n);    _M_rep()->_M_set_length_and_sharable(__len);  }       return *this;     }     template<typename _CharT, typename _Traits, typename _Alloc>      basic_string<_CharT, _Traits, _Alloc>&      basic_string<_CharT, _Traits, _Alloc>::      insert(size_type __pos, const _CharT* __s, size_type __n)      {        ;        _M_check(__pos, "basic_string::insert");        _M_check_length(size_type(0), __n, "basic_string::insert");        if (_M_disjunct(__s) || _M_rep()->_M_is_shared())          return _M_replace_safe(__pos, size_type(0), __s, __n);        else          {             const size_type __off = __s - _M_data();            _M_mutate(__pos, 0, __n);            __s = _M_data() + __off;            _CharT* __p = _M_data() + __pos;            if (__s + __n <= __p)              _M_copy(__p, __s, __n);            else if (__s >= __p)              _M_copy(__p, __s + __n, __n);            else              {         const size_type __nleft = __p - __s;                _M_copy(__p, __s, __nleft);                _M_copy(__p + __nleft, __p + __n, __n - __nleft);              }            return *this;          }      }     template<typename _CharT, typename _Traits, typename _Alloc>      basic_string<_CharT, _Traits, _Alloc>&      basic_string<_CharT, _Traits, _Alloc>::      replace(size_type __pos, size_type __n1, const _CharT* __s,       size_type __n2)      {        ;        _M_check(__pos, "basic_string::replace");        __n1 = _M_limit(__pos, __n1);        _M_check_length(__n1, __n2, "basic_string::replace");        bool __left;        if (_M_disjunct(__s) || _M_rep()->_M_is_shared())          return _M_replace_safe(__pos, __n1, __s, __n2);        else if ((__left = __s + __n2 <= _M_data() + __pos)   || _M_data() + __pos + __n1 <= __s)   {      size_type __off = __s - _M_data();     __left ? __off : (__off += __n2 - __n1);     _M_mutate(__pos, __n1, __n2);     _M_copy(_M_data() + __pos, _M_data() + __off, __n2);     return *this;   }        else   {      const basic_string __tmp(__s, __n2);     return _M_replace_safe(__pos, __n1, __tmp._M_data(), __n2);   }      }    template<typename _CharT, typename _Traits, typename _Alloc>     void     basic_string<_CharT, _Traits, _Alloc>::_Rep::     _M_destroy(const _Alloc& __a) throw ()     {       const size_type __size = sizeof(_Rep_base) +                         (this->_M_capacity + 1) * sizeof(_CharT);       _Raw_bytes_alloc(__a).deallocate(reinterpret_cast<char*>(this), __size);     }    template<typename _CharT, typename _Traits, typename _Alloc>     void     basic_string<_CharT, _Traits, _Alloc>::     _M_leak_hard()     {        if (_M_rep() == &_S_empty_rep())  return;        if (_M_rep()->_M_is_shared())  _M_mutate(0, 0, 0);       _M_rep()->_M_set_leaked();     }    template<typename _CharT, typename _Traits, typename _Alloc>     void     basic_string<_CharT, _Traits, _Alloc>::     _M_mutate(size_type __pos, size_type __len1, size_type __len2)     {       const size_type __old_size = this->size();       const size_type __new_size = __old_size + __len2 - __len1;       const size_type __how_much = __old_size - __pos - __len1;        if (__new_size > this->capacity() || _M_rep()->_M_is_shared())  {     const allocator_type __a = get_allocator();    _Rep* __r = _Rep::_S_create(__new_size, this->capacity(), __a);     if (__pos)      _M_copy(__r->_M_refdata(), _M_data(), __pos);    if (__how_much)      _M_copy(__r->_M_refdata() + __pos + __len2,       _M_data() + __pos + __len1, __how_much);     _M_rep()->_M_dispose(__a);    _M_data(__r->_M_refdata());  }       else if (__how_much && __len1 != __len2)  {     _M_move(_M_data() + __pos + __len2,     _M_data() + __pos + __len1, __how_much);  }       _M_rep()->_M_set_length_and_sharable(__new_size);     }    template<typename _CharT, typename _Traits, typename _Alloc>     void     basic_string<_CharT, _Traits, _Alloc>::     reserve(size_type __res)     {       if (__res != this->capacity() || _M_rep()->_M_is_shared())         {     if (__res < this->size())      __res = this->size();    const allocator_type __a = get_allocator();    _CharT* __tmp = _M_rep()->_M_clone(__a, __res - this->size());    _M_rep()->_M_dispose(__a);    _M_data(__tmp);         }     }    template<typename _CharT, typename _Traits, typename _Alloc>     void     basic_string<_CharT, _Traits, _Alloc>::     swap(basic_string& __s)     {       if (_M_rep()->_M_is_leaked())  _M_rep()->_M_set_sharable();       if (__s._M_rep()->_M_is_leaked())  __s._M_rep()->_M_set_sharable();       if (this->get_allocator() == __s.get_allocator())  {    _CharT* __tmp = _M_data();    _M_data(__s._M_data());    __s._M_data(__tmp);  }        else  {    const basic_string __tmp1(_M_ibegin(), _M_iend(),         __s.get_allocator());    const basic_string __tmp2(__s._M_ibegin(), __s._M_iend(),         this->get_allocator());    *this = __tmp2;    __s = __tmp1;  }     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::_Rep*     basic_string<_CharT, _Traits, _Alloc>::_Rep::     _S_create(size_type __capacity, size_type __old_capacity,        const _Alloc& __alloc)     {         if (__capacity > _S_max_size)  __throw_length_error(("basic_string::_S_create")); 
568 # 559 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_string.tcc" 3
569       const size_type __pagesize = 4096;       const size_type __malloc_header_size = 4 * sizeof(void*);              if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)  __capacity = 2 * __old_capacity;           size_type __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);        const size_type __adj_size = __size + __malloc_header_size;       if (__adj_size > __pagesize && __capacity > __old_capacity)  {    const size_type __extra = __pagesize - __adj_size % __pagesize;    __capacity += __extra / sizeof(_CharT);     if (__capacity > _S_max_size)      __capacity = _S_max_size;    __size = (__capacity + 1) * sizeof(_CharT) + sizeof(_Rep);  }          void* __place = _Raw_bytes_alloc(__alloc).allocate(__size);       _Rep *__p = new (__place) _Rep;       __p->_M_capacity = __capacity;              __p->_M_set_sharable();       return __p;     }    template<typename _CharT, typename _Traits, typename _Alloc>     _CharT*     basic_string<_CharT, _Traits, _Alloc>::_Rep::     _M_clone(const _Alloc& __alloc, size_type __res)     {        const size_type __requested_cap = this->_M_length + __res;       _Rep* __r = _Rep::_S_create(__requested_cap, this->_M_capacity,       __alloc);       if (this->_M_length)  _M_copy(__r->_M_refdata(), _M_refdata(), this->_M_length);        __r->_M_set_length_and_sharable(this->_M_length);       return __r->_M_refdata();     }    template<typename _CharT, typename _Traits, typename _Alloc>     void     basic_string<_CharT, _Traits, _Alloc>::     resize(size_type __n, _CharT __c)     {       const size_type __size = this->size();       _M_check_length(__size, __n, "basic_string::resize");       if (__size < __n)  this->append(__n - __size, __c);       else if (__n < __size)  this->erase(__n);      }    template<typename _CharT, typename _Traits, typename _Alloc>     template<typename _InputIterator>       basic_string<_CharT, _Traits, _Alloc>&       basic_string<_CharT, _Traits, _Alloc>::       _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,      _InputIterator __k2, __false_type)       {  const basic_string __s(__k1, __k2);  const size_type __n1 = __i2 - __i1;  _M_check_length(__n1, __s.size(), "basic_string::_M_replace_dispatch");  return _M_replace_safe(__i1 - _M_ibegin(), __n1, __s._M_data(),           __s.size());       }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>&     basic_string<_CharT, _Traits, _Alloc>::     _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,      _CharT __c)     {       _M_check_length(__n1, __n2, "basic_string::_M_replace_aux");       _M_mutate(__pos1, __n1, __n2);       if (__n2)  _M_assign(_M_data() + __pos1, __n2, __c);       return *this;     }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>&     basic_string<_CharT, _Traits, _Alloc>::     _M_replace_safe(size_type __pos1, size_type __n1, const _CharT* __s,       size_type __n2)     {       _M_mutate(__pos1, __n1, __n2);       if (__n2)  _M_copy(_M_data() + __pos1, __s, __n2);       return *this;     }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>     operator+(const _CharT* __lhs,        const basic_string<_CharT, _Traits, _Alloc>& __rhs)     {       ;       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;       typedef typename __string_type::size_type __size_type;       const __size_type __len = _Traits::length(__lhs);       __string_type __str;       __str.reserve(__len + __rhs.size());       __str.append(__lhs, __len);       __str.append(__rhs);       return __str;     }    template<typename _CharT, typename _Traits, typename _Alloc>     basic_string<_CharT, _Traits, _Alloc>     operator+(_CharT __lhs, const basic_string<_CharT, _Traits, _Alloc>& __rhs)     {       typedef basic_string<_CharT, _Traits, _Alloc> __string_type;       typedef typename __string_type::size_type __size_type;       __string_type __str;       const __size_type __len = __rhs.size();       __str.reserve(__len + 1);       __str.append(__size_type(1), __lhs);       __str.append(__rhs);       return __str;     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     copy(_CharT* __s, size_type __n, size_type __pos) const     {       _M_check(__pos, "basic_string::copy");       __n = _M_limit(__pos, __n);       ;       if (__n)  _M_copy(__s, _M_data() + __pos, __n);        return __n;     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     find(const _CharT* __s, size_type __pos, size_type __n) const     {       ;       const size_type __size = this->size();       const _CharT* __data = _M_data();        if (__n == 0)  return __pos <= __size ? __pos : npos;        if (__n <= __size)  {    for (; __pos <= __size - __n; ++__pos)      if (traits_type::eq(__data[__pos], __s[0])   && traits_type::compare(__data + __pos + 1,      __s + 1, __n - 1) == 0)        return __pos;  }       return npos;     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     find(_CharT __c, size_type __pos) const     {       size_type __ret = npos;       const size_type __size = this->size();       if (__pos < __size)  {    const _CharT* __data = _M_data();    const size_type __n = __size - __pos;    const _CharT* __p = traits_type::find(__data + __pos, __n, __c);    if (__p)      __ret = __p - __data;  }       return __ret;     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     rfind(const _CharT* __s, size_type __pos, size_type __n) const     {       ;       const size_type __size = this->size();       if (__n <= __size)  {    __pos = std::min(size_type(__size - __n), __pos);    const _CharT* __data = _M_data();    do      {        if (traits_type::compare(__data + __pos, __s, __n) == 0)   return __pos;      }    while (__pos-- > 0);  }       return npos;     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     rfind(_CharT __c, size_type __pos) const     {       size_type __size = this->size();       if (__size)  {    if (--__size > __pos)      __size = __pos;    for (++__size; __size-- > 0; )      if (traits_type::eq(_M_data()[__size], __c))        return __size;  }       return npos;     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     find_first_of(const _CharT* __s, size_type __pos, size_type __n) const     {       ;       for (; __n && __pos < this->size(); ++__pos)  {    const _CharT* __p = traits_type::find(__s, __n, _M_data()[__pos]);    if (__p)      return __pos;  }       return npos;     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     find_last_of(const _CharT* __s, size_type __pos, size_type __n) const     {       ;       size_type __size = this->size();       if (__size && __n)  {    if (--__size > __pos)      __size = __pos;    do      {        if (traits_type::find(__s, __n, _M_data()[__size]))   return __size;      }    while (__size-- != 0);  }       return npos;     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const     {       ;       for (; __pos < this->size(); ++__pos)  if (!traits_type::find(__s, __n, _M_data()[__pos]))    return __pos;       return npos;     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     find_first_not_of(_CharT __c, size_type __pos) const     {       for (; __pos < this->size(); ++__pos)  if (!traits_type::eq(_M_data()[__pos], __c))    return __pos;       return npos;     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const     {       ;       size_type __size = this->size();       if (__size)  {    if (--__size > __pos)      __size = __pos;    do      {        if (!traits_type::find(__s, __n, _M_data()[__size]))   return __size;      }    while (__size--);  }       return npos;     }    template<typename _CharT, typename _Traits, typename _Alloc>     typename basic_string<_CharT, _Traits, _Alloc>::size_type     basic_string<_CharT, _Traits, _Alloc>::     find_last_not_of(_CharT __c, size_type __pos) const     {       size_type __size = this->size();       if (__size)  {    if (--__size > __pos)      __size = __pos;    do      {        if (!traits_type::eq(_M_data()[__size], __c))   return __size;      }    while (__size--);  }       return npos;     }    template<typename _CharT, typename _Traits, typename _Alloc>     int     basic_string<_CharT, _Traits, _Alloc>::     compare(size_type __pos, size_type __n, const basic_string& __str) const     {       _M_check(__pos, "basic_string::compare");       __n = _M_limit(__pos, __n);       const size_type __osize = __str.size();       const size_type __len = std::min(__n, __osize);       int __r = traits_type::compare(_M_data() + __pos, __str.data(), __len);       if (!__r)  __r = __n - __osize;       return __r;     }    template<typename _CharT, typename _Traits, typename _Alloc>     int     basic_string<_CharT, _Traits, _Alloc>::     compare(size_type __pos1, size_type __n1, const basic_string& __str,      size_type __pos2, size_type __n2) const     {       _M_check(__pos1, "basic_string::compare");       __str._M_check(__pos2, "basic_string::compare");       __n1 = _M_limit(__pos1, __n1);       __n2 = __str._M_limit(__pos2, __n2);       const size_type __len = std::min(__n1, __n2);       int __r = traits_type::compare(_M_data() + __pos1,          __str.data() + __pos2, __len);       if (!__r)  __r = __n1 - __n2;       return __r;     }    template<typename _CharT, typename _Traits, typename _Alloc>     int     basic_string<_CharT, _Traits, _Alloc>::     compare(const _CharT* __s) const     {       ;       const size_type __size = this->size();       const size_type __osize = traits_type::length(__s);       const size_type __len = std::min(__size, __osize);       int __r = traits_type::compare(_M_data(), __s, __len);       if (!__r)  __r = __size - __osize;       return __r;     }    template<typename _CharT, typename _Traits, typename _Alloc>     int     basic_string <_CharT, _Traits, _Alloc>::     compare(size_type __pos, size_type __n1, const _CharT* __s) const     {       ;       _M_check(__pos, "basic_string::compare");       __n1 = _M_limit(__pos, __n1);       const size_type __osize = traits_type::length(__s);       const size_type __len = std::min(__n1, __osize);       int __r = traits_type::compare(_M_data() + __pos, __s, __len);       if (!__r)  __r = __n1 - __osize;       return __r;     }    template<typename _CharT, typename _Traits, typename _Alloc>     int     basic_string <_CharT, _Traits, _Alloc>::     compare(size_type __pos, size_type __n1, const _CharT* __s,      size_type __n2) const     {       ;       _M_check(__pos, "basic_string::compare");       __n1 = _M_limit(__pos, __n1);       const size_type __len = std::min(__n1, __n2);       int __r = traits_type::compare(_M_data() + __pos, __s, __len);       if (!__r)  __r = __n1 - __n2;       return __r;     }        extern template class basic_string<char>;   extern template     basic_istream<char>&     operator>>(basic_istream<char>&, string&);   extern template     basic_ostream<char>&     operator<<(basic_ostream<char>&, const string&);   extern template     basic_istream<char>&     getline(basic_istream<char>&, string&, char);   extern template     basic_istream<char>&     getline(basic_istream<char>&, string&);     extern template class basic_string<wchar_t>;   extern template     basic_istream<wchar_t>&     operator>>(basic_istream<wchar_t>&, wstring&);   extern template     basic_ostream<wchar_t>&     operator<<(basic_ostream<wchar_t>&, const wstring&);   extern template     basic_istream<wchar_t>&     getline(basic_istream<wchar_t>&, wstring&, wchar_t);   extern template     basic_istream<wchar_t>&     getline(basic_istream<wchar_t>&, wstring&);    }
570  
571  namespace std __attribute__ ((__visibility__ ("default"))) {         class logic_error : public exception   {     string _M_msg;    public:      explicit     logic_error(const string& __arg);      virtual     ~logic_error() throw();        virtual const char*     what() const throw();   };      class domain_error : public logic_error   {   public:     explicit domain_error(const string& __arg);   };     class invalid_argument : public logic_error   {   public:     explicit invalid_argument(const string& __arg);   };      class length_error : public logic_error   {   public:     explicit length_error(const string& __arg);   };      class out_of_range : public logic_error   {   public:     explicit out_of_range(const string& __arg);   };         class runtime_error : public exception   {     string _M_msg;    public:      explicit     runtime_error(const string& __arg);      virtual     ~runtime_error() throw();        virtual const char*     what() const throw();   };     class range_error : public runtime_error   {   public:     explicit range_error(const string& __arg);   };     class overflow_error : public runtime_error   {   public:     explicit overflow_error(const string& __arg);   };     class underflow_error : public runtime_error   {   public:     explicit underflow_error(const string& __arg);   };  }
572  
573 # 29 "/usr/include/boost/array.hpp" 2 3 4
574 # 433 "/usr/include/boost/config/suffix.hpp" 3 4
575 namespace boost{     __extension__ typedef long long long_long_type;    __extension__ typedef unsigned long long ulong_long_type;     }
576  
577         
578 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/localefwd.h" 3
579       namespace std __attribute__ ((__visibility__ ("default"))) {     class locale;     template<typename _CharT>     inline bool     isspace(_CharT, const locale&);    template<typename _CharT>     inline bool     isprint(_CharT, const locale&);    template<typename _CharT>     inline bool     iscntrl(_CharT, const locale&);    template<typename _CharT>     inline bool     isupper(_CharT, const locale&);    template<typename _CharT>     inline bool     islower(_CharT, const locale&);    template<typename _CharT>     inline bool     isalpha(_CharT, const locale&);    template<typename _CharT>     inline bool     isdigit(_CharT, const locale&);    template<typename _CharT>     inline bool     ispunct(_CharT, const locale&);    template<typename _CharT>     inline bool     isxdigit(_CharT, const locale&);    template<typename _CharT>     inline bool     isalnum(_CharT, const locale&);    template<typename _CharT>     inline bool     isgraph(_CharT, const locale&);    template<typename _CharT>     inline _CharT     toupper(_CharT, const locale&);    template<typename _CharT>     inline _CharT     tolower(_CharT, const locale&);     class ctype_base;   template<typename _CharT>     class ctype;   template<> class ctype<char>;    template<> class ctype<wchar_t>;    template<typename _CharT>     class ctype_byname;     class codecvt_base;   class __enc_traits;   template<typename _InternT, typename _ExternT, typename _StateT>     class codecvt;   template<> class codecvt<char, char, mbstate_t>;    template<> class codecvt<wchar_t, char, mbstate_t>;    template<typename _InternT, typename _ExternT, typename _StateT>     class codecvt_byname;      template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >     class num_get;   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >     class num_put;    template<typename _CharT> class numpunct;   template<typename _CharT> class numpunct_byname;     template<typename _CharT>     class collate;   template<typename _CharT> class     collate_byname;     class time_base;   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >     class time_get;   template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >     class time_get_byname;   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >     class time_put;   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >     class time_put_byname;     class money_base;    template<typename _CharT, typename _InIter = istreambuf_iterator<_CharT> >     class money_get;   template<typename _CharT, typename _OutIter = ostreambuf_iterator<_CharT> >     class money_put;    template<typename _CharT, bool _Intl = false>     class moneypunct;   template<typename _CharT, bool _Intl = false>     class moneypunct_byname;     class messages_base;   template<typename _CharT>     class messages;   template<typename _CharT>     class messages_byname;    template<typename _Facet>     bool     has_facet(const locale& __loc) throw();    template<typename _Facet>     const _Facet&     use_facet(const locale& __loc);    template<typename _Facet>     inline const _Facet&     __check_facet(const _Facet* __f)     {       if (!__f)  __throw_bad_cast();       return *__f;     }  }
580 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
581       namespace std __attribute__ ((__visibility__ ("default"))) { 
582 # 66 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
583   class locale   {   public:       typedef int category;       class facet;     class id;     class _Impl;      friend class facet;     friend class _Impl;      template<typename _Facet>       friend bool       has_facet(const locale&) throw();      template<typename _Facet>       friend const _Facet&       use_facet(const locale&);      template<typename _Cache>       friend struct __use_cache; 
584 # 104 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
585     static const category none = 0;     static const category ctype = 1L << 0;     static const category numeric = 1L << 1;     static const category collate = 1L << 2;     static const category time = 1L << 3;     static const category monetary = 1L << 4;     static const category messages = 1L << 5;     static const category all = (ctype | numeric | collate |         time | monetary | messages); 
586 # 123 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
587     locale() throw(); 
588 # 132 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
589     locale(const locale& __base, const locale& __add, category __cat); 
590 # 182 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
591     template<typename _Facet>       locale(const locale& __other, _Facet* __f);       ~locale() throw(); 
592     template<typename _Facet>       locale       combine(const locale& __other) const;           string     name() const; 
593 # 230 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
594     bool     operator==(const locale& __other) const throw ();            inline bool     operator!=(const locale& __other) const throw ()     { return !(this->operator==(__other)); } 
595 # 258 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
596     template<typename _Char, typename _Traits, typename _Alloc>       bool       operator()(const basic_string<_Char, _Traits, _Alloc>& __s1,    const basic_string<_Char, _Traits, _Alloc>& __s2) const; 
597 # 274 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
598     static locale     global(const locale&);         static const locale&     classic();    private:      _Impl* _M_impl;       static _Impl* _S_classic;       static _Impl* _S_global;          static const char* const* const _S_categories; 
599 # 309 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
600     enum { _S_categories_size = 6 + 6 };       static __gthread_once_t _S_once;       explicit     locale(_Impl*) throw();      static void     _S_initialize();      static void     _S_initialize_once();      static category     _S_normalize_category(category);      void     _M_coalesce(const locale& __base, const locale& __add, category __cat);   }; 
601 # 342 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
602   class locale::facet   {   private:     friend class locale;     friend class locale::_Impl;      mutable _Atomic_word _M_refcount;       static __c_locale _S_c_locale;       static const char _S_c_name[2];       static __gthread_once_t _S_once;       static void     _S_initialize_once();    protected: 
603 # 373 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
604     explicit     facet(size_t __refs = 0) throw() : _M_refcount(__refs ? 1 : 0)     { }       virtual     ~facet();      static void     _S_create_c_locale(__c_locale& __cloc, const char* __s,          __c_locale __old = 0);      static __c_locale     _S_clone_c_locale(__c_locale& __cloc);      static void     _S_destroy_c_locale(__c_locale& __cloc);        static __c_locale     _S_get_c_locale();      static const char*     _S_get_c_name();    private:     inline void     _M_add_reference() const throw()     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }      inline void     _M_remove_reference() const throw()     {       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)  {    try      { delete this; }    catch (...)      { }  }     }      facet(const facet&);      facet&     operator=(const facet&);   }; 
605 # 433 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_classes.h" 3
606   class locale::id   {   private:     friend class locale;     friend class locale::_Impl;      template<typename _Facet>       friend const _Facet&       use_facet(const locale&);      template<typename _Facet>       friend bool       has_facet(const locale&) throw ();         mutable size_t _M_index;       static _Atomic_word _S_refcount;      void     operator=(const id&);      id(const id&);    public:        id() { }      size_t     _M_id() const;   };      class locale::_Impl   {   public:      friend class locale;     friend class locale::facet;      template<typename _Facet>       friend bool       has_facet(const locale&) throw();      template<typename _Facet>       friend const _Facet&       use_facet(const locale&);      template<typename _Cache>       friend struct __use_cache;    private:      _Atomic_word _M_refcount;     const facet** _M_facets;     size_t _M_facets_size;     const facet** _M_caches;     char** _M_names;     static const locale::id* const _S_id_ctype[];     static const locale::id* const _S_id_numeric[];     static const locale::id* const _S_id_collate[];     static const locale::id* const _S_id_time[];     static const locale::id* const _S_id_monetary[];     static const locale::id* const _S_id_messages[];     static const locale::id* const* const _S_facet_categories[];      inline void     _M_add_reference() throw()     { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }      inline void     _M_remove_reference() throw()     {       if (__gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1) == 1)  {    try      { delete this; }    catch(...)      { }  }     }      _Impl(const _Impl&, size_t);     _Impl(const char*, size_t);     _Impl(size_t) throw();     ~_Impl() throw();      _Impl(const _Impl&);      void     operator=(const _Impl&);      inline bool     _M_check_same_name()     {       bool __ret = true;       if (_M_names[1])   for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i)    __ret = std::strcmp(_M_names[__i], _M_names[__i + 1]) == 0;       return __ret;     }      void     _M_replace_categories(const _Impl*, category);      void     _M_replace_category(const _Impl*, const locale::id* const*);      void     _M_replace_facet(const _Impl*, const locale::id*);      void     _M_install_facet(const locale::id*, const facet*);      template<typename _Facet>       inline void       _M_init_facet(_Facet* __facet)       { _M_install_facet(&_Facet::id, __facet); }      void     _M_install_cache(const facet*, size_t);   };    template<typename _Facet>     locale::locale(const locale& __other, _Facet* __f)     {       _M_impl = new _Impl(*__other._M_impl, 1);        try  { _M_impl->_M_install_facet(&_Facet::id, __f); }       catch(...)  {    _M_impl->_M_remove_reference();    throw;  }       delete [] _M_impl->_M_names[0];       _M_impl->_M_names[0] = 0;     }  }
607  
608 # 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 2 3
609  namespace std __attribute__ ((__visibility__ ("default"))) {        enum _Ios_Fmtflags     {       _S_boolalpha = 1L << 0,       _S_dec = 1L << 1,       _S_fixed = 1L << 2,       _S_hex = 1L << 3,       _S_internal = 1L << 4,       _S_left = 1L << 5,       _S_oct = 1L << 6,       _S_right = 1L << 7,       _S_scientific = 1L << 8,       _S_showbase = 1L << 9,       _S_showpoint = 1L << 10,       _S_showpos = 1L << 11,       _S_skipws = 1L << 12,       _S_unitbuf = 1L << 13,       _S_uppercase = 1L << 14,       _S_adjustfield = _S_left | _S_right | _S_internal,       _S_basefield = _S_dec | _S_oct | _S_hex,       _S_floatfield = _S_scientific | _S_fixed,       _S_ios_fmtflags_end = 1L << 16     };    inline _Ios_Fmtflags   operator&(_Ios_Fmtflags __a, _Ios_Fmtflags __b)   { return _Ios_Fmtflags(static_cast<int>(__a) & static_cast<int>(__b)); }    inline _Ios_Fmtflags   operator|(_Ios_Fmtflags __a, _Ios_Fmtflags __b)   { return _Ios_Fmtflags(static_cast<int>(__a) | static_cast<int>(__b)); }    inline _Ios_Fmtflags   operator^(_Ios_Fmtflags __a, _Ios_Fmtflags __b)   { return _Ios_Fmtflags(static_cast<int>(__a) ^ static_cast<int>(__b)); }    inline _Ios_Fmtflags&   operator|=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)   { return __a = __a | __b; }    inline _Ios_Fmtflags&   operator&=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)   { return __a = __a & __b; }    inline _Ios_Fmtflags&   operator^=(_Ios_Fmtflags& __a, _Ios_Fmtflags __b)   { return __a = __a ^ __b; }    inline _Ios_Fmtflags   operator~(_Ios_Fmtflags __a)   { return _Ios_Fmtflags(~static_cast<int>(__a)); }     enum _Ios_Openmode     {       _S_app = 1L << 0,       _S_ate = 1L << 1,       _S_bin = 1L << 2,       _S_in = 1L << 3,       _S_out = 1L << 4,       _S_trunc = 1L << 5,       _S_ios_openmode_end = 1L << 16     };    inline _Ios_Openmode   operator&(_Ios_Openmode __a, _Ios_Openmode __b)   { return _Ios_Openmode(static_cast<int>(__a) & static_cast<int>(__b)); }    inline _Ios_Openmode   operator|(_Ios_Openmode __a, _Ios_Openmode __b)   { return _Ios_Openmode(static_cast<int>(__a) | static_cast<int>(__b)); }    inline _Ios_Openmode   operator^(_Ios_Openmode __a, _Ios_Openmode __b)   { return _Ios_Openmode(static_cast<int>(__a) ^ static_cast<int>(__b)); }    inline _Ios_Openmode&   operator|=(_Ios_Openmode& __a, _Ios_Openmode __b)   { return __a = __a | __b; }    inline _Ios_Openmode&   operator&=(_Ios_Openmode& __a, _Ios_Openmode __b)   { return __a = __a & __b; }    inline _Ios_Openmode&   operator^=(_Ios_Openmode& __a, _Ios_Openmode __b)   { return __a = __a ^ __b; }    inline _Ios_Openmode   operator~(_Ios_Openmode __a)   { return _Ios_Openmode(~static_cast<int>(__a)); }     enum _Ios_Iostate     {       _S_goodbit = 0,       _S_badbit = 1L << 0,       _S_eofbit = 1L << 1,       _S_failbit = 1L << 2,       _S_ios_iostate_end = 1L << 16     };    inline _Ios_Iostate   operator&(_Ios_Iostate __a, _Ios_Iostate __b)   { return _Ios_Iostate(static_cast<int>(__a) & static_cast<int>(__b)); }    inline _Ios_Iostate   operator|(_Ios_Iostate __a, _Ios_Iostate __b)   { return _Ios_Iostate(static_cast<int>(__a) | static_cast<int>(__b)); }    inline _Ios_Iostate   operator^(_Ios_Iostate __a, _Ios_Iostate __b)   { return _Ios_Iostate(static_cast<int>(__a) ^ static_cast<int>(__b)); }    inline _Ios_Iostate&   operator|=(_Ios_Iostate& __a, _Ios_Iostate __b)   { return __a = __a | __b; }    inline _Ios_Iostate&   operator&=(_Ios_Iostate& __a, _Ios_Iostate __b)   { return __a = __a & __b; }    inline _Ios_Iostate&   operator^=(_Ios_Iostate& __a, _Ios_Iostate __b)   { return __a = __a ^ __b; }    inline _Ios_Iostate   operator~(_Ios_Iostate __a)   { return _Ios_Iostate(~static_cast<int>(__a)); }    enum _Ios_Seekdir     {       _S_beg = 0,       _S_cur = 1,       _S_end = 2,       _S_ios_seekdir_end = 1L << 16     }; 
610 # 201 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
611   class ios_base   {   public:        class failure : public exception     {     public:         explicit       failure(const string& __str) throw();          virtual       ~failure() throw();        virtual const char*       what() const throw();      private:       string _M_msg;     }; 
612 # 253 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
613     typedef _Ios_Fmtflags fmtflags;       static const fmtflags boolalpha = _S_boolalpha;       static const fmtflags dec = _S_dec;       static const fmtflags fixed = _S_fixed;       static const fmtflags hex = _S_hex;         static const fmtflags internal = _S_internal;        static const fmtflags left = _S_left;       static const fmtflags oct = _S_oct;        static const fmtflags right = _S_right;       static const fmtflags scientific = _S_scientific;        static const fmtflags showbase = _S_showbase;        static const fmtflags showpoint = _S_showpoint;       static const fmtflags showpos = _S_showpos;       static const fmtflags skipws = _S_skipws;       static const fmtflags unitbuf = _S_unitbuf;        static const fmtflags uppercase = _S_uppercase;       static const fmtflags adjustfield = _S_adjustfield;       static const fmtflags basefield = _S_basefield;       static const fmtflags floatfield = _S_floatfield; 
614 # 328 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
615     typedef _Ios_Iostate iostate;        static const iostate badbit = _S_badbit;       static const iostate eofbit = _S_eofbit;         static const iostate failbit = _S_failbit;       static const iostate goodbit = _S_goodbit; 
616 # 359 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
617     typedef _Ios_Openmode openmode;       static const openmode app = _S_app;       static const openmode ate = _S_ate;          static const openmode binary = _S_bin;       static const openmode in = _S_in;       static const openmode out = _S_out;       static const openmode trunc = _S_trunc; 
618 # 392 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
619     typedef _Ios_Seekdir seekdir;       static const seekdir beg = _S_beg;       static const seekdir cur = _S_cur;       static const seekdir end = _S_end;       typedef int io_state;     typedef int open_mode;     typedef int seek_dir;      typedef std::streampos streampos;     typedef std::streamoff streamoff; 
620 # 418 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
621     enum event     {       erase_event,       imbue_event,       copyfmt_event     }; 
622 # 435 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
623     typedef void (*event_callback) (event, ios_base&, int); 
624 # 447 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
625     void     register_callback(event_callback __fn, int __index);    protected:           streamsize _M_precision;     streamsize _M_width;     fmtflags _M_flags;     iostate _M_exception;     iostate _M_streambuf_state;         struct _Callback_list     {        _Callback_list* _M_next;       ios_base::event_callback _M_fn;       int _M_index;       _Atomic_word _M_refcount;        _Callback_list(ios_base::event_callback __fn, int __index,        _Callback_list* __cb)       : _M_next(__cb), _M_fn(__fn), _M_index(__index), _M_refcount(0) { }        void       _M_add_reference() { __gnu_cxx::__atomic_add_dispatch(&_M_refcount, 1); }         int       _M_remove_reference()       { return __gnu_cxx::__exchange_and_add_dispatch(&_M_refcount, -1); }     };       _Callback_list* _M_callbacks;      void     _M_call_callbacks(event __ev) throw();      void     _M_dispose_callbacks(void);       struct _Words     {       void* _M_pword;       long _M_iword;       _Words() : _M_pword(0), _M_iword(0) { }     };       _Words _M_word_zero;        enum { _S_local_word_size = 8 };     _Words _M_local_word[_S_local_word_size];       int _M_word_size;     _Words* _M_word;      _Words&     _M_grow_words(int __index, bool __iword);       locale _M_ios_locale;      void     _M_init();    public:          class Init     {       friend class ios_base;     public:       Init();       ~Init();      private:       static _Atomic_word _S_refcount;       static bool _S_synced_with_stdio;     };           inline fmtflags     flags() const { return _M_flags; } 
626     inline fmtflags     setf(fmtflags __fmtfl)     {       fmtflags __old = _M_flags;       _M_flags |= __fmtfl;       return __old;     } 
627 # 590 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
628     inline fmtflags     setf(fmtflags __fmtfl, fmtflags __mask)     {       fmtflags __old = _M_flags;       _M_flags &= ~__mask;       _M_flags |= (__fmtfl & __mask);       return __old;     }            inline void     unsetf(fmtflags __mask) { _M_flags &= ~__mask; } 
629 # 617 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
630     inline streamsize     precision() const { return _M_precision; }           inline streamsize     precision(streamsize __prec)     {       streamsize __old = _M_precision;       _M_precision = __prec;       return __old;     }            inline streamsize     width() const { return _M_width; }           inline streamsize     width(streamsize __wide)     {       streamsize __old = _M_width;       _M_width = __wide;       return __old;     } 
631 # 666 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
632     inline const locale&     _M_getloc() const { return _M_ios_locale; } 
633 # 717 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
634     static int     xalloc() throw(); 
635     inline void*&     pword(int __ix)     {       _Words& __word = (__ix < _M_word_size)    ? _M_word[__ix] : _M_grow_words(__ix, false);       return __word._M_pword;     } 
636 # 771 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/ios_base.h" 3
637     virtual ~ios_base();    protected:     ios_base();      private:     ios_base(const ios_base&);      ios_base&     operator=(const ios_base&);   };      inline ios_base&   boolalpha(ios_base& __base)   {     __base.setf(ios_base::boolalpha);     return __base;   }     inline ios_base&   noboolalpha(ios_base& __base)   {     __base.unsetf(ios_base::boolalpha);     return __base;   }     inline ios_base&   showbase(ios_base& __base)   {     __base.setf(ios_base::showbase);     return __base;   }     inline ios_base&   noshowbase(ios_base& __base)   {     __base.unsetf(ios_base::showbase);     return __base;   }     inline ios_base&   showpoint(ios_base& __base)   {     __base.setf(ios_base::showpoint);     return __base;   }     inline ios_base&   noshowpoint(ios_base& __base)   {     __base.unsetf(ios_base::showpoint);     return __base;   }     inline ios_base&   showpos(ios_base& __base)   {     __base.setf(ios_base::showpos);     return __base;   }     inline ios_base&   noshowpos(ios_base& __base)   {     __base.unsetf(ios_base::showpos);     return __base;   }     inline ios_base&   skipws(ios_base& __base)   {     __base.setf(ios_base::skipws);     return __base;   }     inline ios_base&   noskipws(ios_base& __base)   {     __base.unsetf(ios_base::skipws);     return __base;   }     inline ios_base&   uppercase(ios_base& __base)   {     __base.setf(ios_base::uppercase);     return __base;   }     inline ios_base&   nouppercase(ios_base& __base)   {     __base.unsetf(ios_base::uppercase);     return __base;   }     inline ios_base&   unitbuf(ios_base& __base)   {      __base.setf(ios_base::unitbuf);      return __base;   }     inline ios_base&   nounitbuf(ios_base& __base)   {      __base.unsetf(ios_base::unitbuf);      return __base;   }      inline ios_base&   internal(ios_base& __base)   {      __base.setf(ios_base::internal, ios_base::adjustfield);      return __base;   }     inline ios_base&   left(ios_base& __base)   {     __base.setf(ios_base::left, ios_base::adjustfield);     return __base;   }     inline ios_base&   right(ios_base& __base)   {     __base.setf(ios_base::right, ios_base::adjustfield);     return __base;   }      inline ios_base&   dec(ios_base& __base)   {     __base.setf(ios_base::dec, ios_base::basefield);     return __base;   }     inline ios_base&   hex(ios_base& __base)   {     __base.setf(ios_base::hex, ios_base::basefield);     return __base;   }     inline ios_base&   oct(ios_base& __base)   {     __base.setf(ios_base::oct, ios_base::basefield);     return __base;   }      inline ios_base&   fixed(ios_base& __base)   {     __base.setf(ios_base::fixed, ios_base::floatfield);     return __base;   }     inline ios_base&   scientific(ios_base& __base)   {     __base.setf(ios_base::scientific, ios_base::floatfield);     return __base;   }  }
638 namespace std __attribute__ ((__visibility__ ("default"))) {         template<typename _CharT, typename _Traits>     streamsize     __copy_streambufs_eof(basic_streambuf<_CharT, _Traits>*,      basic_streambuf<_CharT, _Traits>*, bool&); 
639 # 123 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
640   template<typename _CharT, typename _Traits>     class basic_streambuf     {     public:             typedef _CharT char_type;       typedef _Traits traits_type;       typedef typename traits_type::int_type int_type;       typedef typename traits_type::pos_type pos_type;       typedef typename traits_type::off_type off_type; 
641 # 146 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
642       typedef basic_streambuf<char_type, traits_type> __streambuf_type;         friend class basic_ios<char_type, traits_type>;       friend class basic_istream<char_type, traits_type>;       friend class basic_ostream<char_type, traits_type>;       friend class istreambuf_iterator<char_type, traits_type>;       friend class ostreambuf_iterator<char_type, traits_type>;        friend streamsize       __copy_streambufs_eof<>(__streambuf_type*, __streambuf_type*, bool&);        template<typename _CharT2>         friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,             _CharT2*>::__type         __copy_aux(istreambuf_iterator<_CharT2>,      istreambuf_iterator<_CharT2>, _CharT2*);        template<typename _CharT2>         friend typename __gnu_cxx::__enable_if<__is_char<_CharT2>::__value,       istreambuf_iterator<_CharT2> >::__type         find(istreambuf_iterator<_CharT2>, istreambuf_iterator<_CharT2>,       const _CharT2&);        template<typename _CharT2, typename _Traits2>         friend basic_istream<_CharT2, _Traits2>&         operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);        template<typename _CharT2, typename _Traits2, typename _Alloc>         friend basic_istream<_CharT2, _Traits2>&         operator>>(basic_istream<_CharT2, _Traits2>&,      basic_string<_CharT2, _Traits2, _Alloc>&);        template<typename _CharT2, typename _Traits2, typename _Alloc>         friend basic_istream<_CharT2, _Traits2>&         getline(basic_istream<_CharT2, _Traits2>&,   basic_string<_CharT2, _Traits2, _Alloc>&, _CharT2);      protected: 
643 # 195 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
644       char_type* _M_in_beg;       char_type* _M_in_cur;       char_type* _M_in_end;       char_type* _M_out_beg;       char_type* _M_out_cur;       char_type* _M_out_end;             locale _M_buf_locale;    public:        virtual       ~basic_streambuf()       { } 
645 # 223 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
646       locale       pubimbue(const locale &__loc)       {  locale __tmp(this->getloc());  this->imbue(__loc);  _M_buf_locale = __loc;  return __tmp;       } 
647       streamsize       sputn(const char_type* __s, streamsize __n)       { return this->xsputn(__s, __n); }      protected: 
648 # 459 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
649       basic_streambuf()       : _M_in_beg(0), _M_in_cur(0), _M_in_end(0),       _M_out_beg(0), _M_out_cur(0), _M_out_end(0),       _M_buf_locale(locale())       { } 
650 # 477 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
651       char_type*       eback() const { return _M_in_beg; }        char_type*       gptr() const { return _M_in_cur; }        char_type*       egptr() const { return _M_in_end; } 
652 # 493 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
653       void       gbump(int __n) { _M_in_cur += __n; } 
654 # 504 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
655       void       setg(char_type* __gbeg, char_type* __gnext, char_type* __gend)       {  _M_in_beg = __gbeg;  _M_in_cur = __gnext;  _M_in_end = __gend;       } 
656 # 524 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
657       char_type*       pbase() const { return _M_out_beg; }        char_type*       pptr() const { return _M_out_cur; }        char_type*       epptr() const { return _M_out_end; } 
658 # 540 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/streambuf" 3
659     private:         basic_streambuf(const __streambuf_type& __sb)       : _M_in_beg(__sb._M_in_beg), _M_in_cur(__sb._M_in_cur),       _M_in_end(__sb._M_in_end), _M_out_beg(__sb._M_out_beg),       _M_out_cur(__sb._M_out_cur), _M_out_end(__sb._M_out_cur),       _M_buf_locale(__sb._M_buf_locale)       { }        __streambuf_type&       operator=(const __streambuf_type&) { return *this; };     };     template<>     streamsize     __copy_streambufs_eof(basic_streambuf<char>* __sbin,      basic_streambuf<char>* __sbout, bool& __ineof);    template<>     streamsize     __copy_streambufs_eof(basic_streambuf<wchar_t>* __sbin,      basic_streambuf<wchar_t>* __sbout, bool& __ineof);   }
660    
661 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/streambuf.tcc" 1 3
662
663  
664 # 63 "/usr/include/gentoo-multilib/amd64/wctype.h" 3 4
665    typedef unsigned long int wctype_t;
666 enum {   __ISwupper = 0,   __ISwlower = 1,   __ISwalpha = 2,   __ISwdigit = 3,   __ISwxdigit = 4,   __ISwspace = 5,   __ISwprint = 6,   __ISwgraph = 7,   __ISwblank = 8,   __ISwcntrl = 9,   __ISwpunct = 10,   __ISwalnum = 11,    _ISwupper = ((__ISwupper) < 8 ? (int) ((1UL << (__ISwupper)) << 24) : ((__ISwupper) < 16 ? (int) ((1UL << (__ISwupper)) << 8) : ((__ISwupper) < 24 ? (int) ((1UL << (__ISwupper)) >> 8) : (int) ((1UL << (__ISwupper)) >> 24)))),   _ISwlower = ((__ISwlower) < 8 ? (int) ((1UL << (__ISwlower)) << 24) : ((__ISwlower) < 16 ? (int) ((1UL << (__ISwlower)) << 8) : ((__ISwlower) < 24 ? (int) ((1UL << (__ISwlower)) >> 8) : (int) ((1UL << (__ISwlower)) >> 24)))),   _ISwalpha = ((__ISwalpha) < 8 ? (int) ((1UL << (__ISwalpha)) << 24) : ((__ISwalpha) < 16 ? (int) ((1UL << (__ISwalpha)) << 8) : ((__ISwalpha) < 24 ? (int) ((1UL << (__ISwalpha)) >> 8) : (int) ((1UL << (__ISwalpha)) >> 24)))),   _ISwdigit = ((__ISwdigit) < 8 ? (int) ((1UL << (__ISwdigit)) << 24) : ((__ISwdigit) < 16 ? (int) ((1UL << (__ISwdigit)) << 8) : ((__ISwdigit) < 24 ? (int) ((1UL << (__ISwdigit)) >> 8) : (int) ((1UL << (__ISwdigit)) >> 24)))),   _ISwxdigit = ((__ISwxdigit) < 8 ? (int) ((1UL << (__ISwxdigit)) << 24) : ((__ISwxdigit) < 16 ? (int) ((1UL << (__ISwxdigit)) << 8) : ((__ISwxdigit) < 24 ? (int) ((1UL << (__ISwxdigit)) >> 8) : (int) ((1UL << (__ISwxdigit)) >> 24)))),   _ISwspace = ((__ISwspace) < 8 ? (int) ((1UL << (__ISwspace)) << 24) : ((__ISwspace) < 16 ? (int) ((1UL << (__ISwspace)) << 8) : ((__ISwspace) < 24 ? (int) ((1UL << (__ISwspace)) >> 8) : (int) ((1UL << (__ISwspace)) >> 24)))),   _ISwprint = ((__ISwprint) < 8 ? (int) ((1UL << (__ISwprint)) << 24) : ((__ISwprint) < 16 ? (int) ((1UL << (__ISwprint)) << 8) : ((__ISwprint) < 24 ? (int) ((1UL << (__ISwprint)) >> 8) : (int) ((1UL << (__ISwprint)) >> 24)))),   _ISwgraph = ((__ISwgraph) < 8 ? (int) ((1UL << (__ISwgraph)) << 24) : ((__ISwgraph) < 16 ? (int) ((1UL << (__ISwgraph)) << 8) : ((__ISwgraph) < 24 ? (int) ((1UL << (__ISwgraph)) >> 8) : (int) ((1UL << (__ISwgraph)) >> 24)))),   _ISwblank = ((__ISwblank) < 8 ? (int) ((1UL << (__ISwblank)) << 24) : ((__ISwblank) < 16 ? (int) ((1UL << (__ISwblank)) << 8) : ((__ISwblank) < 24 ? (int) ((1UL << (__ISwblank)) >> 8) : (int) ((1UL << (__ISwblank)) >> 24)))),   _ISwcntrl = ((__ISwcntrl) < 8 ? (int) ((1UL << (__ISwcntrl)) << 24) : ((__ISwcntrl) < 16 ? (int) ((1UL << (__ISwcntrl)) << 8) : ((__ISwcntrl) < 24 ? (int) ((1UL << (__ISwcntrl)) >> 8) : (int) ((1UL << (__ISwcntrl)) >> 24)))),   _ISwpunct = ((__ISwpunct) < 8 ? (int) ((1UL << (__ISwpunct)) << 24) : ((__ISwpunct) < 16 ? (int) ((1UL << (__ISwpunct)) << 8) : ((__ISwpunct) < 24 ? (int) ((1UL << (__ISwpunct)) >> 8) : (int) ((1UL << (__ISwpunct)) >> 24)))),   _ISwalnum = ((__ISwalnum) < 8 ? (int) ((1UL << (__ISwalnum)) << 24) : ((__ISwalnum) < 16 ? (int) ((1UL << (__ISwalnum)) << 8) : ((__ISwalnum) < 24 ? (int) ((1UL << (__ISwalnum)) >> 8) : (int) ((1UL << (__ISwalnum)) >> 24)))) };
667     extern "C" {         extern int iswalnum (wint_t __wc) throw ();      extern int iswalpha (wint_t __wc) throw ();   extern int iswcntrl (wint_t __wc) throw ();    extern int iswdigit (wint_t __wc) throw ();    extern int iswgraph (wint_t __wc) throw ();     extern int iswlower (wint_t __wc) throw ();   extern int iswprint (wint_t __wc) throw ();     extern int iswpunct (wint_t __wc) throw ();     extern int iswspace (wint_t __wc) throw ();     extern int iswupper (wint_t __wc) throw ();     extern int iswxdigit (wint_t __wc) throw ();      extern int iswblank (wint_t __wc) throw (); 
668 # 185 "/usr/include/gentoo-multilib/amd64/wctype.h" 3 4
669 extern wctype_t wctype (__const char *__property) throw ();    extern int iswctype (wint_t __wc, wctype_t __desc) throw ();           typedef __const __int32_t *wctrans_t;        extern wint_t towlower (wint_t __wc) throw ();   extern wint_t towupper (wint_t __wc) throw ();   }
670  
671 # 227 "/usr/include/gentoo-multilib/amd64/wctype.h" 3 4
672 extern "C" {     extern wctrans_t wctrans (__const char *__property) throw ();   extern wint_t towctrans (wint_t __wc, wctrans_t __desc) throw ();     
673 # 1 "/usr/include/xlocale.h" 1 3 4
674
675 # 241 "/usr/include/gentoo-multilib/amd64/wctype.h" 2 3 4
676    extern int iswalnum_l (wint_t __wc, __locale_t __locale) throw ();      extern int iswalpha_l (wint_t __wc, __locale_t __locale) throw ();   extern int iswcntrl_l (wint_t __wc, __locale_t __locale) throw ();    extern int iswdigit_l (wint_t __wc, __locale_t __locale) throw ();    extern int iswgraph_l (wint_t __wc, __locale_t __locale) throw ();     extern int iswlower_l (wint_t __wc, __locale_t __locale) throw ();   extern int iswprint_l (wint_t __wc, __locale_t __locale) throw ();     extern int iswpunct_l (wint_t __wc, __locale_t __locale) throw ();     extern int iswspace_l (wint_t __wc, __locale_t __locale) throw ();     extern int iswupper_l (wint_t __wc, __locale_t __locale) throw ();     extern int iswxdigit_l (wint_t __wc, __locale_t __locale) throw ();     extern int iswblank_l (wint_t __wc, __locale_t __locale) throw ();    extern wctype_t wctype_l (__const char *__property, __locale_t __locale)      throw ();    extern int iswctype_l (wint_t __wc, wctype_t __desc, __locale_t __locale)      throw ();        extern wint_t towlower_l (wint_t __wc, __locale_t __locale) throw ();   extern wint_t towupper_l (wint_t __wc, __locale_t __locale) throw ();    extern wctrans_t wctrans_l (__const char *__property, __locale_t __locale)      throw ();   extern wint_t towctrans_l (wint_t __wc, wctrans_t __desc,       __locale_t __locale) throw ();    }
677  
678 # 9 "/usr/include/wctype.h" 2 3 4
679
680 # 42 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/ctype_base.h" 3
681 namespace std __attribute__ ((__visibility__ ("default"))) {     struct ctype_base   {      typedef const int* __to_type;        typedef unsigned short mask;     static const mask upper = _ISupper;     static const mask lower = _ISlower;     static const mask alpha = _ISalpha;     static const mask digit = _ISdigit;     static const mask xdigit = _ISxdigit;     static const mask space = _ISspace;     static const mask print = _ISprint;     static const mask graph = _ISalpha | _ISdigit | _ISpunct;     static const mask cntrl = _IScntrl;     static const mask punct = _ISpunct;     static const mask alnum = _ISalpha | _ISdigit;   };  }
682  
683 # 48 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 2 3
684      namespace std __attribute__ ((__visibility__ ("default"))) { 
685 # 65 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
686   template<typename _Tv>     void     __convert_to_v(const char* __in, _Tv& __out, ios_base::iostate& __err,      const __c_locale& __cloc);     template<>     void     __convert_to_v(const char*, float&, ios_base::iostate&,      const __c_locale&);    template<>     void     __convert_to_v(const char*, double&, ios_base::iostate&,      const __c_locale&);    template<>     void     __convert_to_v(const char*, long double&, ios_base::iostate&,      const __c_locale&);      template<typename _CharT, typename _Traits>     struct __pad     {       static void       _S_pad(ios_base& __io, _CharT __fill, _CharT* __news,       const _CharT* __olds, const streamsize __newlen,       const streamsize __oldlen, const bool __num);     };         template<typename _CharT>     _CharT*     __add_grouping(_CharT* __s, _CharT __sep,      const char* __gbeg, size_t __gsize,      const _CharT* __first, const _CharT* __last);       template<typename _CharT>     inline     ostreambuf_iterator<_CharT>     __write(ostreambuf_iterator<_CharT> __s, const _CharT* __ws, int __len)     {       __s._M_put(__ws, __len);       return __s;     }     template<typename _CharT, typename _OutIter>     inline     _OutIter     __write(_OutIter __s, const _CharT* __ws, int __len)     {       for (int __j = 0; __j < __len; __j++, ++__s)  *__s = __ws[__j];       return __s;     } 
687 # 145 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
688   template<typename _CharT>     class __ctype_abstract_base : public locale::facet, public ctype_base     {     public:         typedef _CharT char_type; 
689 # 163 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
690       bool       is(mask __m, char_type __c) const       { return this->do_is(__m, __c); } 
691       virtual char       do_narrow(char_type, char __dfault) const = 0; 
692 # 583 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
693       virtual const char_type*       do_narrow(const char_type* __lo, const char_type* __hi,   char __dfault, char* __dest) const = 0;     }; 
694   template<>     class ctype<char> : public locale::facet, public ctype_base     {     public:         typedef char char_type;      protected:        __c_locale _M_c_locale_ctype;       bool _M_del;       __to_type _M_toupper;       __to_type _M_tolower;       const mask* _M_table;       mutable char _M_widen_ok;       mutable char _M_widen[1 + static_cast<unsigned char>(-1)];       mutable char _M_narrow[1 + static_cast<unsigned char>(-1)];       mutable char _M_narrow_ok;       public:        static locale::id id;        static const size_t table_size = 1 + static_cast<unsigned char>(-1); 
695 # 712 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
696       explicit       ctype(const mask* __table = 0, bool __del = false, size_t __refs = 0); 
697       virtual const char*       do_widen(const char* __lo, const char* __hi, char_type* __dest) const       {  memcpy(__dest, __lo, __hi - __lo);  return __hi;       } 
698 # 1123 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
699       virtual char       do_narrow(char_type __c, char) const       { return __c; } 
700 # 1149 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
701       virtual const char_type*       do_narrow(const char_type* __lo, const char_type* __hi,   char, char* __dest) const       {  memcpy(__dest, __lo, __hi - __lo);  return __hi;       }      private:        void _M_widen_init() const       {  char __tmp[sizeof(_M_widen)];  for (size_t __i = 0; __i < sizeof(_M_widen); ++__i)    __tmp[__i] = __i;  do_widen(__tmp, __tmp + sizeof(__tmp), _M_widen);   _M_widen_ok = 1;   if (memcmp(__tmp, _M_widen, sizeof(_M_widen)))    _M_widen_ok = 2;       }           void _M_narrow_init() const       {  char __tmp[sizeof(_M_narrow)];  for (size_t __i = 0; __i < sizeof(_M_narrow); ++__i)    __tmp[__i] = __i;  do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow);   _M_narrow_ok = 1;  if (memcmp(__tmp, _M_narrow, sizeof(_M_narrow)))    _M_narrow_ok = 2;  else    {        char __c;      do_narrow(__tmp, __tmp + 1, 1, &__c);      if (__c == 1)        _M_narrow_ok = 2;    }       }     };    template<>     const ctype<char>&     use_facet<ctype<char> >(const locale& __loc); 
702 # 1213 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
703   template<>     class ctype<wchar_t> : public __ctype_abstract_base<wchar_t>     {     public:         typedef wchar_t char_type;       typedef wctype_t __wmask_type;      protected:       __c_locale _M_c_locale_ctype;         bool _M_narrow_ok;       char _M_narrow[128];       wint_t _M_widen[1 + static_cast<unsigned char>(-1)];         mask _M_bit[16];       __wmask_type _M_wmask[16];      public:         static locale::id id; 
704 # 1246 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
705       explicit       ctype(size_t __refs = 0); 
706 # 1257 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
707 # 1468 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
708       virtual char       do_narrow(char_type, char __dfault) const; 
709 # 1494 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
710       virtual const char_type*       do_narrow(const char_type* __lo, const char_type* __hi,   char __dfault, char* __dest) const;         void       _M_initialize_ctype();     };    template<>     const ctype<wchar_t>&     use_facet<ctype<wchar_t> >(const locale& __loc);      template<typename _CharT>     class ctype_byname : public ctype<_CharT>     {     public:       typedef _CharT char_type;        explicit       ctype_byname(const char* __s, size_t __refs = 0);      protected:       virtual       ~ctype_byname() { };     };     template<>     ctype_byname<char>::ctype_byname(const char*, size_t refs);    template<>     ctype_byname<wchar_t>::ctype_byname(const char*, size_t refs);  }
711 # 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 3
712  namespace std __attribute__ ((__visibility__ ("default"))) {     class codecvt_base   {   public:     enum result     {       ok,       partial,       error,       noconv     };   }; 
713 # 71 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 3
714   template<typename _InternT, typename _ExternT, typename _StateT>     class __codecvt_abstract_base     : public locale::facet, public codecvt_base     {     public:        typedef codecvt_base::result result;       typedef _InternT intern_type;       typedef _ExternT extern_type;       typedef _StateT state_type; 
715 # 119 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 3
716       result       out(state_type& __state, const intern_type* __from,    const intern_type* __from_end, const intern_type*& __from_next,    extern_type* __to, extern_type* __to_end,    extern_type*& __to_next) const       {  return this->do_out(__state, __from, __from_end, __from_next,        __to, __to_end, __to_next);       } 
717       result       in(state_type& __state, const extern_type* __from,   const extern_type* __from_end, const extern_type*& __from_next,   intern_type* __to, intern_type* __to_end,   intern_type*& __to_next) const       {  return this->do_in(__state, __from, __from_end, __from_next,       __to, __to_end, __to_next);       }        int       encoding() const throw()       { return this->do_encoding(); }        bool       always_noconv() const throw()       { return this->do_always_noconv(); }        int       length(state_type& __state, const extern_type* __from,       const extern_type* __end, size_t __max) const       { return this->do_length(__state, __from, __end, __max); }        int       max_length() const throw()       { return this->do_max_length(); }      protected:       explicit       __codecvt_abstract_base(size_t __refs = 0) : locale::facet(__refs) { }        virtual       ~__codecvt_abstract_base() { } 
718 # 240 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/codecvt.h" 3
719       virtual result       do_out(state_type& __state, const intern_type* __from,       const intern_type* __from_end, const intern_type*& __from_next,       extern_type* __to, extern_type* __to_end,       extern_type*& __to_next) const = 0;        virtual result       do_unshift(state_type& __state, extern_type* __to,    extern_type* __to_end, extern_type*& __to_next) const = 0;        virtual result       do_in(state_type& __state, const extern_type* __from,      const extern_type* __from_end, const extern_type*& __from_next,      intern_type* __to, intern_type* __to_end,      intern_type*& __to_next) const = 0;        virtual int       do_encoding() const throw() = 0;        virtual bool       do_always_noconv() const throw() = 0;        virtual int       do_length(state_type&, const extern_type* __from,   const extern_type* __end, size_t __max) const = 0;        virtual int       do_max_length() const throw() = 0;     };      template<typename _InternT, typename _ExternT, typename _StateT>     class codecvt     : public __codecvt_abstract_base<_InternT, _ExternT, _StateT>     {     public:        typedef codecvt_base::result result;       typedef _InternT intern_type;       typedef _ExternT extern_type;       typedef _StateT state_type;      protected:       __c_locale _M_c_locale_codecvt;      public:       static locale::id id;        explicit       codecvt(size_t __refs = 0)       : __codecvt_abstract_base<_InternT, _ExternT, _StateT> (__refs) { }        explicit       codecvt(__c_locale __cloc, size_t __refs = 0);      protected:       virtual       ~codecvt() { }        virtual result       do_out(state_type& __state, const intern_type* __from,       const intern_type* __from_end, const intern_type*& __from_next,       extern_type* __to, extern_type* __to_end,       extern_type*& __to_next) const;        virtual result       do_unshift(state_type& __state, extern_type* __to,    extern_type* __to_end, extern_type*& __to_next) const;        virtual result       do_in(state_type& __state, const extern_type* __from,      const extern_type* __from_end, const extern_type*& __from_next,      intern_type* __to, intern_type* __to_end,      intern_type*& __to_next) const;        virtual int       do_encoding() const throw();        virtual bool       do_always_noconv() const throw();        virtual int       do_length(state_type&, const extern_type* __from,   const extern_type* __end, size_t __max) const;        virtual int       do_max_length() const throw();     };    template<typename _InternT, typename _ExternT, typename _StateT>     locale::id codecvt<_InternT, _ExternT, _StateT>::id;     template<>     class codecvt<char, char, mbstate_t>     : public __codecvt_abstract_base<char, char, mbstate_t>     {     public:        typedef char intern_type;       typedef char extern_type;       typedef mbstate_t state_type;      protected:       __c_locale _M_c_locale_codecvt;      public:       static locale::id id;        explicit       codecvt(size_t __refs = 0);        explicit       codecvt(__c_locale __cloc, size_t __refs = 0);      protected:       virtual       ~codecvt();        virtual result       do_out(state_type& __state, const intern_type* __from,       const intern_type* __from_end, const intern_type*& __from_next,       extern_type* __to, extern_type* __to_end,       extern_type*& __to_next) const;        virtual result       do_unshift(state_type& __state, extern_type* __to,    extern_type* __to_end, extern_type*& __to_next) const;        virtual result       do_in(state_type& __state, const extern_type* __from,      const extern_type* __from_end, const extern_type*& __from_next,      intern_type* __to, intern_type* __to_end,      intern_type*& __to_next) const;        virtual int       do_encoding() const throw();        virtual bool       do_always_noconv() const throw();        virtual int       do_length(state_type&, const extern_type* __from,   const extern_type* __end, size_t __max) const;        virtual int       do_max_length() const throw();   };      template<>     class codecvt<wchar_t, char, mbstate_t>     : public __codecvt_abstract_base<wchar_t, char, mbstate_t>     {     public:        typedef wchar_t intern_type;       typedef char extern_type;       typedef mbstate_t state_type;      protected:       __c_locale _M_c_locale_codecvt;      public:       static locale::id id;        explicit       codecvt(size_t __refs = 0);        explicit       codecvt(__c_locale __cloc, size_t __refs = 0);      protected:       virtual       ~codecvt();        virtual result       do_out(state_type& __state, const intern_type* __from,       const intern_type* __from_end, const intern_type*& __from_next,       extern_type* __to, extern_type* __to_end,       extern_type*& __to_next) const;        virtual result       do_unshift(state_type& __state,    extern_type* __to, extern_type* __to_end,    extern_type*& __to_next) const;        virtual result       do_in(state_type& __state,       const extern_type* __from, const extern_type* __from_end,       const extern_type*& __from_next,       intern_type* __to, intern_type* __to_end,       intern_type*& __to_next) const;        virtual       int do_encoding() const throw();        virtual       bool do_always_noconv() const throw();        virtual       int do_length(state_type&, const extern_type* __from,       const extern_type* __end, size_t __max) const;        virtual int       do_max_length() const throw();     };      template<typename _InternT, typename _ExternT, typename _StateT>     class codecvt_byname : public codecvt<_InternT, _ExternT, _StateT>     {     public:       explicit       codecvt_byname(const char* __s, size_t __refs = 0)       : codecvt<_InternT, _ExternT, _StateT>(__refs)       {  if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)    {      this->_S_destroy_c_locale(this->_M_c_locale_codecvt);      this->_S_create_c_locale(this->_M_c_locale_codecvt, __s);    }       }      protected:       virtual       ~codecvt_byname() { }     };  }
720  
721 # 1537 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 2 3
722  namespace std __attribute__ ((__visibility__ ("default"))) {     class __num_base   {   public:       enum       {         _S_ominus,         _S_oplus,         _S_ox,         _S_oX,         _S_odigits,         _S_odigits_end = _S_odigits + 16,         _S_oudigits = _S_odigits_end,         _S_oudigits_end = _S_oudigits + 16,         _S_oe = _S_odigits + 14,         _S_oE = _S_oudigits + 14,  _S_oend = _S_oudigits_end       };           static const char* _S_atoms_out;        static const char* _S_atoms_in;      enum     {       _S_iminus,       _S_iplus,       _S_ix,       _S_iX,       _S_izero,       _S_ie = _S_izero + 14,       _S_iE = _S_izero + 20,       _S_iend = 26     };        static void     _S_format_float(const ios_base& __io, char* __fptr, char __mod);   };    template<typename _CharT>     struct __numpunct_cache : public locale::facet     {       const char* _M_grouping;       size_t _M_grouping_size;       bool _M_use_grouping;       const _CharT* _M_truename;       size_t _M_truename_size;       const _CharT* _M_falsename;       size_t _M_falsename_size;       _CharT _M_decimal_point;       _CharT _M_thousands_sep;            _CharT _M_atoms_out[__num_base::_S_oend];            _CharT _M_atoms_in[__num_base::_S_iend];        bool _M_allocated;        __numpunct_cache(size_t __refs = 0) : facet(__refs),       _M_grouping(__null), _M_grouping_size(0), _M_use_grouping(false),       _M_truename(__null), _M_truename_size(0), _M_falsename(__null),       _M_falsename_size(0), _M_decimal_point(_CharT()),       _M_thousands_sep(_CharT()), _M_allocated(false)       { }        ~__numpunct_cache();        void       _M_cache(const locale& __loc);      private:       __numpunct_cache&       operator=(const __numpunct_cache&);        explicit       __numpunct_cache(const __numpunct_cache&);     };    template<typename _CharT>     __numpunct_cache<_CharT>::~__numpunct_cache()     {       if (_M_allocated)  {    delete [] _M_grouping;    delete [] _M_truename;    delete [] _M_falsename;  }     } 
723 # 1661 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
724   template<typename _CharT>     class numpunct : public locale::facet     {     public:          typedef _CharT char_type;       typedef basic_string<_CharT> string_type;        typedef __numpunct_cache<_CharT> __cache_type;      protected:       __cache_type* _M_data;      public:        static locale::id id;             explicit       numpunct(size_t __refs = 0) : facet(__refs), _M_data(__null)       { _M_initialize_numpunct(); } 
725 # 1698 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
726       string_type       falsename() const       { return this->do_falsename(); }      protected:        virtual       ~numpunct(); 
727 # 1813 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
728       virtual char_type       do_decimal_point() const       { return _M_data->_M_decimal_point; } 
729       virtual string_type       do_falsename() const       { return _M_data->_M_falsename; }         void       _M_initialize_numpunct(__c_locale __cloc = __null);     };    template<typename _CharT>     locale::id numpunct<_CharT>::id;    template<>     numpunct<char>::~numpunct();    template<>     void     numpunct<char>::_M_initialize_numpunct(__c_locale __cloc);     template<>     numpunct<wchar_t>::~numpunct();    template<>     void     numpunct<wchar_t>::_M_initialize_numpunct(__c_locale __cloc);      template<typename _CharT>     class numpunct_byname : public numpunct<_CharT>     {     public:       typedef _CharT char_type;       typedef basic_string<_CharT> string_type;        explicit       numpunct_byname(const char* __s, size_t __refs = 0)       : numpunct<_CharT>(__refs)       {  if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)    {      __c_locale __tmp;      this->_S_create_c_locale(__tmp, __s);      this->_M_initialize_numpunct(__tmp);      this->_S_destroy_c_locale(__tmp);    }       }      protected:       virtual       ~numpunct_byname() { }     };   
730 # 1931 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
731   template<typename _CharT, typename _InIter>     class num_get : public locale::facet     {     public:          typedef _CharT char_type;       typedef _InIter iter_type;          static locale::id id; 
732 # 2245 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
733     };    template<typename _CharT, typename _InIter>     locale::id num_get<_CharT, _InIter>::id; 
734 # 2262 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
735   template<typename _CharT, typename _OutIter>     class num_put : public locale::facet     {     public:          typedef _CharT char_type;       typedef _OutIter iter_type;          static locale::id id; 
736 # 2283 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
737       explicit       num_put(size_t __refs = 0) : facet(__refs) { } 
738       virtual iter_type       do_put(iter_type, ios_base&, char_type __fill, bool __v) const;        virtual iter_type       do_put(iter_type, ios_base&, char_type __fill, long __v) const;        virtual iter_type       do_put(iter_type, ios_base&, char_type __fill, unsigned long) const;         virtual iter_type       do_put(iter_type, ios_base&, char_type __fill, long long __v) const;        virtual iter_type       do_put(iter_type, ios_base&, char_type __fill, unsigned long long) const;         virtual iter_type       do_put(iter_type, ios_base&, char_type __fill, double __v) const;             virtual iter_type       do_put(iter_type, ios_base&, char_type __fill, long double __v) const;         virtual iter_type       do_put(iter_type, ios_base&, char_type __fill, const void* __v) const;            };    template <typename _CharT, typename _OutIter>     locale::id num_put<_CharT, _OutIter>::id;   
739 # 2536 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
740   template<typename _CharT>     class collate : public locale::facet     {     public:          typedef _CharT char_type;       typedef basic_string<_CharT> string_type;       protected:         __c_locale _M_c_locale_collate;      public:        static locale::id id; 
741       long       hash(const _CharT* __lo, const _CharT* __hi) const       { return this->do_hash(__lo, __hi); }         int       _M_compare(const _CharT*, const _CharT*) const;        size_t       _M_transform(_CharT*, const _CharT*, size_t) const;    protected:        virtual       ~collate()       { _S_destroy_c_locale(_M_c_locale_collate); } 
742 # 2656 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
743       virtual int       do_compare(const _CharT* __lo1, const _CharT* __hi1,    const _CharT* __lo2, const _CharT* __hi2) const; 
744 # 2672 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
745       virtual string_type       do_transform(const _CharT* __lo, const _CharT* __hi) const; 
746 # 2685 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
747       virtual long       do_hash(const _CharT* __lo, const _CharT* __hi) const;     };    template<typename _CharT>     locale::id collate<_CharT>::id;     template<>     int     collate<char>::_M_compare(const char*, const char*) const;    template<>     size_t     collate<char>::_M_transform(char*, const char*, size_t) const;     template<>     int     collate<wchar_t>::_M_compare(const wchar_t*, const wchar_t*) const;    template<>     size_t     collate<wchar_t>::_M_transform(wchar_t*, const wchar_t*, size_t) const;      template<typename _CharT>     class collate_byname : public collate<_CharT>     {     public:         typedef _CharT char_type;       typedef basic_string<_CharT> string_type;         explicit       collate_byname(const char* __s, size_t __refs = 0)       : collate<_CharT>(__refs)       {  if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)    {      this->_S_destroy_c_locale(this->_M_c_locale_collate);      this->_S_create_c_locale(this->_M_c_locale_collate, __s);    }       }      protected:       virtual       ~collate_byname() { }     }; 
748 # 2745 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
749   class time_base   {   public:     enum dateorder { no_order, dmy, mdy, ymd, ydm };   };    template<typename _CharT>     struct __timepunct_cache : public locale::facet     {        static const _CharT* _S_timezones[14];        const _CharT* _M_date_format;       const _CharT* _M_date_era_format;       const _CharT* _M_time_format;       const _CharT* _M_time_era_format;       const _CharT* _M_date_time_format;       const _CharT* _M_date_time_era_format;       const _CharT* _M_am;       const _CharT* _M_pm;       const _CharT* _M_am_pm_format;         const _CharT* _M_day1;       const _CharT* _M_day2;       const _CharT* _M_day3;       const _CharT* _M_day4;       const _CharT* _M_day5;       const _CharT* _M_day6;       const _CharT* _M_day7;         const _CharT* _M_aday1;       const _CharT* _M_aday2;       const _CharT* _M_aday3;       const _CharT* _M_aday4;       const _CharT* _M_aday5;       const _CharT* _M_aday6;       const _CharT* _M_aday7;         const _CharT* _M_month01;       const _CharT* _M_month02;       const _CharT* _M_month03;       const _CharT* _M_month04;       const _CharT* _M_month05;       const _CharT* _M_month06;       const _CharT* _M_month07;       const _CharT* _M_month08;       const _CharT* _M_month09;       const _CharT* _M_month10;       const _CharT* _M_month11;       const _CharT* _M_month12;         const _CharT* _M_amonth01;       const _CharT* _M_amonth02;       const _CharT* _M_amonth03;       const _CharT* _M_amonth04;       const _CharT* _M_amonth05;       const _CharT* _M_amonth06;       const _CharT* _M_amonth07;       const _CharT* _M_amonth08;       const _CharT* _M_amonth09;       const _CharT* _M_amonth10;       const _CharT* _M_amonth11;       const _CharT* _M_amonth12;        bool _M_allocated;        __timepunct_cache(size_t __refs = 0) : facet(__refs),       _M_date_format(__null), _M_date_era_format(__null), _M_time_format(__null),       _M_time_era_format(__null), _M_date_time_format(__null),       _M_date_time_era_format(__null), _M_am(__null), _M_pm(__null),       _M_am_pm_format(__null), _M_day1(__null), _M_day2(__null), _M_day3(__null),       _M_day4(__null), _M_day5(__null), _M_day6(__null), _M_day7(__null),       _M_aday1(__null), _M_aday2(__null), _M_aday3(__null), _M_aday4(__null),       _M_aday5(__null), _M_aday6(__null), _M_aday7(__null), _M_month01(__null),       _M_month02(__null), _M_month03(__null), _M_month04(__null), _M_month05(__null),       _M_month06(__null), _M_month07(__null), _M_month08(__null), _M_month09(__null),       _M_month10(__null), _M_month11(__null), _M_month12(__null), _M_amonth01(__null),       _M_amonth02(__null), _M_amonth03(__null), _M_amonth04(__null),       _M_amonth05(__null), _M_amonth06(__null), _M_amonth07(__null),       _M_amonth08(__null), _M_amonth09(__null), _M_amonth10(__null),       _M_amonth11(__null), _M_amonth12(__null), _M_allocated(false)       { }        ~__timepunct_cache();        void       _M_cache(const locale& __loc);      private:       __timepunct_cache&       operator=(const __timepunct_cache&);        explicit       __timepunct_cache(const __timepunct_cache&);     };    template<typename _CharT>     __timepunct_cache<_CharT>::~__timepunct_cache()     {       if (_M_allocated)  {   }     }     template<>     const char*     __timepunct_cache<char>::_S_timezones[14];     template<>     const wchar_t*     __timepunct_cache<wchar_t>::_S_timezones[14];      template<typename _CharT>     const _CharT* __timepunct_cache<_CharT>::_S_timezones[14];    template<typename _CharT>     class __timepunct : public locale::facet     {     public:        typedef _CharT __char_type;       typedef basic_string<_CharT> __string_type;       typedef __timepunct_cache<_CharT> __cache_type;      protected:       __cache_type* _M_data;       __c_locale _M_c_locale_timepunct;       const char* _M_name_timepunct;      public:        static locale::id id;        explicit       __timepunct(size_t __refs = 0);        explicit       __timepunct(__cache_type* __cache, size_t __refs = 0); 
750 # 2903 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
751       explicit       __timepunct(__c_locale __cloc, const char* __s, size_t __refs = 0);          void       _M_put(_CharT* __s, size_t __maxlen, const _CharT* __format,       const tm* __tm) const;        void       _M_date_formats(const _CharT** __date) const       {   __date[0] = _M_data->_M_date_format;  __date[1] = _M_data->_M_date_era_format;       }        void       _M_time_formats(const _CharT** __time) const       {   __time[0] = _M_data->_M_time_format;  __time[1] = _M_data->_M_time_era_format;       }        void       _M_date_time_formats(const _CharT** __dt) const       {   __dt[0] = _M_data->_M_date_time_format;  __dt[1] = _M_data->_M_date_time_era_format;       }        void       _M_am_pm_format(const _CharT* __ampm) const       { __ampm = _M_data->_M_am_pm_format; }        void       _M_am_pm(const _CharT** __ampm) const       {  __ampm[0] = _M_data->_M_am;  __ampm[1] = _M_data->_M_pm;       }        void       _M_days(const _CharT** __days) const       {  __days[0] = _M_data->_M_day1;  __days[1] = _M_data->_M_day2;  __days[2] = _M_data->_M_day3;  __days[3] = _M_data->_M_day4;  __days[4] = _M_data->_M_day5;  __days[5] = _M_data->_M_day6;  __days[6] = _M_data->_M_day7;       }        void       _M_days_abbreviated(const _CharT** __days) const       {  __days[0] = _M_data->_M_aday1;  __days[1] = _M_data->_M_aday2;  __days[2] = _M_data->_M_aday3;  __days[3] = _M_data->_M_aday4;  __days[4] = _M_data->_M_aday5;  __days[5] = _M_data->_M_aday6;  __days[6] = _M_data->_M_aday7;       }        void       _M_months(const _CharT** __months) const       {  __months[0] = _M_data->_M_month01;  __months[1] = _M_data->_M_month02;  __months[2] = _M_data->_M_month03;  __months[3] = _M_data->_M_month04;  __months[4] = _M_data->_M_month05;  __months[5] = _M_data->_M_month06;  __months[6] = _M_data->_M_month07;  __months[7] = _M_data->_M_month08;  __months[8] = _M_data->_M_month09;  __months[9] = _M_data->_M_month10;  __months[10] = _M_data->_M_month11;  __months[11] = _M_data->_M_month12;       }        void       _M_months_abbreviated(const _CharT** __months) const       {  __months[0] = _M_data->_M_amonth01;  __months[1] = _M_data->_M_amonth02;  __months[2] = _M_data->_M_amonth03;  __months[3] = _M_data->_M_amonth04;  __months[4] = _M_data->_M_amonth05;  __months[5] = _M_data->_M_amonth06;  __months[6] = _M_data->_M_amonth07;  __months[7] = _M_data->_M_amonth08;  __months[8] = _M_data->_M_amonth09;  __months[9] = _M_data->_M_amonth10;  __months[10] = _M_data->_M_amonth11;  __months[11] = _M_data->_M_amonth12;       }      protected:       virtual       ~__timepunct();         void       _M_initialize_timepunct(__c_locale __cloc = __null);     };    template<typename _CharT>     locale::id __timepunct<_CharT>::id;     template<>     void     __timepunct<char>::_M_initialize_timepunct(__c_locale __cloc);    template<>     void     __timepunct<char>::_M_put(char*, size_t, const char*, const tm*) const;     template<>     void     __timepunct<wchar_t>::_M_initialize_timepunct(__c_locale __cloc);    template<>     void     __timepunct<wchar_t>::_M_put(wchar_t*, size_t, const wchar_t*,      const tm*) const;   }
752    
753 # 1 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/x86_64-pc-linux-gnu/bits/time_members.h" 1 3
754  
755 # 3041 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 2 3
756  namespace std __attribute__ ((__visibility__ ("default"))) { 
757 # 3056 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
758   template<typename _CharT, typename _InIter>     class time_get : public locale::facet, public time_base     {     public:          typedef _CharT char_type;       typedef _InIter iter_type;        typedef basic_string<_CharT> __string_type;         static locale::id id; 
759 # 3078 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
760       virtual iter_type       do_get_year(iter_type __beg, iter_type __end, ios_base& __io,     ios_base::iostate& __err, tm* __tm) const;         iter_type       _M_extract_num(iter_type __beg, iter_type __end, int& __member,        int __min, int __max, size_t __len,        ios_base& __io, ios_base::iostate& __err) const;          iter_type       _M_extract_name(iter_type __beg, iter_type __end, int& __member,         const _CharT** __names, size_t __indexlen,         ios_base& __io, ios_base::iostate& __err) const;         iter_type       _M_extract_via_format(iter_type __beg, iter_type __end, ios_base& __io,        ios_base::iostate& __err, tm* __tm,        const _CharT* __format) const;     };    template<typename _CharT, typename _InIter>     locale::id time_get<_CharT, _InIter>::id;     template<typename _CharT, typename _InIter>     class time_get_byname : public time_get<_CharT, _InIter>     {     public:        typedef _CharT char_type;       typedef _InIter iter_type;        explicit       time_get_byname(const char*, size_t __refs = 0)       : time_get<_CharT, _InIter>(__refs) { }      protected:       virtual       ~time_get_byname() { }     }; 
761 # 3397 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
762   template<typename _CharT, typename _OutIter>     class time_put : public locale::facet     {     public:          typedef _CharT char_type;       typedef _OutIter iter_type;          static locale::id id; 
763       virtual iter_type       do_put(iter_type __s, ios_base& __io, char_type __fill, const tm* __tm,       char __format, char __mod) const;     };    template<typename _CharT, typename _OutIter>     locale::id time_put<_CharT, _OutIter>::id;     template<typename _CharT, typename _OutIter>     class time_put_byname : public time_put<_CharT, _OutIter>     {     public:        typedef _CharT char_type;       typedef _OutIter iter_type;        explicit       time_put_byname(const char*, size_t __refs = 0)       : time_put<_CharT, _OutIter>(__refs)       { };      protected:       virtual       ~time_put_byname() { }     }; 
764 # 3522 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
765   class money_base   {   public:     enum part { none, space, symbol, sign, value };     struct pattern { char field[4]; };      static const pattern _S_default_pattern;      enum     {       _S_minus,       _S_zero,       _S_end = 11     };        static const char* _S_atoms;        static pattern     _S_construct_pattern(char __precedes, char __space, char __posn);   };    template<typename _CharT, bool _Intl>     struct __moneypunct_cache : public locale::facet     {       const char* _M_grouping;       size_t _M_grouping_size;       bool _M_use_grouping;       _CharT _M_decimal_point;       _CharT _M_thousands_sep;       const _CharT* _M_curr_symbol;       size_t _M_curr_symbol_size;       const _CharT* _M_positive_sign;       size_t _M_positive_sign_size;       const _CharT* _M_negative_sign;       size_t _M_negative_sign_size;       int _M_frac_digits;       money_base::pattern _M_pos_format;       money_base::pattern _M_neg_format;           _CharT _M_atoms[money_base::_S_end];        bool _M_allocated;        __moneypunct_cache(size_t __refs = 0) : facet(__refs),       _M_grouping(__null), _M_grouping_size(0), _M_use_grouping(false),       _M_decimal_point(_CharT()), _M_thousands_sep(_CharT()),       _M_curr_symbol(__null), _M_curr_symbol_size(0),       _M_positive_sign(__null), _M_positive_sign_size(0),       _M_negative_sign(__null), _M_negative_sign_size(0),       _M_frac_digits(0),       _M_pos_format(money_base::pattern()),       _M_neg_format(money_base::pattern()), _M_allocated(false)       { }        ~__moneypunct_cache();        void       _M_cache(const locale& __loc);      private:       __moneypunct_cache&       operator=(const __moneypunct_cache&);        explicit       __moneypunct_cache(const __moneypunct_cache&);     };    template<typename _CharT, bool _Intl>     __moneypunct_cache<_CharT, _Intl>::~__moneypunct_cache()     {       if (_M_allocated)  {    delete [] _M_grouping;    delete [] _M_curr_symbol;    delete [] _M_positive_sign;    delete [] _M_negative_sign;  }     }          template<typename _CharT, bool _Intl>     class moneypunct : public locale::facet, public money_base     {     public:          typedef _CharT char_type;       typedef basic_string<_CharT> string_type;        typedef __moneypunct_cache<_CharT, _Intl> __cache_type;      private:       __cache_type* _M_data;      public:         static const bool intl = _Intl;        static locale::id id; 
766       int       frac_digits() const       { return this->do_frac_digits(); } 
767 # 3824 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
768       pattern       pos_format() const       { return this->do_pos_format(); }        pattern       neg_format() const       { return this->do_neg_format(); }       protected:        virtual       ~moneypunct(); 
769       virtual pattern       do_pos_format() const       { return _M_data->_M_pos_format; } 
770 # 3952 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
771       virtual pattern       do_neg_format() const       { return _M_data->_M_neg_format; }          void        _M_initialize_moneypunct(__c_locale __cloc = __null,     const char* __name = __null);     };    template<typename _CharT, bool _Intl>     locale::id moneypunct<_CharT, _Intl>::id;    template<typename _CharT, bool _Intl>     const bool moneypunct<_CharT, _Intl>::intl;    template<>     moneypunct<char, true>::~moneypunct();    template<>     moneypunct<char, false>::~moneypunct();    template<>     void     moneypunct<char, true>::_M_initialize_moneypunct(__c_locale, const char*);    template<>     void     moneypunct<char, false>::_M_initialize_moneypunct(__c_locale, const char*);     template<>     moneypunct<wchar_t, true>::~moneypunct();    template<>     moneypunct<wchar_t, false>::~moneypunct();    template<>     void     moneypunct<wchar_t, true>::_M_initialize_moneypunct(__c_locale,        const char*);    template<>     void     moneypunct<wchar_t, false>::_M_initialize_moneypunct(__c_locale,         const char*);      template<typename _CharT, bool _Intl>     class moneypunct_byname : public moneypunct<_CharT, _Intl>     {     public:       typedef _CharT char_type;       typedef basic_string<_CharT> string_type;        static const bool intl = _Intl;        explicit       moneypunct_byname(const char* __s, size_t __refs = 0)       : moneypunct<_CharT, _Intl>(__refs)       {  if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0)    {      __c_locale __tmp;      this->_S_create_c_locale(__tmp, __s);      this->_M_initialize_moneypunct(__tmp);      this->_S_destroy_c_locale(__tmp);    }       }      protected:       virtual       ~moneypunct_byname() { }     };    template<typename _CharT, bool _Intl>     const bool moneypunct_byname<_CharT, _Intl>::intl;   
772 # 4044 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
773   template<typename _CharT, typename _InIter>     class money_get : public locale::facet     {     public:          typedef _CharT char_type;       typedef _InIter iter_type;       typedef basic_string<_CharT> string_type;          static locale::id id; 
774 # 4066 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
775       explicit       money_get(size_t __refs = 0) : facet(__refs) { } 
776       template<bool _Intl>         iter_type         _M_extract(iter_type __s, iter_type __end, ios_base& __io,      ios_base::iostate& __err, string& __digits) const;     };    template<typename _CharT, typename _InIter>     locale::id money_get<_CharT, _InIter>::id; 
777 # 4193 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
778   template<typename _CharT, typename _OutIter>     class money_put : public locale::facet     {     public:         typedef _CharT char_type;       typedef _OutIter iter_type;       typedef basic_string<_CharT> string_type;          static locale::id id; 
779       virtual iter_type       do_put(iter_type __s, bool __intl, ios_base& __io, char_type __fill,       const string_type& __digits) const; 
780 # 4324 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
781       template<bool _Intl>         iter_type         _M_insert(iter_type __s, ios_base& __io, char_type __fill,     const string_type& __digits) const;     };    template<typename _CharT, typename _OutIter>     locale::id money_put<_CharT, _OutIter>::id;         struct messages_base   {     typedef int catalog;   }; 
782 # 4363 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
783   template<typename _CharT>     class messages : public locale::facet, public messages_base     {     public:          typedef _CharT char_type;       typedef basic_string<_CharT> string_type;       protected:         __c_locale _M_c_locale_messages;       const char* _M_name_messages;      public:        static locale::id id; 
784 # 4391 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
785       virtual catalog       do_open(const basic_string<char>&, const locale&) const; 
786 # 4504 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
787       virtual string_type       do_get(catalog, int, int, const string_type& __dfault) const;             virtual void       do_close(catalog) const;         char*       _M_convert_to_char(const string_type& __msg) const       {   return reinterpret_cast<char*>(const_cast<_CharT*>(__msg.c_str()));       }         string_type       _M_convert_from_char(char*) const       { 
788 # 4561 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.h" 3
789  return string_type();       }      };    template<typename _CharT>     locale::id messages<_CharT>::id;     template<>     string     messages<char>::do_get(catalog, int, int, const string&) const;     template<>     wstring     messages<wchar_t>::do_get(catalog, int, int, const wstring&) const;       template<typename _CharT>     class messages_byname : public messages<_CharT>     {     public:       typedef _CharT char_type;       typedef basic_string<_CharT> string_type;        explicit       messages_byname(const char* __s, size_t __refs = 0);      protected:       virtual       ~messages_byname()       { }     };  }
790    
791  
792 # 45 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 2 3
793  namespace std __attribute__ ((__visibility__ ("default"))) { 
794 # 55 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
795   template<typename _CharT, typename _Traits>     class basic_ios : public ios_base     {     public:             typedef _CharT char_type;       typedef typename _Traits::int_type int_type;       typedef typename _Traits::pos_type pos_type;       typedef typename _Traits::off_type off_type;       typedef _Traits traits_type; 
796 # 78 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
797       typedef ctype<_CharT> __ctype_type;       typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >            __num_put_type;       typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >            __num_get_type;        protected:       basic_ostream<_CharT, _Traits>* _M_tie;       mutable char_type _M_fill;       mutable bool _M_fill_init;       basic_streambuf<_CharT, _Traits>* _M_streambuf;         const __ctype_type* _M_ctype;        const __num_put_type* _M_num_put;        const __num_get_type* _M_num_get;      public:              operator void*() const       { return this->fail() ? 0 : const_cast<basic_ios*>(this); }        bool       operator!() const       { return this->fail(); } 
798 # 122 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
799       iostate       rdstate() const       { return _M_streambuf_state; } 
800 # 133 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
801       void       clear(iostate __state = goodbit);              void       setstate(iostate __state)       { this->clear(this->rdstate() | __state); }           void       _M_setstate(iostate __state)       {    _M_streambuf_state |= __state;  if (this->exceptions() & __state)    throw;       }              bool       good() const       { return this->rdstate() == 0; }              bool       eof() const       { return (this->rdstate() & eofbit) != 0; } 
802 # 186 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
803       bool       fail() const       { return (this->rdstate() & (badbit | failbit)) != 0; }              bool       bad() const       { return (this->rdstate() & badbit) != 0; } 
804 # 207 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
805       iostate       exceptions() const       { return _M_exception; } 
806       char       narrow(char_type __c, char __dfault) const; 
807 # 433 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/basic_ios.h" 3
808       char_type       widen(char __c) const;      protected:              basic_ios()       : ios_base(), _M_tie(0), _M_fill(char_type()), _M_fill_init(false),       _M_streambuf(0), _M_ctype(0), _M_num_put(0), _M_num_get(0)       { }              void       init(basic_streambuf<_CharT, _Traits>* __sb);        void       _M_cache_locale(const locale& __loc);     };  }
809
810 # 46 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 2 3
811   namespace std __attribute__ ((__visibility__ ("default"))) { 
812 # 58 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
813   template<typename _CharT, typename _Traits>     class basic_ostream : virtual public basic_ios<_CharT, _Traits>     {     public:        typedef _CharT char_type;       typedef typename _Traits::int_type int_type;       typedef typename _Traits::pos_type pos_type;       typedef typename _Traits::off_type off_type;       typedef _Traits traits_type;         typedef basic_streambuf<_CharT, _Traits> __streambuf_type;       typedef basic_ios<_CharT, _Traits> __ios_type;       typedef basic_ostream<_CharT, _Traits> __ostream_type;       typedef num_put<_CharT, ostreambuf_iterator<_CharT, _Traits> >              __num_put_type;       typedef ctype<_CharT> __ctype_type; 
814 # 85 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
815       explicit       basic_ostream(__streambuf_type* __sb)       { this->init(__sb); }             virtual       ~basic_ostream() { }         class sentry;       friend class sentry; 
816 # 111 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
817       __ostream_type&       operator<<(__ostream_type& (*__pf)(__ostream_type&))       {     return __pf(*this);       }        __ostream_type&       operator<<(__ios_type& (*__pf)(__ios_type&))       {     __pf(*this);  return *this;       }        __ostream_type&       operator<<(ios_base& (*__pf) (ios_base&))       {     __pf(*this);  return *this;       } 
818 # 168 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
819       __ostream_type&       operator<<(long __n)       { return _M_insert(__n); }        __ostream_type&       operator<<(unsigned long __n)       { return _M_insert(__n); }        __ostream_type&       operator<<(bool __n)       { return _M_insert(__n); }        __ostream_type&       operator<<(short __n);        __ostream_type&       operator<<(unsigned short __n)       {    return _M_insert(static_cast<unsigned long>(__n));       }        __ostream_type&       operator<<(int __n);        __ostream_type&       operator<<(unsigned int __n)       {    return _M_insert(static_cast<unsigned long>(__n));       }         __ostream_type&       operator<<(long long __n)       { return _M_insert(__n); }        __ostream_type&       operator<<(unsigned long long __n)       { return _M_insert(__n); }         __ostream_type&       operator<<(double __f)       { return _M_insert(__f); }        __ostream_type&       operator<<(float __f)       {    return _M_insert(static_cast<double>(__f));       }        __ostream_type&       operator<<(long double __f)       { return _M_insert(__f); }        __ostream_type&       operator<<(const void* __p)       { return _M_insert(__p); } 
820 # 253 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
821       __ostream_type&       operator<<(__streambuf_type* __sb); 
822 # 286 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
823       __ostream_type&       put(char_type __c);         void       _M_write(const char_type* __s, streamsize __n)       {  const streamsize __put = this->rdbuf()->sputn(__s, __n);  if (__put != __n)    this->setstate(ios_base::badbit);       } 
824       __ostream_type&       flush(); 
825 # 338 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
826       pos_type       tellp(); 
827        __ostream_type&       seekp(off_type, ios_base::seekdir);      protected:       explicit       basic_ostream() { }        template<typename _ValueT>         __ostream_type&         _M_insert(_ValueT __v);     }; 
828 # 383 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
829   template <typename _CharT, typename _Traits>     class basic_ostream<_CharT, _Traits>::sentry     {        bool _M_ok;       basic_ostream<_CharT, _Traits>& _M_os;      public: 
830       ~sentry()       {   if (_M_os.flags() & ios_base::unitbuf && !uncaught_exception())    {       if (_M_os.rdbuf() && _M_os.rdbuf()->pubsync() == -1)        _M_os.setstate(ios_base::badbit);    }       } 
831 # 430 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
832       operator bool() const       { return _M_ok; }     }; 
833   template<typename _CharT, typename _Traits>     inline basic_ostream<_CharT, _Traits>&     operator<<(basic_ostream<_CharT, _Traits>& __out, const _CharT* __s)     {       if (!__s)  __out.setstate(ios_base::badbit);       else  __ostream_insert(__out, __s,     static_cast<streamsize>(_Traits::length(__s)));       return __out;     }    template<typename _CharT, typename _Traits>     basic_ostream<_CharT, _Traits> &     operator<<(basic_ostream<_CharT, _Traits>& __out, const char* __s);     template<class _Traits>     inline basic_ostream<char, _Traits>&     operator<<(basic_ostream<char, _Traits>& __out, const char* __s)     {       if (!__s)  __out.setstate(ios_base::badbit);       else  __ostream_insert(__out, __s,     static_cast<streamsize>(_Traits::length(__s)));       return __out;     }     template<class _Traits>     inline basic_ostream<char, _Traits>&     operator<<(basic_ostream<char, _Traits>& __out, const signed char* __s)     { return (__out << reinterpret_cast<const char*>(__s)); }    template<class _Traits>     inline basic_ostream<char, _Traits> &     operator<<(basic_ostream<char, _Traits>& __out, const unsigned char* __s)     { return (__out << reinterpret_cast<const char*>(__s)); } 
834 # 543 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/ostream" 3
835   template<typename _CharT, typename _Traits>     inline basic_ostream<_CharT, _Traits>&     endl(basic_ostream<_CharT, _Traits>& __os)     { return flush(__os.put(__os.widen('\n'))); }          template<typename _CharT, typename _Traits>     inline basic_ostream<_CharT, _Traits>&     ends(basic_ostream<_CharT, _Traits>& __os)     { return __os.put(_CharT()); }         template<typename _CharT, typename _Traits>     inline basic_ostream<_CharT, _Traits>&     flush(basic_ostream<_CharT, _Traits>& __os)     { return __os.flush(); }  }
836
837 #pragma GCC visibility push(default)
838  extern "C++" {  namespace __cxxabiv1 {   class __class_type_info; } 
839 # 60 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/typeinfo" 3
840 namespace std {         class type_info   {   public:         virtual ~type_info();        const char* name() const     { return __name; } 
841 # 94 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/typeinfo" 3
842     bool before(const type_info& __arg) const     { return __name < __arg.__name; }      bool operator==(const type_info& __arg) const     { return __name == __arg.__name; }      bool operator!=(const type_info& __arg) const     { return !operator==(__arg); }       virtual bool __is_pointer_p() const;       virtual bool __is_function_p() const;            virtual bool __do_catch(const type_info *__thr_type, void **__thr_obj,        unsigned __outer) const;       virtual bool __do_upcast(const __cxxabiv1::__class_type_info *__target,         void **__obj_ptr) const;    protected:     const char *__name;      explicit type_info(const char *__n): __name(__n) { }    private:      type_info& operator=(const type_info&);     type_info(const type_info&);   };         class bad_cast : public exception   {   public:     bad_cast() throw() { }        virtual ~bad_cast() throw();       virtual const char* what() const throw();   };     class bad_typeid : public exception   {   public:     bad_typeid () throw() { }        virtual ~bad_typeid() throw();       virtual const char* what() const throw();   }; }  
843 #pragma GCC visibility pop
844  }
845  
846 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 2 3
847    namespace std __attribute__ ((__visibility__ ("default"))) {    template<typename _Facet>     locale     locale::combine(const locale& __other) const     {       _Impl* __tmp = new _Impl(*_M_impl, 1);       try  {    __tmp->_M_replace_facet(__other._M_impl, &_Facet::id);  }       catch(...)  {    __tmp->_M_remove_reference();    throw;  }       return locale(__tmp);     }    template<typename _CharT, typename _Traits, typename _Alloc>     bool     locale::operator()(const basic_string<_CharT, _Traits, _Alloc>& __s1,                        const basic_string<_CharT, _Traits, _Alloc>& __s2) const     {       typedef std::collate<_CharT> __collate_type;       const __collate_type& __collate = use_facet<__collate_type>(*this);       return (__collate.compare(__s1.data(), __s1.data() + __s1.length(),     __s2.data(), __s2.data() + __s2.length()) < 0);     } 
848 # 87 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/locale_facets.tcc" 3
849   template<typename _CharT, typename _Traits>     void     __pad<_CharT, _Traits>::_S_pad(ios_base& __io, _CharT __fill,        _CharT* __news, const _CharT* __olds,        const streamsize __newlen,        const streamsize __oldlen, const bool __num)     {       const size_t __plen = static_cast<size_t>(__newlen - __oldlen);       const ios_base::fmtflags __adjust = __io.flags() & ios_base::adjustfield;         if (__adjust == ios_base::left)  {    _Traits::copy(__news, const_cast<_CharT*>(__olds), __oldlen);    _Traits::assign(__news + __oldlen, __plen, __fill);    return;  }        size_t __mod = 0;       if (__adjust == ios_base::internal && __num)  {              const locale& __loc = __io._M_getloc();    const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);     const bool __testsign = (__ctype.widen('-') == __olds[0]        || __ctype.widen('+') == __olds[0]);    const bool __testhex = (__ctype.widen('0') == __olds[0]       && __oldlen > 1       && (__ctype.widen('x') == __olds[1]           || __ctype.widen('X') == __olds[1]));    if (__testhex)      {        __news[0] = __olds[0];        __news[1] = __olds[1];        __mod = 2;        __news += 2;      }    else if (__testsign)      {        __news[0] = __olds[0];        __mod = 1;        ++__news;      }   }       _Traits::assign(__news, __plen, __fill);       _Traits::copy(__news + __plen, const_cast<_CharT*>(__olds + __mod),       __oldlen - __mod);     }    bool   __verify_grouping(const char* __grouping, size_t __grouping_size,       const string& __grouping_tmp)   {     const size_t __n = __grouping_tmp.size() - 1;     const size_t __min = std::min(__n, size_t(__grouping_size - 1));     size_t __i = __n;     bool __test = true;         for (size_t __j = 0; __j < __min && __test; --__i, ++__j)       __test = __grouping_tmp[__i] == __grouping[__j];     for (; __i && __test; --__i)       __test = __grouping_tmp[__i] == __grouping[__min];        if (static_cast<signed char>(__grouping[__min]) > 0)       __test &= __grouping_tmp[0] <= __grouping[__min];     return __test;   }    template<typename _CharT>     _CharT*     __add_grouping(_CharT* __s, _CharT __sep,      const char* __gbeg, size_t __gsize,      const _CharT* __first, const _CharT* __last)     {       size_t __idx = 0;       size_t __ctr = 0;        while (__last - __first > __gbeg[__idx]       && static_cast<signed char>(__gbeg[__idx]) > 0)  {    __last -= __gbeg[__idx];    __idx < __gsize - 1 ? ++__idx : ++__ctr;  }        while (__first != __last)  *__s++ = *__first++;        while (__ctr--)  {    *__s++ = __sep;    for (char __i = __gbeg[__idx]; __i > 0; --__i)      *__s++ = *__first++;  }        while (__idx--)  {    *__s++ = __sep;    for (char __i = __gbeg[__idx]; __i > 0; --__i)      *__s++ = *__first++;  }        return __s;     }        extern template class moneypunct<char, false>;   extern template class moneypunct<char, true>;   extern template class moneypunct_byname<char, false>;   extern template class moneypunct_byname<char, true>;   extern template class money_get<char>;   extern template class money_put<char>;   extern template class numpunct<char>;   extern template class numpunct_byname<char>;   extern template class num_get<char>;   extern template class num_put<char>;   extern template class __timepunct<char>;   extern template class time_put<char>;   extern template class time_put_byname<char>;   extern template class time_get<char>;   extern template class time_get_byname<char>;   extern template class messages<char>;   extern template class messages_byname<char>;   extern template class ctype_byname<char>;   extern template class codecvt_byname<char, char, mbstate_t>;   extern template class collate<char>;   extern template class collate_byname<char>;    extern template     const codecvt<char, char, mbstate_t>&     use_facet<codecvt<char, char, mbstate_t> >(const locale&);    extern template     const collate<char>&     use_facet<collate<char> >(const locale&);    extern template     const numpunct<char>&     use_facet<numpunct<char> >(const locale&);    extern template     const num_put<char>&     use_facet<num_put<char> >(const locale&);    extern template     const num_get<char>&     use_facet<num_get<char> >(const locale&);    extern template     const moneypunct<char, true>&     use_facet<moneypunct<char, true> >(const locale&);    extern template     const moneypunct<char, false>&     use_facet<moneypunct<char, false> >(const locale&);    extern template     const money_put<char>&     use_facet<money_put<char> >(const locale&);    extern template     const money_get<char>&     use_facet<money_get<char> >(const locale&);    extern template     const __timepunct<char>&     use_facet<__timepunct<char> >(const locale&);    extern template     const time_put<char>&     use_facet<time_put<char> >(const locale&);    extern template     const time_get<char>&     use_facet<time_get<char> >(const locale&);    extern template     const messages<char>&     use_facet<messages<char> >(const locale&);    extern template     bool     has_facet<ctype<char> >(const locale&);    extern template     bool     has_facet<codecvt<char, char, mbstate_t> >(const locale&);    extern template     bool     has_facet<collate<char> >(const locale&);    extern template     bool     has_facet<numpunct<char> >(const locale&);    extern template     bool     has_facet<num_put<char> >(const locale&);    extern template     bool     has_facet<num_get<char> >(const locale&);    extern template     bool     has_facet<moneypunct<char> >(const locale&);    extern template     bool     has_facet<money_put<char> >(const locale&);    extern template     bool     has_facet<money_get<char> >(const locale&);    extern template     bool     has_facet<__timepunct<char> >(const locale&);    extern template     bool     has_facet<time_put<char> >(const locale&);    extern template     bool     has_facet<time_get<char> >(const locale&);    extern template     bool     has_facet<messages<char> >(const locale&);     extern template class moneypunct<wchar_t, false>;   extern template class moneypunct<wchar_t, true>;   extern template class moneypunct_byname<wchar_t, false>;   extern template class moneypunct_byname<wchar_t, true>;   extern template class money_get<wchar_t>;   extern template class money_put<wchar_t>;   extern template class numpunct<wchar_t>;   extern template class numpunct_byname<wchar_t>;   extern template class num_get<wchar_t>;   extern template class num_put<wchar_t>;   extern template class __timepunct<wchar_t>;   extern template class time_put<wchar_t>;   extern template class time_put_byname<wchar_t>;   extern template class time_get<wchar_t>;   extern template class time_get_byname<wchar_t>;   extern template class messages<wchar_t>;   extern template class messages_byname<wchar_t>;   extern template class ctype_byname<wchar_t>;   extern template class codecvt_byname<wchar_t, char, mbstate_t>;   extern template class collate<wchar_t>;   extern template class collate_byname<wchar_t>;    extern template     const codecvt<wchar_t, char, mbstate_t>&     use_facet<codecvt<wchar_t, char, mbstate_t> >(locale const&);    extern template     const collate<wchar_t>&     use_facet<collate<wchar_t> >(const locale&);    extern template     const numpunct<wchar_t>&     use_facet<numpunct<wchar_t> >(const locale&);    extern template     const num_put<wchar_t>&     use_facet<num_put<wchar_t> >(const locale&);    extern template     const num_get<wchar_t>&     use_facet<num_get<wchar_t> >(const locale&);    extern template     const moneypunct<wchar_t, true>&     use_facet<moneypunct<wchar_t, true> >(const locale&);    extern template     const moneypunct<wchar_t, false>&     use_facet<moneypunct<wchar_t, false> >(const locale&);    extern template     const money_put<wchar_t>&     use_facet<money_put<wchar_t> >(const locale&);    extern template     const money_get<wchar_t>&     use_facet<money_get<wchar_t> >(const locale&);    extern template     const __timepunct<wchar_t>&     use_facet<__timepunct<wchar_t> >(const locale&);    extern template     const time_put<wchar_t>&     use_facet<time_put<wchar_t> >(const locale&);    extern template     const time_get<wchar_t>&     use_facet<time_get<wchar_t> >(const locale&);    extern template     const messages<wchar_t>&     use_facet<messages<wchar_t> >(const locale&);   extern template     bool     has_facet<ctype<wchar_t> >(const locale&);    extern template     bool     has_facet<codecvt<wchar_t, char, mbstate_t> >(const locale&);    extern template     bool     has_facet<collate<wchar_t> >(const locale&);    extern template     bool     has_facet<numpunct<wchar_t> >(const locale&);    extern template     bool     has_facet<num_put<wchar_t> >(const locale&);    extern template     bool     has_facet<num_get<wchar_t> >(const locale&);    extern template     bool     has_facet<moneypunct<wchar_t> >(const locale&);    extern template     bool     has_facet<money_put<wchar_t> >(const locale&);    extern template     bool     has_facet<money_get<wchar_t> >(const locale&);    extern template     bool     has_facet<__timepunct<wchar_t> >(const locale&);    extern template     bool     has_facet<time_put<wchar_t> >(const locale&);    extern template     bool     has_facet<time_get<wchar_t> >(const locale&);    extern template     bool     has_facet<messages<wchar_t> >(const locale&);    }
850  
851 # 47 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/locale" 2 3
852     namespace std __attribute__ ((__visibility__ ("default"))) { 
853 # 57 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
854   template<typename _CharT, typename _Traits>     class basic_istream : virtual public basic_ios<_CharT, _Traits>     {     public:        typedef _CharT char_type;       typedef typename _Traits::int_type int_type;       typedef typename _Traits::pos_type pos_type;       typedef typename _Traits::off_type off_type;       typedef _Traits traits_type;         typedef basic_streambuf<_CharT, _Traits> __streambuf_type;       typedef basic_ios<_CharT, _Traits> __ios_type;       typedef basic_istream<_CharT, _Traits> __istream_type;       typedef num_get<_CharT, istreambuf_iterator<_CharT, _Traits> >         __num_get_type;       typedef ctype<_CharT> __ctype_type;        template<typename _CharT2, typename _Traits2>         friend basic_istream<_CharT2, _Traits2>&         operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2&);        template<typename _CharT2, typename _Traits2>         friend basic_istream<_CharT2, _Traits2>&         operator>>(basic_istream<_CharT2, _Traits2>&, _CharT2*);      protected:              streamsize _M_gcount;      public: 
855 # 103 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
856       explicit       basic_istream(__streambuf_type* __sb): _M_gcount(streamsize(0))       { this->init(__sb); }             virtual       ~basic_istream()       { _M_gcount = streamsize(0); }         class sentry;       friend class sentry; 
857 # 130 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
858       __istream_type&       operator>>(__istream_type& (*__pf)(__istream_type&))       { return __pf(*this); }        __istream_type&       operator>>(__ios_type& (*__pf)(__ios_type&))       {  __pf(*this);  return *this;       }        __istream_type&       operator>>(ios_base& (*__pf)(ios_base&))       {  __pf(*this);  return *this;       } 
859 # 177 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
860       __istream_type&       operator>>(bool& __n)       { return _M_extract(__n); }        __istream_type&       operator>>(short& __n);        __istream_type&       operator>>(unsigned short& __n)       { return _M_extract(__n); }        __istream_type&       operator>>(int& __n);        __istream_type&       operator>>(unsigned int& __n)       { return _M_extract(__n); }        __istream_type&       operator>>(long& __n)       { return _M_extract(__n); }        __istream_type&       operator>>(unsigned long& __n)       { return _M_extract(__n); }         __istream_type&       operator>>(long long& __n)       { return _M_extract(__n); }        __istream_type&       operator>>(unsigned long long& __n)       { return _M_extract(__n); }         __istream_type&       operator>>(float& __f)       { return _M_extract(__f); }        __istream_type&       operator>>(double& __f)       { return _M_extract(__f); }        __istream_type&       operator>>(long double& __f)       { return _M_extract(__f); }        __istream_type&       operator>>(void*& __p)       { return _M_extract(__p); } 
861       streamsize       gcount() const       { return _M_gcount; } 
862 # 291 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
863       int_type       get(); 
864       __istream_type&       get(__streambuf_type& __sb)       { return this->get(__sb, this->widen('\n')); } 
865 # 405 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
866       __istream_type&       getline(char_type* __s, streamsize __n, char_type __delim); 
867       __istream_type&       ignore();        __istream_type&       ignore(streamsize __n);        __istream_type&       ignore(streamsize __n, int_type __delim); 
868 # 457 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
869       int_type       peek(); 
870       __istream_type&       seekg(pos_type); 
871 # 588 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
872       __istream_type&       seekg(off_type, ios_base::seekdir);       protected:       explicit       basic_istream(): _M_gcount(streamsize(0)) { }        template<typename _ValueT>         __istream_type&         _M_extract(_ValueT& __v);     };     template<>     basic_istream<char>&     basic_istream<char>::     getline(char_type* __s, streamsize __n, char_type __delim);    template<>     basic_istream<char>&     basic_istream<char>::     ignore(streamsize __n);    template<>     basic_istream<char>&     basic_istream<char>::     ignore(streamsize __n, int_type __delim);     template<>     basic_istream<wchar_t>&     basic_istream<wchar_t>::     getline(char_type* __s, streamsize __n, char_type __delim);    template<>     basic_istream<wchar_t>&     basic_istream<wchar_t>::     ignore(streamsize __n);    template<>     basic_istream<wchar_t>&     basic_istream<wchar_t>::     ignore(streamsize __n, int_type __delim); 
873 # 645 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
874   template<typename _CharT, typename _Traits>     class basic_istream<_CharT, _Traits>::sentry     {     public:        typedef _Traits traits_type;       typedef basic_streambuf<_CharT, _Traits> __streambuf_type;       typedef basic_istream<_CharT, _Traits> __istream_type;       typedef typename __istream_type::__ctype_type __ctype_type;       typedef typename _Traits::int_type __int_type; 
875 # 677 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
876       explicit       sentry(basic_istream<_CharT, _Traits>& __is, bool __noskipws = false); 
877 # 687 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
878       operator bool() const       { return _M_ok; }      private:       bool _M_ok;     }; 
879   template<typename _CharT, typename _Traits>     basic_istream<_CharT, _Traits>&     operator>>(basic_istream<_CharT, _Traits>& __in, _CharT* __s);     template<>     basic_istream<char>&     operator>>(basic_istream<char>& __in, char* __s);    template<class _Traits>     inline basic_istream<char, _Traits>&     operator>>(basic_istream<char, _Traits>& __in, unsigned char* __s)     { return (__in >> reinterpret_cast<char*>(__s)); }    template<class _Traits>     inline basic_istream<char, _Traits>&     operator>>(basic_istream<char, _Traits>& __in, signed char* __s)     { return (__in >> reinterpret_cast<char*>(__s)); } 
880 # 775 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
881   template<typename _CharT, typename _Traits>     class basic_iostream     : public basic_istream<_CharT, _Traits>,       public basic_ostream<_CharT, _Traits>     {     public:          typedef _CharT char_type;       typedef typename _Traits::int_type int_type;       typedef typename _Traits::pos_type pos_type;       typedef typename _Traits::off_type off_type;       typedef _Traits traits_type;         typedef basic_istream<_CharT, _Traits> __istream_type;       typedef basic_ostream<_CharT, _Traits> __ostream_type;              explicit       basic_iostream(basic_streambuf<_CharT, _Traits>* __sb)       : __istream_type(), __ostream_type()       { this->init(__sb); }           virtual       ~basic_iostream() { }      protected:       explicit       basic_iostream() : __istream_type(), __ostream_type()       { }     }; 
882 # 838 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/istream" 3
883   template<typename _CharT, typename _Traits>     basic_istream<_CharT, _Traits>&     ws(basic_istream<_CharT, _Traits>& __is);  }
884    
885
886 # 28 "/usr/include/boost/throw_exception.hpp" 3 4
887 namespace boost {        template<class E> inline void throw_exception(E const & e) {     throw e; }    }
888  
889 # 34 "/usr/include/boost/array.hpp" 2 3 4
890       namespace boost {      template<class T, std::size_t N>     class array {       public:         T elems[N];        public:          typedef T value_type;         typedef T* iterator;         typedef const T* const_iterator;         typedef T& reference;         typedef const T& const_reference;         typedef std::size_t size_type;         typedef std::ptrdiff_t difference_type;           iterator begin() { return elems; }         const_iterator begin() const { return elems; }         iterator end() { return elems+N; }         const_iterator end() const { return elems+N; }            typedef std::reverse_iterator<iterator> reverse_iterator;         typedef std::reverse_iterator<const_iterator> const_reverse_iterator; 
891         reverse_iterator rbegin() { return reverse_iterator(end()); }         const_reverse_iterator rbegin() const {             return const_reverse_iterator(end());         }         reverse_iterator rend() { return reverse_iterator(begin()); }         const_reverse_iterator rend() const {             return const_reverse_iterator(begin());         }           reference operator[](size_type i)         {             return failed_rangecheck();         }          const_reference operator[](size_type i) const         {             return failed_rangecheck();         }           reference at(size_type i) { return failed_rangecheck(); }         const_reference at(size_type i) const { return failed_rangecheck(); }           reference front()         {             return failed_rangecheck();         }          const_reference front() const         {             return failed_rangecheck();         }          reference back()         {             return failed_rangecheck();         }          const_reference back() const         {             return failed_rangecheck();         }           static size_type size() { return 0; }         static bool empty() { return true; }         static size_type max_size() { return 0; }         enum { static_size = 0 };          void swap (array<T,0>& y) {         }           const T* data() const { return 0; }         T* data() { return 0; }           T* c_array() { return 0; }           template <typename T2>         array<T,0>& operator= (const array<T2,0>& ) {             return *this;         }           void assign (const T& ) { }           static reference failed_rangecheck () {                 std::range_error e("attempt to access element of an empty array");                 boost::throw_exception(e);                      static T placeholder;                 return placeholder;             }     };        template<class T, std::size_t N>     bool operator== (const array<T,N>& x, const array<T,N>& y) {         return std::equal(x.begin(), x.end(), y.begin());     }     template<class T, std::size_t N>     bool operator< (const array<T,N>& x, const array<T,N>& y) {         return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());     }     template<class T, std::size_t N>     bool operator!= (const array<T,N>& x, const array<T,N>& y) {         return !(x==y);     }     template<class T, std::size_t N>     bool operator> (const array<T,N>& x, const array<T,N>& y) {         return y<x;     }     template<class T, std::size_t N>     bool operator<= (const array<T,N>& x, const array<T,N>& y) {         return !(y<x);     }     template<class T, std::size_t N>     bool operator>= (const array<T,N>& x, const array<T,N>& y) {         return !(x<y);     }       template<class T, std::size_t N>     inline void swap (array<T,N>& x, array<T,N>& y) {         x.swap(y);     }  }
892  
893 # 3 "genfield.cxx" 2
894 namespace boost { namespace type_traits {  template <typename T> struct is_mem_fun_pointer_impl {     static const bool value = false; };      template <class R, class T > struct is_mem_fun_pointer_impl<R (T::*)() > { static const bool value = true; };  template <class R, class T > struct is_mem_fun_pointer_impl<R (T::*)( ...) > { static const bool value = true; };    template <class R, class T > struct is_mem_fun_pointer_impl<R (T::*)() const > { static const bool value = true; };  template <class R, class T > struct is_mem_fun_pointer_impl<R (T::*)() volatile > { static const bool value = true; };  template <class R, class T > struct is_mem_fun_pointer_impl<R (T::*)() const volatile > { static const bool value = true; };   template <class R, class T > struct is_mem_fun_pointer_impl<R (T::*)( ...) const > { static const bool value = true; };  template <class R, class T > struct is_mem_fun_pointer_impl<R (T::*)( ...) volatile > { static const bool value = true; };  template <class R, class T > struct is_mem_fun_pointer_impl<R (T::*)( ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0> struct is_mem_fun_pointer_impl<R (T::*)( T0) > { static const bool value = true; };  template <class R, class T , class T0> struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) > { static const bool value = true; };    template <class R, class T , class T0> struct is_mem_fun_pointer_impl<R (T::*)( T0) const > { static const bool value = true; };  template <class R, class T , class T0> struct is_mem_fun_pointer_impl<R (T::*)( T0) volatile > { static const bool value = true; };  template <class R, class T , class T0> struct is_mem_fun_pointer_impl<R (T::*)( T0) const volatile > { static const bool value = true; };   template <class R, class T , class T0> struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const > { static const bool value = true; };  template <class R, class T , class T0> struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0> struct is_mem_fun_pointer_impl<R (T::*)( T0 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) > { static const bool value = true; };  template <class R, class T , class T0 , class T1> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 ...) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) > { static const bool value = true; };    template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24) const volatile > { static const bool value = true; };   template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) volatile > { static const bool value = true; };  template <class R, class T , class T0 , class T1 , class T2 , class T3 , class T4 , class T5 , class T6 , class T7 , class T8 , class T9 , class T10 , class T11 , class T12 , class T13 , class T14 , class T15 , class T16 , class T17 , class T18 , class T19 , class T20 , class T21 , class T22 , class T23 , class T24> struct is_mem_fun_pointer_impl<R (T::*)( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 ...) const volatile > { static const bool value = true; }; 
895 # 776 "/usr/include/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp" 3 4
896 } }
897 # 33 "/usr/include/boost/mpl/aux_/adl_barrier.hpp" 3 4
898 namespace mpl_ { namespace aux {} }
899  namespace boost { namespace mpl { using namespace mpl_; namespace aux { using namespace mpl_::aux; } }}
900 # 20 "/usr/include/boost/mpl/integral_c_tag.hpp" 2 3 4
901  namespace mpl_ { struct integral_c_tag { static const int value = 0; }; }
902  namespace boost { namespace mpl { using ::mpl_::integral_c_tag; } }
903
904 # 40 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
905 namespace mpl_ {  template< int N > struct int_ {     static const int value = N;          typedef int_ type;      typedef int value_type;     typedef integral_c_tag tag; 
906 # 72 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
907     typedef mpl_::int_< static_cast<int>((value + 1)) > next;     typedef mpl_::int_< static_cast<int>((value - 1)) > prior;           operator int() const { return static_cast<int>(this->value); } };   template< int N > int const mpl_::int_< N >::value;   }
908  
909 # 17 "/usr/include/boost/mpl/aux_/template_arity_fwd.hpp" 3 4
910 namespace boost { namespace mpl { namespace aux {  template< typename F > struct template_arity;  }}}
911  
912
913 # 19 "/usr/include/boost/mpl/bool_fwd.hpp" 3 4
914 namespace mpl_ {  template< bool C_ > struct bool_;   typedef bool_<true> true_; typedef bool_<false> false_;  }
915  
916 # 18 "/usr/include/boost/mpl/bool.hpp" 2 3 4
917    namespace mpl_ {  template< bool C_ > struct bool_ {     static const bool value = C_;     typedef integral_c_tag tag;     typedef bool_ type;     typedef bool value_type;     operator bool() const { return this->value; } };   template< bool C_ > bool const bool_<C_>::value;   }
918 # 40 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
919 namespace mpl_ {  template< typename T, T N > struct integral_c {     static const T value = N;          typedef integral_c type;      typedef T value_type;     typedef integral_c_tag tag; 
920 # 72 "/usr/include/boost/mpl/aux_/integral_wrapper.hpp" 3 4
921     typedef integral_c< T, static_cast<T>((value + 1)) > next;     typedef integral_c< T, static_cast<T>((value - 1)) > prior;           operator T() const { return static_cast<T>(this->value); } };   template< typename T, T N > T const integral_c< T, N >::value;   }
922  
923 # 33 "/usr/include/boost/mpl/integral_c.hpp" 2 3 4
924  namespace boost{     template <class T, T val>  struct integral_constant : public mpl::integral_c<T, val> {    typedef integral_constant<T,val> type; };  template<> struct integral_constant<bool,true> : public mpl::true_ {           typedef integral_constant<bool,true> type; }; template<> struct integral_constant<bool,false> : public mpl::false_ {           typedef integral_constant<bool,false> type; };  typedef integral_constant<bool,true> true_type; typedef integral_constant<bool,false> false_type;  }
925  
926 # 16 "/usr/include/boost/type_traits/detail/bool_trait_def.hpp" 2 3 4
927  namespace boost {    template< typename T > struct is_member_function_pointer : ::boost::integral_constant<bool,::boost::type_traits::is_mem_fun_pointer_impl<T>::value> { }; 
928 # 122 "/usr/include/boost/type_traits/is_member_function_pointer.hpp" 3 4
929 }
930
931 # 40 "/usr/include/boost/type_traits/is_member_pointer.hpp" 2 3 4
932  namespace boost {       template< typename T > struct is_member_pointer : ::boost::integral_constant<bool,::boost::is_member_function_pointer<T>::value> { }; template< typename T, typename U > struct is_member_pointer< U T::* > : ::boost::integral_constant<bool,true> { }; 
933 # 104 "/usr/include/boost/type_traits/is_member_pointer.hpp" 3 4
934 }
935   
936 namespace boost { namespace type_traits {  template <bool b1, bool b2, bool b3 = true, bool b4 = true, bool b5 = true, bool b6 = true, bool b7 = true> struct ice_and;  template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7> struct ice_and {     static const bool value = false; };  template <> struct ice_and<true, true, true, true, true, true, true> {     static const bool value = true; };  } }
937  
938 # 26 "/usr/include/boost/type_traits/is_pointer.hpp" 2 3 4
939 # 13 "/usr/include/boost/type_traits/detail/ice_not.hpp" 3 4
940 namespace boost { namespace type_traits {  template <bool b> struct ice_not {     static const bool value = true; };  template <> struct ice_not<true> {     static const bool value = false; };  } }
941  
942 # 39 "/usr/include/boost/type_traits/is_pointer.hpp" 2 3 4
943  namespace boost {    namespace detail {  template< typename T > struct is_pointer_helper {     static const bool value = false; }; 
944 # 58 "/usr/include/boost/type_traits/is_pointer.hpp" 3 4
945 template< typename T > struct is_pointer_helper<T*> { static const bool value = true; }; template< typename T > struct is_pointer_helper<T* const> { static const bool value = true; }; template< typename T > struct is_pointer_helper<T* volatile> { static const bool value = true; }; template< typename T > struct is_pointer_helper<T* const volatile> { static const bool value = true; };    template< typename T > struct is_pointer_impl {     static const bool value = (::boost::type_traits::ice_and< ::boost::detail::is_pointer_helper<T>::value , ::boost::type_traits::ice_not< ::boost::is_member_pointer<T>::value >::value >::value);        };  }  template< typename T > struct is_pointer : ::boost::integral_constant<bool,::boost::detail::is_pointer_impl<T>::value> { }; 
946 # 145 "/usr/include/boost/type_traits/is_pointer.hpp" 3 4
947 }
948         
949 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
950     namespace std __attribute__ ((__visibility__ ("default"))) { 
951 # 61 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
952   template<typename _CharT, typename _Traits, typename _Alloc>     class basic_stringbuf : public basic_streambuf<_CharT, _Traits>     {     public:        typedef _CharT char_type;       typedef _Traits traits_type;         typedef _Alloc allocator_type;       typedef typename traits_type::int_type int_type;       typedef typename traits_type::pos_type pos_type;       typedef typename traits_type::off_type off_type;        typedef basic_streambuf<char_type, traits_type> __streambuf_type;       typedef basic_string<char_type, _Traits, _Alloc> __string_type;       typedef typename __string_type::size_type __size_type;      protected:            ios_base::openmode _M_mode;         __string_type _M_string;      public: 
953 # 99 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
954       explicit       basic_stringbuf(ios_base::openmode __mode = ios_base::in | ios_base::out)       : __streambuf_type(), _M_mode(__mode), _M_string()       { } 
955 # 112 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
956       explicit       basic_stringbuf(const __string_type& __str,         ios_base::openmode __mode = ios_base::in | ios_base::out)       : __streambuf_type(), _M_mode(), _M_string(__str.data(), __str.size())       { _M_stringbuf_init(__mode); } 
957 # 127 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
958       __string_type       str() const       {  __string_type __ret;  if (this->pptr())    {       if (this->pptr() > this->egptr())        __ret = __string_type(this->pbase(), this->pptr());      else         __ret = __string_type(this->pbase(), this->egptr());    }  else    __ret = _M_string;  return __ret;       } 
959 # 151 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
960       void       str(const __string_type& __s)       {   _M_string.assign(__s.data(), __s.size());  _M_stringbuf_init(_M_mode);       }      protected:        void       _M_stringbuf_init(ios_base::openmode __mode)       {  _M_mode = __mode;  __size_type __len = 0;  if (_M_mode & (ios_base::ate | ios_base::app))    __len = _M_string.size();  _M_sync(const_cast<char_type*>(_M_string.data()), 0, __len);       }        virtual streamsize       showmanyc()       {  streamsize __ret = -1;  if (_M_mode & ios_base::in)    {      _M_update_egptr();      __ret = this->egptr() - this->gptr();    }  return __ret;       }        virtual int_type       underflow();        virtual int_type       pbackfail(int_type __c = traits_type::eof());        virtual int_type       overflow(int_type __c = traits_type::eof()); 
961 # 203 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
962       virtual __streambuf_type*       setbuf(char_type* __s, streamsize __n)       {  if (__s && __n >= 0)    {            _M_string.clear();        _M_sync(__s, __n, 0);    }  return this;       }        virtual pos_type       seekoff(off_type __off, ios_base::seekdir __way,        ios_base::openmode __mode = ios_base::in | ios_base::out);        virtual pos_type       seekpos(pos_type __sp,        ios_base::openmode __mode = ios_base::in | ios_base::out);           void       _M_sync(char_type* __base, __size_type __i, __size_type __o);          void       _M_update_egptr()       {  const bool __testin = _M_mode & ios_base::in;  if (this->pptr() && this->pptr() > this->egptr())    if (__testin)      this->setg(this->eback(), this->gptr(), this->pptr());    else      this->setg(this->pptr(), this->pptr(), this->pptr());       }     }; 
963 # 260 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
964   template<typename _CharT, typename _Traits, typename _Alloc>     class basic_istringstream : public basic_istream<_CharT, _Traits>     {     public:        typedef _CharT char_type;       typedef _Traits traits_type;         typedef _Alloc allocator_type;       typedef typename traits_type::int_type int_type;       typedef typename traits_type::pos_type pos_type;       typedef typename traits_type::off_type off_type;         typedef basic_string<_CharT, _Traits, _Alloc> __string_type;       typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;       typedef basic_istream<char_type, traits_type> __istream_type;      private:       __stringbuf_type _M_stringbuf;      public: 
965 # 298 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
966 # 340 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
967       __stringbuf_type*       rdbuf() const       { return const_cast<__stringbuf_type*>(&_M_stringbuf); }            __string_type       str() const       { return _M_stringbuf.str(); }              void       str(const __string_type& __s)       { _M_stringbuf.str(__s); }     }; 
968 # 373 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
969   template <typename _CharT, typename _Traits, typename _Alloc>     class basic_ostringstream : public basic_ostream<_CharT, _Traits>     {     public:        typedef _CharT char_type;       typedef _Traits traits_type;         typedef _Alloc allocator_type;       typedef typename traits_type::int_type int_type;       typedef typename traits_type::pos_type pos_type;       typedef typename traits_type::off_type off_type;         typedef basic_string<_CharT, _Traits, _Alloc> __string_type;       typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;       typedef basic_ostream<char_type, traits_type> __ostream_type;      private:       __stringbuf_type _M_stringbuf;      public: 
970 # 411 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
971       explicit       basic_ostringstream(ios_base::openmode __mode = ios_base::out)       : __ostream_type(), _M_stringbuf(__mode | ios_base::out)       { this->init(&_M_stringbuf); } 
972       __stringbuf_type*       rdbuf() const       { return const_cast<__stringbuf_type*>(&_M_stringbuf); }            __string_type       str() const       { return _M_stringbuf.str(); }              void       str(const __string_type& __s)       { _M_stringbuf.str(__s); }     }; 
973 # 486 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
974   template <typename _CharT, typename _Traits, typename _Alloc>     class basic_stringstream : public basic_iostream<_CharT, _Traits>     {     public:        typedef _CharT char_type;       typedef _Traits traits_type;         typedef _Alloc allocator_type;       typedef typename traits_type::int_type int_type;       typedef typename traits_type::pos_type pos_type;       typedef typename traits_type::off_type off_type;         typedef basic_string<_CharT, _Traits, _Alloc> __string_type;       typedef basic_stringbuf<_CharT, _Traits, _Alloc> __stringbuf_type;       typedef basic_iostream<char_type, traits_type> __iostream_type;      private:       __stringbuf_type _M_stringbuf;      public: 
975 # 522 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
976       explicit       basic_stringstream(ios_base::openmode __m = ios_base::out | ios_base::in)       : __iostream_type(), _M_stringbuf(__m)       { this->init(&_M_stringbuf); } 
977 # 540 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
978       explicit       basic_stringstream(const __string_type& __str,     ios_base::openmode __m = ios_base::out | ios_base::in)       : __iostream_type(), _M_stringbuf(__str, __m)       { this->init(&_M_stringbuf); }              ~basic_stringstream()       { } 
979 # 562 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/sstream" 3
980       __stringbuf_type*       rdbuf() const       { return const_cast<__stringbuf_type*>(&_M_stringbuf); }            __string_type       str() const       { return _M_stringbuf.str(); }              void       str(const __string_type& __s)       { _M_stringbuf.str(__s); }     };  }
981 namespace boost {      class bad_lexical_cast : public std::bad_cast     {     public:         bad_lexical_cast() :         source(&typeid(void)), target(&typeid(void))         {         }         bad_lexical_cast(             const std::type_info &source_type,             const std::type_info &target_type) :             source(&source_type), target(&target_type)         {         }         const std::type_info &source_type() const         {             return *source;         }         const std::type_info &target_type() const         {             return *target;         }         virtual const char *what() const throw()         {             return "bad lexical cast: "                    "source type value could not be interpreted as target";         }         virtual ~bad_lexical_cast() throw()         {         }     private:         const std::type_info *source;         const std::type_info *target;     };      namespace detail     {         template<typename Type>         struct stream_char         {             typedef char type;         };            template<>         struct stream_char<wchar_t>         {             typedef wchar_t type;         };           template<>         struct stream_char<wchar_t *>         {             typedef wchar_t type;         };          template<>         struct stream_char<const wchar_t *>         {             typedef wchar_t type;         };          template<>         struct stream_char<std::wstring>         {             typedef wchar_t type;         };           template<typename TargetChar, typename SourceChar>         struct widest_char         {             typedef TargetChar type;         };          template<>         struct widest_char<char, wchar_t>         {             typedef wchar_t type;         };     }      namespace detail     {         template<typename Target, typename Source>         class lexical_stream         {         private:             typedef typename widest_char<                 typename stream_char<Target>::type,                 typename stream_char<Source>::type>::type char_type;          public:             lexical_stream()             {                 stream.unsetf(std::ios::skipws);                  if(std::numeric_limits<Target>::is_specialized)                     stream.precision(std::numeric_limits<Target>::digits10 + 1);                 else if(std::numeric_limits<Source>::is_specialized)                     stream.precision(std::numeric_limits<Source>::digits10 + 1);             }             ~lexical_stream()             {                }             bool operator<<(const Source &input)             {                 return !(stream << input).fail();             }             template<typename InputStreamable>             bool operator>>(InputStreamable &output)             {                 return !is_pointer<InputStreamable>::value &&                        stream >> output &&                        stream.get() ==                                   std::char_traits<char_type>::eof();              }             bool operator>>(std::string &output)             {                    output = stream.str();                 return true;             }              bool operator>>(std::wstring &output)             {                 output = stream.str();                 return true;             }          private:                  std::basic_stringstream<char_type> stream;          };     }          namespace detail     {         template<class T>         struct array_to_pointer_decay         {             typedef T type;         };          template<class T, std::size_t N>         struct array_to_pointer_decay<T[N]>         {             typedef const T * type;         };     }      template<typename Target, typename Source>     Target lexical_cast(const Source &arg)     {         typedef typename detail::array_to_pointer_decay<Source>::type NewSource;          detail::lexical_stream<Target, NewSource> interpreter;         Target result;          if(!(interpreter << arg && interpreter >> result))             throw_exception(bad_lexical_cast(typeid(NewSource), typeid(Target)));         return result;     } 
982 # 243 "/usr/include/boost/lexical_cast.hpp" 3 4
983 }
984
985 # 69 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
986 namespace std __attribute__ ((__visibility__ ("default"))) {         template<typename _Tp, typename _Alloc>     struct _Vector_base     {       typedef typename _Alloc::template rebind<_Tp>::other _Tp_alloc_type;        struct _Vector_impl       : public _Tp_alloc_type       {  _Tp* _M_start;  _Tp* _M_finish;  _Tp* _M_end_of_storage;  _Vector_impl(_Tp_alloc_type const& __a)  : _Tp_alloc_type(__a), _M_start(0), _M_finish(0), _M_end_of_storage(0)  { }       };      public:       typedef _Alloc allocator_type;        _Tp_alloc_type&       _M_get_Tp_allocator()       { return *static_cast<_Tp_alloc_type*>(&this->_M_impl); }        const _Tp_alloc_type&       _M_get_Tp_allocator() const       { return *static_cast<const _Tp_alloc_type*>(&this->_M_impl); }        allocator_type       get_allocator() const       { return allocator_type(_M_get_Tp_allocator()); }        _Vector_base(const allocator_type& __a)       : _M_impl(__a)       { }        _Vector_base(size_t __n, const allocator_type& __a)       : _M_impl(__a)       {  this->_M_impl._M_start = this->_M_allocate(__n);  this->_M_impl._M_finish = this->_M_impl._M_start;  this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;       }        ~_Vector_base()       { _M_deallocate(this->_M_impl._M_start, this->_M_impl._M_end_of_storage         - this->_M_impl._M_start); }      public:       _Vector_impl _M_impl;        _Tp*       _M_allocate(size_t __n)       { return _M_impl.allocate(__n); }        void       _M_deallocate(_Tp* __p, size_t __n)       {  if (__p)    _M_impl.deallocate(__p, __n);       }     }; 
987 # 158 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
988   template<typename _Tp, typename _Alloc = std::allocator<_Tp> >     class vector : protected _Vector_base<_Tp, _Alloc>     {        typedef typename _Alloc::value_type _Alloc_value_type;                    typedef _Vector_base<_Tp, _Alloc> _Base;       typedef vector<_Tp, _Alloc> vector_type;       typedef typename _Base::_Tp_alloc_type _Tp_alloc_type;      public:       typedef _Tp value_type;       typedef typename _Tp_alloc_type::pointer pointer;       typedef typename _Tp_alloc_type::const_pointer const_pointer;       typedef typename _Tp_alloc_type::reference reference;       typedef typename _Tp_alloc_type::const_reference const_reference;       typedef __gnu_cxx::__normal_iterator<pointer, vector_type> iterator;       typedef __gnu_cxx::__normal_iterator<const_pointer, vector_type>       const_iterator;       typedef std::reverse_iterator<const_iterator> const_reverse_iterator;       typedef std::reverse_iterator<iterator> reverse_iterator;       typedef size_t size_type;       typedef ptrdiff_t difference_type;       typedef _Alloc allocator_type;      protected:       using _Base::_M_allocate;       using _Base::_M_deallocate;       using _Base::_M_impl;       using _Base::_M_get_Tp_allocator;      public:            explicit       vector(const allocator_type& __a = allocator_type())       : _Base(__a)       { } 
989 # 209 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
990 # 308 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
991       template<typename _InputIterator>         void         assign(_InputIterator __first, _InputIterator __last)         {     typedef typename std::__is_integer<_InputIterator>::__type _Integral;    _M_assign_dispatch(__first, __last, _Integral());  }         using _Base::get_allocator;              iterator       begin()       { return iterator(this->_M_impl._M_start); }             const_iterator       begin() const       { return const_iterator(this->_M_impl._M_start); }             iterator       end()       { return iterator(this->_M_impl._M_finish); }             const_iterator       end() const       { return const_iterator(this->_M_impl._M_finish); }             reverse_iterator       rbegin()       { return reverse_iterator(end()); }             const_reverse_iterator       rbegin() const       { return const_reverse_iterator(end()); }             reverse_iterator       rend()       { return reverse_iterator(begin()); }             const_reverse_iterator       rend() const       { return const_reverse_iterator(begin()); }          size_type       size() const       { return size_type(this->_M_impl._M_finish - this->_M_impl._M_start); }         size_type       max_size() const       { return _M_get_Tp_allocator().max_size(); } 
992 # 415 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
993       void       resize(size_type __new_size, value_type __x = value_type())       {  if (__new_size < size())    _M_erase_at_end(this->_M_impl._M_start + __new_size);  else    insert(end(), __new_size - size(), __x);       }            size_type       capacity() const       { return size_type(this->_M_impl._M_end_of_storage     - this->_M_impl._M_start); }            bool       empty() const       { return begin() == end(); } 
994 # 458 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
995       void       reserve(size_type __n); 
996 # 473 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
997       reference       operator[](size_type __n)       { return *(this->_M_impl._M_start + __n); } 
998 # 488 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
999       const_reference       operator[](size_type __n) const       { return *(this->_M_impl._M_start + __n); }      protected:        void       _M_range_check(size_type __n) const       {  if (__n >= this->size())    __throw_out_of_range(("vector::_M_range_check"));       }      public: 
1000 # 513 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
1001       reference       at(size_type __n)       {  _M_range_check(__n);  return (*this)[__n];       } 
1002 # 531 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
1003       const_reference       at(size_type __n) const       {  _M_range_check(__n);  return (*this)[__n];       }            reference       front()       { return *begin(); }            const_reference       front() const       { return *begin(); }            reference       back()       { return *(end() - 1); }            const_reference       back() const       { return *(end() - 1); } 
1004 # 577 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
1005       pointer       data()       { return pointer(this->_M_impl._M_start); }        const_pointer       data() const       { return const_pointer(this->_M_impl._M_start); } 
1006 # 596 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
1007       void       push_back(const value_type& __x)       {  if (this->_M_impl._M_finish != this->_M_impl._M_end_of_storage)    {      this->_M_impl.construct(this->_M_impl._M_finish, __x);      ++this->_M_impl._M_finish;    }  else    _M_insert_aux(end(), __x);       } 
1008       iterator       insert(iterator __position, const value_type& __x); 
1009 # 651 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
1010       void       insert(iterator __position, size_type __n, const value_type& __x)       { _M_fill_insert(__position, __n, __x); } 
1011       void       swap(vector& __x)       {  std::swap(this->_M_impl._M_start, __x._M_impl._M_start);  std::swap(this->_M_impl._M_finish, __x._M_impl._M_finish);  std::swap(this->_M_impl._M_end_of_storage,     __x._M_impl._M_end_of_storage);     std::__alloc_swap<_Tp_alloc_type>::_S_do_it(_M_get_Tp_allocator(),           __x._M_get_Tp_allocator());       }              void       clear()       { _M_erase_at_end(this->_M_impl._M_start); }      protected:             template<typename _ForwardIterator>         pointer         _M_allocate_and_copy(size_type __n,         _ForwardIterator __first, _ForwardIterator __last)         {    pointer __result = this->_M_allocate(__n);    try      {        std::__uninitialized_copy_a(__first, __last, __result,        _M_get_Tp_allocator());        return __result;      }    catch(...)      {        _M_deallocate(__result, __n);        throw;      }  }            template<typename _Integer>         void         _M_initialize_dispatch(_Integer __n, _Integer __value, __true_type)         {    this->_M_impl._M_start = _M_allocate(__n);    this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;    std::__uninitialized_fill_n_a(this->_M_impl._M_start, __n, __value,      _M_get_Tp_allocator());    this->_M_impl._M_finish = this->_M_impl._M_end_of_storage;  }         template<typename _InputIterator>         void         _M_initialize_dispatch(_InputIterator __first, _InputIterator __last,           __false_type)         {    typedef typename std::iterator_traits<_InputIterator>::      iterator_category _IterCategory;    _M_range_initialize(__first, __last, _IterCategory());  }         template<typename _InputIterator>         void         _M_range_initialize(_InputIterator __first,        _InputIterator __last, std::input_iterator_tag)         {    for (; __first != __last; ++__first)      push_back(*__first);  }         template<typename _ForwardIterator>         void         _M_range_initialize(_ForwardIterator __first,        _ForwardIterator __last, std::forward_iterator_tag)         {    const size_type __n = std::distance(__first, __last);    this->_M_impl._M_start = this->_M_allocate(__n);    this->_M_impl._M_end_of_storage = this->_M_impl._M_start + __n;    this->_M_impl._M_finish =      std::__uninitialized_copy_a(__first, __last,      this->_M_impl._M_start,      _M_get_Tp_allocator());  }             template<typename _Integer>         void         _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)         {    _M_fill_assign(static_cast<size_type>(__n),     static_cast<value_type>(__val));  }         template<typename _InputIterator>         void         _M_assign_dispatch(_InputIterator __first, _InputIterator __last,       __false_type)         {    typedef typename std::iterator_traits<_InputIterator>::      iterator_category _IterCategory;    _M_assign_aux(__first, __last, _IterCategory());  }         template<typename _InputIterator>         void         _M_assign_aux(_InputIterator __first, _InputIterator __last,         std::input_iterator_tag);         template<typename _ForwardIterator>         void         _M_assign_aux(_ForwardIterator __first, _ForwardIterator __last,         std::forward_iterator_tag);          void       _M_fill_assign(size_type __n, const value_type& __val);            template<typename _Integer>         void         _M_insert_dispatch(iterator __pos, _Integer __n, _Integer __val,       __true_type)         {    _M_fill_insert(__pos, static_cast<size_type>(__n),     static_cast<value_type>(__val));  }         template<typename _InputIterator>         void         _M_insert_dispatch(iterator __pos, _InputIterator __first,       _InputIterator __last, __false_type)         {    typedef typename std::iterator_traits<_InputIterator>::      iterator_category _IterCategory;    _M_range_insert(__pos, __first, __last, _IterCategory());  }         template<typename _InputIterator>         void         _M_range_insert(iterator __pos, _InputIterator __first,    _InputIterator __last, std::input_iterator_tag);         template<typename _ForwardIterator>         void         _M_range_insert(iterator __pos, _ForwardIterator __first,    _ForwardIterator __last, std::forward_iterator_tag);          void       _M_fill_insert(iterator __pos, size_type __n, const value_type& __x);         void       _M_insert_aux(iterator __position, const value_type& __x);            void       _M_erase_at_end(pointer __pos)       {  std::_Destroy(__pos, this->_M_impl._M_finish, _M_get_Tp_allocator());  this->_M_impl._M_finish = __pos;       }     }; 
1012 # 937 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
1013   template<typename _Tp, typename _Alloc>     inline bool     operator==(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)     { return (__x.size() == __y.size()        && std::equal(__x.begin(), __x.end(), __y.begin())); } 
1014 # 954 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_vector.h" 3
1015   template<typename _Tp, typename _Alloc>     inline bool     operator<(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)     { return std::lexicographical_compare(__x.begin(), __x.end(),        __y.begin(), __y.end()); }     template<typename _Tp, typename _Alloc>     inline bool     operator!=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)     { return !(__x == __y); }     template<typename _Tp, typename _Alloc>     inline bool     operator>(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)     { return __y < __x; }     template<typename _Tp, typename _Alloc>     inline bool     operator<=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)     { return !(__y < __x); }     template<typename _Tp, typename _Alloc>     inline bool     operator>=(const vector<_Tp, _Alloc>& __x, const vector<_Tp, _Alloc>& __y)     { return !(__x < __y); }     template<typename _Tp, typename _Alloc>     inline void     swap(vector<_Tp, _Alloc>& __x, vector<_Tp, _Alloc>& __y)     { __x.swap(__y); }  }
1016  
1017
1018 # 15 "/usr/include/boost/program_options/errors.hpp" 2 3 4
1019    namespace boost { namespace program_options {       class error : public std::logic_error {     public:         error(const std::string& what) : std::logic_error(what) {}     };      class invalid_syntax : public error {     public:         invalid_syntax(const std::string& tokens, const std::string& msg)         : error(std::string(msg).append(" in '").append(tokens).append("'")),           tokens(tokens), msg(msg)         {}            ~invalid_syntax() throw() {}           std::string tokens, msg;     };       class unknown_option : public error {     public:         unknown_option(const std::string& name)         : error(std::string("unknown option ").append(name))         {}     };       class ambiguous_option : public error {     public:         ambiguous_option(const std::string& name,                          const std::vector<std::string>& alternatives)         : error(std::string("ambiguous option ").append(name)),           alternatives(alternatives)         {}          ~ambiguous_option() throw() {}           std::vector<std::string> alternatives;     };        class multiple_values : public error {     public:         multiple_values(const std::string& what) : error(what) {}     };         class multiple_occurrences : public error {     public:         multiple_occurrences(const std::string& what) : error(what) {}     };       class validation_error : public error {     public:         validation_error(const std::string& what) : error(what) {}         ~validation_error() throw() {}         void set_option_name(const std::string& option);          const char* what() const throw();     private:         mutable std::string m_message;         std::string m_option_name;      };      class invalid_option_value         : public validation_error     {     public:         invalid_option_value(const std::string& value);          invalid_option_value(const std::wstring& value);      };       class too_many_positional_options_error : public error {     public:         too_many_positional_options_error(const std::string& what)         : error(what) {}     };       class too_few_positional_options_error : public error {     public:         too_few_positional_options_error(const std::string& what)         : error(what) {}     };      class invalid_command_line_syntax : public invalid_syntax {     public:         enum kind_t {             long_not_allowed = 30,             long_adjacent_not_allowed,             short_adjacent_not_allowed,             empty_adjacent_parameter,             missing_parameter,             extra_parameter         };          invalid_command_line_syntax(const std::string& tokens, kind_t kind);         kind_t kind() const;     protected:         static std::string error_message(kind_t kind);     private:         kind_t m_kind;     };      class invalid_command_line_style : public error {     public:         invalid_command_line_style(const std::string& msg)         : error(msg)         {}     };  }}
1020 # 22 "/usr/include/boost/type_traits/remove_reference.hpp" 2 3 4
1021  namespace boost {    template< typename T > struct remove_reference { typedef T type; }; template< typename T > struct remove_reference<T&> { typedef T type; }; 
1022 # 46 "/usr/include/boost/type_traits/remove_reference.hpp" 3 4
1023 }
1024   
1025 # 1 "/usr/include/boost/type_traits/detail/type_trait_undef.hpp" 1 3 4
1026  namespace boost {     class any     {     public:          any()           : content(0)         {         }          template<typename ValueType>         any(const ValueType & value)           : content(new holder<ValueType>(value))         {         }          any(const any & other)           : content(other.content ? other.content->clone() : 0)         {         }          ~any()         {             delete content;         }      public:          any & swap(any & rhs)         {             std::swap(content, rhs.content);             return *this;         }          template<typename ValueType>         any & operator=(const ValueType & rhs)         {             any(rhs).swap(*this);             return *this;         }          any & operator=(const any & rhs)         {             any(rhs).swap(*this);             return *this;         }      public:          bool empty() const         {             return !content;         }          const std::type_info & type() const         {             return content ? content->type() : typeid(void);         }       private:             class placeholder         {         public:              virtual ~placeholder()             {             }          public:              virtual const std::type_info & type() const = 0;              virtual placeholder * clone() const = 0;          };          template<typename ValueType>         class holder : public placeholder         {         public:              holder(const ValueType & value)               : held(value)             {             }          public:              virtual const std::type_info & type() const             {                 return typeid(ValueType);             }              virtual placeholder * clone() const             {                 return new holder(held);             }          public:              ValueType held;          };        private:          template<typename ValueType>         friend ValueType * any_cast(any *);          template<typename ValueType>         friend ValueType * unsafe_any_cast(any *);                placeholder * content;      };      class bad_any_cast : public std::bad_cast     {     public:         virtual const char * what() const throw()         {             return "boost::bad_any_cast: "                    "failed conversion using boost::any_cast";         }     };      template<typename ValueType>     ValueType * any_cast(any * operand)     {         return operand && operand->type() == typeid(ValueType)                     ? &static_cast<any::holder<ValueType> *>(operand->content)->held                     : 0;     }      template<typename ValueType>     const ValueType * any_cast(const any * operand)     {         return any_cast<ValueType>(const_cast<any *>(operand));     }      template<typename ValueType>     ValueType any_cast(const any & operand)     {         typedef typename remove_reference<ValueType>::type nonref; 
1027 # 191 "/usr/include/boost/any.hpp" 3 4
1028         const nonref * result = any_cast<nonref>(&operand);         if(!result)             boost::throw_exception(bad_any_cast());         return *result;     }      template<typename ValueType>     ValueType any_cast(any & operand)     {         typedef typename remove_reference<ValueType>::type nonref;                nonref * result = any_cast<nonref>(&operand);         if(!result)             boost::throw_exception(bad_any_cast());         return *result;     }           template<typename ValueType>     inline ValueType * unsafe_any_cast(any * operand)     {         return &static_cast<any::holder<ValueType> *>(operand->content)->held;     }      template<typename ValueType>     inline const ValueType * unsafe_any_cast(const any * operand)     {         return unsafe_any_cast<ValueType>(const_cast<any *>(operand));     } }
1029
1030 # 66 "/usr/include/gentoo-multilib/amd64/assert.h" 3 4
1031 extern "C" {   extern void __assert_fail (__const char *__assertion, __const char *__file,       unsigned int __line, __const char *__function)      throw () __attribute__ ((__noreturn__));   extern void __assert_perror_fail (int __errnum, __const char *__file,       unsigned int __line,       __const char *__function)      throw () __attribute__ ((__noreturn__));     extern void __assert (const char *__assertion, const char *__file, int __line)      throw () __attribute__ ((__noreturn__));   }
1032 # 16 "/usr/include/boost/type_traits/is_integral.hpp" 2 3 4
1033  namespace boost {     template< typename T > struct is_integral : ::boost::integral_constant<bool,false> { };  template<> struct is_integral< unsigned char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned char const volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned short const volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned int const volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< unsigned long const volatile > : ::boost::integral_constant<bool,true> { };  template<> struct is_integral< signed char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed char const volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed short const volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed int const volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< signed long const volatile > : ::boost::integral_constant<bool,true> { };  template<> struct is_integral< bool > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< bool const volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< char const volatile > : ::boost::integral_constant<bool,true> { };      template<> struct is_integral< wchar_t > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< wchar_t const volatile > : ::boost::integral_constant<bool,true> { }; 
1034 # 60 "/usr/include/boost/type_traits/is_integral.hpp" 3 4
1035 template<> struct is_integral< ::boost::ulong_long_type > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::ulong_long_type const volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type const > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_integral< ::boost::long_long_type const volatile > : ::boost::integral_constant<bool,true> { };      }
1036   
1037 # 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
1038  namespace boost {   template< typename T > struct is_void : ::boost::integral_constant<bool,false> { }; template<> struct is_void< void > : ::boost::integral_constant<bool,true> { };   template<> struct is_void< void const > : ::boost::integral_constant<bool,true> { }; template<> struct is_void< void volatile > : ::boost::integral_constant<bool,true> { }; template<> struct is_void< void const volatile > : ::boost::integral_constant<bool,true> { };   }
1039   
1040 # 1 "/usr/include/boost/type_traits/detail/bool_trait_undef.hpp" 1 3 4
1041 # 17 "/usr/include/boost/utility/addressof.hpp" 3 4
1042 namespace boost { 
1043 # 32 "/usr/include/boost/utility/addressof.hpp" 3 4
1044 template <typename T> T*  addressof(T& v) {   return reinterpret_cast<T*>(        &const_cast<char&>(reinterpret_cast<const volatile char &>(v))); } 
1045 # 56 "/usr/include/boost/utility/addressof.hpp" 3 4
1046 }
1047 # 29 "/usr/include/boost/ref.hpp" 3 4
1048 namespace boost {  template<class T> class reference_wrapper { public:     typedef T type;            explicit reference_wrapper(T& t): t_(boost::addressof(t)) {}        operator T& () const { return *t_; }      T& get() const { return *t_; }      T* get_pointer() const { return t_; }  private:      T* t_; };        template<class T> inline reference_wrapper<T> const ref(T & t) {     return reference_wrapper<T>(t); }  template<class T> inline reference_wrapper<T const> const cref(T const & t) {     return reference_wrapper<T const>(t); }      template<typename T> class is_reference_wrapper     : public mpl::false_ { };  template<typename T> class unwrap_reference {  public:     typedef T type; }; 
1049 # 106 "/usr/include/boost/ref.hpp" 3 4
1050 template<typename T> class is_reference_wrapper< reference_wrapper<T> > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> > { public: typedef T type; };  template<typename T> class is_reference_wrapper< reference_wrapper<T> const > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> const > { public: typedef T type; }; template<typename T> class is_reference_wrapper< reference_wrapper<T> volatile > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> volatile > { public: typedef T type; }; template<typename T> class is_reference_wrapper< reference_wrapper<T> const volatile > : public mpl::true_ { }; template<typename T> class unwrap_reference< reference_wrapper<T> const volatile > { public: typedef T type; }; 
1051 # 176 "/usr/include/boost/ref.hpp" 3 4
1052 }
1053 namespace mpl_ {  struct void_;  }
1054  namespace boost { namespace mpl { using ::mpl_::void_; } }
1055  
1056 namespace mpl_ {   struct na {     typedef na type;     enum { value = 0 }; };  }
1057  namespace boost { namespace mpl { using ::mpl_::na; } }
1058  
1059 # 19 "/usr/include/boost/mpl/aux_/na.hpp" 2 3 4
1060    namespace boost { namespace mpl {  template< typename T > struct is_na     : false_ {    };  template<> struct is_na<na>     : true_ {    };  template< typename T > struct is_not_na     : true_ {    };  template<> struct is_not_na<na>     : false_ {    };   template< typename T, typename U > struct if_na {     typedef T type; };  template< typename U > struct if_na<na,U> {     typedef U type; }; 
1061 # 93 "/usr/include/boost/mpl/aux_/na.hpp" 3 4
1062 }}
1063  
1064 # 19 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4
1065 # 25 "/usr/include/boost/mpl/lambda_fwd.hpp" 2 3 4
1066   namespace boost { namespace mpl {  template<       typename T = na     , typename Tag = void_     , typename Arity = int_< aux::template_arity<T>::value >       > struct lambda;  }}
1067  
1068      namespace boost { namespace mpl {    template<       bool C     , typename T1     , typename T2     > struct if_c {     typedef T1 type; };  template<       typename T1     , typename T2     > struct if_c<false,T1,T2> {     typedef T2 type; };    template<       typename T1 = na     , typename T2 = na     , typename T3 = na     > struct if_ {  private:      typedef if_c<              static_cast<bool>(T1::value)          , T2         , T3         > almost_type_;   public:     typedef typename almost_type_::type type;      }; 
1069 # 131 "/usr/include/boost/mpl/if.hpp" 3 4
1070 template<> struct if_< na , na , na > { template< typename T1 , typename T2 , typename T3 , typename T4 =na , typename T5 =na > struct apply : if_< T1 , T2 , T3 > { }; }; template< typename Tag > struct lambda< if_< na , na , na > , Tag , int_<-1> > { typedef false_ is_le; typedef if_< na , na , na > result_; typedef if_< na , na , na > type; }; namespace aux { template< typename T1 , typename T2 , typename T3 > struct template_arity< if_< T1 , T2 , T3 > > : int_<3> { }; template<> struct template_arity< if_< na , na , na > > : int_<-1> { }; }  }}
1071
1072 # 26 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
1073 namespace boost {  template <typename T> struct alignment_of;   namespace detail {  template <typename T> struct alignment_of_hack {     char c;     T t;     alignment_of_hack(); };   template <unsigned A, unsigned S> struct alignment_logic {     static const std::size_t value = A < S ? A : S; };   template< typename T > struct alignment_of_impl {     static const std::size_t value = (::boost::detail::alignment_logic< sizeof(::boost::detail::alignment_of_hack<T>) - sizeof(T), sizeof(T) >::value);     };  }  template< typename T > struct alignment_of : ::boost::integral_constant<std::size_t,::boost::detail::alignment_of_impl<T>::value> { };     template <typename T> struct alignment_of<T&>     : alignment_of<T*> { }; 
1074 # 81 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
1075 template<> struct alignment_of<void> : ::boost::integral_constant<std::size_t,0> { };  template<> struct alignment_of<void const> : ::boost::integral_constant<std::size_t,0> { }; template<> struct alignment_of<void volatile> : ::boost::integral_constant<std::size_t,0> { }; template<> struct alignment_of<void const volatile> : ::boost::integral_constant<std::size_t,0> { };   }
1076  
1077 # 97 "/usr/include/boost/type_traits/alignment_of.hpp" 3 4
1078 # 24 "/usr/include/boost/utility/enable_if.hpp" 3 4
1079 namespace boost {    template <bool B, class T = void>   struct enable_if_c {     typedef T type;   };    template <class T>   struct enable_if_c<false, T> {};    template <class Cond, class T = void>   struct enable_if : public enable_if_c<Cond::value, T> {};    template <bool B, class T>   struct lazy_enable_if_c {     typedef typename T::type type;   };    template <class T>   struct lazy_enable_if_c<false, T> {};    template <class Cond, class T>   struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};     template <bool B, class T = void>   struct disable_if_c {     typedef T type;   };    template <class T>   struct disable_if_c<true, T> {};    template <class Cond, class T = void>   struct disable_if : public disable_if_c<Cond::value, T> {};    template <bool B, class T>   struct lazy_disable_if_c {     typedef typename T::type type;   };    template <class T>   struct lazy_disable_if_c<true, T> {};    template <class Cond, class T>   struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};  }
1080  
1081 # 81 "/usr/include/boost/function/function_base.hpp" 3 4
1082 namespace boost { 
1083 # 91 "/usr/include/boost/function/function_base.hpp" 3 4
1084 template<typename Signature, typename Allocator = std::allocator<void> > class function;   template<typename Signature, typename Allocator> inline void swap(function<Signature, Allocator>& f1,                  function<Signature, Allocator>& f2) {   f1.swap(f2); }  }
1085    namespace boost {   namespace detail {     namespace function {       class X;              union function_buffer       {          void* obj_ptr;            const void* const_obj_ptr;           mutable void (*func_ptr)();           struct bound_memfunc_ptr_t {           void (X::*memfunc_ptr)(int);           void* obj_ptr;         } bound_memfunc_ptr;           mutable char data;       };              struct unusable       {         unusable() {}         template<typename T> unusable(const T&) {}       };            template<typename T> struct function_return_type { typedef T type; };        template<>       struct function_return_type<void>       {         typedef unusable type;       };         enum functor_manager_operation_type {         clone_functor_tag,         destroy_functor_tag,         check_functor_type_tag,         get_functor_type_tag       };         struct function_ptr_tag {};       struct function_obj_tag {};       struct member_ptr_tag {};       struct function_obj_ref_tag {};        template<typename F>       class get_function_tag       {         typedef typename mpl::if_c<(is_pointer<F>::value),                                    function_ptr_tag,                                    function_obj_tag>::type ptr_or_obj_tag;          typedef typename mpl::if_c<(is_member_pointer<F>::value),                                    member_ptr_tag,                                    ptr_or_obj_tag>::type ptr_or_obj_or_mem_tag;          typedef typename mpl::if_c<(is_reference_wrapper<F>::value),                                    function_obj_ref_tag,                                    ptr_or_obj_or_mem_tag>::type or_ref_tag;        public:         typedef or_ref_tag type;       };          template<typename F>       struct reference_manager       {         static inline void         get(const function_buffer& in_buffer, function_buffer& out_buffer,             functor_manager_operation_type op)         {           switch (op) {           case clone_functor_tag:             out_buffer.obj_ptr = in_buffer.obj_ptr;             return;            case destroy_functor_tag:             out_buffer.obj_ptr = 0;             return;            case check_functor_type_tag:             {                  const std::type_info& check_type =                 *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);               if ((std::strcmp((check_type).name(),(typeid(F)).name()) == 0))                 out_buffer.obj_ptr = in_buffer.obj_ptr;               else                 out_buffer.obj_ptr = 0;             }             return;            case get_functor_type_tag:             out_buffer.const_obj_ptr = &typeid(F);             return;           }         }       };            template<typename F>       struct function_allows_small_object_optimization       {         static const bool value = ((sizeof(F) <= sizeof(function_buffer) && (alignment_of<function_buffer>::value % alignment_of<F>::value == 0)));           };            template<typename Functor, typename Allocator>       struct functor_manager       {       private:         typedef Functor functor_type;           static inline void         manager(const function_buffer& in_buffer, function_buffer& out_buffer,                 functor_manager_operation_type op, function_ptr_tag)         {           if (op == clone_functor_tag)             out_buffer.func_ptr = in_buffer.func_ptr;           else if (op == destroy_functor_tag)             out_buffer.func_ptr = 0;           else {             const std::type_info& check_type =               *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);             if ((std::strcmp((check_type).name(),(typeid(Functor)).name()) == 0))               out_buffer.obj_ptr = &in_buffer.func_ptr;             else               out_buffer.obj_ptr = 0;           }         }           static inline void         manager(const function_buffer& in_buffer, function_buffer& out_buffer,                 functor_manager_operation_type op, mpl::true_)         {           if (op == clone_functor_tag) {             const functor_type* in_functor =               reinterpret_cast<const functor_type*>(&in_buffer.data);             new ((void*)&out_buffer.data) functor_type(*in_functor);           } else if (op == destroy_functor_tag) {              reinterpret_cast<functor_type*>(&out_buffer.data)->~Functor();           } else {             const std::type_info& check_type =               *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);             if ((std::strcmp((check_type).name(),(typeid(Functor)).name()) == 0))               out_buffer.obj_ptr = &in_buffer.data;             else               out_buffer.obj_ptr = 0;           }         }           static inline void         manager(const function_buffer& in_buffer, function_buffer& out_buffer,                 functor_manager_operation_type op, mpl::false_)         {            typedef typename Allocator::template rebind<functor_type>::other             allocator_type;           typedef typename allocator_type::pointer pointer_type;                allocator_type allocator;             if (op == clone_functor_tag) {               const functor_type* f =               (const functor_type*)(in_buffer.obj_ptr);                pointer_type copy = allocator.allocate(1);             allocator.construct(copy, *f);               functor_type* new_f = static_cast<functor_type*>(copy);                out_buffer.obj_ptr = new_f;           } else if (op == destroy_functor_tag) {              functor_type* f =               static_cast<functor_type*>(out_buffer.obj_ptr);                 pointer_type victim = static_cast<pointer_type>(f);               allocator.destroy(victim);             allocator.deallocate(victim, 1);                out_buffer.obj_ptr = 0;           } else {             const std::type_info& check_type =               *static_cast<const std::type_info*>(out_buffer.const_obj_ptr);             if ((std::strcmp((check_type).name(),(typeid(Functor)).name()) == 0))               out_buffer.obj_ptr = in_buffer.obj_ptr;             else               out_buffer.obj_ptr = 0;           }         }             static inline void         manager(const function_buffer& in_buffer, function_buffer& out_buffer,                 functor_manager_operation_type op, function_obj_tag)         {           manager(in_buffer, out_buffer, op,                   mpl::bool_<(function_allows_small_object_optimization<functor_type>::value)>());         }        public:           static inline void         manage(const function_buffer& in_buffer, function_buffer& out_buffer,                functor_manager_operation_type op)         {           typedef typename get_function_tag<functor_type>::type tag_type;           switch (op) {           case get_functor_type_tag:             out_buffer.const_obj_ptr = &typeid(functor_type);             return;            default:             manager(in_buffer, out_buffer, op, tag_type());             return;           }         }       };         struct useless_clear_type {}; 
1086 # 457 "/usr/include/boost/function/function_base.hpp" 3 4
1087       struct vtable_base       {         vtable_base() : manager(0) { }         void (*manager)(const function_buffer& in_buffer,                         function_buffer& out_buffer,                         functor_manager_operation_type op);       };     }   }        class function_base { public:   function_base() : vtable(0) { }     bool empty() const { return !vtable; }      const std::type_info& target_type() const   {     if (!vtable) return typeid(void);      detail::function::function_buffer type;     vtable->manager(functor, type, detail::function::get_functor_type_tag);     return *static_cast<const std::type_info*>(type.const_obj_ptr);   }    template<typename Functor>     Functor* target()     {       if (!vtable) return 0;        detail::function::function_buffer type_result;       type_result.const_obj_ptr = &typeid(Functor);       vtable->manager(functor, type_result,                       detail::function::check_functor_type_tag);       return static_cast<Functor*>(type_result.obj_ptr);     }    template<typename Functor>        const Functor* target() const      {       if (!vtable) return 0;        detail::function::function_buffer type_result;       type_result.const_obj_ptr = &typeid(Functor);       vtable->manager(functor, type_result,                       detail::function::check_functor_type_tag);         return (const Functor*)(type_result.obj_ptr);     }    template<typename F>     bool contains(const F& f) const     {          if (const F* fp = this->template target<F>())        {         return function_equal(*fp, f);       } else {         return false;       }     } 
1088 # 560 "/usr/include/boost/function/function_base.hpp" 3 4
1089 public:   detail::function::vtable_base* vtable;   mutable detail::function::function_buffer functor; };      class bad_function_call : public std::runtime_error { public:   bad_function_call() : std::runtime_error("call to empty boost::function") {} };   inline bool operator==(const function_base& f,                        detail::function::useless_clear_type*) {   return f.empty(); }  inline bool operator!=(const function_base& f,                        detail::function::useless_clear_type*) {   return !f.empty(); }  inline bool operator==(detail::function::useless_clear_type*,                        const function_base& f) {   return f.empty(); }  inline bool operator!=(detail::function::useless_clear_type*,                        const function_base& f) {   return !f.empty(); } 
1090 # 636 "/usr/include/boost/function/function_base.hpp" 3 4
1091 template<typename Functor>   typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type   operator==(const function_base& f, Functor g)   {     if (const Functor* fp = f.template target<Functor>())       return function_equal(*fp, g);     else return false;   }  template<typename Functor>   typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type   operator==(Functor g, const function_base& f)   {     if (const Functor* fp = f.template target<Functor>())       return function_equal(g, *fp);     else return false;   }  template<typename Functor>   typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type   operator!=(const function_base& f, Functor g)   {     if (const Functor* fp = f.template target<Functor>())       return !function_equal(*fp, g);     else return true;   }  template<typename Functor>   typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type   operator!=(Functor g, const function_base& f)   {     if (const Functor* fp = f.template target<Functor>())       return !function_equal(g, *fp);     else return true;   }   template<typename Functor>   typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type   operator==(const function_base& f, reference_wrapper<Functor> g)   {     if (const Functor* fp = f.template target<Functor>())       return fp == g.get_pointer();     else return false;   }  template<typename Functor>   typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type   operator==(reference_wrapper<Functor> g, const function_base& f)   {     if (const Functor* fp = f.template target<Functor>())       return g.get_pointer() == fp;     else return false;   }  template<typename Functor>   typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type   operator!=(const function_base& f, reference_wrapper<Functor> g)   {     if (const Functor* fp = f.template target<Functor>())       return fp != g.get_pointer();     else return true;   }  template<typename Functor>   typename ::boost::enable_if_c<(::boost::type_traits::ice_not< (::boost::is_integral<Functor>::value)>::value), bool>::type   operator!=(reference_wrapper<Functor> g, const function_base& f)   {     if (const Functor* fp = f.template target<Functor>())       return g.get_pointer() != fp;     else return true;   }    namespace detail {   namespace function {     inline bool has_empty_target(const function_base* f)     {       return f->empty();     }            inline bool has_empty_target(...)     {       return false;     }    } } }
1092  
1093 namespace boost {    template<class T> T * get_pointer(T * p) {     return p; }    template<class T> T * get_pointer(std::auto_ptr<T> const& p) {     return p.get(); }   }
1094  
1095 # 26 "/usr/include/boost/mem_fn.hpp" 2 3 4
1096   namespace boost { 
1097 # 207 "/usr/include/boost/mem_fn.hpp" 3 4
1098 namespace _mfi {       
1099 # 1 "/usr/include/boost/bind/mem_fn_template.hpp" 1 3 4
1100
1101 # 268 "/usr/include/boost/mem_fn.hpp" 3 4
1102
1103 # 311 "/usr/include/boost/mem_fn.hpp" 3 4
1104 namespace _mfi {  template<class R, class T> class dm { public:      typedef R const & result_type;     typedef T const * argument_type;  private:      typedef R (T::*F);     F f_;      template<class U> R const & call(U & u, T const *) const     {         return (u.*f_);     }      template<class U> R const & call(U & u, void const *) const     {         return (get_pointer(u)->*f_);     }  public:      explicit dm(F f): f_(f) {}      R & operator()(T * p) const     {         return (p->*f_);     }      R const & operator()(T const * p) const     {         return (p->*f_);     }      template<class U> R const & operator()(U const & u) const     {         return call(u, &u);     }        R & operator()(T & t) const     {         return (t.*f_);     }      R const & operator()(T const & t) const     {         return (t.*f_);     }        bool operator==(dm const & rhs) const     {         return f_ == rhs.f_;     }      bool operator!=(dm const & rhs) const     {         return f_ != rhs.f_;     } };  }  template<class R, class T> _mfi::dm<R, T> mem_fn(R T::*f) {     return _mfi::dm<R, T>(f); }  }
1105  
1106 namespace boost {   namespace detail {     namespace function {       template<         typename FunctionPtr,         typename R ,         typename T0         >       struct function_invoker1       {         static R invoke(function_buffer& function_ptr ,                         T0 a0)         {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           return f( a0);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0         >       struct void_function_invoker1       {         static void         invoke(function_buffer& function_ptr ,                T0 a0)          {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           f( a0);         }       };        template<         typename FunctionObj,         typename R ,         typename T0       >       struct function_obj_invoker1       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0);         }       };        template<         typename FunctionObj,         typename R ,         typename T0       >       struct void_function_obj_invoker1       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0);         }       };        template<         typename FunctionObj,         typename R ,         typename T0       >       struct function_ref_invoker1       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0);         }       };        template<         typename FunctionObj,         typename R ,         typename T0       >       struct void_function_ref_invoker1       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0       >       struct get_function_invoker1       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_invoker1<                             FunctionPtr,                             R ,                             T0                           >,                           function_invoker1<                             FunctionPtr,                             R ,                             T0                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0        >       struct get_function_obj_invoker1       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_obj_invoker1<                             FunctionObj,                             R ,                             T0                           >,                           function_obj_invoker1<                             FunctionObj,                             R ,                             T0                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0        >       struct get_function_ref_invoker1       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_ref_invoker1<                             FunctionObj,                             R ,                             T0                           >,                           function_ref_invoker1<                             FunctionObj,                             R ,                             T0                           >                        >::type type;       };           template<typename R , typename T0,                typename Allocator>       struct basic_vtable1 : vtable_base       {          typedef R result_type;             typedef result_type (*invoker_type)(function_buffer&                                             ,                                             T0);          template<typename F>         basic_vtable1(F f) : vtable_base(), invoker(0)         {           init(f);         }          template<typename F>         bool assign_to(F f, function_buffer& functor)         {           typedef typename get_function_tag<F>::type tag;           return assign_to(f, functor, tag());         }          void clear(function_buffer& functor)         {           if (manager)             manager(functor, functor, destroy_functor_tag);         }        private:         template<typename F>         void init(F f)         {           typedef typename get_function_tag<F>::type tag;           init(f, tag());         }           template<typename FunctionPtr>         void init(FunctionPtr , function_ptr_tag)         {           typedef typename get_function_invoker1<                              FunctionPtr,                              R ,                              T0                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionPtr, Allocator>::manage;         }          template<typename FunctionPtr>         bool         assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)         {           this->clear(functor);           if (f) {               functor.func_ptr = (void (*)())(f);             return true;           } else {             return false;           }         }            template<typename MemberPtr>         void init(MemberPtr f, member_ptr_tag)         {              this->init(mem_fn(f));         }          template<typename MemberPtr>         bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)         {              if (f) {             this->assign_to(mem_fn(f), functor);             return true;           } else {             return false;           }         }            template<typename FunctionObj>         void init(FunctionObj , function_obj_tag)         {           typedef typename get_function_obj_invoker1<                              FunctionObj,                              R ,                              T0                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionObj, Allocator>::manage;         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)         {           new ((void*)&functor.data) FunctionObj(f);         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)         {            typedef typename Allocator::template rebind<FunctionObj>::other             allocator_type;           typedef typename allocator_type::pointer pointer_type;            allocator_type allocator;           pointer_type copy = allocator.allocate(1);           allocator.construct(copy, f);             functor.obj_ptr = static_cast<FunctionObj*>(copy);            }          template<typename FunctionObj>         bool         assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)         {           if (!boost::detail::function::has_empty_target(boost::addressof(f))) {             assign_functor(f, functor,                            mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());             return true;           } else {             return false;           }         }           template<typename FunctionObj>         void         init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)         {           typedef typename get_function_ref_invoker1<                              FunctionObj,                              R ,                              T0                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &reference_manager<FunctionObj>::get;         }          template<typename FunctionObj>         bool         assign_to(const reference_wrapper<FunctionObj>& f,                   function_buffer& functor, function_obj_ref_tag)         {           if (!boost::detail::function::has_empty_target(f.get_pointer())) {                 functor.const_obj_ptr = f.get_pointer();             return true;           } else {             return false;           }         }        public:         invoker_type invoker;       };     }   }    template<     typename R ,     typename T0,     typename Allocator = std::allocator<function_base>   >   class function1 : public function_base   {   public:      typedef R result_type;        private:     typedef boost::detail::function::basic_vtable1<               R , T0, Allocator>       vtable_type;      struct clear_type {};    public:     static const int args = 1;       template<typename Args>     struct sig     {       typedef result_type type;     };       typedef T0 argument_type;          static const int arity = 1;     typedef T0 arg1_type;      typedef Allocator allocator_type;     typedef function1 self_type;      function1() : function_base() { }        template<typename Functor>     function1(Functor f                              ,typename enable_if_c<                             (boost::type_traits::ice_not<                              (is_integral<Functor>::value)>::value),                                         int>::type = 0                              ) :       function_base()     {       this->assign_to(f);     }       function1(clear_type*) : function_base() { }            function1(const function1& f) : function_base()     {       this->assign_to_own(f);     }      ~function1() { clear(); } 
1107 # 544 "/usr/include/boost/function/function_template.hpp" 3 4
1108     result_type operator()( T0 a0) const;            template<typename Functor>      typename enable_if_c<                (boost::type_traits::ice_not<                  (is_integral<Functor>::value)>::value),                function1&>::type        operator=(Functor f)     {       this->clear();       try {         this->assign_to(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }       function1& operator=(clear_type*)     {       this->clear();       return *this;     } 
1109 # 589 "/usr/include/boost/function/function_template.hpp" 3 4
1110     function1& operator=(const function1& f)     {       if (&f == this)         return *this;        this->clear();       try {         this->assign_to_own(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }      void swap(function1& other)     {       if (&other == this)         return;        function1 tmp = *this;       *this = other;       other = tmp;     }       void clear()     {       if (vtable) {         static_cast<vtable_type*>(vtable)->clear(this->functor);         vtable = 0;       }     }        private:     struct dummy {       void nonnull() {};     };      typedef void (dummy::*safe_bool)();    public:     operator safe_bool () const       { return (this->empty())? 0 : &dummy::nonnull; }      bool operator!() const       { return this->empty(); }     private:     void assign_to_own(const function1& f)     {       if (!f.empty()) {         this->vtable = f.vtable;         f.vtable->manager(f.functor, this->functor,                           boost::detail::function::clone_functor_tag);       }     }      template<typename Functor>     void assign_to(Functor f)     {       static vtable_type stored_vtable(f);       if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;       else vtable = 0;     }   };    template<typename R , typename T0 ,            typename Allocator>   inline void swap(function1<                      R ,                      T0 ,                      Allocator                    >& f1,                    function1<                      R ,                      T0,                      Allocator                    >& f2)   {     f1.swap(f2);   }     template<typename R , typename T0,            typename Allocator>   typename function1<       R , T0,       Allocator>::result_type    function1<R , T0,                             Allocator>   ::operator()( T0 a0) const   {     if (this->empty())       boost::throw_exception(bad_function_call());      return static_cast<vtable_type*>(vtable)->invoker              (this->functor , a0);   }    template<typename R , typename T0 ,          typename Allocator>   void operator==(const function1<                           R ,                           T0 ,                           Allocator>&,                   const function1<                           R ,                           T0 ,                   Allocator>&); template<typename R , typename T0 ,          typename Allocator>   void operator!=(const function1<                           R ,                           T0 ,                           Allocator>&,                   const function1<                           R ,                           T0 ,                   Allocator>&); 
1111 # 726 "/usr/include/boost/function/function_template.hpp" 3 4
1112 template<typename R ,          typename T0,          typename Allocator> class function<R ( T0), Allocator>   : public function1<R, T0                                    , Allocator> {   typedef function1<R, T0                                   , Allocator> base_type;   typedef function self_type;    struct clear_type {};  public:   typedef typename base_type::allocator_type allocator_type;    function() : base_type() {}    template<typename Functor>   function(Functor f             ,typename enable_if_c<                             (boost::type_traits::ice_not<                           (is_integral<Functor>::value)>::value),                        int>::type = 0             ) :     base_type(f)   {   }     function(clear_type*) : base_type() {}     function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}    function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}    self_type& operator=(const self_type& f)   {     self_type(f).swap(*this);     return *this;   }    template<typename Functor>    typename enable_if_c<                             (boost::type_traits::ice_not<                          (is_integral<Functor>::value)>::value),                       self_type&>::type      operator=(Functor f)   {     self_type(f).swap(*this);     return *this;   }     self_type& operator=(clear_type*)   {     this->clear();     return *this;   }     self_type& operator=(const base_type& f)   {     self_type(f).swap(*this);     return *this;   } }; 
1113 # 808 "/usr/include/boost/function/function_template.hpp" 3 4
1114 }
1115        namespace boost { namespace program_options {         class value_semantic {     public:            virtual std::string name() const = 0;            virtual unsigned min_tokens() const = 0;            virtual unsigned max_tokens() const = 0;              virtual bool is_composing() const = 0;               virtual void parse(boost::any& value_store,                            const std::vector<std::string>& new_tokens,                            bool utf8) const             = 0;             virtual bool apply_default(boost::any& value_store) const = 0;            virtual void notify(const boost::any& value_store) const = 0;          virtual ~value_semantic() {}     };         template<class charT>     class value_semantic_codecvt_helper {      }; 
1116 # 84 "/usr/include/boost/program_options/value_semantic.hpp" 3 4
1117     template<>     class     value_semantic_codecvt_helper<char> : public value_semantic {     private:         void parse(boost::any& value_store,                    const std::vector<std::string>& new_tokens,                    bool utf8) const;     protected:         virtual void xparse(boost::any& value_store,                             const std::vector<std::string>& new_tokens)             const = 0;     }; 
1118 # 104 "/usr/include/boost/program_options/value_semantic.hpp" 3 4
1119     template<>     class     value_semantic_codecvt_helper<wchar_t> : public value_semantic {     private:         void parse(boost::any& value_store,                    const std::vector<std::string>& new_tokens,                    bool utf8) const;     protected:          virtual void xparse(boost::any& value_store,                             const std::vector<std::wstring>& new_tokens)             const = 0;      };        class     untyped_value : public value_semantic_codecvt_helper<char> {     public:         untyped_value(bool zero_tokens = false)         : m_zero_tokens(zero_tokens)         {}          std::string name() const;          unsigned min_tokens() const;         unsigned max_tokens() const;          bool is_composing() const { return false; }               void xparse(boost::any& value_store,                     const std::vector<std::string>& new_tokens) const;           bool apply_default(boost::any&) const { return false; }           void notify(const boost::any&) const {}     private:         bool m_zero_tokens;     };            class typed_value_base     {     public:           virtual const std::type_info& value_type() const = 0;           virtual ~typed_value_base() {}     };        template<class T, class charT = char>     class typed_value : public value_semantic_codecvt_helper<charT>,                         public typed_value_base     {     public:           typed_value(T* store_to)         : m_store_to(store_to), m_composing(false),           m_multitoken(false), m_zero_tokens(false)         {}              typed_value* default_value(const T& v)         {             m_default_value = boost::any(v);             m_default_value_as_text = boost::lexical_cast<std::string>(v);             return this;         }                typed_value* default_value(const T& v, const std::string& textual)         {             m_default_value = boost::any(v);             m_default_value_as_text = textual;             return this;         }            typed_value* notifier(function1<void, const T&> f)         {             m_notifier = f;             return this;         }             typed_value* composing()         {             m_composing = true;             return this;         }           typed_value* multitoken()         {             m_multitoken = true;             return this;         }          typed_value* zero_tokens()         {             m_zero_tokens = true;             return this;         }       public:          std::string name() const;          bool is_composing() const { return m_composing; }          unsigned min_tokens() const         {             if (m_zero_tokens) {                 return 0;             } else {                 return 1;             }         }          unsigned max_tokens() const {             if (m_multitoken) {                 return 32000;             } else if (m_zero_tokens) {                 return 0;             } else {                 return 1;             }         }             void xparse(boost::any& value_store,                     const std::vector< std::basic_string<charT> >& new_tokens)             const;              virtual bool apply_default(boost::any& value_store) const         {             if (m_default_value.empty()) {                 return false;             } else {                 value_store = m_default_value;                 return true;             }         }             void notify(const boost::any& value_store) const;      public:          const std::type_info& value_type() const         {             return typeid(T);         }       private:         T* m_store_to;            boost::any m_default_value;         std::string m_default_value_as_text;         bool m_composing, m_implicit, m_multitoken, m_zero_tokens;         boost::function1<void, const T&> m_notifier;     }; 
1120 # 315 "/usr/include/boost/program_options/value_semantic.hpp" 3 4
1121     template<class T>     typed_value<T>*     value();        template<class T>     typed_value<T>*     value(T* v);          template<class T>     typed_value<T, wchar_t>*     wvalue();        template<class T>     typed_value<T, wchar_t>*     wvalue(T* v);          typed_value<bool>*     bool_switch();        typed_value<bool>*     bool_switch(bool* v);  }}
1122   
1123 # 1 "/usr/include/boost/program_options/detail/value_semantic.hpp" 1 3 4
1124
1125 # 11 "/usr/include/boost/program_options/detail/value_semantic.hpp" 3 4
1126 namespace boost { namespace program_options {      extern std::string arg;      template<class T, class charT>     std::string     typed_value<T, charT>::name() const     {         if (!m_default_value.empty() && !m_default_value_as_text.empty()) {             return arg + " (=" + m_default_value_as_text + ")";         } else {             return arg;         }     }      template<class T, class charT>     void     typed_value<T, charT>::notify(const boost::any& value_store) const     {         const T* value = boost::any_cast<const T>(&value_store);         if (m_store_to) {             *m_store_to = *value;         }         if (m_notifier) {             m_notifier(*value);         }     }      namespace validators {              template<class charT>         const std::basic_string<charT>& get_single_string(             const std::vector<std::basic_string<charT> >& v,             bool allow_empty = false)         {             static std::basic_string<charT> empty;             if (v.size() > 1)                 throw validation_error("multiple values not allowed");             if (v.size() == 1)                 return v.front();             else if (allow_empty)                 return empty;             else                 throw validation_error("at least one value required");         }           void         check_first_occurrence(const boost::any& value);     }      using namespace validators; 
1127 # 75 "/usr/include/boost/program_options/detail/value_semantic.hpp" 3 4
1128     template<class T, class charT>     void validate(boost::any& v,                   const std::vector< std::basic_string<charT> >& xs,                   T*, long)     {         validators::check_first_occurrence(v);         std::basic_string<charT> s(validators::get_single_string(xs));         try {             v = any(lexical_cast<T>(s));         }         catch(const bad_lexical_cast&) {             boost::throw_exception(invalid_option_value(s));         }     }      void validate(boost::any& v,                        const std::vector<std::string>& xs,                        bool*,                        int);       void validate(boost::any& v,                        const std::vector<std::wstring>& xs,                        bool*,                        int); 
1129 # 108 "/usr/include/boost/program_options/detail/value_semantic.hpp" 3 4
1130     void validate(boost::any& v,                        const std::vector<std::string>& xs,                        std::string*,                        int);       void validate(boost::any& v,                        const std::vector<std::wstring>& xs,                        std::string*,                        int);          template<class T, class charT>     void validate(boost::any& v,                   const std::vector<std::basic_string<charT> >& s,                   std::vector<T>*,                   int)     {         if (v.empty()) {             v = boost::any(std::vector<T>());         }         std::vector<T>* tv = boost::any_cast< std::vector<T> >(&v);         ((__null != tv) ? static_cast<void> (0) : __assert_fail ("__null != tv", "/usr/include/boost/program_options/detail/value_semantic.hpp", 133, __PRETTY_FUNCTION__));         for (unsigned i = 0; i < s.size(); ++i)         {             try {                 tv->push_back(boost::lexical_cast<T>(s[i]));             }             catch(const bad_lexical_cast& ) {                 boost::throw_exception(invalid_option_value(s[i]));             }         }     }      template<class T, class charT>     void     typed_value<T, charT>::     xparse(boost::any& value_store,            const std::vector<std::basic_string<charT> >& new_tokens) const     {         validate(value_store, new_tokens, (T*)0, 0);     }      template<class T>     typed_value<T>*     value()     {          return boost::program_options::value<T>(0);     }      template<class T>     typed_value<T>*     value(T* v)     {         typed_value<T>* r = new typed_value<T>(v);          return r;     }      template<class T>     typed_value<T, wchar_t>*     wvalue()     {         return wvalue<T>(0);     }      template<class T>     typed_value<T, wchar_t>*     wvalue(T* v)     {         typed_value<T, wchar_t>* r = new typed_value<T, wchar_t>(v);          return r;     }    }}
1131  
1132 # 354 "/usr/include/boost/program_options/value_semantic.hpp" 2 3 4
1133
1134 # 83 "/usr/include/boost/function/function_template.hpp" 3 4
1135 namespace boost {   namespace detail {     namespace function {       template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2         >       struct function_invoker3       {         static R invoke(function_buffer& function_ptr ,                         T0 a0 , T1 a1 , T2 a2)         {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           return f( a0 , a1 , a2);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2         >       struct void_function_invoker3       {         static void         invoke(function_buffer& function_ptr ,                T0 a0 , T1 a1 , T2 a2)          {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           f( a0 , a1 , a2);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2       >       struct function_obj_invoker3       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0 , T1 a1 , T2 a2)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0 , a1 , a2);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2       >       struct void_function_obj_invoker3       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0 , T1 a1 , T2 a2)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0 , a1 , a2);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2       >       struct function_ref_invoker3       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0 , T1 a1 , T2 a2)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0 , a1 , a2);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2       >       struct void_function_ref_invoker3       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0 , T1 a1 , T2 a2)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0 , a1 , a2);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2       >       struct get_function_invoker3       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_invoker3<                             FunctionPtr,                             R ,                             T0 , T1 , T2                           >,                           function_invoker3<                             FunctionPtr,                             R ,                             T0 , T1 , T2                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2        >       struct get_function_obj_invoker3       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_obj_invoker3<                             FunctionObj,                             R ,                             T0 , T1 , T2                           >,                           function_obj_invoker3<                             FunctionObj,                             R ,                             T0 , T1 , T2                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2        >       struct get_function_ref_invoker3       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_ref_invoker3<                             FunctionObj,                             R ,                             T0 , T1 , T2                           >,                           function_ref_invoker3<                             FunctionObj,                             R ,                             T0 , T1 , T2                           >                        >::type type;       };           template<typename R , typename T0 , typename T1 , typename T2,                typename Allocator>       struct basic_vtable3 : vtable_base       {          typedef R result_type;             typedef result_type (*invoker_type)(function_buffer&                                             ,                                             T0 , T1 , T2);          template<typename F>         basic_vtable3(F f) : vtable_base(), invoker(0)         {           init(f);         }          template<typename F>         bool assign_to(F f, function_buffer& functor)         {           typedef typename get_function_tag<F>::type tag;           return assign_to(f, functor, tag());         }          void clear(function_buffer& functor)         {           if (manager)             manager(functor, functor, destroy_functor_tag);         }        private:         template<typename F>         void init(F f)         {           typedef typename get_function_tag<F>::type tag;           init(f, tag());         }           template<typename FunctionPtr>         void init(FunctionPtr , function_ptr_tag)         {           typedef typename get_function_invoker3<                              FunctionPtr,                              R ,                              T0 , T1 , T2                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionPtr, Allocator>::manage;         }          template<typename FunctionPtr>         bool         assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)         {           this->clear(functor);           if (f) {               functor.func_ptr = (void (*)())(f);             return true;           } else {             return false;           }         }            template<typename MemberPtr>         void init(MemberPtr f, member_ptr_tag)         {              this->init(mem_fn(f));         }          template<typename MemberPtr>         bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)         {              if (f) {             this->assign_to(mem_fn(f), functor);             return true;           } else {             return false;           }         }            template<typename FunctionObj>         void init(FunctionObj , function_obj_tag)         {           typedef typename get_function_obj_invoker3<                              FunctionObj,                              R ,                              T0 , T1 , T2                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionObj, Allocator>::manage;         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)         {           new ((void*)&functor.data) FunctionObj(f);         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)         {            typedef typename Allocator::template rebind<FunctionObj>::other             allocator_type;           typedef typename allocator_type::pointer pointer_type;            allocator_type allocator;           pointer_type copy = allocator.allocate(1);           allocator.construct(copy, f);             functor.obj_ptr = static_cast<FunctionObj*>(copy);            }          template<typename FunctionObj>         bool         assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)         {           if (!boost::detail::function::has_empty_target(boost::addressof(f))) {             assign_functor(f, functor,                            mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());             return true;           } else {             return false;           }         }           template<typename FunctionObj>         void         init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)         {           typedef typename get_function_ref_invoker3<                              FunctionObj,                              R ,                              T0 , T1 , T2                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &reference_manager<FunctionObj>::get;         }          template<typename FunctionObj>         bool         assign_to(const reference_wrapper<FunctionObj>& f,                   function_buffer& functor, function_obj_ref_tag)         {           if (!boost::detail::function::has_empty_target(f.get_pointer())) {                 functor.const_obj_ptr = f.get_pointer();             return true;           } else {             return false;           }         }        public:         invoker_type invoker;       };     }   }    template<     typename R ,     typename T0 , typename T1 , typename T2,     typename Allocator = std::allocator<function_base>   >   class function3 : public function_base   {   public:      typedef R result_type;        private:     typedef boost::detail::function::basic_vtable3<               R , T0 , T1 , T2, Allocator>       vtable_type;      struct clear_type {};    public:     static const int args = 3;       template<typename Args>     struct sig     {       typedef result_type type;     }; 
1136     result_type operator()( T0 a0 , T1 a1 , T2 a2) const;            template<typename Functor>      typename enable_if_c<                (boost::type_traits::ice_not<                  (is_integral<Functor>::value)>::value),                function3&>::type        operator=(Functor f)     {       this->clear();       try {         this->assign_to(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }       function3& operator=(clear_type*)     {       this->clear();       return *this;     } 
1137 # 589 "/usr/include/boost/function/function_template.hpp" 3 4
1138     function3& operator=(const function3& f)     {       if (&f == this)         return *this;        this->clear();       try {         this->assign_to_own(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }      void swap(function3& other)     {       if (&other == this)         return;        function3 tmp = *this;       *this = other;       other = tmp;     }       void clear()     {       if (vtable) {         static_cast<vtable_type*>(vtable)->clear(this->functor);         vtable = 0;       }     }        private:     struct dummy {       void nonnull() {};     };      typedef void (dummy::*safe_bool)();    public:     operator safe_bool () const       { return (this->empty())? 0 : &dummy::nonnull; }      bool operator!() const       { return this->empty(); }     private:     void assign_to_own(const function3& f)     {       if (!f.empty()) {         this->vtable = f.vtable;         f.vtable->manager(f.functor, this->functor,                           boost::detail::function::clone_functor_tag);       }     }      template<typename Functor>     void assign_to(Functor f)     {       static vtable_type stored_vtable(f);       if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;       else vtable = 0;     }   };    template<typename R , typename T0 , typename T1 , typename T2 ,            typename Allocator>   inline void swap(function3<                      R ,                      T0 , T1 , T2 ,                      Allocator                    >& f1,                    function3<                      R ,                      T0 , T1 , T2,                      Allocator                    >& f2)   {     f1.swap(f2);   }     template<typename R , typename T0 , typename T1 , typename T2,            typename Allocator>   typename function3<       R , T0 , T1 , T2,       Allocator>::result_type    function3<R , T0 , T1 , T2,                             Allocator>   ::operator()( T0 a0 , T1 a1 , T2 a2) const   {     if (this->empty())       boost::throw_exception(bad_function_call());      return static_cast<vtable_type*>(vtable)->invoker              (this->functor , a0 , a1 , a2);   }    template<typename R , typename T0 , typename T1 , typename T2 ,          typename Allocator>   void operator==(const function3<                           R ,                           T0 , T1 , T2 ,                           Allocator>&,                   const function3<                           R ,                           T0 , T1 , T2 ,                   Allocator>&); template<typename R , typename T0 , typename T1 , typename T2 ,          typename Allocator>   void operator!=(const function3<                           R ,                           T0 , T1 , T2 ,                           Allocator>&,                   const function3<                           R ,                           T0 , T1 , T2 ,                   Allocator>&); 
1139 # 726 "/usr/include/boost/function/function_template.hpp" 3 4
1140 template<typename R ,          typename T0 , typename T1 , typename T2,          typename Allocator> class function<R ( T0 , T1 , T2), Allocator>   : public function3<R, T0 , T1 , T2                                    , Allocator> {   typedef function3<R, T0 , T1 , T2                                   , Allocator> base_type;   typedef function self_type;    struct clear_type {};  public:   typedef typename base_type::allocator_type allocator_type;    function() : base_type() {}    template<typename Functor>   function(Functor f             ,typename enable_if_c<                             (boost::type_traits::ice_not<                           (is_integral<Functor>::value)>::value),                        int>::type = 0             ) :     base_type(f)   {   }     function(clear_type*) : base_type() {}     function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}    function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}    self_type& operator=(const self_type& f)   {     self_type(f).swap(*this);     return *this;   }    template<typename Functor>    typename enable_if_c<                             (boost::type_traits::ice_not<                          (is_integral<Functor>::value)>::value),                       self_type&>::type      operator=(Functor f)   {     self_type(f).swap(*this);     return *this;   }     self_type& operator=(clear_type*)   {     this->clear();     return *this;   }     self_type& operator=(const base_type& f)   {     self_type(f).swap(*this);     return *this;   } }; 
1141 # 808 "/usr/include/boost/function/function_template.hpp" 3 4
1142 }
1143 namespace boost {   namespace detail {     namespace function {       template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3         >       struct function_invoker4       {         static R invoke(function_buffer& function_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3)         {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           return f( a0 , a1 , a2 , a3);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3         >       struct void_function_invoker4       {         static void         invoke(function_buffer& function_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3)          {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           f( a0 , a1 , a2 , a3);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3       >       struct function_obj_invoker4       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0 , a1 , a2 , a3);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3       >       struct void_function_obj_invoker4       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0 , a1 , a2 , a3);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3       >       struct function_ref_invoker4       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0 , a1 , a2 , a3);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3       >       struct void_function_ref_invoker4       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0 , a1 , a2 , a3);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3       >       struct get_function_invoker4       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_invoker4<                             FunctionPtr,                             R ,                             T0 , T1 , T2 , T3                           >,                           function_invoker4<                             FunctionPtr,                             R ,                             T0 , T1 , T2 , T3                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3        >       struct get_function_obj_invoker4       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_obj_invoker4<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3                           >,                           function_obj_invoker4<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3        >       struct get_function_ref_invoker4       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_ref_invoker4<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3                           >,                           function_ref_invoker4<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3                           >                        >::type type;       };           template<typename R , typename T0 , typename T1 , typename T2 , typename T3,                typename Allocator>       struct basic_vtable4 : vtable_base       {          typedef R result_type;             typedef result_type (*invoker_type)(function_buffer&                                             ,                                             T0 , T1 , T2 , T3);          template<typename F>         basic_vtable4(F f) : vtable_base(), invoker(0)         {           init(f);         }          template<typename F>         bool assign_to(F f, function_buffer& functor)         {           typedef typename get_function_tag<F>::type tag;           return assign_to(f, functor, tag());         }          void clear(function_buffer& functor)         {           if (manager)             manager(functor, functor, destroy_functor_tag);         }        private:         template<typename F>         void init(F f)         {           typedef typename get_function_tag<F>::type tag;           init(f, tag());         }           template<typename FunctionPtr>         void init(FunctionPtr , function_ptr_tag)         {           typedef typename get_function_invoker4<                              FunctionPtr,                              R ,                              T0 , T1 , T2 , T3                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionPtr, Allocator>::manage;         }          template<typename FunctionPtr>         bool         assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)         {           this->clear(functor);           if (f) {               functor.func_ptr = (void (*)())(f);             return true;           } else {             return false;           }         }            template<typename MemberPtr>         void init(MemberPtr f, member_ptr_tag)         {              this->init(mem_fn(f));         }          template<typename MemberPtr>         bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)         {              if (f) {             this->assign_to(mem_fn(f), functor);             return true;           } else {             return false;           }         }            template<typename FunctionObj>         void init(FunctionObj , function_obj_tag)         {           typedef typename get_function_obj_invoker4<                              FunctionObj,                              R ,                              T0 , T1 , T2 , T3                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionObj, Allocator>::manage;         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)         {           new ((void*)&functor.data) FunctionObj(f);         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)         {            typedef typename Allocator::template rebind<FunctionObj>::other             allocator_type;           typedef typename allocator_type::pointer pointer_type;            allocator_type allocator;           pointer_type copy = allocator.allocate(1);           allocator.construct(copy, f);             functor.obj_ptr = static_cast<FunctionObj*>(copy);            }          template<typename FunctionObj>         bool         assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)         {           if (!boost::detail::function::has_empty_target(boost::addressof(f))) {             assign_functor(f, functor,                            mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());             return true;           } else {             return false;           }         }           template<typename FunctionObj>         void         init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)         {           typedef typename get_function_ref_invoker4<                              FunctionObj,                              R ,                              T0 , T1 , T2 , T3                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &reference_manager<FunctionObj>::get;         }          template<typename FunctionObj>         bool         assign_to(const reference_wrapper<FunctionObj>& f,                   function_buffer& functor, function_obj_ref_tag)         {           if (!boost::detail::function::has_empty_target(f.get_pointer())) {                 functor.const_obj_ptr = f.get_pointer();             return true;           } else {             return false;           }         }        public:         invoker_type invoker;       };     }   }    template<     typename R ,     typename T0 , typename T1 , typename T2 , typename T3,     typename Allocator = std::allocator<function_base>   >   class function4 : public function_base   {   public:      typedef R result_type;        private:     typedef boost::detail::function::basic_vtable4<               R , T0 , T1 , T2 , T3, Allocator>       vtable_type;      struct clear_type {};    public:     static const int args = 4;       template<typename Args>     struct sig     {       typedef result_type type;     }; 
1144 # 492 "/usr/include/boost/function/function_template.hpp" 3 4
1145     static const int arity = 4;     typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type;      typedef Allocator allocator_type;     typedef function4 self_type;      function4() : function_base() { }        template<typename Functor>     function4(Functor f                              ,typename enable_if_c<                             (boost::type_traits::ice_not<                              (is_integral<Functor>::value)>::value),                                         int>::type = 0                              ) :       function_base()     {       this->assign_to(f);     }       function4(clear_type*) : function_base() { }            function4(const function4& f) : function_base()     {       this->assign_to_own(f);     }      ~function4() { clear(); } 
1146 # 544 "/usr/include/boost/function/function_template.hpp" 3 4
1147     result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3) const;            template<typename Functor>      typename enable_if_c<                (boost::type_traits::ice_not<                  (is_integral<Functor>::value)>::value),                function4&>::type        operator=(Functor f)     {       this->clear();       try {         this->assign_to(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }       function4& operator=(clear_type*)     {       this->clear();       return *this;     } 
1148 # 589 "/usr/include/boost/function/function_template.hpp" 3 4
1149     function4& operator=(const function4& f)     {       if (&f == this)         return *this;        this->clear();       try {         this->assign_to_own(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }      void swap(function4& other)     {       if (&other == this)         return;        function4 tmp = *this;       *this = other;       other = tmp;     }       void clear()     {       if (vtable) {         static_cast<vtable_type*>(vtable)->clear(this->functor);         vtable = 0;       }     }        private:     struct dummy {       void nonnull() {};     };      typedef void (dummy::*safe_bool)();    public:     operator safe_bool () const       { return (this->empty())? 0 : &dummy::nonnull; }      bool operator!() const       { return this->empty(); }     private:     void assign_to_own(const function4& f)     {       if (!f.empty()) {         this->vtable = f.vtable;         f.vtable->manager(f.functor, this->functor,                           boost::detail::function::clone_functor_tag);       }     }      template<typename Functor>     void assign_to(Functor f)     {       static vtable_type stored_vtable(f);       if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;       else vtable = 0;     }   };    template<typename R , typename T0 , typename T1 , typename T2 , typename T3 ,            typename Allocator>   inline void swap(function4<                      R ,                      T0 , T1 , T2 , T3 ,                      Allocator                    >& f1,                    function4<                      R ,                      T0 , T1 , T2 , T3,                      Allocator                    >& f2)   {     f1.swap(f2);   }     template<typename R , typename T0 , typename T1 , typename T2 , typename T3,            typename Allocator>   typename function4<       R , T0 , T1 , T2 , T3,       Allocator>::result_type    function4<R , T0 , T1 , T2 , T3,                             Allocator>   ::operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3) const   {     if (this->empty())       boost::throw_exception(bad_function_call());      return static_cast<vtable_type*>(vtable)->invoker              (this->functor , a0 , a1 , a2 , a3);   }    template<typename R , typename T0 , typename T1 , typename T2 , typename T3 ,          typename Allocator>   void operator==(const function4<                           R ,                           T0 , T1 , T2 , T3 ,                           Allocator>&,                   const function4<                           R ,                           T0 , T1 , T2 , T3 ,                   Allocator>&); template<typename R , typename T0 , typename T1 , typename T2 , typename T3 ,          typename Allocator>   void operator!=(const function4<                           R ,                           T0 , T1 , T2 , T3 ,                           Allocator>&,                   const function4<                           R ,                           T0 , T1 , T2 , T3 ,                   Allocator>&); 
1150 # 726 "/usr/include/boost/function/function_template.hpp" 3 4
1151 template<typename R ,          typename T0 , typename T1 , typename T2 , typename T3,          typename Allocator> class function<R ( T0 , T1 , T2 , T3), Allocator>   : public function4<R, T0 , T1 , T2 , T3                                    , Allocator> {   typedef function4<R, T0 , T1 , T2 , T3                                   , Allocator> base_type;   typedef function self_type;    struct clear_type {};  public:   typedef typename base_type::allocator_type allocator_type;    function() : base_type() {}    template<typename Functor>   function(Functor f             ,typename enable_if_c<                             (boost::type_traits::ice_not<                           (is_integral<Functor>::value)>::value),                        int>::type = 0             ) :     base_type(f)   {   }     function(clear_type*) : base_type() {}     function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}    function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}    self_type& operator=(const self_type& f)   {     self_type(f).swap(*this);     return *this;   }    template<typename Functor>    typename enable_if_c<                             (boost::type_traits::ice_not<                          (is_integral<Functor>::value)>::value),                       self_type&>::type      operator=(Functor f)   {     self_type(f).swap(*this);     return *this;   }     self_type& operator=(clear_type*)   {     this->clear();     return *this;   }     self_type& operator=(const base_type& f)   {     self_type(f).swap(*this);     return *this;   } }; 
1152 # 808 "/usr/include/boost/function/function_template.hpp" 3 4
1153 }
1154  
1155 namespace boost {   namespace detail {     namespace function {       template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7         >       struct function_invoker8       {         static R invoke(function_buffer& function_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)         {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           return f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7         >       struct void_function_invoker8       {         static void         invoke(function_buffer& function_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)          {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7       >       struct function_obj_invoker8       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7       >       struct void_function_obj_invoker8       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7       >       struct function_ref_invoker8       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7       >       struct void_function_ref_invoker8       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7       >       struct get_function_invoker8       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_invoker8<                             FunctionPtr,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7                           >,                           function_invoker8<                             FunctionPtr,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7        >       struct get_function_obj_invoker8       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_obj_invoker8<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7                           >,                           function_obj_invoker8<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7        >       struct get_function_ref_invoker8       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_ref_invoker8<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7                           >,                           function_ref_invoker8<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7                           >                        >::type type;       };           template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7,                typename Allocator>       struct basic_vtable8 : vtable_base       {          typedef R result_type;             typedef result_type (*invoker_type)(function_buffer&                                             ,                                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7);          template<typename F>         basic_vtable8(F f) : vtable_base(), invoker(0)         {           init(f);         }          template<typename F>         bool assign_to(F f, function_buffer& functor)         {           typedef typename get_function_tag<F>::type tag;           return assign_to(f, functor, tag());         }          void clear(function_buffer& functor)         {           if (manager)             manager(functor, functor, destroy_functor_tag);         }        private:         template<typename F>         void init(F f)         {           typedef typename get_function_tag<F>::type tag;           init(f, tag());         }           template<typename FunctionPtr>         void init(FunctionPtr , function_ptr_tag)         {           typedef typename get_function_invoker8<                              FunctionPtr,                              R ,                              T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionPtr, Allocator>::manage;         }          template<typename FunctionPtr>         bool         assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)         {           this->clear(functor);           if (f) {               functor.func_ptr = (void (*)())(f);             return true;           } else {             return false;           }         }            template<typename MemberPtr>         void init(MemberPtr f, member_ptr_tag)         {              this->init(mem_fn(f));         }          template<typename MemberPtr>         bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)         {              if (f) {             this->assign_to(mem_fn(f), functor);             return true;           } else {             return false;           }         }            template<typename FunctionObj>         void init(FunctionObj , function_obj_tag)         {           typedef typename get_function_obj_invoker8<                              FunctionObj,                              R ,                              T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionObj, Allocator>::manage;         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)         {           new ((void*)&functor.data) FunctionObj(f);         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)         {            typedef typename Allocator::template rebind<FunctionObj>::other             allocator_type;           typedef typename allocator_type::pointer pointer_type;            allocator_type allocator;           pointer_type copy = allocator.allocate(1);           allocator.construct(copy, f);             functor.obj_ptr = static_cast<FunctionObj*>(copy);            }          template<typename FunctionObj>         bool         assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)         {           if (!boost::detail::function::has_empty_target(boost::addressof(f))) {             assign_functor(f, functor,                            mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());             return true;           } else {             return false;           }         }           template<typename FunctionObj>         void         init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)         {           typedef typename get_function_ref_invoker8<                              FunctionObj,                              R ,                              T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &reference_manager<FunctionObj>::get;         }          template<typename FunctionObj>         bool         assign_to(const reference_wrapper<FunctionObj>& f,                   function_buffer& functor, function_obj_ref_tag)         {           if (!boost::detail::function::has_empty_target(f.get_pointer())) {                 functor.const_obj_ptr = f.get_pointer();             return true;           } else {             return false;           }         }        public:         invoker_type invoker;       };     }   }    template<     typename R ,     typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7,     typename Allocator = std::allocator<function_base>   >   class function8 : public function_base   {   public:      typedef R result_type;        private:     typedef boost::detail::function::basic_vtable8<               R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7, Allocator>       vtable_type;      struct clear_type {};    public:     static const int args = 8;       template<typename Args>     struct sig     {       typedef result_type type;     }; 
1156 # 492 "/usr/include/boost/function/function_template.hpp" 3 4
1157     static const int arity = 8;     typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type;      typedef Allocator allocator_type;     typedef function8 self_type;      function8() : function_base() { }        template<typename Functor>     function8(Functor f                              ,typename enable_if_c<                             (boost::type_traits::ice_not<                              (is_integral<Functor>::value)>::value),                                         int>::type = 0                              ) :       function_base()     {       this->assign_to(f);     }       function8(clear_type*) : function_base() { }            function8(const function8& f) : function_base()     {       this->assign_to_own(f);     }      ~function8() { clear(); } 
1158 # 544 "/usr/include/boost/function/function_template.hpp" 3 4
1159     result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7) const;            template<typename Functor>      typename enable_if_c<                (boost::type_traits::ice_not<                  (is_integral<Functor>::value)>::value),                function8&>::type        operator=(Functor f)     {       this->clear();       try {         this->assign_to(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }       function8& operator=(clear_type*)     {       this->clear();       return *this;     } 
1160 # 589 "/usr/include/boost/function/function_template.hpp" 3 4
1161     function8& operator=(const function8& f)     {       if (&f == this)         return *this;        this->clear();       try {         this->assign_to_own(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }      void swap(function8& other)     {       if (&other == this)         return;        function8 tmp = *this;       *this = other;       other = tmp;     }       void clear()     {       if (vtable) {         static_cast<vtable_type*>(vtable)->clear(this->functor);         vtable = 0;       }     }        private:     struct dummy {       void nonnull() {};     };      typedef void (dummy::*safe_bool)();    public:     operator safe_bool () const       { return (this->empty())? 0 : &dummy::nonnull; }      bool operator!() const       { return this->empty(); }     private:     void assign_to_own(const function8& f)     {       if (!f.empty()) {         this->vtable = f.vtable;         f.vtable->manager(f.functor, this->functor,                           boost::detail::function::clone_functor_tag);       }     }      template<typename Functor>     void assign_to(Functor f)     {       static vtable_type stored_vtable(f);       if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;       else vtable = 0;     }   };    template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 ,            typename Allocator>   inline void swap(function8<                      R ,                      T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ,                      Allocator                    >& f1,                    function8<                      R ,                      T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7,                      Allocator                    >& f2)   {     f1.swap(f2);   }     template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7,            typename Allocator>   typename function8<       R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7,       Allocator>::result_type    function8<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7,                             Allocator>   ::operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7) const   {     if (this->empty())       boost::throw_exception(bad_function_call());      return static_cast<vtable_type*>(vtable)->invoker              (this->functor , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7);   }    template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 ,          typename Allocator>   void operator==(const function8<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ,                           Allocator>&,                   const function8<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ,                   Allocator>&); template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 ,          typename Allocator>   void operator!=(const function8<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ,                           Allocator>&,                   const function8<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 ,                   Allocator>&); 
1162 # 726 "/usr/include/boost/function/function_template.hpp" 3 4
1163 template<typename R ,          typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7,          typename Allocator> class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7), Allocator>   : public function8<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7                                    , Allocator> {   typedef function8<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7                                   , Allocator> base_type;   typedef function self_type;    struct clear_type {};  public:   typedef typename base_type::allocator_type allocator_type;    function() : base_type() {}    template<typename Functor>   function(Functor f             ,typename enable_if_c<                             (boost::type_traits::ice_not<                           (is_integral<Functor>::value)>::value),                        int>::type = 0             ) :     base_type(f)   {   }     function(clear_type*) : base_type() {}     function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}    function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}    self_type& operator=(const self_type& f)   {     self_type(f).swap(*this);     return *this;   }    template<typename Functor>    typename enable_if_c<                             (boost::type_traits::ice_not<                          (is_integral<Functor>::value)>::value),                       self_type&>::type      operator=(Functor f)   {     self_type(f).swap(*this);     return *this;   }     self_type& operator=(clear_type*)   {     this->clear();     return *this;   }     self_type& operator=(const base_type& f)   {     self_type(f).swap(*this);     return *this;   } }; 
1164 # 808 "/usr/include/boost/function/function_template.hpp" 3 4
1165 }
1166  
1167 # 54 "/usr/include/boost/function/detail/maybe_include.hpp" 2 3 4
1168 # 83 "/usr/include/boost/function/function_template.hpp" 3 4
1169 namespace boost {   namespace detail {     namespace function {       template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8         >       struct function_invoker9       {         static R invoke(function_buffer& function_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)         {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           return f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8         >       struct void_function_invoker9       {         static void         invoke(function_buffer& function_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)          {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8       >       struct function_obj_invoker9       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8       >       struct void_function_obj_invoker9       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8       >       struct function_ref_invoker9       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8       >       struct void_function_ref_invoker9       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8       >       struct get_function_invoker9       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_invoker9<                             FunctionPtr,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8                           >,                           function_invoker9<                             FunctionPtr,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8        >       struct get_function_obj_invoker9       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_obj_invoker9<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8                           >,                           function_obj_invoker9<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8        >       struct get_function_ref_invoker9       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_ref_invoker9<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8                           >,                           function_ref_invoker9<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8                           >                        >::type type;       };           template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8,                typename Allocator>       struct basic_vtable9 : vtable_base       {          typedef R result_type;             typedef result_type (*invoker_type)(function_buffer&                                             ,                                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8);          template<typename F>         basic_vtable9(F f) : vtable_base(), invoker(0)         {           init(f);         }          template<typename F>         bool assign_to(F f, function_buffer& functor)         {           typedef typename get_function_tag<F>::type tag;           return assign_to(f, functor, tag());         }          void clear(function_buffer& functor)         {           if (manager)             manager(functor, functor, destroy_functor_tag);         }        private:         template<typename F>         void init(F f)         {           typedef typename get_function_tag<F>::type tag;           init(f, tag());         }           template<typename FunctionPtr>         void init(FunctionPtr , function_ptr_tag)         {           typedef typename get_function_invoker9<                              FunctionPtr,                              R ,                              T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionPtr, Allocator>::manage;         }          template<typename FunctionPtr>         bool         assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)         {           this->clear(functor);           if (f) {               functor.func_ptr = (void (*)())(f);             return true;           } else {             return false;           }         }            template<typename MemberPtr>         void init(MemberPtr f, member_ptr_tag)         {              this->init(mem_fn(f));         }          template<typename MemberPtr>         bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)         {              if (f) {             this->assign_to(mem_fn(f), functor);             return true;           } else {             return false;           }         }            template<typename FunctionObj>         void init(FunctionObj , function_obj_tag)         {           typedef typename get_function_obj_invoker9<                              FunctionObj,                              R ,                              T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionObj, Allocator>::manage;         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)         {           new ((void*)&functor.data) FunctionObj(f);         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)         {            typedef typename Allocator::template rebind<FunctionObj>::other             allocator_type;           typedef typename allocator_type::pointer pointer_type;            allocator_type allocator;           pointer_type copy = allocator.allocate(1);           allocator.construct(copy, f);             functor.obj_ptr = static_cast<FunctionObj*>(copy);            }          template<typename FunctionObj>         bool         assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)         {           if (!boost::detail::function::has_empty_target(boost::addressof(f))) {             assign_functor(f, functor,                            mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());             return true;           } else {             return false;           }         }           template<typename FunctionObj>         void         init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)         {           typedef typename get_function_ref_invoker9<                              FunctionObj,                              R ,                              T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &reference_manager<FunctionObj>::get;         }          template<typename FunctionObj>         bool         assign_to(const reference_wrapper<FunctionObj>& f,                   function_buffer& functor, function_obj_ref_tag)         {           if (!boost::detail::function::has_empty_target(f.get_pointer())) {                 functor.const_obj_ptr = f.get_pointer();             return true;           } else {             return false;           }         }        public:         invoker_type invoker;       };     }   }    template<     typename R ,     typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8,     typename Allocator = std::allocator<function_base>   >   class function9 : public function_base   {   public:      typedef R result_type;        private:     typedef boost::detail::function::basic_vtable9<               R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8, Allocator>       vtable_type;      struct clear_type {};    public:     static const int args = 9;       template<typename Args>     struct sig     {       typedef result_type type;     }; 
1170 # 492 "/usr/include/boost/function/function_template.hpp" 3 4
1171     static const int arity = 9;     typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type; typedef T8 arg9_type;      typedef Allocator allocator_type;     typedef function9 self_type;      function9() : function_base() { }        template<typename Functor>     function9(Functor f                              ,typename enable_if_c<                             (boost::type_traits::ice_not<                              (is_integral<Functor>::value)>::value),                                         int>::type = 0                              ) :       function_base()     {       this->assign_to(f);     }       function9(clear_type*) : function_base() { }            function9(const function9& f) : function_base()     {       this->assign_to_own(f);     }      ~function9() { clear(); } 
1172 # 544 "/usr/include/boost/function/function_template.hpp" 3 4
1173     result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8) const;            template<typename Functor>      typename enable_if_c<                (boost::type_traits::ice_not<                  (is_integral<Functor>::value)>::value),                function9&>::type        operator=(Functor f)     {       this->clear();       try {         this->assign_to(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }       function9& operator=(clear_type*)     {       this->clear();       return *this;     } 
1174 # 589 "/usr/include/boost/function/function_template.hpp" 3 4
1175     function9& operator=(const function9& f)     {       if (&f == this)         return *this;        this->clear();       try {         this->assign_to_own(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }      void swap(function9& other)     {       if (&other == this)         return;        function9 tmp = *this;       *this = other;       other = tmp;     }       void clear()     {       if (vtable) {         static_cast<vtable_type*>(vtable)->clear(this->functor);         vtable = 0;       }     }        private:     struct dummy {       void nonnull() {};     };      typedef void (dummy::*safe_bool)();    public:     operator safe_bool () const       { return (this->empty())? 0 : &dummy::nonnull; }      bool operator!() const       { return this->empty(); }     private:     void assign_to_own(const function9& f)     {       if (!f.empty()) {         this->vtable = f.vtable;         f.vtable->manager(f.functor, this->functor,                           boost::detail::function::clone_functor_tag);       }     }      template<typename Functor>     void assign_to(Functor f)     {       static vtable_type stored_vtable(f);       if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;       else vtable = 0;     }   };    template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 ,            typename Allocator>   inline void swap(function9<                      R ,                      T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ,                      Allocator                    >& f1,                    function9<                      R ,                      T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8,                      Allocator                    >& f2)   {     f1.swap(f2);   }     template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8,            typename Allocator>   typename function9<       R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8,       Allocator>::result_type    function9<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8,                             Allocator>   ::operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8) const   {     if (this->empty())       boost::throw_exception(bad_function_call());      return static_cast<vtable_type*>(vtable)->invoker              (this->functor , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8);   }    template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 ,          typename Allocator>   void operator==(const function9<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ,                           Allocator>&,                   const function9<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ,                   Allocator>&); template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 ,          typename Allocator>   void operator!=(const function9<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ,                           Allocator>&,                   const function9<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 ,                   Allocator>&); 
1176 # 726 "/usr/include/boost/function/function_template.hpp" 3 4
1177 template<typename R ,          typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8,          typename Allocator> class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8), Allocator>   : public function9<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8                                    , Allocator> {   typedef function9<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8                                   , Allocator> base_type;   typedef function self_type;    struct clear_type {};  public:   typedef typename base_type::allocator_type allocator_type;    function() : base_type() {}    template<typename Functor>   function(Functor f             ,typename enable_if_c<                             (boost::type_traits::ice_not<                           (is_integral<Functor>::value)>::value),                        int>::type = 0             ) :     base_type(f)   {   }     function(clear_type*) : base_type() {}     function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}    function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}    self_type& operator=(const self_type& f)   {     self_type(f).swap(*this);     return *this;   }    template<typename Functor>    typename enable_if_c<                             (boost::type_traits::ice_not<                          (is_integral<Functor>::value)>::value),                       self_type&>::type      operator=(Functor f)   {     self_type(f).swap(*this);     return *this;   }     self_type& operator=(clear_type*)   {     this->clear();     return *this;   }     self_type& operator=(const base_type& f)   {     self_type(f).swap(*this);     return *this;   } }; 
1178 # 808 "/usr/include/boost/function/function_template.hpp" 3 4
1179 }
1180  
1181
1182 # 83 "/usr/include/boost/function/function_template.hpp" 3 4
1183 namespace boost {   namespace detail {     namespace function {       template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9         >       struct function_invoker10       {         static R invoke(function_buffer& function_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)         {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           return f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9         >       struct void_function_invoker10       {         static void         invoke(function_buffer& function_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)          {           FunctionPtr f = reinterpret_cast<FunctionPtr>(function_ptr.func_ptr);           f( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9       >       struct function_obj_invoker10       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9       >       struct void_function_obj_invoker10       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)          {           FunctionObj* f;           if (function_allows_small_object_optimization<FunctionObj>::value)             f = reinterpret_cast<FunctionObj*>(&function_obj_ptr.data);           else             f = reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9       >       struct function_ref_invoker10       {         static R invoke(function_buffer& function_obj_ptr ,                         T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           return (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);         }       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9       >       struct void_function_ref_invoker10       {         static void         invoke(function_buffer& function_obj_ptr ,                T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9)          {           FunctionObj* f =             reinterpret_cast<FunctionObj*>(function_obj_ptr.obj_ptr);           (*f)( a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);         }       };        template<         typename FunctionPtr,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9       >       struct get_function_invoker10       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_invoker10<                             FunctionPtr,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9                           >,                           function_invoker10<                             FunctionPtr,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9        >       struct get_function_obj_invoker10       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_obj_invoker10<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9                           >,                           function_obj_invoker10<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9                           >                        >::type type;       };        template<         typename FunctionObj,         typename R ,         typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9        >       struct get_function_ref_invoker10       {         typedef typename mpl::if_c<(is_void<R>::value),                             void_function_ref_invoker10<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9                           >,                           function_ref_invoker10<                             FunctionObj,                             R ,                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9                           >                        >::type type;       };           template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9,                typename Allocator>       struct basic_vtable10 : vtable_base       {          typedef R result_type;             typedef result_type (*invoker_type)(function_buffer&                                             ,                                             T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9);          template<typename F>         basic_vtable10(F f) : vtable_base(), invoker(0)         {           init(f);         }          template<typename F>         bool assign_to(F f, function_buffer& functor)         {           typedef typename get_function_tag<F>::type tag;           return assign_to(f, functor, tag());         }          void clear(function_buffer& functor)         {           if (manager)             manager(functor, functor, destroy_functor_tag);         }        private:         template<typename F>         void init(F f)         {           typedef typename get_function_tag<F>::type tag;           init(f, tag());         }           template<typename FunctionPtr>         void init(FunctionPtr , function_ptr_tag)         {           typedef typename get_function_invoker10<                              FunctionPtr,                              R ,                              T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionPtr, Allocator>::manage;         }          template<typename FunctionPtr>         bool         assign_to(FunctionPtr f, function_buffer& functor, function_ptr_tag)         {           this->clear(functor);           if (f) {               functor.func_ptr = (void (*)())(f);             return true;           } else {             return false;           }         }            template<typename MemberPtr>         void init(MemberPtr f, member_ptr_tag)         {              this->init(mem_fn(f));         }          template<typename MemberPtr>         bool assign_to(MemberPtr f, function_buffer& functor, member_ptr_tag)         {              if (f) {             this->assign_to(mem_fn(f), functor);             return true;           } else {             return false;           }         }            template<typename FunctionObj>         void init(FunctionObj , function_obj_tag)         {           typedef typename get_function_obj_invoker10<                              FunctionObj,                              R ,                              T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &functor_manager<FunctionObj, Allocator>::manage;         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::true_)         {           new ((void*)&functor.data) FunctionObj(f);         }           template<typename FunctionObj>         void         assign_functor(FunctionObj f, function_buffer& functor, mpl::false_)         {            typedef typename Allocator::template rebind<FunctionObj>::other             allocator_type;           typedef typename allocator_type::pointer pointer_type;            allocator_type allocator;           pointer_type copy = allocator.allocate(1);           allocator.construct(copy, f);             functor.obj_ptr = static_cast<FunctionObj*>(copy);            }          template<typename FunctionObj>         bool         assign_to(FunctionObj f, function_buffer& functor, function_obj_tag)         {           if (!boost::detail::function::has_empty_target(boost::addressof(f))) {             assign_functor(f, functor,                            mpl::bool_<(function_allows_small_object_optimization<FunctionObj>::value)>());             return true;           } else {             return false;           }         }           template<typename FunctionObj>         void         init(const reference_wrapper<FunctionObj>& , function_obj_ref_tag)         {           typedef typename get_function_ref_invoker10<                              FunctionObj,                              R ,                              T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9                            >::type             actual_invoker_type;            invoker = &actual_invoker_type::invoke;           manager = &reference_manager<FunctionObj>::get;         }          template<typename FunctionObj>         bool         assign_to(const reference_wrapper<FunctionObj>& f,                   function_buffer& functor, function_obj_ref_tag)         {           if (!boost::detail::function::has_empty_target(f.get_pointer())) {                 functor.const_obj_ptr = f.get_pointer();             return true;           } else {             return false;           }         }        public:         invoker_type invoker;       };     }   }    template<     typename R ,     typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9,     typename Allocator = std::allocator<function_base>   >   class function10 : public function_base   {   public:      typedef R result_type;        private:     typedef boost::detail::function::basic_vtable10<               R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9, Allocator>       vtable_type;      struct clear_type {};    public:     static const int args = 10;       template<typename Args>     struct sig     {       typedef result_type type;     }; 
1184 # 492 "/usr/include/boost/function/function_template.hpp" 3 4
1185     static const int arity = 10;     typedef T0 arg1_type; typedef T1 arg2_type; typedef T2 arg3_type; typedef T3 arg4_type; typedef T4 arg5_type; typedef T5 arg6_type; typedef T6 arg7_type; typedef T7 arg8_type; typedef T8 arg9_type; typedef T9 arg10_type;      typedef Allocator allocator_type;     typedef function10 self_type;      function10() : function_base() { }        template<typename Functor>     function10(Functor f                              ,typename enable_if_c<                             (boost::type_traits::ice_not<                              (is_integral<Functor>::value)>::value),                                         int>::type = 0                              ) :       function_base()     {       this->assign_to(f);     }       function10(clear_type*) : function_base() { }            function10(const function10& f) : function_base()     {       this->assign_to_own(f);     }      ~function10() { clear(); } 
1186 # 544 "/usr/include/boost/function/function_template.hpp" 3 4
1187     result_type operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9) const;            template<typename Functor>      typename enable_if_c<                (boost::type_traits::ice_not<                  (is_integral<Functor>::value)>::value),                function10&>::type        operator=(Functor f)     {       this->clear();       try {         this->assign_to(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }       function10& operator=(clear_type*)     {       this->clear();       return *this;     } 
1188 # 589 "/usr/include/boost/function/function_template.hpp" 3 4
1189     function10& operator=(const function10& f)     {       if (&f == this)         return *this;        this->clear();       try {         this->assign_to_own(f);       } catch (...) {         vtable = 0;         throw;       }       return *this;     }      void swap(function10& other)     {       if (&other == this)         return;        function10 tmp = *this;       *this = other;       other = tmp;     }       void clear()     {       if (vtable) {         static_cast<vtable_type*>(vtable)->clear(this->functor);         vtable = 0;       }     }        private:     struct dummy {       void nonnull() {};     };      typedef void (dummy::*safe_bool)();    public:     operator safe_bool () const       { return (this->empty())? 0 : &dummy::nonnull; }      bool operator!() const       { return this->empty(); }     private:     void assign_to_own(const function10& f)     {       if (!f.empty()) {         this->vtable = f.vtable;         f.vtable->manager(f.functor, this->functor,                           boost::detail::function::clone_functor_tag);       }     }      template<typename Functor>     void assign_to(Functor f)     {       static vtable_type stored_vtable(f);       if (stored_vtable.assign_to(f, functor)) vtable = &stored_vtable;       else vtable = 0;     }   };    template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 ,            typename Allocator>   inline void swap(function10<                      R ,                      T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ,                      Allocator                    >& f1,                    function10<                      R ,                      T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9,                      Allocator                    >& f2)   {     f1.swap(f2);   }     template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9,            typename Allocator>   typename function10<       R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9,       Allocator>::result_type    function10<R , T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9,                             Allocator>   ::operator()( T0 a0 , T1 a1 , T2 a2 , T3 a3 , T4 a4 , T5 a5 , T6 a6 , T7 a7 , T8 a8 , T9 a9) const   {     if (this->empty())       boost::throw_exception(bad_function_call());      return static_cast<vtable_type*>(vtable)->invoker              (this->functor , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9);   }    template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 ,          typename Allocator>   void operator==(const function10<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ,                           Allocator>&,                   const function10<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ,                   Allocator>&); template<typename R , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 ,          typename Allocator>   void operator!=(const function10<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ,                           Allocator>&,                   const function10<                           R ,                           T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 ,                   Allocator>&); 
1190 # 726 "/usr/include/boost/function/function_template.hpp" 3 4
1191 template<typename R ,          typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9,          typename Allocator> class function<R ( T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9), Allocator>   : public function10<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9                                    , Allocator> {   typedef function10<R, T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9                                   , Allocator> base_type;   typedef function self_type;    struct clear_type {};  public:   typedef typename base_type::allocator_type allocator_type;    function() : base_type() {}    template<typename Functor>   function(Functor f             ,typename enable_if_c<                             (boost::type_traits::ice_not<                           (is_integral<Functor>::value)>::value),                        int>::type = 0             ) :     base_type(f)   {   }     function(clear_type*) : base_type() {}     function(const self_type& f) : base_type(static_cast<const base_type&>(f)){}    function(const base_type& f) : base_type(static_cast<const base_type&>(f)){}    self_type& operator=(const self_type& f)   {     self_type(f).swap(*this);     return *this;   }    template<typename Functor>    typename enable_if_c<                             (boost::type_traits::ice_not<                          (is_integral<Functor>::value)>::value),                       self_type&>::type      operator=(Functor f)   {     self_type(f).swap(*this);     return *this;   }     self_type& operator=(clear_type*)   {     this->clear();     return *this;   }     self_type& operator=(const base_type& f)   {     self_type(f).swap(*this);     return *this;   } }; 
1192 # 808 "/usr/include/boost/function/function_template.hpp" 3 4
1193 }
1194 # 24 "/usr/include/boost/checked_delete.hpp" 3 4
1195 namespace boost {    template<class T> inline void checked_delete(T * x) {      typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];     (void) sizeof(type_must_be_complete);     delete x; }  template<class T> inline void checked_array_delete(T * x) {     typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];     (void) sizeof(type_must_be_complete);     delete [] x; }  template<class T> struct checked_deleter {     typedef void result_type;     typedef T * argument_type;      void operator()(T * x) const     {          boost::checked_delete(x);     } };  template<class T> struct checked_array_deleter {     typedef void result_type;     typedef T * argument_type;      void operator()(T * x) const     {         boost::checked_array_delete(x);     } };  }
1196  
1197 namespace boost { 
1198 # 39 "/usr/include/boost/detail/bad_weak_ptr.hpp" 3 4
1199 class bad_weak_ptr: public std::exception { public:      virtual char const * what() const throw()     {         return "tr1::bad_weak_ptr";     } };      }
1200 # 29 "/usr/include/boost/detail/sp_counted_base_gcc_x86.hpp" 3 4
1201 namespace boost {  namespace detail {  inline int atomic_exchange_and_add( int * pw, int dv ) {         int r;      __asm__ __volatile__     (         "lock\n\t"         "xadd %1, %0":         "=m"( *pw ), "=r"( r ):         "m"( *pw ), "1"( dv ):         "memory", "cc"     );      return r; }  inline void atomic_increment( int * pw ) {       __asm__     (         "lock\n\t"         "incl %0":         "=m"( *pw ):         "m"( *pw ):         "cc"     ); }  inline int atomic_conditional_increment( int * pw ) {         int rv, tmp;      __asm__     (         "movl %0, %%eax\n\t"         "0:\n\t"         "test %%eax, %%eax\n\t"         "je 1f\n\t"         "movl %%eax, %2\n\t"         "incl %2\n\t"         "lock\n\t"         "cmpxchgl %2, %0\n\t"         "jne 0b\n\t"         "1:":         "=m"( *pw ), "=&a"( rv ), "=&r"( tmp ):         "m"( *pw ):         "cc"     );      return rv; }  class sp_counted_base { private:      sp_counted_base( sp_counted_base const & );     sp_counted_base & operator= ( sp_counted_base const & );      int use_count_;     int weak_count_;  public:      sp_counted_base(): use_count_( 1 ), weak_count_( 1 )     {     }      virtual ~sp_counted_base()     {     }         virtual void dispose() = 0;        virtual void destroy()     {         delete this;     }      virtual void * get_deleter( std::type_info const & ti ) = 0;      void add_ref_copy()     {         atomic_increment( &use_count_ );     }      bool add_ref_lock()     {         return atomic_conditional_increment( &use_count_ ) != 0;     }      void release()     {         if( atomic_exchange_and_add( &use_count_, -1 ) == 1 )         {             dispose();             weak_release();         }     }      void weak_add_ref()     {         atomic_increment( &weak_count_ );     }      void weak_release()     {         if( atomic_exchange_and_add( &weak_count_, -1 ) == 1 )         {             destroy();         }     }      long use_count() const     {         return static_cast<int const volatile &>( use_count_ );     } };  }  }
1202  
1203 # 41 "/usr/include/boost/detail/sp_counted_impl.hpp" 3 4
1204 namespace boost { 
1205 # 51 "/usr/include/boost/detail/sp_counted_impl.hpp" 3 4
1206 namespace detail {  template<class X> class sp_counted_impl_p: public sp_counted_base { private:      X * px_;      sp_counted_impl_p( sp_counted_impl_p const & );     sp_counted_impl_p & operator= ( sp_counted_impl_p const & );      typedef sp_counted_impl_p<X> this_type;  public:      explicit sp_counted_impl_p( X * px ): px_( px )     {        }      virtual void dispose()     {            boost::checked_delete( px_ );     }      virtual void * get_deleter( std::type_info const & )     {         return 0;     } 
1207 # 114 "/usr/include/boost/detail/sp_counted_impl.hpp" 3 4
1208 }; 
1209 # 123 "/usr/include/boost/detail/sp_counted_impl.hpp" 3 4
1210 template<class P, class D> class sp_counted_impl_pd: public sp_counted_base { private:      P ptr;     D del;      sp_counted_impl_pd( sp_counted_impl_pd const & );     sp_counted_impl_pd & operator= ( sp_counted_impl_pd const & );      typedef sp_counted_impl_pd<P, D> this_type;  public:        sp_counted_impl_pd( P p, D d ): ptr(p), del(d)     {     }      virtual void dispose()     {         del( ptr );     }      virtual void * get_deleter( std::type_info const & ti )     {         return ti == typeid(D)? &del: 0;     } 
1211 # 180 "/usr/include/boost/detail/sp_counted_impl.hpp" 3 4
1212 };  template<class P, class D, class A> class sp_counted_impl_pda: public sp_counted_base { private:      P p_;     D d_;     A a_;      sp_counted_impl_pda( sp_counted_impl_pda const & );     sp_counted_impl_pda & operator= ( sp_counted_impl_pda const & );      typedef sp_counted_impl_pda<P, D, A> this_type;  public:        sp_counted_impl_pda( P p, D d, A a ): p_( p ), d_( d ), a_( a )     {     }      virtual void dispose()     {         d_( p_ );     }      virtual void destroy()     {         typedef typename A::template rebind< this_type >::other A2;          A2 a2( a_ );          this->~this_type();         a2.deallocate( this, 1 );     }      virtual void * get_deleter( std::type_info const & ti )     {         return ti == typeid( D )? &d_: 0;     } };      }  }
1213  
1214 # 31 "/usr/include/boost/detail/shared_count.hpp" 2 3 4
1215 # 34 "/usr/include/boost/detail/shared_count.hpp" 2 3 4
1216    namespace boost {  namespace detail { 
1217 # 50 "/usr/include/boost/detail/shared_count.hpp" 3 4
1218 class weak_count;  class shared_count { private:      sp_counted_base * pi_;          friend class weak_count;  public:      shared_count(): pi_(0)        {     }      template<class Y> explicit shared_count( Y * p ): pi_( 0 )        {           try         {             pi_ = new sp_counted_impl_p<Y>( p );         }         catch(...)         {             boost::checked_delete( p );             throw;         } 
1219 # 101 "/usr/include/boost/detail/shared_count.hpp" 3 4
1220     }      template<class P, class D> shared_count(P p, D d): pi_(0)        {           try         {             pi_ = new sp_counted_impl_pd<P, D>(p, d);         }         catch(...)         {             d(p);             throw;         } 
1221     }          template<class Y>     explicit shared_count( std::auto_ptr<Y> & r ): pi_( new sp_counted_impl_p<Y>( r.get() ) )        { 
1222 # 198 "/usr/include/boost/detail/shared_count.hpp" 3 4
1223         r.release();     }        ~shared_count()     {         if( pi_ != 0 ) pi_->release();        }      shared_count(shared_count const & r): pi_(r.pi_)        {         if( pi_ != 0 ) pi_->add_ref_copy();     }      explicit shared_count(weak_count const & r);      shared_count & operator= (shared_count const & r)     {         sp_counted_base * tmp = r.pi_;          if( tmp != pi_ )         {             if( tmp != 0 ) tmp->add_ref_copy();             if( pi_ != 0 ) pi_->release();             pi_ = tmp;         }          return *this;     }      void swap(shared_count & r)     {         sp_counted_base * tmp = r.pi_;         r.pi_ = pi_;         pi_ = tmp;     }      long use_count() const     {         return pi_ != 0? pi_->use_count(): 0;     }      bool unique() const     {         return use_count() == 1;     }      friend inline bool operator==(shared_count const & a, shared_count const & b)     {         return a.pi_ == b.pi_;     }      friend inline bool operator<(shared_count const & a, shared_count const & b)     {         return std::less<sp_counted_base *>()( a.pi_, b.pi_ );     }      void * get_deleter(std::type_info const & ti) const     {         return pi_? pi_->get_deleter( ti ): 0;     } };   class weak_count { private:      sp_counted_base * pi_;          friend class shared_count;  public:      weak_count(): pi_(0)        {     }      weak_count(shared_count const & r): pi_(r.pi_)        {         if(pi_ != 0) pi_->weak_add_ref();     }      weak_count(weak_count const & r): pi_(r.pi_)        {         if(pi_ != 0) pi_->weak_add_ref();     }      ~weak_count()     {         if(pi_ != 0) pi_->weak_release();        }      weak_count & operator= (shared_count const & r)     {         sp_counted_base * tmp = r.pi_;         if(tmp != 0) tmp->weak_add_ref();         if(pi_ != 0) pi_->weak_release();         pi_ = tmp;          return *this;     }      weak_count & operator= (weak_count const & r)     {         sp_counted_base * tmp = r.pi_;         if(tmp != 0) tmp->weak_add_ref();         if(pi_ != 0) pi_->weak_release();         pi_ = tmp;          return *this;     }      void swap(weak_count & r)     {         sp_counted_base * tmp = r.pi_;         r.pi_ = pi_;         pi_ = tmp;     }      long use_count() const     {         return pi_ != 0? pi_->use_count(): 0;     }      friend inline bool operator==(weak_count const & a, weak_count const & b)     {         return a.pi_ == b.pi_;     }      friend inline bool operator<(weak_count const & a, weak_count const & b)     {         return std::less<sp_counted_base *>()(a.pi_, b.pi_);     } };  inline shared_count::shared_count( weak_count const & r ): pi_( r.pi_ )    {     if( pi_ == 0 || !pi_->add_ref_lock() )     {         boost::throw_exception( boost::bad_weak_ptr() );     } }  }  }
1224 # 41 "/usr/include/boost/shared_ptr.hpp" 3 4
1225 namespace boost {  template<class T> class weak_ptr; template<class T> class enable_shared_from_this;  namespace detail {  struct static_cast_tag {}; struct const_cast_tag {}; struct dynamic_cast_tag {}; struct polymorphic_cast_tag {};  template<class T> struct shared_ptr_traits {     typedef T & reference; };  template<> struct shared_ptr_traits<void> {     typedef void reference; };    template<> struct shared_ptr_traits<void const> {     typedef void reference; };  template<> struct shared_ptr_traits<void volatile> {     typedef void reference; };  template<> struct shared_ptr_traits<void const volatile> {     typedef void reference; };      template<class T, class Y> void sp_enable_shared_from_this( shared_count const & pn, boost::enable_shared_from_this<T> const * pe, Y const * px ) {     if(pe != 0) pe->_internal_weak_this._internal_assign(const_cast<Y*>(px), pn); }       inline void sp_enable_shared_from_this( shared_count const & , ... ) { } 
1226 # 108 "/usr/include/boost/shared_ptr.hpp" 3 4
1227 template< class T, class R > struct sp_enable_if_auto_ptr { };  template< class T, class R > struct sp_enable_if_auto_ptr< std::auto_ptr< T >, R > {     typedef R type; };    } 
1228 # 130 "/usr/include/boost/shared_ptr.hpp" 3 4
1229 template<class T> class shared_ptr { private:       typedef shared_ptr<T> this_type;  public:      typedef T element_type;     typedef T value_type;     typedef T * pointer;     typedef typename boost::detail::shared_ptr_traits<T>::reference reference;      shared_ptr(): px(0), pn()     {     }      template<class Y>     explicit shared_ptr( Y * p ): px( p ), pn( p )     {         boost::detail::sp_enable_shared_from_this( pn, p, p );     }            template<class Y, class D> shared_ptr(Y * p, D d): px(p), pn(p, d)     {         boost::detail::sp_enable_shared_from_this( pn, p, p );     }        template<class Y, class D, class A> shared_ptr( Y * p, D d, A a ): px( p ), pn( p, d, a )     {         boost::detail::sp_enable_shared_from_this( pn, p, p );     }           shared_ptr & operator=(shared_ptr const & r)     {         px = r.px;         pn = r.pn;         return *this;     }        template<class Y>     explicit shared_ptr(weak_ptr<Y> const & r): pn(r.pn)     {          px = r.px;     }      template<class Y>     shared_ptr(shared_ptr<Y> const & r): px(r.px), pn(r.pn)     {     }      template<class Y>     shared_ptr(shared_ptr<Y> const & r, boost::detail::static_cast_tag): px(static_cast<element_type *>(r.px)), pn(r.pn)     {     }      template<class Y>     shared_ptr(shared_ptr<Y> const & r, boost::detail::const_cast_tag): px(const_cast<element_type *>(r.px)), pn(r.pn)     {     }      template<class Y>     shared_ptr(shared_ptr<Y> const & r, boost::detail::dynamic_cast_tag): px(dynamic_cast<element_type *>(r.px)), pn(r.pn)     {         if(px == 0)         {             pn = boost::detail::shared_count();         }     }      template<class Y>     shared_ptr(shared_ptr<Y> const & r, boost::detail::polymorphic_cast_tag): px(dynamic_cast<element_type *>(r.px)), pn(r.pn)     {         if(px == 0)         {             boost::throw_exception(std::bad_cast());         }     }        template<class Y>     explicit shared_ptr(std::auto_ptr<Y> & r): px(r.get()), pn()     {         Y * tmp = r.get();         pn = boost::detail::shared_count(r);         boost::detail::sp_enable_shared_from_this( pn, tmp, tmp );     }        template<class Ap>     explicit shared_ptr( Ap r, typename boost::detail::sp_enable_if_auto_ptr<Ap, int>::type = 0 ): px( r.get() ), pn()     {         typename Ap::element_type * tmp = r.get();         pn = boost::detail::shared_count( r );         boost::detail::sp_enable_shared_from_this( pn, tmp, tmp );     } 
1230     typedef T * this_type::*unspecified_bool_type;      operator unspecified_bool_type() const     {         return px == 0? 0: &this_type::px;     }          bool operator! () const     {         return px == 0;     }      bool unique() const     {         return pn.unique();     }      long use_count() const     {         return pn.use_count();     }      void swap(shared_ptr<T> & other)     {         std::swap(px, other.px);         pn.swap(other.pn);     }      template<class Y> bool _internal_less(shared_ptr<Y> const & rhs) const     {         return pn < rhs.pn;     }      void * _internal_get_deleter(std::type_info const & ti) const     {         return pn.get_deleter(ti);     }       private:      template<class Y> friend class shared_ptr;     template<class Y> friend class weak_ptr;         T * px;     boost::detail::shared_count pn;  };  template<class T, class U> inline bool operator==(shared_ptr<T> const & a, shared_ptr<U> const & b) {     return a.get() == b.get(); }  template<class T, class U> inline bool operator!=(shared_ptr<T> const & a, shared_ptr<U> const & b) {     return a.get() != b.get(); } 
1231 # 440 "/usr/include/boost/shared_ptr.hpp" 3 4
1232 template<class T, class U> inline bool operator<(shared_ptr<T> const & a, shared_ptr<U> const & b) {     return a._internal_less(b); }  template<class T> inline void swap(shared_ptr<T> & a, shared_ptr<T> & b) {     a.swap(b); }  template<class T, class U> shared_ptr<T> static_pointer_cast(shared_ptr<U> const & r) {     return shared_ptr<T>(r, boost::detail::static_cast_tag()); }  template<class T, class U> shared_ptr<T> const_pointer_cast(shared_ptr<U> const & r) {     return shared_ptr<T>(r, boost::detail::const_cast_tag()); }  template<class T, class U> shared_ptr<T> dynamic_pointer_cast(shared_ptr<U> const & r) {     return shared_ptr<T>(r, boost::detail::dynamic_cast_tag()); }    template<class T, class U> shared_ptr<T> shared_static_cast(shared_ptr<U> const & r) {     return shared_ptr<T>(r, boost::detail::static_cast_tag()); }  template<class T, class U> shared_ptr<T> shared_dynamic_cast(shared_ptr<U> const & r) {     return shared_ptr<T>(r, boost::detail::dynamic_cast_tag()); }  template<class T, class U> shared_ptr<T> shared_polymorphic_cast(shared_ptr<U> const & r) {     return shared_ptr<T>(r, boost::detail::polymorphic_cast_tag()); }  template<class T, class U> shared_ptr<T> shared_polymorphic_downcast(shared_ptr<U> const & r) {     ((dynamic_cast<T *>(r.get()) == r.get()) ? static_cast<void> (0) : __assert_fail ("dynamic_cast<T *>(r.get()) == r.get()", "/usr/include/boost/shared_ptr.hpp", 484, __PRETTY_FUNCTION__));     return shared_static_cast<T>(r); }    template<class T> inline T * get_pointer(shared_ptr<T> const & p) {     return p.get(); } 
1233 template<class D, class T> D * get_deleter(shared_ptr<T> const & p) {     return static_cast<D *>(p._internal_get_deleter(typeid(D))); }    }
1234  
1235 # 17 "/usr/include/boost/program_options/options_description.hpp" 2 3 4
1236 # 73 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_tree.h" 3
1237 namespace std __attribute__ ((__visibility__ ("default"))) { 
1238 # 91 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_tree.h" 3
1239   enum _Rb_tree_color { _S_red = false, _S_black = true };    struct _Rb_tree_node_base   {     typedef _Rb_tree_node_base* _Base_ptr;     typedef const _Rb_tree_node_base* _Const_Base_ptr;      _Rb_tree_color _M_color;     _Base_ptr _M_parent;     _Base_ptr _M_left;     _Base_ptr _M_right;      static _Base_ptr     _S_minimum(_Base_ptr __x)     {       while (__x->_M_left != 0) __x = __x->_M_left;       return __x;     }      static _Const_Base_ptr     _S_minimum(_Const_Base_ptr __x)     {       while (__x->_M_left != 0) __x = __x->_M_left;       return __x;     }      static _Base_ptr     _S_maximum(_Base_ptr __x)     {       while (__x->_M_right != 0) __x = __x->_M_right;       return __x;     }      static _Const_Base_ptr     _S_maximum(_Const_Base_ptr __x)     {       while (__x->_M_right != 0) __x = __x->_M_right;       return __x;     }   };    template<typename _Val>     struct _Rb_tree_node : public _Rb_tree_node_base     {       typedef _Rb_tree_node<_Val>* _Link_type;       _Val _M_value_field;     };    _Rb_tree_node_base*   _Rb_tree_increment(_Rb_tree_node_base* __x);    const _Rb_tree_node_base*   _Rb_tree_increment(const _Rb_tree_node_base* __x);    _Rb_tree_node_base*   _Rb_tree_decrement(_Rb_tree_node_base* __x);    const _Rb_tree_node_base*   _Rb_tree_decrement(const _Rb_tree_node_base* __x);    template<typename _Tp>     struct _Rb_tree_iterator     {       typedef _Tp value_type;       typedef _Tp& reference;       typedef _Tp* pointer;        typedef bidirectional_iterator_tag iterator_category;       typedef ptrdiff_t difference_type;        typedef _Rb_tree_iterator<_Tp> _Self;       typedef _Rb_tree_node_base::_Base_ptr _Base_ptr;       typedef _Rb_tree_node<_Tp>* _Link_type;        _Rb_tree_iterator()       : _M_node() { }        explicit       _Rb_tree_iterator(_Link_type __x)       : _M_node(__x) { }        reference       operator*() const       { return static_cast<_Link_type>(_M_node)->_M_value_field; }        pointer       operator->() const       { return &static_cast<_Link_type>(_M_node)->_M_value_field; }        _Self&       operator++()       {  _M_node = _Rb_tree_increment(_M_node);  return *this;       }        _Self       operator++(int)       {  _Self __tmp = *this;  _M_node = _Rb_tree_increment(_M_node);  return __tmp;       }        _Self&       operator--()       {  _M_node = _Rb_tree_decrement(_M_node);  return *this;       }        _Self       operator--(int)       {  _Self __tmp = *this;  _M_node = _Rb_tree_decrement(_M_node);  return __tmp;       }        bool       operator==(const _Self& __x) const       { return _M_node == __x._M_node; }        bool       operator!=(const _Self& __x) const       { return _M_node != __x._M_node; }        _Base_ptr _M_node;   };    template<typename _Tp>     struct _Rb_tree_const_iterator     {       typedef _Tp value_type;       typedef const _Tp& reference;       typedef const _Tp* pointer;        typedef _Rb_tree_iterator<_Tp> iterator;        typedef bidirectional_iterator_tag iterator_category;       typedef ptrdiff_t difference_type;        typedef _Rb_tree_const_iterator<_Tp> _Self;       typedef _Rb_tree_node_base::_Const_Base_ptr _Base_ptr;       typedef const _Rb_tree_node<_Tp>* _Link_type;        _Rb_tree_const_iterator()       : _M_node() { }        explicit       _Rb_tree_const_iterator(_Link_type __x)       : _M_node(__x) { }        _Rb_tree_const_iterator(const iterator& __it)       : _M_node(__it._M_node) { }        reference       operator*() const       { return static_cast<_Link_type>(_M_node)->_M_value_field; }        pointer       operator->() const       { return &static_cast<_Link_type>(_M_node)->_M_value_field; }        _Self&       operator++()       {  _M_node = _Rb_tree_increment(_M_node);  return *this;       }        _Self       operator++(int)       {  _Self __tmp = *this;  _M_node = _Rb_tree_increment(_M_node);  return __tmp;       }        _Self&       operator--()       {  _M_node = _Rb_tree_decrement(_M_node);  return *this;       }        _Self       operator--(int)       {  _Self __tmp = *this;  _M_node = _Rb_tree_decrement(_M_node);  return __tmp;       }        bool       operator==(const _Self& __x) const       { return _M_node == __x._M_node; }        bool       operator!=(const _Self& __x) const       { return _M_node != __x._M_node; }        _Base_ptr _M_node;     };    template<typename _Val>     inline bool     operator==(const _Rb_tree_iterator<_Val>& __x,                const _Rb_tree_const_iterator<_Val>& __y)     { return __x._M_node == __y._M_node; }    template<typename _Val>     inline bool     operator!=(const _Rb_tree_iterator<_Val>& __x,                const _Rb_tree_const_iterator<_Val>& __y)     { return __x._M_node != __y._M_node; }    void   _Rb_tree_rotate_left(_Rb_tree_node_base* const __x,                        _Rb_tree_node_base*& __root);    void   _Rb_tree_rotate_right(_Rb_tree_node_base* const __x,                         _Rb_tree_node_base*& __root);    void   _Rb_tree_insert_and_rebalance(const bool __insert_left,                                 _Rb_tree_node_base* __x,                                 _Rb_tree_node_base* __p,                                 _Rb_tree_node_base& __header);    _Rb_tree_node_base*   _Rb_tree_rebalance_for_erase(_Rb_tree_node_base* const __z,           _Rb_tree_node_base& __header);     template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc = allocator<_Val> >     class _Rb_tree     {       typedef typename _Alloc::template rebind<_Rb_tree_node<_Val> >::other               _Node_allocator;      protected:       typedef _Rb_tree_node_base* _Base_ptr;       typedef const _Rb_tree_node_base* _Const_Base_ptr;       typedef _Rb_tree_node<_Val> _Rb_tree_node;      public:       typedef _Key key_type;       typedef _Val value_type;       typedef value_type* pointer;       typedef const value_type* const_pointer;       typedef value_type& reference;       typedef const value_type& const_reference;       typedef _Rb_tree_node* _Link_type;       typedef const _Rb_tree_node* _Const_Link_type;       typedef size_t size_type;       typedef ptrdiff_t difference_type;       typedef _Alloc allocator_type;        _Node_allocator&       _M_get_Node_allocator()       { return *static_cast<_Node_allocator*>(&this->_M_impl); }        const _Node_allocator&       _M_get_Node_allocator() const       { return *static_cast<const _Node_allocator*>(&this->_M_impl); }        allocator_type       get_allocator() const       { return allocator_type(_M_get_Node_allocator()); }      protected:       _Rb_tree_node*       _M_get_node()       { return _M_impl._Node_allocator::allocate(1); }        void       _M_put_node(_Rb_tree_node* __p)       { _M_impl._Node_allocator::deallocate(__p, 1); }        _Link_type       _M_create_node(const value_type& __x)       {  _Link_type __tmp = _M_get_node();  try    { get_allocator().construct(&__tmp->_M_value_field, __x); }  catch(...)    {      _M_put_node(__tmp);      throw;    }  return __tmp;       }        _Link_type       _M_clone_node(_Const_Link_type __x)       {  _Link_type __tmp = _M_create_node(__x->_M_value_field);  __tmp->_M_color = __x->_M_color;  __tmp->_M_left = 0;  __tmp->_M_right = 0;  return __tmp;       }        void       _M_destroy_node(_Link_type __p)       {  get_allocator().destroy(&__p->_M_value_field);  _M_put_node(__p);       }      protected:       template<typename _Key_compare,         bool _Is_pod_comparator = std::__is_pod<_Key_compare>::__value>         struct _Rb_tree_impl : public _Node_allocator         {    _Key_compare _M_key_compare;    _Rb_tree_node_base _M_header;    size_type _M_node_count;     _Rb_tree_impl(const _Node_allocator& __a = _Node_allocator(),    const _Key_compare& __comp = _Key_compare())    : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),      _M_node_count(0)    {      this->_M_header._M_color = _S_red;      this->_M_header._M_parent = 0;      this->_M_header._M_left = &this->_M_header;      this->_M_header._M_right = &this->_M_header;    }  };          template<typename _Key_compare>         struct _Rb_tree_impl<_Key_compare, true> : public _Node_allocator  {    _Key_compare _M_key_compare;    _Rb_tree_node_base _M_header;    size_type _M_node_count;     _Rb_tree_impl(const _Node_allocator& __a = _Node_allocator(),    const _Key_compare& __comp = _Key_compare())    : _Node_allocator(__a), _M_key_compare(__comp), _M_header(),      _M_node_count(0)    {      this->_M_header._M_color = _S_red;      this->_M_header._M_parent = 0;      this->_M_header._M_left = &this->_M_header;      this->_M_header._M_right = &this->_M_header;    }  };        _Rb_tree_impl<_Compare> _M_impl;      protected:       _Base_ptr&       _M_root()       { return this->_M_impl._M_header._M_parent; }        _Const_Base_ptr       _M_root() const       { return this->_M_impl._M_header._M_parent; }        _Base_ptr&       _M_leftmost()       { return this->_M_impl._M_header._M_left; }        _Const_Base_ptr       _M_leftmost() const       { return this->_M_impl._M_header._M_left; }        _Base_ptr&       _M_rightmost()       { return this->_M_impl._M_header._M_right; }        _Const_Base_ptr       _M_rightmost() const       { return this->_M_impl._M_header._M_right; }        _Link_type       _M_begin()       { return static_cast<_Link_type>(this->_M_impl._M_header._M_parent); }        _Const_Link_type       _M_begin() const       {  return static_cast<_Const_Link_type>    (this->_M_impl._M_header._M_parent);       }        _Link_type       _M_end()       { return static_cast<_Link_type>(&this->_M_impl._M_header); }        _Const_Link_type       _M_end() const       { return static_cast<_Const_Link_type>(&this->_M_impl._M_header); }        static const_reference       _S_value(_Const_Link_type __x)       { return __x->_M_value_field; }        static const _Key&       _S_key(_Const_Link_type __x)       { return _KeyOfValue()(_S_value(__x)); }        static _Link_type       _S_left(_Base_ptr __x)       { return static_cast<_Link_type>(__x->_M_left); }        static _Const_Link_type       _S_left(_Const_Base_ptr __x)       { return static_cast<_Const_Link_type>(__x->_M_left); }        static _Link_type       _S_right(_Base_ptr __x)       { return static_cast<_Link_type>(__x->_M_right); }        static _Const_Link_type       _S_right(_Const_Base_ptr __x)       { return static_cast<_Const_Link_type>(__x->_M_right); }        static const_reference       _S_value(_Const_Base_ptr __x)       { return static_cast<_Const_Link_type>(__x)->_M_value_field; }        static const _Key&       _S_key(_Const_Base_ptr __x)       { return _KeyOfValue()(_S_value(__x)); }        static _Base_ptr       _S_minimum(_Base_ptr __x)       { return _Rb_tree_node_base::_S_minimum(__x); }        static _Const_Base_ptr       _S_minimum(_Const_Base_ptr __x)       { return _Rb_tree_node_base::_S_minimum(__x); }        static _Base_ptr       _S_maximum(_Base_ptr __x)       { return _Rb_tree_node_base::_S_maximum(__x); }        static _Const_Base_ptr       _S_maximum(_Const_Base_ptr __x)       { return _Rb_tree_node_base::_S_maximum(__x); }      public:       typedef _Rb_tree_iterator<value_type> iterator;       typedef _Rb_tree_const_iterator<value_type> const_iterator;        typedef std::reverse_iterator<iterator> reverse_iterator;       typedef std::reverse_iterator<const_iterator> const_reverse_iterator;      private:       iterator       _M_insert(_Base_ptr __x, _Base_ptr __y, const value_type& __v);          iterator       _M_insert_lower(_Base_ptr __x, _Base_ptr __y, const value_type& __v);        const_iterator       _M_insert(_Const_Base_ptr __x, _Const_Base_ptr __y,   const value_type& __v);        _Link_type       _M_copy(_Const_Link_type __x, _Link_type __p);        void       _M_erase(_Link_type __x);      public:        _Rb_tree()       { }        _Rb_tree(const _Compare& __comp)       : _M_impl(allocator_type(), __comp)       { }        _Rb_tree(const _Compare& __comp, const allocator_type& __a)       : _M_impl(__a, __comp)       { }        _Rb_tree(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x)       : _M_impl(__x._M_get_Node_allocator(), __x._M_impl._M_key_compare)       {  if (__x._M_root() != 0)    {      _M_root() = _M_copy(__x._M_begin(), _M_end());      _M_leftmost() = _S_minimum(_M_root());      _M_rightmost() = _S_maximum(_M_root());      _M_impl._M_node_count = __x._M_impl._M_node_count;    }       }        ~_Rb_tree()       { _M_erase(_M_begin()); }        _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&       operator=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x);         _Compare       key_comp() const       { return _M_impl._M_key_compare; }        iterator       begin()       {  return iterator(static_cast<_Link_type>    (this->_M_impl._M_header._M_left));       }        const_iterator       begin() const       {  return const_iterator(static_cast<_Const_Link_type>          (this->_M_impl._M_header._M_left));       }        iterator       end()       { return iterator(static_cast<_Link_type>(&this->_M_impl._M_header)); }        const_iterator       end() const       {  return const_iterator(static_cast<_Const_Link_type>          (&this->_M_impl._M_header));       }        reverse_iterator       rbegin()       { return reverse_iterator(end()); }        const_reverse_iterator       rbegin() const       { return const_reverse_iterator(end()); }        reverse_iterator       rend()       { return reverse_iterator(begin()); }        const_reverse_iterator       rend() const       { return const_reverse_iterator(begin()); }        bool       empty() const       { return _M_impl._M_node_count == 0; }        size_type       size() const       { return _M_impl._M_node_count; }        size_type       max_size() const       { return get_allocator().max_size(); }        void       swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t);         pair<iterator, bool>       _M_insert_unique(const value_type& __x);        iterator       _M_insert_equal(const value_type& __x);          iterator       _M_insert_equal_lower(const value_type& __x);        iterator       _M_insert_unique(iterator __position, const value_type& __x);        const_iterator       _M_insert_unique(const_iterator __position, const value_type& __x);        iterator       _M_insert_equal(iterator __position, const value_type& __x);        const_iterator       _M_insert_equal(const_iterator __position, const value_type& __x);        template<typename _InputIterator>         void         _M_insert_unique(_InputIterator __first, _InputIterator __last);        template<typename _InputIterator>         void         _M_insert_equal(_InputIterator __first, _InputIterator __last);        void       erase(iterator __position);        void       erase(const_iterator __position);        size_type       erase(const key_type& __x);        void       erase(iterator __first, iterator __last);        void       erase(const_iterator __first, const_iterator __last);        void       erase(const key_type* __first, const key_type* __last);        void       clear()       {         _M_erase(_M_begin());         _M_leftmost() = _M_end();         _M_root() = 0;         _M_rightmost() = _M_end();         _M_impl._M_node_count = 0;       }         iterator       find(const key_type& __x);        const_iterator       find(const key_type& __x) const;        size_type       count(const key_type& __x) const;        iterator       lower_bound(const key_type& __x);        const_iterator       lower_bound(const key_type& __x) const;        iterator       upper_bound(const key_type& __x);        const_iterator       upper_bound(const key_type& __x) const;        pair<iterator,iterator>       equal_range(const key_type& __x);        pair<const_iterator, const_iterator>       equal_range(const key_type& __x) const;         bool       __rb_verify() const;     };    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     inline bool     operator==(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,         const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)     {       return __x.size() == __y.size()       && std::equal(__x.begin(), __x.end(), __y.begin());     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     inline bool     operator<(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,        const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)     {       return std::lexicographical_compare(__x.begin(), __x.end(),        __y.begin(), __y.end());     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     inline bool     operator!=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,         const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)     { return !(__x == __y); }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     inline bool     operator>(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,        const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)     { return __y < __x; }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     inline bool     operator<=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,         const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)     { return !(__y < __x); }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     inline bool     operator>=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,         const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)     { return !(__x < __y); }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     inline void     swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x,   _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __y)     { __x.swap(__y); }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>&     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     operator=(const _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __x)     {       if (this != &__x)  {     clear();    _M_impl._M_key_compare = __x._M_impl._M_key_compare;    if (__x._M_root() != 0)      {        _M_root() = _M_copy(__x._M_begin(), _M_end());        _M_leftmost() = _S_minimum(_M_root());        _M_rightmost() = _S_maximum(_M_root());        _M_impl._M_node_count = __x._M_impl._M_node_count;      }  }       return *this;     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     _M_insert(_Base_ptr __x, _Base_ptr __p, const _Val& __v)     {       bool __insert_left = (__x != 0 || __p == _M_end()        || _M_impl._M_key_compare(_KeyOfValue()(__v),             _S_key(__p)));        _Link_type __z = _M_create_node(__v);        _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,         this->_M_impl._M_header);       ++_M_impl._M_node_count;       return iterator(__z);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     _M_insert_lower(_Base_ptr __x, _Base_ptr __p, const _Val& __v)     {       bool __insert_left = (__x != 0 || __p == _M_end()        || !_M_impl._M_key_compare(_S_key(__p),              _KeyOfValue()(__v)));        _Link_type __z = _M_create_node(__v);        _Rb_tree_insert_and_rebalance(__insert_left, __z, __p,         this->_M_impl._M_header);       ++_M_impl._M_node_count;       return iterator(__z);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     _M_insert(_Const_Base_ptr __x, _Const_Base_ptr __p, const _Val& __v)     {       bool __insert_left = (__x != 0 || __p == _M_end()        || _M_impl._M_key_compare(_KeyOfValue()(__v),             _S_key(__p)));        _Link_type __z = _M_create_node(__v);        _Rb_tree_insert_and_rebalance(__insert_left, __z,         const_cast<_Base_ptr>(__p),         this->_M_impl._M_header);       ++_M_impl._M_node_count;       return const_iterator(__z);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     _M_insert_equal(const _Val& __v)     {       _Link_type __x = _M_begin();       _Link_type __y = _M_end();       while (__x != 0)  {    __y = __x;    __x = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x)) ?          _S_left(__x) : _S_right(__x);  }       return _M_insert(__x, __y, __v);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     _M_insert_equal_lower(const _Val& __v)     {       _Link_type __x = _M_begin();       _Link_type __y = _M_end();       while (__x != 0)  {    __y = __x;    __x = !_M_impl._M_key_compare(_S_key(__x), _KeyOfValue()(__v)) ?          _S_left(__x) : _S_right(__x);  }       return _M_insert_lower(__x, __y, __v);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     void     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     swap(_Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>& __t)     {       if (_M_root() == 0)  {    if (__t._M_root() != 0)      {        _M_root() = __t._M_root();        _M_leftmost() = __t._M_leftmost();        _M_rightmost() = __t._M_rightmost();        _M_root()->_M_parent = _M_end();         __t._M_root() = 0;        __t._M_leftmost() = __t._M_end();        __t._M_rightmost() = __t._M_end();      }  }       else if (__t._M_root() == 0)  {    __t._M_root() = _M_root();    __t._M_leftmost() = _M_leftmost();    __t._M_rightmost() = _M_rightmost();    __t._M_root()->_M_parent = __t._M_end();     _M_root() = 0;    _M_leftmost() = _M_end();    _M_rightmost() = _M_end();  }       else  {    std::swap(_M_root(),__t._M_root());    std::swap(_M_leftmost(),__t._M_leftmost());    std::swap(_M_rightmost(),__t._M_rightmost());     _M_root()->_M_parent = _M_end();    __t._M_root()->_M_parent = __t._M_end();  }        std::swap(this->_M_impl._M_node_count, __t._M_impl._M_node_count);       std::swap(this->_M_impl._M_key_compare, __t._M_impl._M_key_compare);          std::__alloc_swap<_Node_allocator>::  _S_do_it(_M_get_Node_allocator(), __t._M_get_Node_allocator());     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,       _Compare, _Alloc>::iterator, bool>     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     _M_insert_unique(const _Val& __v)     {       _Link_type __x = _M_begin();       _Link_type __y = _M_end();       bool __comp = true;       while (__x != 0)  {    __y = __x;    __comp = _M_impl._M_key_compare(_KeyOfValue()(__v), _S_key(__x));    __x = __comp ? _S_left(__x) : _S_right(__x);  }       iterator __j = iterator(__y);       if (__comp)  if (__j == begin())    return pair<iterator,bool>(_M_insert(__x, __y, __v), true);  else    --__j;       if (_M_impl._M_key_compare(_S_key(__j._M_node), _KeyOfValue()(__v)))  return pair<iterator, bool>(_M_insert(__x, __y, __v), true);       return pair<iterator, bool>(__j, false);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     _M_insert_unique(iterator __position, const _Val& __v)     {        if (__position._M_node == _M_end())  {    if (size() > 0        && _M_impl._M_key_compare(_S_key(_M_rightmost()),      _KeyOfValue()(__v)))      return _M_insert(0, _M_rightmost(), __v);    else      return _M_insert_unique(__v).first;  }       else if (_M_impl._M_key_compare(_KeyOfValue()(__v),           _S_key(__position._M_node)))  {     iterator __before = __position;    if (__position._M_node == _M_leftmost())      return _M_insert(_M_leftmost(), _M_leftmost(), __v);    else if (_M_impl._M_key_compare(_S_key((--__before)._M_node),        _KeyOfValue()(__v)))      {        if (_S_right(__before._M_node) == 0)   return _M_insert(0, __before._M_node, __v);        else   return _M_insert(__position._M_node,      __position._M_node, __v);      }    else      return _M_insert_unique(__v).first;  }       else if (_M_impl._M_key_compare(_S_key(__position._M_node),           _KeyOfValue()(__v)))  {     iterator __after = __position;    if (__position._M_node == _M_rightmost())      return _M_insert(0, _M_rightmost(), __v);    else if (_M_impl._M_key_compare(_KeyOfValue()(__v),        _S_key((++__after)._M_node)))      {        if (_S_right(__position._M_node) == 0)   return _M_insert(0, __position._M_node, __v);        else   return _M_insert(__after._M_node, __after._M_node, __v);      }    else      return _M_insert_unique(__v).first;  }       else  return __position;     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     _M_insert_unique(const_iterator __position, const _Val& __v)     {        if (__position._M_node == _M_end())  {    if (size() > 0        && _M_impl._M_key_compare(_S_key(_M_rightmost()),      _KeyOfValue()(__v)))      return _M_insert(0, _M_rightmost(), __v);    else      return const_iterator(_M_insert_unique(__v).first);  }       else if (_M_impl._M_key_compare(_KeyOfValue()(__v),           _S_key(__position._M_node)))  {     const_iterator __before = __position;    if (__position._M_node == _M_leftmost())      return _M_insert(_M_leftmost(), _M_leftmost(), __v);    else if (_M_impl._M_key_compare(_S_key((--__before)._M_node),        _KeyOfValue()(__v)))      {        if (_S_right(__before._M_node) == 0)   return _M_insert(0, __before._M_node, __v);        else   return _M_insert(__position._M_node,      __position._M_node, __v);      }    else      return const_iterator(_M_insert_unique(__v).first);  }       else if (_M_impl._M_key_compare(_S_key(__position._M_node),           _KeyOfValue()(__v)))  {     const_iterator __after = __position;    if (__position._M_node == _M_rightmost())      return _M_insert(0, _M_rightmost(), __v);    else if (_M_impl._M_key_compare(_KeyOfValue()(__v),        _S_key((++__after)._M_node)))      {        if (_S_right(__position._M_node) == 0)   return _M_insert(0, __position._M_node, __v);        else   return _M_insert(__after._M_node, __after._M_node, __v);      }    else      return const_iterator(_M_insert_unique(__v).first);  }       else  return __position;     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     _M_insert_equal(iterator __position, const _Val& __v)     {        if (__position._M_node == _M_end())  {    if (size() > 0        && !_M_impl._M_key_compare(_KeyOfValue()(__v),       _S_key(_M_rightmost())))      return _M_insert(0, _M_rightmost(), __v);    else      return _M_insert_equal(__v);  }       else if (!_M_impl._M_key_compare(_S_key(__position._M_node),            _KeyOfValue()(__v)))  {     iterator __before = __position;    if (__position._M_node == _M_leftmost())      return _M_insert(_M_leftmost(), _M_leftmost(), __v);    else if (!_M_impl._M_key_compare(_KeyOfValue()(__v),         _S_key((--__before)._M_node)))      {        if (_S_right(__before._M_node) == 0)   return _M_insert(0, __before._M_node, __v);        else   return _M_insert(__position._M_node,      __position._M_node, __v);      }    else      return _M_insert_equal(__v);  }       else  {     iterator __after = __position;    if (__position._M_node == _M_rightmost())      return _M_insert(0, _M_rightmost(), __v);    else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node),         _KeyOfValue()(__v)))      {        if (_S_right(__position._M_node) == 0)   return _M_insert(0, __position._M_node, __v);        else   return _M_insert(__after._M_node, __after._M_node, __v);      }    else      return _M_insert_equal_lower(__v);  }     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     _M_insert_equal(const_iterator __position, const _Val& __v)     {        if (__position._M_node == _M_end())  {    if (size() > 0        && !_M_impl._M_key_compare(_KeyOfValue()(__v),       _S_key(_M_rightmost())))      return _M_insert(0, _M_rightmost(), __v);    else      return const_iterator(_M_insert_equal(__v));  }       else if (!_M_impl._M_key_compare(_S_key(__position._M_node),            _KeyOfValue()(__v)))  {     const_iterator __before = __position;    if (__position._M_node == _M_leftmost())      return _M_insert(_M_leftmost(), _M_leftmost(), __v);    else if (!_M_impl._M_key_compare(_KeyOfValue()(__v),         _S_key((--__before)._M_node)))      {        if (_S_right(__before._M_node) == 0)   return _M_insert(0, __before._M_node, __v);        else   return _M_insert(__position._M_node,      __position._M_node, __v);      }    else      return const_iterator(_M_insert_equal(__v));  }       else  {     const_iterator __after = __position;    if (__position._M_node == _M_rightmost())      return _M_insert(0, _M_rightmost(), __v);    else if (!_M_impl._M_key_compare(_S_key((++__after)._M_node),         _KeyOfValue()(__v)))      {        if (_S_right(__position._M_node) == 0)   return _M_insert(0, __position._M_node, __v);        else   return _M_insert(__after._M_node, __after._M_node, __v);      }    else      return const_iterator(_M_insert_equal_lower(__v));  }     }    template<typename _Key, typename _Val, typename _KoV,            typename _Cmp, typename _Alloc>     template<class _II>       void       _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::       _M_insert_equal(_II __first, _II __last)       {  for (; __first != __last; ++__first)    _M_insert_equal(end(), *__first);       }    template<typename _Key, typename _Val, typename _KoV,            typename _Cmp, typename _Alloc>     template<class _II>       void       _Rb_tree<_Key, _Val, _KoV, _Cmp, _Alloc>::       _M_insert_unique(_II __first, _II __last)       {  for (; __first != __last; ++__first)    _M_insert_unique(end(), *__first);       }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     inline void     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     erase(iterator __position)     {       _Link_type __y =  static_cast<_Link_type>(_Rb_tree_rebalance_for_erase     (__position._M_node,      this->_M_impl._M_header));       _M_destroy_node(__y);       --_M_impl._M_node_count;     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     inline void     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     erase(const_iterator __position)     {       _Link_type __y =  static_cast<_Link_type>(_Rb_tree_rebalance_for_erase     (const_cast<_Base_ptr>(__position._M_node),      this->_M_impl._M_header));       _M_destroy_node(__y);       --_M_impl._M_node_count;     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     erase(const _Key& __x)     {       pair<iterator, iterator> __p = equal_range(__x);       const size_type __old_size = size();       erase(__p.first, __p.second);       return __old_size - size();     }    template<typename _Key, typename _Val, typename _KoV,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::_Link_type     _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::     _M_copy(_Const_Link_type __x, _Link_type __p)     {        _Link_type __top = _M_clone_node(__x);       __top->_M_parent = __p;        try  {    if (__x->_M_right)      __top->_M_right = _M_copy(_S_right(__x), __top);    __p = __top;    __x = _S_left(__x);     while (__x != 0)      {        _Link_type __y = _M_clone_node(__x);        __p->_M_left = __y;        __y->_M_parent = __p;        if (__x->_M_right)   __y->_M_right = _M_copy(_S_right(__x), __y);        __p = __y;        __x = _S_left(__x);      }  }       catch(...)  {    _M_erase(__top);    throw;  }       return __top;     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     void     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     _M_erase(_Link_type __x)     {        while (__x != 0)  {    _M_erase(_S_right(__x));    _Link_type __y = _S_left(__x);    _M_destroy_node(__x);    __x = __y;  }     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     void     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     erase(iterator __first, iterator __last)     {       if (__first == begin() && __last == end())  clear();       else  while (__first != __last)    erase(__first++);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     void     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     erase(const_iterator __first, const_iterator __last)     {       if (__first == begin() && __last == end())  clear();       else  while (__first != __last)    erase(__first++);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     void     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     erase(const _Key* __first, const _Key* __last)     {       while (__first != __last)  erase(*__first++);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     find(const _Key& __k)     {       _Link_type __x = _M_begin();       _Link_type __y = _M_end();        while (__x != 0)  if (!_M_impl._M_key_compare(_S_key(__x), __k))    __y = __x, __x = _S_left(__x);  else    __x = _S_right(__x);        iterator __j = iterator(__y);       return (__j == end()        || _M_impl._M_key_compare(__k,      _S_key(__j._M_node))) ? end() : __j;     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     find(const _Key& __k) const     {       _Const_Link_type __x = _M_begin();       _Const_Link_type __y = _M_end();       while (__x != 0)        {   if (!_M_impl._M_key_compare(_S_key(__x), __k))     __y = __x, __x = _S_left(__x);   else     __x = _S_right(__x);        }      const_iterator __j = const_iterator(__y);      return (__j == end()       || _M_impl._M_key_compare(__k,            _S_key(__j._M_node))) ? end() : __j;     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::size_type     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     count(const _Key& __k) const     {       pair<const_iterator, const_iterator> __p = equal_range(__k);       const size_type __n = std::distance(__p.first, __p.second);       return __n;     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     lower_bound(const _Key& __k)     {       _Link_type __x = _M_begin();       _Link_type __y = _M_end();        while (__x != 0)  if (!_M_impl._M_key_compare(_S_key(__x), __k))    __y = __x, __x = _S_left(__x);  else    __x = _S_right(__x);        return iterator(__y);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     lower_bound(const _Key& __k) const     {       _Const_Link_type __x = _M_begin();       _Const_Link_type __y = _M_end();        while (__x != 0)  if (!_M_impl._M_key_compare(_S_key(__x), __k))    __y = __x, __x = _S_left(__x);  else    __x = _S_right(__x);        return const_iterator(__y);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     upper_bound(const _Key& __k)     {       _Link_type __x = _M_begin();       _Link_type __y = _M_end();        while (__x != 0)  if (_M_impl._M_key_compare(__k, _S_key(__x)))    __y = __x, __x = _S_left(__x);  else    __x = _S_right(__x);        return iterator(__y);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::const_iterator     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     upper_bound(const _Key& __k) const     {       _Const_Link_type __x = _M_begin();       _Const_Link_type __y = _M_end();        while (__x != 0)  if (_M_impl._M_key_compare(__k, _S_key(__x)))    __y = __x, __x = _S_left(__x);  else    __x = _S_right(__x);        return const_iterator(__y);     }    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     inline     pair<typename _Rb_tree<_Key, _Val, _KeyOfValue,       _Compare, _Alloc>::iterator,   typename _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::iterator>     _Rb_tree<_Key, _Val, _KeyOfValue, _Compare, _Alloc>::     equal_range(const _Key& __k)     { return pair<iterator, iterator>(lower_bound(__k), upper_bound(__k)); }    template<typename _Key, typename _Val, typename _KoV,            typename _Compare, typename _Alloc>     inline     pair<typename _Rb_tree<_Key, _Val, _KoV,       _Compare, _Alloc>::const_iterator,   typename _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::const_iterator>     _Rb_tree<_Key, _Val, _KoV, _Compare, _Alloc>::     equal_range(const _Key& __k) const     { return pair<const_iterator, const_iterator>(lower_bound(__k),         upper_bound(__k)); }    unsigned int   _Rb_tree_black_count(const _Rb_tree_node_base* __node,                        const _Rb_tree_node_base* __root);    template<typename _Key, typename _Val, typename _KeyOfValue,            typename _Compare, typename _Alloc>     bool     _Rb_tree<_Key,_Val,_KeyOfValue,_Compare,_Alloc>::__rb_verify() const     {       if (_M_impl._M_node_count == 0 || begin() == end())  return _M_impl._M_node_count == 0 && begin() == end()         && this->_M_impl._M_header._M_left == _M_end()         && this->_M_impl._M_header._M_right == _M_end();        unsigned int __len = _Rb_tree_black_count(_M_leftmost(), _M_root());       for (const_iterator __it = begin(); __it != end(); ++__it)  {    _Const_Link_type __x = static_cast<_Const_Link_type>(__it._M_node);    _Const_Link_type __L = _S_left(__x);    _Const_Link_type __R = _S_right(__x);     if (__x->_M_color == _S_red)      if ((__L && __L->_M_color == _S_red)   || (__R && __R->_M_color == _S_red))        return false;     if (__L && _M_impl._M_key_compare(_S_key(__x), _S_key(__L)))      return false;    if (__R && _M_impl._M_key_compare(_S_key(__R), _S_key(__x)))      return false;     if (!__L && !__R && _Rb_tree_black_count(__x, _M_root()) != __len)      return false;  }        if (_M_leftmost() != _Rb_tree_node_base::_S_minimum(_M_root()))  return false;       if (_M_rightmost() != _Rb_tree_node_base::_S_maximum(_M_root()))  return false;       return true;     }  }
1240 namespace std __attribute__ ((__visibility__ ("default"))) { 
1241 # 91 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
1242   template<class _Key, class _Compare = std::less<_Key>,     class _Alloc = std::allocator<_Key> >     class set     {        typedef typename _Alloc::value_type _Alloc_value_type;                         public:          typedef _Key key_type;       typedef _Key value_type;       typedef _Compare key_compare;       typedef _Compare value_compare;       typedef _Alloc allocator_type;       private:       typedef typename _Alloc::template rebind<_Key>::other _Key_alloc_type;        typedef _Rb_tree<key_type, value_type, _Identity<value_type>,          key_compare, _Key_alloc_type> _Rep_type;       _Rep_type _M_t;      public:         typedef typename _Key_alloc_type::pointer pointer;       typedef typename _Key_alloc_type::const_pointer const_pointer;       typedef typename _Key_alloc_type::reference reference;       typedef typename _Key_alloc_type::const_reference const_reference;          typedef typename _Rep_type::const_iterator iterator;       typedef typename _Rep_type::const_iterator const_iterator;       typedef typename _Rep_type::const_reverse_iterator reverse_iterator;       typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;       typedef typename _Rep_type::size_type size_type;       typedef typename _Rep_type::difference_type difference_type;           set()       : _M_t(_Compare(), allocator_type()) {}              explicit       set(const _Compare& __comp,    const allocator_type& __a = allocator_type())       : _M_t(__comp, __a) {} 
1243       std::pair<iterator, iterator>       equal_range(const key_type& __x)       { return _M_t.equal_range(__x); }        std::pair<const_iterator, const_iterator>       equal_range(const key_type& __x) const       { return _M_t.equal_range(__x); }         template<class _K1, class _C1, class _A1>         friend bool         operator== (const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&);        template<class _K1, class _C1, class _A1>         friend bool         operator< (const set<_K1, _C1, _A1>&, const set<_K1, _C1, _A1>&);     }; 
1244 # 519 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
1245   template<class _Key, class _Compare, class _Alloc>     inline bool     operator==(const set<_Key, _Compare, _Alloc>& __x,         const set<_Key, _Compare, _Alloc>& __y)     { return __x._M_t == __y._M_t; } 
1246 # 536 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_set.h" 3
1247   template<class _Key, class _Compare, class _Alloc>     inline bool     operator<(const set<_Key, _Compare, _Alloc>& __x,        const set<_Key, _Compare, _Alloc>& __y)     { return __x._M_t < __y._M_t; }     template<class _Key, class _Compare, class _Alloc>     inline bool     operator!=(const set<_Key, _Compare, _Alloc>& __x,         const set<_Key, _Compare, _Alloc>& __y)     { return !(__x == __y); }     template<class _Key, class _Compare, class _Alloc>     inline bool     operator>(const set<_Key, _Compare, _Alloc>& __x,        const set<_Key, _Compare, _Alloc>& __y)     { return __y < __x; }     template<class _Key, class _Compare, class _Alloc>     inline bool     operator<=(const set<_Key, _Compare, _Alloc>& __x,         const set<_Key, _Compare, _Alloc>& __y)     { return !(__y < __x); }     template<class _Key, class _Compare, class _Alloc>     inline bool     operator>=(const set<_Key, _Compare, _Alloc>& __x,         const set<_Key, _Compare, _Alloc>& __y)     { return !(__x < __y); }     template<class _Key, class _Compare, class _Alloc>     inline void     swap(set<_Key, _Compare, _Alloc>& __x, set<_Key, _Compare, _Alloc>& __y)     { __x.swap(__y); }  }
1248  
1249
1250 # 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
1251 namespace std __attribute__ ((__visibility__ ("default"))) { 
1252 # 91 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
1253   template <typename _Key, typename _Tp, typename _Compare = std::less<_Key>,             typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >     class map     {     public:       typedef _Key key_type;       typedef _Tp mapped_type;       typedef std::pair<const _Key, _Tp> value_type;       typedef _Compare key_compare;       typedef _Alloc allocator_type;      private:        typedef typename _Alloc::value_type _Alloc_value_type;                         public:       class value_compare       : public std::binary_function<value_type, value_type, bool>       {  friend class map<_Key, _Tp, _Compare, _Alloc>;       protected:  _Compare comp;   value_compare(_Compare __c)  : comp(__c) { }        public:  bool operator()(const value_type& __x, const value_type& __y) const  { return comp(__x.first, __y.first); }       };      private:        typedef typename _Alloc::template rebind<value_type>::other         _Pair_alloc_type;        typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,          key_compare, _Pair_alloc_type> _Rep_type;         _Rep_type _M_t;      public:         typedef typename _Pair_alloc_type::pointer pointer;       typedef typename _Pair_alloc_type::const_pointer const_pointer;       typedef typename _Pair_alloc_type::reference reference;       typedef typename _Pair_alloc_type::const_reference const_reference;       typedef typename _Rep_type::iterator iterator;       typedef typename _Rep_type::const_iterator const_iterator;       typedef typename _Rep_type::size_type size_type;       typedef typename _Rep_type::difference_type difference_type;       typedef typename _Rep_type::reverse_iterator reverse_iterator;       typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;              map()       : _M_t(_Compare(), allocator_type()) { }            explicit       map(const _Compare& __comp, const allocator_type& __a = allocator_type())       : _M_t(__comp, __a) { } 
1254 # 175 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
1255       size_type       count(const key_type& __x) const       { return _M_t.find(__x) == _M_t.end() ? 0 : 1; } 
1256 # 582 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
1257       iterator       lower_bound(const key_type& __x)       { return _M_t.lower_bound(__x); } 
1258       std::pair<iterator, iterator>       equal_range(const key_type& __x)       { return _M_t.equal_range(__x); } 
1259 # 655 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
1260       std::pair<const_iterator, const_iterator>       equal_range(const key_type& __x) const       { return _M_t.equal_range(__x); }        template <typename _K1, typename _T1, typename _C1, typename _A1>         friend bool         operator== (const map<_K1, _T1, _C1, _A1>&,       const map<_K1, _T1, _C1, _A1>&);        template <typename _K1, typename _T1, typename _C1, typename _A1>         friend bool         operator< (const map<_K1, _T1, _C1, _A1>&,      const map<_K1, _T1, _C1, _A1>&);     }; 
1261 # 680 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
1262   template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator==(const map<_Key, _Tp, _Compare, _Alloc>& __x,                const map<_Key, _Tp, _Compare, _Alloc>& __y)     { return __x._M_t == __y._M_t; } 
1263 # 697 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_map.h" 3
1264   template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator<(const map<_Key, _Tp, _Compare, _Alloc>& __x,               const map<_Key, _Tp, _Compare, _Alloc>& __y)     { return __x._M_t < __y._M_t; }     template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator!=(const map<_Key, _Tp, _Compare, _Alloc>& __x,                const map<_Key, _Tp, _Compare, _Alloc>& __y)     { return !(__x == __y); }     template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator>(const map<_Key, _Tp, _Compare, _Alloc>& __x,               const map<_Key, _Tp, _Compare, _Alloc>& __y)     { return __y < __x; }     template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator<=(const map<_Key, _Tp, _Compare, _Alloc>& __x,                const map<_Key, _Tp, _Compare, _Alloc>& __y)     { return !(__y < __x); }     template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator>=(const map<_Key, _Tp, _Compare, _Alloc>& __x,                const map<_Key, _Tp, _Compare, _Alloc>& __y)     { return !(__x < __y); }     template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline void     swap(map<_Key, _Tp, _Compare, _Alloc>& __x,   map<_Key, _Tp, _Compare, _Alloc>& __y)     { __x.swap(__y); }  }
1265 namespace std __attribute__ ((__visibility__ ("default"))) { 
1266 # 89 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
1267   template <typename _Key, typename _Tp,      typename _Compare = std::less<_Key>,      typename _Alloc = std::allocator<std::pair<const _Key, _Tp> > >     class multimap     {     public:       typedef _Key key_type;       typedef _Tp mapped_type;       typedef std::pair<const _Key, _Tp> value_type;       typedef _Compare key_compare;       typedef _Alloc allocator_type;      private:        typedef typename _Alloc::value_type _Alloc_value_type;                         public:       class value_compare       : public std::binary_function<value_type, value_type, bool>       {  friend class multimap<_Key, _Tp, _Compare, _Alloc>;       protected:  _Compare comp;   value_compare(_Compare __c)  : comp(__c) { }        public:  bool operator()(const value_type& __x, const value_type& __y) const  { return comp(__x.first, __y.first); }       };      private:        typedef typename _Alloc::template rebind<value_type>::other         _Pair_alloc_type;        typedef _Rb_tree<key_type, value_type, _Select1st<value_type>,          key_compare, _Pair_alloc_type> _Rep_type;        _Rep_type _M_t;      public:         typedef typename _Pair_alloc_type::pointer pointer;       typedef typename _Pair_alloc_type::const_pointer const_pointer;       typedef typename _Pair_alloc_type::reference reference;       typedef typename _Pair_alloc_type::const_reference const_reference;       typedef typename _Rep_type::iterator iterator;       typedef typename _Rep_type::const_iterator const_iterator;       typedef typename _Rep_type::size_type size_type;       typedef typename _Rep_type::difference_type difference_type;       typedef typename _Rep_type::reverse_iterator reverse_iterator;       typedef typename _Rep_type::const_reverse_iterator const_reverse_iterator;             multimap()       : _M_t(_Compare(), allocator_type()) { }            explicit       multimap(const _Compare& __comp,         const allocator_type& __a = allocator_type())       : _M_t(__comp, __a) { } 
1268       std::pair<const_iterator, const_iterator>       equal_range(const key_type& __x) const       { return _M_t.equal_range(__x); }        template <typename _K1, typename _T1, typename _C1, typename _A1>         friend bool         operator== (const multimap<_K1, _T1, _C1, _A1>&,       const multimap<_K1, _T1, _C1, _A1>&);        template <typename _K1, typename _T1, typename _C1, typename _A1>         friend bool         operator< (const multimap<_K1, _T1, _C1, _A1>&,      const multimap<_K1, _T1, _C1, _A1>&);   }; 
1269 # 610 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
1270   template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator==(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,                const multimap<_Key, _Tp, _Compare, _Alloc>& __y)     { return __x._M_t == __y._M_t; } 
1271 # 627 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/stl_multimap.h" 3
1272   template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator<(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,               const multimap<_Key, _Tp, _Compare, _Alloc>& __y)     { return __x._M_t < __y._M_t; }     template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator!=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,                const multimap<_Key, _Tp, _Compare, _Alloc>& __y)     { return !(__x == __y); }     template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator>(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,               const multimap<_Key, _Tp, _Compare, _Alloc>& __y)     { return __y < __x; }     template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator<=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,                const multimap<_Key, _Tp, _Compare, _Alloc>& __y)     { return !(__y < __x); }     template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline bool     operator>=(const multimap<_Key, _Tp, _Compare, _Alloc>& __x,                const multimap<_Key, _Tp, _Compare, _Alloc>& __y)     { return !(__x < __y); }     template <typename _Key, typename _Tp, typename _Compare, typename _Alloc>     inline void     swap(multimap<_Key, _Tp, _Compare, _Alloc>& __x,          multimap<_Key, _Tp, _Compare, _Alloc>& __y)     { __x.swap(__y); }  }
1273  
1274 # 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/map" 2 3
1275
1276 # 24 "/usr/include/boost/program_options/options_description.hpp" 2 3 4
1277      namespace boost {  namespace program_options { 
1278 # 41 "/usr/include/boost/program_options/options_description.hpp" 3 4
1279     class option_description {     public:          option_description(); 
1280 # 70 "/usr/include/boost/program_options/options_description.hpp" 3 4
1281         option_description(const char* name,                            const value_semantic* s);            option_description(const char* name,                            const value_semantic* s,                            const char* description);          virtual ~option_description();          enum match_result { no_match, full_match, approximate_match };             match_result match(const std::string& option, bool approx) const; 
1282 # 96 "/usr/include/boost/program_options/options_description.hpp" 3 4
1283         const std::string& key(const std::string& option) const;          const std::string& long_name() const;           const std::string& description() const;           shared_ptr<const value_semantic> semantic() const;           std::string format_name() const;            std::string format_parameter() const;      private:          option_description& set_name(const char* name);          std::string m_short_name, m_long_name, m_description;           shared_ptr<const value_semantic> m_value_semantic;     };      class options_description;        class options_description_easy_init {     public:         options_description_easy_init(options_description* owner);          options_description_easy_init&         operator()(const char* name,                    const char* description);          options_description_easy_init&         operator()(const char* name,                    const value_semantic* s);          options_description_easy_init&         operator()(const char* name,                    const value_semantic* s,                    const char* description);      private:         options_description* owner;     }; 
1284 # 156 "/usr/include/boost/program_options/options_description.hpp" 3 4
1285     class options_description {     public:         static const unsigned m_default_line_length = 80;           options_description(unsigned line_length = m_default_line_length);            options_description(const std::string& caption,                             unsigned line_length = m_default_line_length);            void add(shared_ptr<option_description> desc);               options_description& add(const options_description& desc);      public:               options_description_easy_init add_options();          const option_description& find(const std::string& name, bool approx)             const;          const option_description* find_nothrow(const std::string& name,                                                bool approx) const;           const std::vector< shared_ptr<option_description> >& options() const;             friend std::ostream& operator<<(std::ostream& os,                                              const options_description& desc);            void print(std::ostream& os) const;      private:         typedef std::map<std::string, int>::const_iterator name2index_iterator;         typedef std::pair<name2index_iterator, name2index_iterator>             approximation_range;            std::string m_caption;         const unsigned m_line_length;            std::vector< shared_ptr<option_description> > m_options;                std::vector<bool> belong_to_group;           std::vector< shared_ptr<options_description> > groups;      };       class duplicate_option_error : public error {     public:         duplicate_option_error(const std::string& what) : error(what) {}     }; }}
1286  
1287
1288 # 14 "/usr/include/boost/program_options/positional_options.hpp" 3 4
1289 namespace boost { namespace program_options { 
1290 # 31 "/usr/include/boost/program_options/positional_options.hpp" 3 4
1291     class positional_options_description {     public:         positional_options_description();               positional_options_description&         add(const char* name, int max_count);             unsigned max_total_count() const;              const std::string& name_for_position(unsigned position) const;      private:            std::vector<std::string> m_names;         std::string m_trailing;     };  }}
1292  
1293 # 15 "/usr/include/boost/program_options.hpp" 2 3 4
1294
1295 # 14 "/usr/include/boost/program_options/option.hpp" 3 4
1296 namespace boost { namespace program_options { 
1297 # 23 "/usr/include/boost/program_options/option.hpp" 3 4
1298     template<class charT>     class basic_option {     public:         basic_option() : position_key(-1), unregistered(false) {}         basic_option(const std::string& string_key,                const std::vector< std::string> &value)         : string_key(string_key), value(value), unregistered(false)         {}            std::string string_key;               int position_key;          std::vector< std::basic_string<charT> > value;           std::vector< std::basic_string<charT> > original_tokens;              bool unregistered;      };     typedef basic_option<char> option;     typedef basic_option<wchar_t> woption;  }}
1299  
1300 namespace boost { namespace program_options { namespace command_line_style { 
1301 # 26 "/usr/include/boost/program_options/cmdline.hpp" 3 4
1302     enum style_t {          allow_long = 1,          allow_short = allow_long << 1,          allow_dash_for_short = allow_short << 1,          allow_slash_for_short = allow_dash_for_short << 1,               long_allow_adjacent = allow_slash_for_short << 1,           long_allow_next = long_allow_adjacent << 1,           short_allow_adjacent = long_allow_next << 1,           short_allow_next = short_allow_adjacent << 1,                allow_sticky = short_allow_next << 1,              allow_guessing = allow_sticky << 1,            case_insensitive = allow_guessing << 1,            allow_long_disguise = case_insensitive << 1,          unix_style = (allow_short | short_allow_adjacent | short_allow_next                       | allow_long | long_allow_adjacent | long_allow_next                       | allow_sticky | allow_guessing                       | allow_dash_for_short),          default_style = unix_style     }; }}}
1303  
1304
1305 # 21 "/usr/include/boost/program_options/detail/cmdline.hpp" 2 3 4
1306     namespace boost { namespace program_options { namespace detail { 
1307 # 54 "/usr/include/boost/program_options/detail/cmdline.hpp" 3 4
1308     class cmdline {     public:          typedef ::boost::program_options::command_line_style::style_t style_t;          typedef function1<std::pair<std::string, std::string>,                           const std::string&>             additional_parser;          typedef function1<std::vector<option>, std::vector<std::string>&>             style_parser; 
1309 # 73 "/usr/include/boost/program_options/detail/cmdline.hpp" 3 4
1310         cmdline(const std::vector<std::string>& args);           cmdline(int argc, const char*const * argv);          void style(int style);         void allow_unregistered();          void set_options_description(const options_description& desc);         void set_positional_options(             const positional_options_description& m_positional);          std::vector<option> run();          std::vector<option> parse_long_option(std::vector<std::string>& args);         std::vector<option> parse_short_option(std::vector<std::string>& args);         std::vector<option> parse_dos_option(std::vector<std::string>& args);         std::vector<option> parse_disguised_long_option(             std::vector<std::string>& args);         std::vector<option> parse_terminator(             std::vector<std::string>& args);         std::vector<option> handle_additional_parser(             std::vector<std::string>& args); 
1311 # 106 "/usr/include/boost/program_options/detail/cmdline.hpp" 3 4
1312         void set_additional_parser(additional_parser p);          void extra_style_parser(style_parser s);          void check_style(int style) const;           void init(const std::vector<std::string>& args);          void         finish_option(option& opt,                       std::vector<std::string>& other_tokens);           std::vector<std::string> args;         style_t m_style;         bool m_allow_unregistered;          const options_description* m_desc;         const positional_options_description* m_positional;          additional_parser m_additional_parser;         style_parser m_style_parser;     };      void test_cmdline_detail();  }}}
1313  
1314
1315 # 15 "/usr/include/boost/program_options/parsers.hpp" 2 3 4
1316      namespace boost { namespace program_options {      class options_description;     class positional_options_description;            template<class charT>     class basic_parsed_options {     public:         explicit basic_parsed_options(const options_description* description)         : description(description) {}          std::vector< basic_option<charT> > options;              const options_description* description;     };          template<>     class basic_parsed_options<wchar_t> {     public:          explicit basic_parsed_options(const basic_parsed_options<char>& po);          std::vector< basic_option<wchar_t> > options;         const options_description* description;            basic_parsed_options<char> utf8_encoded_options;     };      typedef basic_parsed_options<char> parsed_options;     typedef basic_parsed_options<wchar_t> wparsed_options;          typedef function1<std::pair<std::string, std::string>, const std::string&> ext_parser; 
1317 # 87 "/usr/include/boost/program_options/parsers.hpp" 3 4
1318     template<class charT>     class basic_command_line_parser : private detail::cmdline {     public:            basic_command_line_parser(const std::vector<                                   std::basic_string<charT> >& args);            basic_command_line_parser(int argc, charT* argv[]);           basic_command_line_parser& options(const options_description& desc);          basic_command_line_parser& positional(             const positional_options_description& desc);           basic_command_line_parser& style(int);          basic_command_line_parser& extra_parser(ext_parser);             basic_parsed_options<charT> run(); 
1319 # 124 "/usr/include/boost/program_options/parsers.hpp" 3 4
1320         basic_command_line_parser& allow_unregistered();          using detail::cmdline::style_parser;          basic_command_line_parser& extra_style_parser(style_parser s);      private:         const options_description* m_desc;     };      typedef basic_command_line_parser<char> command_line_parser;     typedef basic_command_line_parser<wchar_t> wcommand_line_parser;         template<class charT>     basic_parsed_options<charT>     parse_command_line(int argc, charT* argv[],                        const options_description&,                        int style = 0,                        function1<std::pair<std::string, std::string>,                                  const std::string&> ext                        = ext_parser());        template<class charT>           basic_parsed_options<charT>     parse_config_file(std::basic_istream<charT>&, const options_description&);        enum collect_unrecognized_mode     { include_positional, exclude_positional };            template<class charT>     std::vector< std::basic_string<charT> >     collect_unrecognized(const std::vector< basic_option<charT> >& options,                          enum collect_unrecognized_mode mode); 
1321 # 183 "/usr/include/boost/program_options/parsers.hpp" 3 4
1322     parsed_options     parse_environment(const options_description&,                       const function1<std::string, std::string>& name_mapper);            parsed_options     parse_environment(const options_description&, const std::string& prefix);           parsed_options     parse_environment(const options_description&, const char* prefix); 
1323 # 222 "/usr/include/boost/program_options/parsers.hpp" 3 4
1324 }}
1325     
1326 # 1 "/usr/include/boost/program_options/detail/parsers.hpp" 1 3 4
1327 namespace boost { namespace program_options {      template<class charT>     class basic_parsed_options;      class value_semantic;     class variables_map;            void store(const basic_parsed_options<char>& options, variables_map& m,                     bool utf8 = false);           void store(const basic_parsed_options<wchar_t>& options,                     variables_map& m);        void notify(variables_map& m);         class variable_value {     public:         variable_value() : m_defaulted(false) {}         variable_value(const boost::any& v, bool defaulted)         : v(v), m_defaulted(defaulted)         {}           template<class T>        const T& as() const {            return boost::any_cast<const T&>(v);        }         template<class T>        T& as() {            return boost::any_cast<T&>(v);        }           bool empty() const;           bool defaulted() const;          const boost::any& value() const;           boost::any& value();     private:         boost::any v;         bool m_defaulted;              shared_ptr<const value_semantic> m_value_semantic;          friend void store(const basic_parsed_options<char>& options,               variables_map& m, bool);         friend void notify(variables_map& m);     };        class abstract_variables_map {     public:         abstract_variables_map();         abstract_variables_map(const abstract_variables_map* next);          virtual ~abstract_variables_map() {} 
1328 # 118 "/usr/include/boost/program_options/variables_map.hpp" 3 4
1329         const variable_value& operator[](const std::string& name) const;            void next(abstract_variables_map* next);      private:           virtual const variable_value& get(const std::string& name) const = 0;          const abstract_variables_map* m_next;     };           class variables_map : public abstract_variables_map,                                public std::map<std::string, variable_value>     {     public:         variables_map();         variables_map(const abstract_variables_map* next);           const variable_value& operator[](const std::string& name) const         { return abstract_variables_map::operator[](name); }      private:           const variable_value& get(const std::string& name) const;            std::set<std::string> m_final;          friend void store(const basic_parsed_options<char>& options,                           variables_map& xm,                           bool utf8);     };           inline bool     variable_value::empty() const     {         return v.empty();     }      inline bool     variable_value::defaulted() const     {         return m_defaulted;     }      inline     const boost::any&     variable_value::value() const     {         return v;     }      inline     boost::any&     variable_value::value()     {         return v;     }  }}
1330  
1331 # 43 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iostream" 3
1332      namespace std __attribute__ ((__visibility__ ("default"))) { 
1333 # 63 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/iostream" 3
1334   extern istream cin;   extern ostream cout;   extern ostream cerr;   extern ostream clog;     extern wistream wcin;   extern wostream wcout;   extern wostream wcerr;   extern wostream wclog;       static ios_base::Init __ioinit;  }
1335  
1336 # 7 "genfield.cxx" 2
1337     namespace std __attribute__ ((__visibility__ ("default"))) {     template<typename _CharT>     class __basic_file;     template<>     class __basic_file<char>     {        __c_file* _M_cfile;         bool _M_cfile_created;      public:       __basic_file(__c_lock* __lock = 0);        __basic_file*       open(const char* __name, ios_base::openmode __mode, int __prot = 0664);        __basic_file*       sys_open(__c_file* __file, ios_base::openmode);        __basic_file*       sys_open(int __fd, ios_base::openmode __mode);        __basic_file*       close();        bool       is_open() const;        int       fd();        __c_file*       file();        ~__basic_file();        streamsize       xsputn(const char* __s, streamsize __n);        streamsize       xsputn_2(const char* __s1, streamsize __n1,         const char* __s2, streamsize __n2);        streamsize       xsgetn(char* __s, streamsize __n);        streamoff       seekoff(streamoff __off, ios_base::seekdir __way);        int       sync();        streamsize       showmanyc();     };  }
1338  
1339 # 50 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 2 3
1340   namespace std __attribute__ ((__visibility__ ("default"))) { 
1341 # 68 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1342   template<typename _CharT, typename _Traits>     class basic_filebuf : public basic_streambuf<_CharT, _Traits>     {     public:        typedef _CharT char_type;       typedef _Traits traits_type;       typedef typename traits_type::int_type int_type;       typedef typename traits_type::pos_type pos_type;       typedef typename traits_type::off_type off_type;        typedef basic_streambuf<char_type, traits_type> __streambuf_type;       typedef basic_filebuf<char_type, traits_type> __filebuf_type;       typedef __basic_file<char> __file_type;       typedef typename traits_type::state_type __state_type;       typedef codecvt<char_type, char, __state_type> __codecvt_type;        friend class ios_base;      protected:         __c_lock _M_lock;         __file_type _M_file;             ios_base::openmode _M_mode;         __state_type _M_state_beg;           __state_type _M_state_cur;          __state_type _M_state_last;             char_type* _M_buf; 
1343 # 128 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1344       size_t _M_buf_size;         bool _M_buf_allocated; 
1345 # 142 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1346       bool _M_reading;       bool _M_writing; 
1347 # 153 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1348       char_type _M_pback;       char_type* _M_pback_cur_save;       char_type* _M_pback_end_save;       bool _M_pback_init;          const __codecvt_type* _M_codecvt; 
1349 # 169 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1350       char* _M_ext_buf;             streamsize _M_ext_buf_size; 
1351 # 185 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1352       const char* _M_ext_next;       char* _M_ext_end; 
1353 # 195 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1354       void       _M_create_pback()       {  if (!_M_pback_init)    {      _M_pback_cur_save = this->gptr();      _M_pback_end_save = this->egptr();      this->setg(&_M_pback, &_M_pback, &_M_pback + 1);      _M_pback_init = true;    }       } 
1355 # 214 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1356       void       _M_destroy_pback() throw()       {  if (_M_pback_init)    {       _M_pback_cur_save += this->gptr() != this->eback();      this->setg(_M_buf, _M_pback_cur_save, _M_pback_end_save);      _M_pback_init = false;    }       }      public:              basic_filebuf();           virtual       ~basic_filebuf()       { this->close(); }            bool       is_open() const throw()       { return _M_file.is_open(); } 
1357 # 285 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1358       __filebuf_type*       open(const char* __s, ios_base::openmode __mode); 
1359 # 299 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1360       __filebuf_type*       close() throw();      protected:       void       _M_allocate_internal_buffer();        void       _M_destroy_internal_buffer() throw();         virtual streamsize       showmanyc();             virtual int_type       underflow();        virtual int_type       pbackfail(int_type __c = _Traits::eof()); 
1361 # 331 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1362       virtual int_type       overflow(int_type __c = _Traits::eof());          bool       _M_convert_to_external(char_type*, streamsize); 
1363 # 351 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1364       virtual __streambuf_type*       setbuf(char_type* __s, streamsize __n);        virtual pos_type       seekoff(off_type __off, ios_base::seekdir __way,        ios_base::openmode __mode = ios_base::in | ios_base::out);        virtual pos_type       seekpos(pos_type __pos,        ios_base::openmode __mode = ios_base::in | ios_base::out);         pos_type       _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state);        virtual int       sync();        virtual void       imbue(const locale& __loc);        virtual streamsize       xsgetn(char_type* __s, streamsize __n);        virtual streamsize       xsputn(const char_type* __s, streamsize __n);         bool       _M_terminate_output(); 
1365 # 396 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1366       void       _M_set_buffer(streamsize __off)       {   const bool __testin = _M_mode & ios_base::in;   const bool __testout = _M_mode & ios_base::out;   if (__testin && __off > 0)    this->setg(_M_buf, _M_buf, _M_buf + __off);  else    this->setg(_M_buf, _M_buf, _M_buf);   if (__testout && __off == 0 && _M_buf_size > 1 )    this->setp(_M_buf, _M_buf + _M_buf_size - 1);  else    this->setp(__null, __null);       }     }; 
1367 # 423 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1368   template<typename _CharT, typename _Traits>     class basic_ifstream : public basic_istream<_CharT, _Traits>     {     public:        typedef _CharT char_type;       typedef _Traits traits_type;       typedef typename traits_type::int_type int_type;       typedef typename traits_type::pos_type pos_type;       typedef typename traits_type::off_type off_type;         typedef basic_filebuf<char_type, traits_type> __filebuf_type;       typedef basic_istream<char_type, traits_type> __istream_type;      private:       __filebuf_type _M_filebuf;      public: 
1369 # 450 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1370       basic_ifstream() : __istream_type(), _M_filebuf()       { this->init(&_M_filebuf); } 
1371 # 463 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1372       explicit       basic_ifstream(const char* __s, ios_base::openmode __mode = ios_base::in)       : __istream_type(), _M_filebuf()       {  this->init(&_M_filebuf);  this->open(__s, __mode);       }              ~basic_ifstream()       { } 
1373 # 487 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1374       __filebuf_type*       rdbuf() const       { return const_cast<__filebuf_type*>(&_M_filebuf); }            bool       is_open()       { return _M_filebuf.is_open(); }          bool       is_open() const       { return _M_filebuf.is_open(); } 
1375 # 516 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1376       void       open(const char* __s, ios_base::openmode __mode = ios_base::in)       {  if (!_M_filebuf.open(__s, __mode | ios_base::in))    this->setstate(ios_base::failbit);  else      this->clear();       }              void       close()       {  if (!_M_filebuf.close())    this->setstate(ios_base::failbit);       }     }; 
1377 # 551 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1378   template<typename _CharT, typename _Traits>     class basic_ofstream : public basic_ostream<_CharT,_Traits>     {     public:        typedef _CharT char_type;       typedef _Traits traits_type;       typedef typename traits_type::int_type int_type;       typedef typename traits_type::pos_type pos_type;       typedef typename traits_type::off_type off_type;         typedef basic_filebuf<char_type, traits_type> __filebuf_type;       typedef basic_ostream<char_type, traits_type> __ostream_type;      private:       __filebuf_type _M_filebuf;      public: 
1379 # 578 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1380       void       open(const char* __s,     ios_base::openmode __mode = ios_base::out | ios_base::trunc)       {  if (!_M_filebuf.open(__s, __mode | ios_base::out))    this->setstate(ios_base::failbit);  else      this->clear();       }              void       close()       {  if (!_M_filebuf.close())    this->setstate(ios_base::failbit);       }     }; 
1381 # 682 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1382   template<typename _CharT, typename _Traits>     class basic_fstream : public basic_iostream<_CharT, _Traits>     {     public:        typedef _CharT char_type;       typedef _Traits traits_type;       typedef typename traits_type::int_type int_type;       typedef typename traits_type::pos_type pos_type;       typedef typename traits_type::off_type off_type;         typedef basic_filebuf<char_type, traits_type> __filebuf_type;       typedef basic_ios<char_type, traits_type> __ios_type;       typedef basic_iostream<char_type, traits_type> __iostream_type;      private:       __filebuf_type _M_filebuf;      public: 
1383 # 776 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 3
1384       void       open(const char* __s,     ios_base::openmode __mode = ios_base::in | ios_base::out)       {  if (!_M_filebuf.open(__s, __mode))    this->setstate(ios_base::failbit);  else      this->clear();       }              void       close()       {  if (!_M_filebuf.close())    this->setstate(ios_base::failbit);       }     };  }
1385    
1386         
1387 # 44 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/fstream.tcc" 3
1388  namespace std __attribute__ ((__visibility__ ("default"))) {    template<typename _CharT, typename _Traits>     void     basic_filebuf<_CharT, _Traits>::     _M_allocate_internal_buffer()     {         if (!_M_buf_allocated && !_M_buf)  {    _M_buf = new char_type[_M_buf_size];    _M_buf_allocated = true;  }     }    template<typename _CharT, typename _Traits>     void     basic_filebuf<_CharT, _Traits>::     _M_destroy_internal_buffer() throw()     {       if (_M_buf_allocated)  {    delete [] _M_buf;    _M_buf = __null;    _M_buf_allocated = false;  }       delete [] _M_ext_buf;       _M_ext_buf = __null;       _M_ext_buf_size = 0;       _M_ext_next = __null;       _M_ext_end = __null;     }    template<typename _CharT, typename _Traits>     basic_filebuf<_CharT, _Traits>::     basic_filebuf() : __streambuf_type(), _M_lock(), _M_file(&_M_lock),     _M_mode(ios_base::openmode(0)), _M_state_beg(), _M_state_cur(),     _M_state_last(), _M_buf(__null), _M_buf_size(8192),     _M_buf_allocated(false), _M_reading(false), _M_writing(false), _M_pback(),     _M_pback_cur_save(0), _M_pback_end_save(0), _M_pback_init(false),     _M_codecvt(0), _M_ext_buf(0), _M_ext_buf_size(0), _M_ext_next(0),     _M_ext_end(0)     {       if (has_facet<__codecvt_type>(this->_M_buf_locale))  _M_codecvt = &use_facet<__codecvt_type>(this->_M_buf_locale);     }    template<typename _CharT, typename _Traits>     typename basic_filebuf<_CharT, _Traits>::__filebuf_type*     basic_filebuf<_CharT, _Traits>::     open(const char* __s, ios_base::openmode __mode)     {       __filebuf_type *__ret = __null;       if (!this->is_open())  {    _M_file.open(__s, __mode);    if (this->is_open())      {        _M_allocate_internal_buffer();        _M_mode = __mode;          _M_reading = false;        _M_writing = false;        _M_set_buffer(-1);          _M_state_last = _M_state_cur = _M_state_beg;          if ((__mode & ios_base::ate)     && this->seekoff(0, ios_base::end, __mode)     == pos_type(off_type(-1)))   this->close();        else   __ret = this;      }  }       return __ret;     }    template<typename _CharT, typename _Traits>     typename basic_filebuf<_CharT, _Traits>::__filebuf_type*     basic_filebuf<_CharT, _Traits>::     close() throw()     {       __filebuf_type* __ret = __null;       if (this->is_open())  {    bool __testfail = false;    try      {        if (!_M_terminate_output())   __testfail = true;      }    catch(...)      { __testfail = true; }      _M_mode = ios_base::openmode(0);    _M_pback_init = false;    _M_destroy_internal_buffer();    _M_reading = false;    _M_writing = false;    _M_set_buffer(-1);    _M_state_last = _M_state_cur = _M_state_beg;     if (!_M_file.close())      __testfail = true;     if (!__testfail)      __ret = this;  }       return __ret;     }    template<typename _CharT, typename _Traits>     streamsize     basic_filebuf<_CharT, _Traits>::     showmanyc()     {       streamsize __ret = -1;       const bool __testin = _M_mode & ios_base::in;       if (__testin && this->is_open())  {      __ret = this->egptr() - this->gptr();           if (__check_facet(_M_codecvt).encoding() >= 0)       __ret += _M_file.showmanyc() / _M_codecvt->max_length();  }       return __ret;     }    template<typename _CharT, typename _Traits>     typename basic_filebuf<_CharT, _Traits>::int_type     basic_filebuf<_CharT, _Traits>::     underflow()     {       int_type __ret = traits_type::eof();       const bool __testin = _M_mode & ios_base::in;       if (__testin && !_M_writing)  {       _M_destroy_pback();     if (this->gptr() < this->egptr())      return traits_type::to_int_type(*this->gptr());      const size_t __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1;      bool __got_eof = false;     streamsize __ilen = 0;    codecvt_base::result __r = codecvt_base::ok;    if (__check_facet(_M_codecvt).always_noconv())      {        __ilen = _M_file.xsgetn(reinterpret_cast<char*>(this->eback()),           __buflen);        if (__ilen == 0)   __got_eof = true;      }    else      {          const int __enc = _M_codecvt->encoding();        streamsize __blen;        streamsize __rlen;        if (__enc > 0)   __blen = __rlen = __buflen * __enc;        else   {     __blen = __buflen + _M_codecvt->max_length() - 1;     __rlen = __buflen;   }        const streamsize __remainder = _M_ext_end - _M_ext_next;        __rlen = __rlen > __remainder ? __rlen - __remainder : 0;           if (_M_reading && this->egptr() == this->eback() && __remainder)   __rlen = 0;           if (_M_ext_buf_size < __blen)   {     char* __buf = new char[__blen];     if (__remainder)       std::memcpy(__buf, _M_ext_next, __remainder);      delete [] _M_ext_buf;     _M_ext_buf = __buf;     _M_ext_buf_size = __blen;   }        else if (__remainder)   std::memmove(_M_ext_buf, _M_ext_next, __remainder);         _M_ext_next = _M_ext_buf;        _M_ext_end = _M_ext_buf + __remainder;        _M_state_last = _M_state_cur;         do   {     if (__rlen > 0)       {            if (_M_ext_end - _M_ext_buf + __rlen > _M_ext_buf_size)    {      __throw_ios_failure(("basic_filebuf::underflow " "codecvt::max_length() " "is not valid"));      }         streamsize __elen = _M_file.xsgetn(_M_ext_end, __rlen);         if (__elen == 0)    __got_eof = true;         else if (__elen == -1)    break;         _M_ext_end += __elen;       }      char_type* __iend;     __r = _M_codecvt->in(_M_state_cur, _M_ext_next,            _M_ext_end, _M_ext_next, this->eback(),            this->eback() + __buflen, __iend);     if (__r == codecvt_base::noconv)       {         size_t __avail = _M_ext_end - _M_ext_buf;         __ilen = std::min(__avail, __buflen);         traits_type::copy(this->eback(),      reinterpret_cast<char_type*>(_M_ext_buf), __ilen);         _M_ext_next = _M_ext_buf + __ilen;       }     else       __ilen = __iend - this->eback();         if (__r == codecvt_base::error)       break;      __rlen = 1;   }        while (__ilen == 0 && !__got_eof);      }     if (__ilen > 0)      {        _M_set_buffer(__ilen);        _M_reading = true;        __ret = traits_type::to_int_type(*this->gptr());      }    else if (__got_eof)      {           _M_set_buffer(-1);        _M_reading = false;          if (__r == codecvt_base::partial)   __throw_ios_failure(("basic_filebuf::underflow " "incomplete character in file"));       }    else if (__r == codecvt_base::error)      __throw_ios_failure(("basic_filebuf::underflow " "invalid byte sequence in file"));     else      __throw_ios_failure(("basic_filebuf::underflow " "error reading the file"));   }       return __ret;     }    template<typename _CharT, typename _Traits>     typename basic_filebuf<_CharT, _Traits>::int_type     basic_filebuf<_CharT, _Traits>::     pbackfail(int_type __i)     {       int_type __ret = traits_type::eof();       const bool __testin = _M_mode & ios_base::in;       if (__testin && !_M_writing)  {      const bool __testpb = _M_pback_init;    const bool __testeof = traits_type::eq_int_type(__i, __ret);    int_type __tmp;    if (this->eback() < this->gptr())      {        this->gbump(-1);        __tmp = traits_type::to_int_type(*this->gptr());      }    else if (this->seekoff(-1, ios_base::cur) != pos_type(off_type(-1)))      {        __tmp = this->underflow();        if (traits_type::eq_int_type(__tmp, __ret))   return __ret;      }    else      {             return __ret;      }       if (!__testeof && traits_type::eq_int_type(__i, __tmp))      __ret = __i;    else if (__testeof)      __ret = traits_type::not_eof(__i);    else if (!__testpb)      {        _M_create_pback();        _M_reading = true;        *this->gptr() = traits_type::to_char_type(__i);        __ret = __i;      }  }       return __ret;     }    template<typename _CharT, typename _Traits>     typename basic_filebuf<_CharT, _Traits>::int_type     basic_filebuf<_CharT, _Traits>::     overflow(int_type __c)     {       int_type __ret = traits_type::eof();       const bool __testeof = traits_type::eq_int_type(__c, __ret);       const bool __testout = _M_mode & ios_base::out;       if (__testout && !_M_reading)  {    if (this->pbase() < this->pptr())      {         if (!__testeof)   {     *this->pptr() = traits_type::to_char_type(__c);     this->pbump(1);   }           if (_M_convert_to_external(this->pbase(),       this->pptr() - this->pbase()))   {     _M_set_buffer(0);     __ret = traits_type::not_eof(__c);   }      }    else if (_M_buf_size > 1)      {           _M_set_buffer(0);        _M_writing = true;        if (!__testeof)   {     *this->pptr() = traits_type::to_char_type(__c);     this->pbump(1);   }        __ret = traits_type::not_eof(__c);      }    else      {         char_type __conv = traits_type::to_char_type(__c);        if (__testeof || _M_convert_to_external(&__conv, 1))   {     _M_writing = true;     __ret = traits_type::not_eof(__c);   }      }  }       return __ret;     }    template<typename _CharT, typename _Traits>     bool     basic_filebuf<_CharT, _Traits>::     _M_convert_to_external(_CharT* __ibuf, streamsize __ilen)     {        streamsize __elen;       streamsize __plen;       if (__check_facet(_M_codecvt).always_noconv())  {    __elen = _M_file.xsputn(reinterpret_cast<char*>(__ibuf), __ilen);    __plen = __ilen;  }       else  {      streamsize __blen = __ilen * _M_codecvt->max_length();    char* __buf = static_cast<char*>(__builtin_alloca(__blen));     char* __bend;    const char_type* __iend;    codecvt_base::result __r;    __r = _M_codecvt->out(_M_state_cur, __ibuf, __ibuf + __ilen,     __iend, __buf, __buf + __blen, __bend);     if (__r == codecvt_base::ok || __r == codecvt_base::partial)      __blen = __bend - __buf;    else if (__r == codecvt_base::noconv)      {         __buf = reinterpret_cast<char*>(__ibuf);        __blen = __ilen;      }    else      __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error"));      __elen = _M_file.xsputn(__buf, __blen);    __plen = __blen;      if (__r == codecvt_base::partial && __elen == __plen)      {        const char_type* __iresume = __iend;        streamsize __rlen = this->pptr() - __iend;        __r = _M_codecvt->out(_M_state_cur, __iresume,         __iresume + __rlen, __iend, __buf,         __buf + __blen, __bend);        if (__r != codecvt_base::error)   {     __rlen = __bend - __buf;     __elen = _M_file.xsputn(__buf, __rlen);     __plen = __rlen;   }        else   __throw_ios_failure(("basic_filebuf::_M_convert_to_external " "conversion error"));       }  }       return __elen == __plen;     }     template<typename _CharT, typename _Traits>      streamsize      basic_filebuf<_CharT, _Traits>::      xsgetn(_CharT* __s, streamsize __n)      {         streamsize __ret = 0;        if (_M_pback_init)   {     if (__n > 0 && this->gptr() == this->eback())       {         *__s++ = *this->gptr();         this->gbump(1);         __ret = 1;         --__n;       }     _M_destroy_pback();   }            const bool __testin = _M_mode & ios_base::in;        const streamsize __buflen = _M_buf_size > 1 ? _M_buf_size - 1 : 1;         if (__n > __buflen && __check_facet(_M_codecvt).always_noconv()     && __testin && !_M_writing)   {      const streamsize __avail = this->egptr() - this->gptr();     if (__avail != 0)       {         if (__avail == 1)    *__s = *this->gptr();         else    traits_type::copy(__s, this->gptr(), __avail);         __s += __avail;         this->gbump(__avail);         __ret += __avail;         __n -= __avail;       }        streamsize __len;     for (;;)       {         __len = _M_file.xsgetn(reinterpret_cast<char*>(__s),           __n);         if (__len == -1)    __throw_ios_failure(("basic_filebuf::xsgetn " "error reading the file"));          if (__len == 0)    break;          __n -= __len;         __ret += __len;         if (__n == 0)    break;          __s += __len;       }      if (__n == 0)       {         _M_set_buffer(0);         _M_reading = true;       }     else if (__len == 0)       {            _M_set_buffer(-1);         _M_reading = false;       }   }        else   __ret += __streambuf_type::xsgetn(__s, __n);         return __ret;      }     template<typename _CharT, typename _Traits>      streamsize      basic_filebuf<_CharT, _Traits>::      xsputn(const _CharT* __s, streamsize __n)      {           streamsize __ret = 0;        const bool __testout = _M_mode & ios_base::out;        if (__check_facet(_M_codecvt).always_noconv()     && __testout && !_M_reading)  {     const streamsize __chunk = 1ul << 10;    streamsize __bufavail = this->epptr() - this->pptr();      if (!_M_writing && _M_buf_size > 1)      __bufavail = _M_buf_size - 1;     const streamsize __limit = std::min(__chunk, __bufavail);    if (__n >= __limit)      {        const streamsize __buffill = this->pptr() - this->pbase();        const char* __buf = reinterpret_cast<const char*>(this->pbase());        __ret = _M_file.xsputn_2(__buf, __buffill,            reinterpret_cast<const char*>(__s),            __n);        if (__ret == __buffill + __n)   {     _M_set_buffer(0);     _M_writing = true;   }        if (__ret > __buffill)   __ret -= __buffill;        else   __ret = 0;      }    else      __ret = __streambuf_type::xsputn(__s, __n);  }        else   __ret = __streambuf_type::xsputn(__s, __n);        return __ret;     }    template<typename _CharT, typename _Traits>     typename basic_filebuf<_CharT, _Traits>::__streambuf_type*     basic_filebuf<_CharT, _Traits>::     setbuf(char_type* __s, streamsize __n)     {       if (!this->is_open())  if (__s == 0 && __n == 0)    _M_buf_size = 1;  else if (__s && __n > 0)    { 
1389 # 656 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/bits/fstream.tcc" 3
1390      _M_buf = __s;      _M_buf_size = __n;    }       return this;     }       template<typename _CharT, typename _Traits>     typename basic_filebuf<_CharT, _Traits>::pos_type     basic_filebuf<_CharT, _Traits>::     seekoff(off_type __off, ios_base::seekdir __way, ios_base::openmode)     {       int __width = 0;       if (_M_codecvt)  __width = _M_codecvt->encoding();       if (__width < 0)  __width = 0;        pos_type __ret = pos_type(off_type(-1));       const bool __testfail = __off != 0 && __width <= 0;       if (this->is_open() && !__testfail)  {     _M_destroy_pback();          __state_type __state = _M_state_beg;    off_type __computed_off = __off * __width;    if (_M_reading && __way == ios_base::cur)      {        if (_M_codecvt->always_noconv())   __computed_off += this->gptr() - this->egptr();        else   {        const int __gptr_off =       _M_codecvt->length(_M_state_last, _M_ext_buf, _M_ext_next,            this->gptr() - this->eback());     __computed_off += _M_ext_buf + __gptr_off - _M_ext_end;        __state = _M_state_last;   }      }    __ret = _M_seek(__computed_off, __way, __state);  }       return __ret;     }        template<typename _CharT, typename _Traits>     typename basic_filebuf<_CharT, _Traits>::pos_type     basic_filebuf<_CharT, _Traits>::     seekpos(pos_type __pos, ios_base::openmode)     {       pos_type __ret = pos_type(off_type(-1));       if (this->is_open())  {     _M_destroy_pback();    __ret = _M_seek(off_type(__pos), ios_base::beg, __pos.state());  }       return __ret;     }    template<typename _CharT, typename _Traits>     typename basic_filebuf<_CharT, _Traits>::pos_type     basic_filebuf<_CharT, _Traits>::     _M_seek(off_type __off, ios_base::seekdir __way, __state_type __state)     {       pos_type __ret = pos_type(off_type(-1));       if (_M_terminate_output())  {     __ret = pos_type(_M_file.seekoff(__off, __way));    if (__ret != pos_type(off_type(-1)))      {        _M_reading = false;        _M_writing = false;        _M_ext_next = _M_ext_end = _M_ext_buf;        _M_set_buffer(-1);        _M_state_cur = __state;        __ret.state(_M_state_cur);      }  }       return __ret;     }    template<typename _CharT, typename _Traits>     bool     basic_filebuf<_CharT, _Traits>::     _M_terminate_output()     {        bool __testvalid = true;       if (this->pbase() < this->pptr())  {    const int_type __tmp = this->overflow();    if (traits_type::eq_int_type(__tmp, traits_type::eof()))      __testvalid = false;  }         if (_M_writing && !__check_facet(_M_codecvt).always_noconv()    && __testvalid)  {       const size_t __blen = 128;    char __buf[__blen];    codecvt_base::result __r;    streamsize __ilen = 0;     do      {        char* __next;        __r = _M_codecvt->unshift(_M_state_cur, __buf,      __buf + __blen, __next);        if (__r == codecvt_base::error)   __testvalid = false;        else if (__r == codecvt_base::ok ||          __r == codecvt_base::partial)   {     __ilen = __next - __buf;     if (__ilen > 0)       {         const streamsize __elen = _M_file.xsputn(__buf, __ilen);         if (__elen != __ilen)    __testvalid = false;       }   }      }    while (__r == codecvt_base::partial && __ilen > 0 && __testvalid);     if (__testvalid)      {            const int_type __tmp = this->overflow();        if (traits_type::eq_int_type(__tmp, traits_type::eof()))   __testvalid = false;      }  }       return __testvalid;     }    template<typename _CharT, typename _Traits>     int     basic_filebuf<_CharT, _Traits>::     sync()     {         int __ret = 0;       if (this->pbase() < this->pptr())  {    const int_type __tmp = this->overflow();    if (traits_type::eq_int_type(__tmp, traits_type::eof()))      __ret = -1;  }       return __ret;     }    template<typename _CharT, typename _Traits>     void     basic_filebuf<_CharT, _Traits>::     imbue(const locale& __loc)     {       bool __testvalid = true;        const __codecvt_type* _M_codecvt_tmp = 0;       if (__builtin_expect(has_facet<__codecvt_type>(__loc), true))  _M_codecvt_tmp = &use_facet<__codecvt_type>(__loc);        if (this->is_open())  {     if ((_M_reading || _M_writing)        && __check_facet(_M_codecvt).encoding() == -1)      __testvalid = false;    else      {        if (_M_reading)   {     if (__check_facet(_M_codecvt).always_noconv())       {         if (_M_codecvt_tmp      && !__check_facet(_M_codecvt_tmp).always_noconv())    __testvalid = this->seekoff(0, ios_base::cur, _M_mode)                  != pos_type(off_type(-1));       }     else       {          _M_ext_next = _M_ext_buf    + _M_codecvt->length(_M_state_last, _M_ext_buf, _M_ext_next,           this->gptr() - this->eback());         const streamsize __remainder = _M_ext_end - _M_ext_next;         if (__remainder)    std::memmove(_M_ext_buf, _M_ext_next, __remainder);          _M_ext_next = _M_ext_buf;         _M_ext_end = _M_ext_buf + __remainder;         _M_set_buffer(-1);         _M_state_last = _M_state_cur = _M_state_beg;       }   }        else if (_M_writing && (__testvalid = _M_terminate_output()))   _M_set_buffer(-1);      }  }        if (__testvalid)  _M_codecvt = _M_codecvt_tmp;       else  _M_codecvt = 0;     }        extern template class basic_filebuf<char>;   extern template class basic_ifstream<char>;   extern template class basic_ofstream<char>;   extern template class basic_fstream<char>;     extern template class basic_filebuf<wchar_t>;   extern template class basic_ifstream<wchar_t>;   extern template class basic_ofstream<wchar_t>;   extern template class basic_fstream<wchar_t>;    }
1391  
1392 # 806 "/usr/lib/gcc/x86_64-pc-linux-gnu/4.2.2/include/g++-v4/fstream" 2 3
1393 extern "C" {  
1394 # 1 "/usr/include/bits/stat.h" 1 3 4
1395        
1396 struct stat   {     __dev_t st_dev;         __ino_t st_ino;            __nlink_t st_nlink;     __mode_t st_mode;      __uid_t st_uid;     __gid_t st_gid;      int pad0;      __dev_t st_rdev;         __off_t st_size;        __blksize_t st_blksize;      __blkcnt_t st_blocks; 
1397 # 88 "/usr/include/gentoo-multilib/amd64/bits/stat.h" 3 4
1398     struct timespec st_atim;     struct timespec st_mtim;     struct timespec st_ctim; 
1399   };    struct stat64   {     __dev_t st_dev;      __ino64_t st_ino;     __nlink_t st_nlink;     __mode_t st_mode;           __uid_t st_uid;     __gid_t st_gid;      int pad0;     __dev_t st_rdev;     __off_t st_size;          __blksize_t st_blksize;     __blkcnt64_t st_blocks;            struct timespec st_atim;     struct timespec st_mtim;     struct timespec st_ctim; 
1400 # 164 "/usr/include/gentoo-multilib/amd64/bits/stat.h" 3 4
1401     long int __unused[3];      }; 
1402 extern int fcntl (int __fd, int __cmd, ...); 
1403 # 85 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
1404 extern int open (__const char *__file, int __oflag, ...) __attribute__ ((__nonnull__ (1))); 
1405 extern int posix_fallocate (int __fd, __off_t __offset, __off_t __len); 
1406 # 209 "/usr/include/gentoo-multilib/amd64/fcntl.h" 3 4
1407 extern int posix_fallocate64 (int __fd, __off64_t __offset, __off64_t __len);    }
1408 # 29 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
1409  extern "C" {    
1410 # 1 "/usr/include/bits/huge_val.h" 1 3 4
1411
1412 # 53 "/usr/include/gentoo-multilib/amd64/bits/mathcalls.h" 3 4
1413   extern double acos (double __x) throw (); extern double __acos (double __x) throw ();  extern double asin (double __x) throw (); extern double __asin (double __x) throw ();  extern double atan (double __x) throw (); extern double __atan (double __x) throw ();  extern double atan2 (double __y, double __x) throw (); extern double __atan2 (double __y, double __x) throw ();   extern double cos (double __x) throw (); extern double __cos (double __x) throw ();  extern double sin (double __x) throw (); extern double __sin (double __x) throw ();  extern double tan (double __x) throw (); extern double __tan (double __x) throw ();     extern double cosh (double __x) throw (); extern double __cosh (double __x) throw ();  extern double sinh (double __x) throw (); extern double __sinh (double __x) throw ();  extern double tanh (double __x) throw (); extern double __tanh (double __x) throw ();     extern void sincos (double __x, double *__sinx, double *__cosx) throw (); extern void __sincos (double __x, double *__sinx, double *__cosx) throw ();       extern double acosh (double __x) throw (); extern double __acosh (double __x) throw ();  extern double asinh (double __x) throw (); extern double __asinh (double __x) throw ();  extern double atanh (double __x) throw (); extern double __atanh (double __x) throw ();        extern double exp (double __x) throw (); extern double __exp (double __x) throw ();   extern double frexp (double __x, int *__exponent) throw (); extern double __frexp (double __x, int *__exponent) throw ();   extern double ldexp (double __x, int __exponent) throw (); extern double __ldexp (double __x, int __exponent) throw ();   extern double log (double __x) throw (); extern double __log (double __x) throw ();   extern double log10 (double __x) throw (); extern double __log10 (double __x) throw ();   extern double modf (double __x, double *__iptr) throw (); extern double __modf (double __x, double *__iptr) throw ();     extern double exp10 (double __x) throw (); extern double __exp10 (double __x) throw ();  extern double pow10 (double __x) throw (); extern double __pow10 (double __x) throw ();      extern double expm1 (double __x) throw (); extern double __expm1 (double __x) throw ();   extern double log1p (double __x) throw (); extern double __log1p (double __x) throw ();   extern double logb (double __x) throw (); extern double __logb (double __x) throw ();       extern double exp2 (double __x) throw (); extern double __exp2 (double __x) throw ();   extern double log2 (double __x) throw (); extern double __log2 (double __x) throw ();         extern double pow (double __x, double __y) throw (); extern double __pow (double __x, double __y) throw ();   extern double sqrt (double __x) throw (); extern double __sqrt (double __x) throw ();      extern double hypot (double __x, double __y) throw (); extern double __hypot (double __x, double __y) throw ();       extern double cbrt (double __x) throw (); extern double __cbrt (double __x) throw ();         extern double ceil (double __x) throw () __attribute__ ((__const__)); extern double __ceil (double __x) throw () __attribute__ ((__const__));   extern double fabs (double __x) throw () __attribute__ ((__const__)); extern double __fabs (double __x) throw () __attribute__ ((__const__));   extern double floor (double __x) throw () __attribute__ ((__const__)); extern double __floor (double __x) throw () __attribute__ ((__const__));   extern double fmod (double __x, double __y) throw (); extern double __fmod (double __x, double __y) throw ();     extern int __isinf (double __value) throw () __attribute__ ((__const__));   extern int __finite (double __value) throw () __attribute__ ((__const__));      extern int isinf (double __value) throw () __attribute__ ((__const__));   extern int finite (double __value) throw () __attribute__ ((__const__));   extern double drem (double __x, double __y) throw (); extern double __drem (double __x, double __y) throw ();    extern double significand (double __x) throw (); extern double __significand (double __x) throw ();      extern double copysign (double __x, double __y) throw () __attribute__ ((__const__)); extern double __copysign (double __x, double __y) throw () __attribute__ ((__const__));       extern double nan (__const char *__tagb) throw () __attribute__ ((__const__)); extern double __nan (__const char *__tagb) throw () __attribute__ ((__const__));      extern int __isnan (double __value) throw () __attribute__ ((__const__));    extern int isnan (double __value) throw () __attribute__ ((__const__));   extern double j0 (double) throw (); extern double __j0 (double) throw (); extern double j1 (double) throw (); extern double __j1 (double) throw (); extern double jn (int, double) throw (); extern double __jn (int, double) throw (); extern double y0 (double) throw (); extern double __y0 (double) throw (); extern double y1 (double) throw (); extern double __y1 (double) throw (); extern double yn (int, double) throw (); extern double __yn (int, double) throw ();       extern double erf (double) throw (); extern double __erf (double) throw (); extern double erfc (double) throw (); extern double __erfc (double) throw (); extern double lgamma (double) throw (); extern double __lgamma (double) throw ();       extern double tgamma (double) throw (); extern double __tgamma (double) throw ();      extern double gamma (double) throw (); extern double __gamma (double) throw ();       extern double lgamma_r (double, int *__signgamp) throw (); extern double __lgamma_r (double, int *__signgamp) throw ();        extern double rint (double __x) throw (); extern double __rint (double __x) throw ();   extern double nextafter (double __x, double __y) throw () __attribute__ ((__const__)); extern double __nextafter (double __x, double __y) throw () __attribute__ ((__const__));  extern double nexttoward (double __x, long double __y) throw () __attribute__ ((__const__)); extern double __nexttoward (double __x, long double __y) throw () __attribute__ ((__const__));    extern double remainder (double __x, double __y) throw (); extern double __remainder (double __x, double __y) throw ();    extern double scalbn (double __x, int __n) throw (); extern double __scalbn (double __x, int __n) throw ();    extern int ilogb (double __x) throw (); extern int __ilogb (double __x) throw ();     extern double scalbln (double __x, long int __n) throw (); extern double __scalbln (double __x, long int __n) throw ();    extern double nearbyint (double __x) throw (); extern double __nearbyint (double __x) throw ();    extern double round (double __x) throw () __attribute__ ((__const__)); extern double __round (double __x) throw () __attribute__ ((__const__));    extern double trunc (double __x) throw () __attribute__ ((__const__)); extern double __trunc (double __x) throw () __attribute__ ((__const__));     extern double remquo (double __x, double __y, int *__quo) throw (); extern double __remquo (double __x, double __y, int *__quo) throw ();       extern long int lrint (double __x) throw (); extern long int __lrint (double __x) throw (); extern long long int llrint (double __x) throw (); extern long long int __llrint (double __x) throw ();    extern long int lround (double __x) throw (); extern long int __lround (double __x) throw (); extern long long int llround (double __x) throw (); extern long long int __llround (double __x) throw ();    extern double fdim (double __x, double __y) throw (); extern double __fdim (double __x, double __y) throw ();   extern double fmax (double __x, double __y) throw (); extern double __fmax (double __x, double __y) throw ();   extern double fmin (double __x, double __y) throw (); extern double __fmin (double __x, double __y) throw ();    extern int __fpclassify (double __value) throw ()      __attribute__ ((__const__));   extern int __signbit (double __value) throw ()      __attribute__ ((__const__));    extern double fma (double __x, double __y, double __z) throw (); extern double __fma (double __x, double __y, double __z) throw ();         extern double scalb (double __x, double __n) throw (); extern double __scalb (double __x, double __n) throw (); 
1414
1415 # 53 "/usr/include/gentoo-multilib/amd64/bits/mathcalls.h" 3 4
1416   extern float acosf (float __x) throw (); extern float __acosf (float __x) throw ();  extern float asinf (float __x) throw (); extern float __asinf (float __x) throw ();  extern float atanf (float __x) throw (); extern float __atanf (float __x) throw ();  extern float atan2f (float __y, float __x) throw (); extern float __atan2f (float __y, float __x) throw ();   extern float cosf (float __x) throw (); extern float __cosf (float __x) throw ();  extern float sinf (float __x) throw (); extern float __sinf (float __x) throw ();  extern float tanf (float __x) throw (); extern float __tanf (float __x) throw ();     extern float coshf (float __x) throw (); extern float __coshf (float __x) throw ();  extern float sinhf (float __x) throw (); extern float __sinhf (float __x) throw ();  extern float tanhf (float __x) throw (); extern float __tanhf (float __x) throw ();     extern void sincosf (float __x, float *__sinx, float *__cosx) throw (); extern void __sincosf (float __x, float *__sinx, float *__cosx) throw ();       extern float acoshf (float __x) throw (); extern float __acoshf (float __x) throw ();  extern float asinhf (float __x) throw (); extern float __asinhf (float __x) throw ();  extern float atanhf (float __x) throw (); extern float __atanhf (float __x) throw ();        extern float expf (float __x) throw (); extern float __expf (float __x) throw ();   extern float frexpf (float __x, int *__exponent) throw (); extern float __frexpf (float __x, int *__exponent) throw ();   extern float ldexpf (float __x, int __exponent) throw (); extern float __ldexpf (float __x, int __exponent) throw ();   extern float logf (float __x) throw (); extern float __logf (float __x) throw ();   extern float log10f (float __x) throw (); extern float __log10f (float __x) throw ();   extern float modff (float __x, float *__iptr) throw (); extern float __modff (float __x, float *__iptr) throw ();     extern float exp10f (float __x) throw (); extern float __exp10f (float __x) throw ();  extern float pow10f (float __x) throw (); extern float __pow10f (float __x) throw ();      extern float expm1f (float __x) throw (); extern float __expm1f (float __x) throw ();   extern float log1pf (float __x) throw (); extern float __log1pf (float __x) throw ();   extern float logbf (float __x) throw (); extern float __logbf (float __x) throw ();       extern float exp2f (float __x) throw (); extern float __exp2f (float __x) throw ();   extern float log2f (float __x) throw (); extern float __log2f (float __x) throw ();         extern float powf (float __x, float __y) throw (); extern float __powf (float __x, float __y) throw ();   extern float sqrtf (float __x) throw (); extern float __sqrtf (float __x) throw ();      extern float hypotf (float __x, float __y) throw (); extern float __hypotf (float __x, float __y) throw ();       extern float cbrtf (float __x) throw (); extern float __cbrtf (float __x) throw ();         extern float ceilf (float __x) throw () __attribute__ ((__const__)); extern float __ceilf (float __x) throw () __attribute__ ((__const__));   extern float fabsf (float __x) throw () __attribute__ ((__const__)); extern float __fabsf (float __x) throw () __attribute__ ((__const__));   extern float floorf (float __x) throw () __attribute__ ((__const__)); extern float __floorf (float __x) throw () __attribute__ ((__const__));   extern float fmodf (float __x, float __y) throw (); extern float __fmodf (float __x, float __y) throw ();     extern int __isinff (float __value) throw () __attribute__ ((__const__));   extern int __finitef (float __value) throw () __attribute__ ((__const__));      extern int isinff (float __value) throw () __attribute__ ((__const__));   extern int finitef (float __value) throw () __attribute__ ((__const__));   extern float dremf (float __x, float __y) throw (); extern float __dremf (float __x, float __y) throw ();    extern float significandf (float __x) throw (); extern float __significandf (float __x) throw ();      extern float copysignf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __copysignf (float __x, float __y) throw () __attribute__ ((__const__));       extern float nanf (__const char *__tagb) throw () __attribute__ ((__const__)); extern float __nanf (__const char *__tagb) throw () __attribute__ ((__const__));      extern int __isnanf (float __value) throw () __attribute__ ((__const__));    extern int isnanf (float __value) throw () __attribute__ ((__const__));   extern float j0f (float) throw (); extern float __j0f (float) throw (); extern float j1f (float) throw (); extern float __j1f (float) throw (); extern float jnf (int, float) throw (); extern float __jnf (int, float) throw (); extern float y0f (float) throw (); extern float __y0f (float) throw (); extern float y1f (float) throw (); extern float __y1f (float) throw (); extern float ynf (int, float) throw (); extern float __ynf (int, float) throw ();       extern float erff (float) throw (); extern float __erff (float) throw (); extern float erfcf (float) throw (); extern float __erfcf (float) throw (); extern float lgammaf (float) throw (); extern float __lgammaf (float) throw ();       extern float tgammaf (float) throw (); extern float __tgammaf (float) throw ();      extern float gammaf (float) throw (); extern float __gammaf (float) throw ();       extern float lgammaf_r (float, int *__signgamp) throw (); extern float __lgammaf_r (float, int *__signgamp) throw ();        extern float rintf (float __x) throw (); extern float __rintf (float __x) throw ();   extern float nextafterf (float __x, float __y) throw () __attribute__ ((__const__)); extern float __nextafterf (float __x, float __y) throw () __attribute__ ((__const__));  extern float nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__)); extern float __nexttowardf (float __x, long double __y) throw () __attribute__ ((__const__));    extern float remainderf (float __x, float __y) throw (); extern float __remainderf (float __x, float __y) throw ();    extern float scalbnf (float __x, int __n) throw (); extern float __scalbnf (float __x, int __n) throw ();    extern int ilogbf (float __x) throw (); extern int __ilogbf (float __x) throw ();     extern float scalblnf (float __x, long int __n) throw (); extern float __scalblnf (float __x, long int __n) throw ();    extern float nearbyintf (float __x) throw (); extern float __nearbyintf (float __x) throw ();    extern float roundf (float __x) throw () __attribute__ ((__const__)); extern float __roundf (float __x) throw () __attribute__ ((__const__));    extern float truncf (float __x) throw () __attribute__ ((__const__)); extern float __truncf (float __x) throw () __attribute__ ((__const__));     extern float remquof (float __x, float __y, int *__quo) throw (); extern float __remquof (float __x, float __y, int *__quo) throw ();       extern long int lrintf (float __x) throw (); extern long int __lrintf (float __x) throw (); extern long long int llrintf (float __x) throw (); extern long long int __llrintf (float __x) throw ();    extern long int lroundf (float __x) throw (); extern long int __lroundf (float __x) throw (); extern long long int llroundf (float __x) throw (); extern long long int __llroundf (float __x) throw ();    extern float fdimf (float __x, float __y) throw (); extern float __fdimf (float __x, float __y) throw ();   extern float fmaxf (float __x, float __y) throw (); extern float __fmaxf (float __x, float __y) throw ();   extern float fminf (float __x, float __y) throw (); extern float __fminf (float __x, float __y) throw ();    extern int __fpclassifyf (float __value) throw ()      __attribute__ ((__const__));   extern int __signbitf (float __value) throw ()      __attribute__ ((__const__));    extern float fmaf (float __x, float __y, float __z) throw (); extern float __fmaf (float __x, float __y, float __z) throw ();         extern float scalbf (float __x, float __n) throw (); extern float __scalbf (float __x, float __n) throw (); 
1417 # 410 "/usr/include/gentoo-multilib/amd64/math.h" 2 3 4
1418
1419 # 465 "/usr/include/gentoo-multilib/amd64/math.h" 3 4
1420 }
1421 # 12 "genfield.cxx" 2
1422     using namespace boost;
1423  using namespace std;
1424  namespace po = boost::program_options;
1425    const float physical_extent = 3.14159265358979323846 * 2.;
1426  const float comp_radius = 5.0;
1427  const float h = comp_radius * 0.5;
1428   typedef array<int,3> node;
1429  typedef array<float,3> particle;
1430  typedef vector<particle> particle_array;
1431   const int computational_extent = 512;
1432   const float norm = 1.;
1433       void read_particles(const string &infile,particle_array &particles) {     ssize_t res, readsize;      printf("reading %s...\n", infile.c_str());     FILE *pfd = fopen(infile.c_str(), "r");     ((pfd) ? static_cast<void> (0) : __assert_fail ("pfd", "genfield.cxx", 43, __PRETTY_FUNCTION__));      bool binary_format = true;      particle p;     readsize = 1;      char inbuf[80];     res = fread(inbuf,80,1,pfd);     if (res != -1) {         if (sscanf(inbuf,"%f %f %f\n", &p[0], &p[1], &p[1]) == 3) {             binary_format = false;             readsize = 3;         }     }      particles.clear();     fseek(pfd,0L,0);      while (!feof(pfd)) {         if (binary_format) {             res = fread(p.data(),sizeof(p),1,pfd);             if (res == 0)                 break;         }         else             res = fscanf(pfd,"%f %f %f\n", &p[0], &p[1], &p[2]);          if (res != readsize) {             if (res == -1)                 perror("read");             else                 printf("read error: res = %ld\n", res);             exit(1);         }          particles.push_back(p);     }      fclose(pfd); }
1434   inline float calc_level(const particle &comp_part,const node &n) {     float dist[3];     for (int i=0; i<3; ++i)         dist[i] = (float)n[i] - comp_part[i];     float veclen = sqrt(dist[0]*dist[0]+dist[1]*dist[1]+dist[2]*dist[2]);     ((veclen < comp_radius*1.8) ? static_cast<void> (0) : __assert_fail ("veclen < comp_radius*1.8", "genfield.cxx", 91, __PRETTY_FUNCTION__));     float val;     float q = veclen / h;     if (q < 1.) {         float q2 = q*q;         float q3 = q2*q;         val = 1. - 1.5*q2 + 0.75*q3;     }     else if (q < 2.) {         float f = 2.-q;         float f3 = f*f*f;         val = 0.25*f3;     }     else         val = 0;      val *= norm;      return val; }
1435   void get_local_nodes(const particle &comp_part,                      vector<node> &nv,vector<node> &pnv) {     int bounds[2][3];     for (int i=0; i<3; ++i) {         bounds[0][i] = (int)ceilf(comp_part[i] - comp_radius);         bounds[1][i] = (int)floorf(comp_part[i] + comp_radius);     }      size_t ncnt = (bounds[1][0] - bounds[0][0] + 1) *                   (bounds[1][1] - bounds[0][1] + 1) *                   (bounds[1][2] - bounds[0][2] + 1);     nv.resize(ncnt);     pnv.resize(ncnt);      size_t nidx = 0;     for (int i=bounds[0][0]; i<=bounds[1][0]; ++i) {         int ii = i % 512;         if (ii < 0) ii = 512 + ii;         for (int j=bounds[0][1]; j<=bounds[1][1]; ++j) {             int jj = j % 512;             if (jj < 0) jj = 512 + jj;             for (int k=bounds[0][2]; k<=bounds[1][2]; ++k) {                 int kk = k % 512;                 if (kk < 0) kk = 512 + kk;                 node n = {{ i, j, k }};                 nv[nidx] = n;                 n[0] = ii, n[1] = jj, n[2] = kk;                 pnv[nidx] = n;                 ++nidx;             }         }     } }
1436   void process_particle(const particle &part,                       vector<node> &nodes,vector<node> &pnodes,                       float field[][512][512]) {     particle comp_part;     for (int i=0; i<3; ++i)         comp_part[i] = part[i] / physical_extent * computational_extent;      get_local_nodes(comp_part,nodes,pnodes);     ((nodes.size() == pnodes.size()) ? static_cast<void> (0) : __assert_fail ("nodes.size() == pnodes.size()", "genfield.cxx", 156, __PRETTY_FUNCTION__));     vector<node>::const_iterator nit = nodes.begin();     vector<node>::const_iterator pit = pnodes.begin();     while (nit!=nodes.end()) {         const node &n = *nit++;         const node &pn = *pit++;         float fieldval = calc_level(comp_part,n);         field[pn[2]][pn[1]][pn[0]] += fieldval;     }  }
1437   void write_field(unsigned ts,float field[][512][512]) {     char filename[256];     sprintf(filename, "r80.density.%04u.q", ts);     printf("writing %s...\n", filename);     int fd = open(filename, 01|0100|01000, 0666);     ((fd>0) ? static_cast<void> (0) : __assert_fail ("fd>0", "genfield.cxx", 174, __PRETTY_FUNCTION__));     ssize_t res;     int nbx = 512, nby = 512, nbz = 512, snum = 1;     res = write(fd,&nbx,4);     ((res == 4) ? static_cast<void> (0) : __assert_fail ("res == 4", "genfield.cxx", 178, __PRETTY_FUNCTION__));     res = write(fd,&nby,4);     ((res == 4) ? static_cast<void> (0) : __assert_fail ("res == 4", "genfield.cxx", 180, __PRETTY_FUNCTION__));     res = write(fd,&nbz,4);     ((res == 4) ? static_cast<void> (0) : __assert_fail ("res == 4", "genfield.cxx", 182, __PRETTY_FUNCTION__));     res = write(fd,&snum,4);     ((res == 4) ? static_cast<void> (0) : __assert_fail ("res == 4", "genfield.cxx", 184, __PRETTY_FUNCTION__));     long field_size = nbx * nby * nbz * 4;     long bytesleft = field_size;     while (bytesleft) {         res = write(fd,field,bytesleft);         if (res == -1) { perror("write"); break; }         bytesleft -= res;     }     close(fd); }
1438   void gen_field(particle_array &particles,float field[][512][512]) {     int pn = (int)particles.size();      printf("generating density field - %d particles\n", pn);     memset(field,0,512*512*512);      vector<node> nodes, pnodes;     int p;      for (p=0; p<pn; ++p) {          if (!(p%10000)) {             printf("%%%.2f completed\r", (float)p / particles.size()*100.);             fflush(stdout);         }          process_particle(particles[p],nodes,pnodes,field);     }      printf("\n");  }
1439   int main(int argc,char *argv[]) {     vector<string> infiles;     unsigned start_ts;      po::options_description desc("options");     desc.add_options()         ("help,h", "print usage")         ("particles", po::value<vector<string> >(&infiles), "particle file")         ("listfile", po::value<string>(), "listfile of particle files")         ("timestep_origin,o", po::value<unsigned>(&start_ts)->default_value(0),          "timestep origin")         ;      po::positional_options_description p;     p.add("particles", -1);      po::variables_map vm;     try {         po::store(po::command_line_parser(argc,argv)                   .options(desc).positional(p).run(),                   vm);         po::notify(vm);     } catch (exception &e) {         cout << e.what() << endl;         return 1;     }      if (vm.count("help")) {         cout << desc << endl;         return 1;     }      if (vm.count("listfile")) {         ifstream f(vm["listfile"].as<string>().c_str());         string fname;         while (f >> fname)             infiles.push_back(fname);     }      int fidx = 0;      float field[512][512][512];     particle_array particles;  
1440 #pragma omp parallel private(field, particles)
1441     while (true) {              unsigned myidx = fidx++;          if (myidx >= infiles.size())             break;          const string &file = infiles[myidx];         string::size_type dotpos = file.find_last_of('.');         unsigned ts;         if (dotpos != string::npos)             ts = lexical_cast<unsigned>(file.substr(dotpos+1));         else             ts = myidx + start_ts;         read_particles(file,particles);         gen_field(particles,field);         write_field(ts,field);     }      printf("done\n");     exit(0); }
1442