Index: trunk/ippdb/src/ippdb.h
===================================================================
--- trunk/ippdb/src/ippdb.h	(revision 18796)
+++ trunk/ippdb/src/ippdb.h	(revision 20205)
@@ -1649,4 +1649,6 @@
     char            *filter;
     char            *comment;
+    char            *obs_mode;
+    char            *obs_group;
     psF32           airmass;
     psF64           ra;
@@ -1688,5 +1690,9 @@
     psF64           user_5;
     char            *object;
-    psF32           solang;
+    psF32           sun_angle;
+    psF32           sun_alt;
+    psF32           moon_angle;
+    psF32           moon_alt;
+    psF32           moon_phase;
     char            *hostname;
     psS16           fault;
@@ -1715,4 +1721,6 @@
     const char      *filter,
     const char      *comment,
+    const char      *obs_mode,
+    const char      *obs_group,
     psF32           airmass,
     psF64           ra,
@@ -1754,5 +1762,9 @@
     psF64           user_5,
     const char      *object,
-    psF32           solang,
+    psF32           sun_angle,
+    psF32           sun_alt,
+    psF32           moon_angle,
+    psF32           moon_alt,
+    psF32           moon_phase,
     const char      *hostname,
     psS16           fault,
@@ -1802,4 +1814,6 @@
     const char      *filter,
     const char      *comment,
+    const char      *obs_mode,
+    const char      *obs_group,
     psF32           airmass,
     psF64           ra,
@@ -1841,5 +1855,9 @@
     psF64           user_5,
     const char      *object,
-    psF32           solang,
+    psF32           sun_angle,
+    psF32           sun_alt,
+    psF32           moon_angle,
+    psF32           moon_alt,
+    psF32           moon_phase,
     const char      *hostname,
     psS16           fault,
@@ -2012,4 +2030,6 @@
     char            *filter;
     char            *comment;
+    char            *obs_mode;
+    char            *obs_group;
     psF32           airmass;
     psF64           ra;
@@ -2051,4 +2071,9 @@
     psF64           user_5;
     char            *object;
+    psF32           sun_angle;
+    psF32           sun_alt;
+    psF32           moon_angle;
+    psF32           moon_alt;
+    psF32           moon_phase;
     char            *hostname;
     psS16           fault;
@@ -2074,4 +2099,6 @@
     const char      *filter,
     const char      *comment,
+    const char      *obs_mode,
+    const char      *obs_group,
     psF32           airmass,
     psF64           ra,
@@ -2113,4 +2140,9 @@
     psF64           user_5,
     const char      *object,
+    psF32           sun_angle,
+    psF32           sun_alt,
+    psF32           moon_angle,
+    psF32           moon_alt,
+    psF32           moon_phase,
     const char      *hostname,
     psS16           fault,
@@ -2157,4 +2189,6 @@
     const char      *filter,
     const char      *comment,
+    const char      *obs_mode,
+    const char      *obs_group,
     psF32           airmass,
     psF64           ra,
@@ -2196,4 +2230,9 @@
     psF64           user_5,
     const char      *object,
+    psF32           sun_angle,
+    psF32           sun_alt,
+    psF32           moon_angle,
+    psF32           moon_alt,
+    psF32           moon_phase,
     const char      *hostname,
     psS16           fault,
@@ -2783,4 +2822,5 @@
     psS64           exp_id;
     char            *class_id;
+    char            *data_state;
     char            *uri;
     psF32           bg;
@@ -2792,20 +2832,38 @@
     psF32           fringe_1;
     psF32           fringe_2;
-    psF32           sigma_ra;
-    psF32           sigma_dec;
     psF32           ap_resid;
     psF32           ap_resid_stdev;
-    psF32           zp_mean;
-    psF32           zp_stdev;
     psF32           fwhm_major;
     psF32           fwhm_minor;
+    psF32           iq_m2;
+    psF32           iq_m2_err;
+    psF32           iq_m2_lq;
+    psF32           iq_m2_uq;
+    psF32           iq_m2c;
+    psF32           iq_m2c_err;
+    psF32           iq_m2c_lq;
+    psF32           iq_m2c_uq;
+    psF32           iq_m2s;
+    psF32           iq_m2s_err;
+    psF32           iq_m2s_lq;
+    psF32           iq_m2s_uq;
+    psF32           iq_m3;
+    psF32           iq_m3_err;
+    psF32           iq_m3_lq;
+    psF32           iq_m3_uq;
+    psF32           iq_m4;
+    psF32           iq_m4_err;
+    psF32           iq_m4_lq;
+    psF32           iq_m4_uq;
     psF32           dtime_detrend;
     psF32           dtime_photom;
-    psF32           dtime_astrom;
+    psF32           dtime_total;
+    psF32           dtime_script;
     char            *hostname;
     psS32           n_stars;
+    psS32           n_psfstars;
+    psS32           n_iqstars;
     psS32           n_extended;
     psS32           n_cr;
-    psS32           n_astrom;
     char            *path_base;
     psS16           fault;
@@ -2821,4 +2879,5 @@
     psS64           exp_id,
     const char      *class_id,
+    const char      *data_state,
     const char      *uri,
     psF32           bg,
@@ -2830,20 +2889,38 @@
     psF32           fringe_1,
     psF32           fringe_2,
-    psF32           sigma_ra,
-    psF32           sigma_dec,
     psF32           ap_resid,
     psF32           ap_resid_stdev,
-    psF32           zp_mean,
-    psF32           zp_stdev,
     psF32           fwhm_major,
     psF32           fwhm_minor,
+    psF32           iq_m2,
+    psF32           iq_m2_err,
+    psF32           iq_m2_lq,
+    psF32           iq_m2_uq,
+    psF32           iq_m2c,
+    psF32           iq_m2c_err,
+    psF32           iq_m2c_lq,
+    psF32           iq_m2c_uq,
+    psF32           iq_m2s,
+    psF32           iq_m2s_err,
+    psF32           iq_m2s_lq,
+    psF32           iq_m2s_uq,
+    psF32           iq_m3,
+    psF32           iq_m3_err,
+    psF32           iq_m3_lq,
+    psF32           iq_m3_uq,
+    psF32           iq_m4,
+    psF32           iq_m4_err,
+    psF32           iq_m4_lq,
+    psF32           iq_m4_uq,
     psF32           dtime_detrend,
     psF32           dtime_photom,
-    psF32           dtime_astrom,
+    psF32           dtime_total,
+    psF32           dtime_script,
     const char      *hostname,
     psS32           n_stars,
+    psS32           n_psfstars,
+    psS32           n_iqstars,
     psS32           n_extended,
     psS32           n_cr,
-    psS32           n_astrom,
     const char      *path_base,
     psS16           fault
@@ -2880,4 +2957,5 @@
     psS64           exp_id,
     const char      *class_id,
+    const char      *data_state,
     const char      *uri,
     psF32           bg,
@@ -2889,20 +2967,38 @@
     psF32           fringe_1,
     psF32           fringe_2,
-    psF32           sigma_ra,
-    psF32           sigma_dec,
     psF32           ap_resid,
     psF32           ap_resid_stdev,
-    psF32           zp_mean,
-    psF32           zp_stdev,
     psF32           fwhm_major,
     psF32           fwhm_minor,
+    psF32           iq_m2,
+    psF32           iq_m2_err,
+    psF32           iq_m2_lq,
+    psF32           iq_m2_uq,
+    psF32           iq_m2c,
+    psF32           iq_m2c_err,
+    psF32           iq_m2c_lq,
+    psF32           iq_m2c_uq,
+    psF32           iq_m2s,
+    psF32           iq_m2s_err,
+    psF32           iq_m2s_lq,
+    psF32           iq_m2s_uq,
+    psF32           iq_m3,
+    psF32           iq_m3_err,
+    psF32           iq_m3_lq,
+    psF32           iq_m3_uq,
+    psF32           iq_m4,
+    psF32           iq_m4_err,
+    psF32           iq_m4_lq,
+    psF32           iq_m4_uq,
     psF32           dtime_detrend,
     psF32           dtime_photom,
-    psF32           dtime_astrom,
+    psF32           dtime_total,
+    psF32           dtime_script,
     const char      *hostname,
     psS32           n_stars,
+    psS32           n_psfstars,
+    psS32           n_iqstars,
     psS32           n_extended,
     psS32           n_cr,
-    psS32           n_astrom,
     const char      *path_base,
     psS16           fault
@@ -3500,9 +3596,31 @@
     psF32           fwhm_major;
     psF32           fwhm_minor;
-    psF32           dtime_detrend;
-    psF32           dtime_photom;
+    psF32           iq_m2;
+    psF32           iq_m2_err;
+    psF32           iq_m2_lq;
+    psF32           iq_m2_uq;
+    psF32           iq_m2c;
+    psF32           iq_m2c_err;
+    psF32           iq_m2c_lq;
+    psF32           iq_m2c_uq;
+    psF32           iq_m2s;
+    psF32           iq_m2s_err;
+    psF32           iq_m2s_lq;
+    psF32           iq_m2s_uq;
+    psF32           iq_m3;
+    psF32           iq_m3_err;
+    psF32           iq_m3_lq;
+    psF32           iq_m3_uq;
+    psF32           iq_m4;
+    psF32           iq_m4_err;
+    psF32           iq_m4_lq;
+    psF32           iq_m4_uq;
+    psF32           dtime_script;
     psF32           dtime_astrom;
+    psF32           dtime_addstar;
     char            *hostname;
     psS32           n_stars;
+    psS32           n_psfstars;
+    psS32           n_iqstars;
     psS32           n_extended;
     psS32           n_cr;
@@ -3536,9 +3654,31 @@
     psF32           fwhm_major,
     psF32           fwhm_minor,
-    psF32           dtime_detrend,
-    psF32           dtime_photom,
+    psF32           iq_m2,
+    psF32           iq_m2_err,
+    psF32           iq_m2_lq,
+    psF32           iq_m2_uq,
+    psF32           iq_m2c,
+    psF32           iq_m2c_err,
+    psF32           iq_m2c_lq,
+    psF32           iq_m2c_uq,
+    psF32           iq_m2s,
+    psF32           iq_m2s_err,
+    psF32           iq_m2s_lq,
+    psF32           iq_m2s_uq,
+    psF32           iq_m3,
+    psF32           iq_m3_err,
+    psF32           iq_m3_lq,
+    psF32           iq_m3_uq,
+    psF32           iq_m4,
+    psF32           iq_m4_err,
+    psF32           iq_m4_lq,
+    psF32           iq_m4_uq,
+    psF32           dtime_script,
     psF32           dtime_astrom,
+    psF32           dtime_addstar,
     const char      *hostname,
     psS32           n_stars,
+    psS32           n_psfstars,
+    psS32           n_iqstars,
     psS32           n_extended,
     psS32           n_cr,
@@ -3593,9 +3733,31 @@
     psF32           fwhm_major,
     psF32           fwhm_minor,
-    psF32           dtime_detrend,
-    psF32           dtime_photom,
+    psF32           iq_m2,
+    psF32           iq_m2_err,
+    psF32           iq_m2_lq,
+    psF32           iq_m2_uq,
+    psF32           iq_m2c,
+    psF32           iq_m2c_err,
+    psF32           iq_m2c_lq,
+    psF32           iq_m2c_uq,
+    psF32           iq_m2s,
+    psF32           iq_m2s_err,
+    psF32           iq_m2s_lq,
+    psF32           iq_m2s_uq,
+    psF32           iq_m3,
+    psF32           iq_m3_err,
+    psF32           iq_m3_lq,
+    psF32           iq_m3_uq,
+    psF32           iq_m4,
+    psF32           iq_m4_err,
+    psF32           iq_m4_lq,
+    psF32           iq_m4_uq,
+    psF32           dtime_script,
     psF32           dtime_astrom,
+    psF32           dtime_addstar,
     const char      *hostname,
     psS32           n_stars,
+    psS32           n_psfstars,
+    psS32           n_iqstars,
     psS32           n_extended,
     psS32           n_cr,
@@ -4183,6 +4345,8 @@
     char            *uri;
     psF32           dtime_fake;
+    psF32           dtime_script;
     char            *hostname;
     char            *path_base;
+    char            *data_state;
     psS16           fault;
     psTime*         epoch;
@@ -4200,6 +4364,8 @@
     const char      *uri,
     psF32           dtime_fake,
+    psF32           dtime_script,
     const char      *hostname,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault,
     psTime*         epoch
@@ -4238,6 +4404,8 @@
     const char      *uri,
     psF32           dtime_fake,
+    psF32           dtime_script,
     const char      *hostname,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault,
     psTime*         epoch
@@ -5032,7 +5200,9 @@
     char            *uri;
     char            *path_base;
+    char            *data_state;
     psF64           bg;
     psF64           bg_stdev;
     psF32           dtime_warp;
+    psF32           dtime_script;
     char            *hostname;
     psF32           good_frac;
@@ -5056,7 +5226,9 @@
     const char      *uri,
     const char      *path_base,
+    const char      *data_state,
     psF64           bg,
     psF64           bg_stdev,
     psF32           dtime_warp,
+    psF32           dtime_script,
     const char      *hostname,
     psF32           good_frac,
@@ -5101,7 +5273,9 @@
     const char      *uri,
     const char      *path_base,
+    const char      *data_state,
     psF64           bg,
     psF64           bg_stdev,
     psF32           dtime_warp,
+    psF32           dtime_script,
     const char      *hostname,
     psF32           good_frac,
@@ -5464,4 +5638,6 @@
     psS64           diff_id;
     char            *state;
+    char            *label;
+    char            *reduction;
     char            *workdir;
     char            *dvodb;
@@ -5479,4 +5655,6 @@
     psS64           diff_id,
     const char      *state,
+    const char      *label,
+    const char      *reduction,
     const char      *workdir,
     const char      *dvodb,
@@ -5515,4 +5693,6 @@
     psS64           diff_id,
     const char      *state,
+    const char      *label,
+    const char      *reduction,
     const char      *workdir,
     const char      *dvodb,
@@ -5894,7 +6074,18 @@
     psF64           bg_stdev;
     psS32           stamps_num;
+    psF32           stamps_mean;
     psF32           stamps_rms;
+    psF32           norm;
+    psF32           bg_diff;
+    psF32           kernel_x;
+    psF32           kernel_y;
+    psF32           kernel_xx;
+    psF32           kernel_xy;
+    psF32           kernel_yy;
     psS32           sources;
     psF32           dtime_diff;
+    psF32           dtime_match;
+    psF32           dtime_phot;
+    psF32           dtime_script;
     char            *hostname;
     psF32           good_frac;
@@ -5914,7 +6105,18 @@
     psF64           bg_stdev,
     psS32           stamps_num,
+    psF32           stamps_mean,
     psF32           stamps_rms,
+    psF32           norm,
+    psF32           bg_diff,
+    psF32           kernel_x,
+    psF32           kernel_y,
+    psF32           kernel_xx,
+    psF32           kernel_xy,
+    psF32           kernel_yy,
     psS32           sources,
     psF32           dtime_diff,
+    psF32           dtime_match,
+    psF32           dtime_phot,
+    psF32           dtime_script,
     const char      *hostname,
     psF32           good_frac,
@@ -5955,7 +6157,18 @@
     psF64           bg_stdev,
     psS32           stamps_num,
+    psF32           stamps_mean,
     psF32           stamps_rms,
+    psF32           norm,
+    psF32           bg_diff,
+    psF32           kernel_x,
+    psF32           kernel_y,
+    psF32           kernel_xx,
+    psF32           kernel_xy,
+    psF32           kernel_yy,
     psS32           sources,
     psF32           dtime_diff,
+    psF32           dtime_match,
+    psF32           dtime_phot,
+    psF32           dtime_script,
     const char      *hostname,
     psF32           good_frac,
@@ -6119,4 +6332,6 @@
     char            *state;
     char            *workdir;
+    char            *label;
+    char            *reduction;
     char            *dvodb;
     psTime*         registered;
@@ -6135,4 +6350,6 @@
     const char      *state,
     const char      *workdir,
+    const char      *label,
+    const char      *reduction,
     const char      *dvodb,
     psTime*         registered,
@@ -6172,4 +6389,6 @@
     const char      *state,
     const char      *workdir,
+    const char      *label,
+    const char      *reduction,
     const char      *dvodb,
     psTime*         registered,
@@ -6536,4 +6755,21 @@
     psF64           bg_stdev;
     psF32           dtime_stack;
+    psF32           dtime_match_mean;
+    psF32           dtime_match_stdev;
+    psF32           dtime_initial;
+    psF32           dtime_reject;
+    psF32           dtime_final;
+    psF32           dtime_phot;
+    psF32           dtime_script;
+    psF32           match_mean;
+    psF32           match_stdev;
+    psF32           match_rms;
+    psF32           stamps_mean;
+    psF32           stamps_stdev;
+    psS32           stamps_min;
+    psS32           reject_images;
+    psF32           reject_pix_mean;
+    psF32           reject_pix_stdev;
+    psS32           sources;
     char            *hostname;
     psF32           good_frac;
@@ -6553,4 +6789,21 @@
     psF64           bg_stdev,
     psF32           dtime_stack,
+    psF32           dtime_match_mean,
+    psF32           dtime_match_stdev,
+    psF32           dtime_initial,
+    psF32           dtime_reject,
+    psF32           dtime_final,
+    psF32           dtime_phot,
+    psF32           dtime_script,
+    psF32           match_mean,
+    psF32           match_stdev,
+    psF32           match_rms,
+    psF32           stamps_mean,
+    psF32           stamps_stdev,
+    psS32           stamps_min,
+    psS32           reject_images,
+    psF32           reject_pix_mean,
+    psF32           reject_pix_stdev,
+    psS32           sources,
     const char      *hostname,
     psF32           good_frac,
@@ -6591,4 +6844,21 @@
     psF64           bg_stdev,
     psF32           dtime_stack,
+    psF32           dtime_match_mean,
+    psF32           dtime_match_stdev,
+    psF32           dtime_initial,
+    psF32           dtime_reject,
+    psF32           dtime_final,
+    psF32           dtime_phot,
+    psF32           dtime_script,
+    psF32           match_mean,
+    psF32           match_stdev,
+    psF32           match_rms,
+    psF32           stamps_mean,
+    psF32           stamps_stdev,
+    psS32           stamps_min,
+    psS32           reject_images,
+    psF32           reject_pix_mean,
+    psF32           reject_pix_stdev,
+    psS32           sources,
     const char      *hostname,
     psF32           good_frac,
@@ -6777,5 +7047,6 @@
     psF32           solang_max;
     char            *label;
-    psS32           parent;
+    psS64           ref_det_id;
+    psS32           ref_iter;
 } detRunRow;
 
@@ -6814,5 +7085,6 @@
     psF32           solang_max,
     const char      *label,
-    psS32           parent
+    psS64           ref_det_id,
+    psS32           ref_iter
 );
 
@@ -6872,5 +7144,6 @@
     psF32           solang_max,
     const char      *label,
-    psS32           parent
+    psS64           ref_det_id,
+    psS32           ref_iter
 );
 
@@ -7249,4 +7522,5 @@
     psF64           user_5;
     char            *path_base;
+    char            *data_state;
     psS16           fault;
 } detProcessedImfileRow;
@@ -7275,4 +7549,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -7322,4 +7597,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -7493,4 +7769,5 @@
     psF64           user_5;
     char            *path_base;
+    char            *data_state;
     psS16           fault;
 } detProcessedExpRow;
@@ -7517,4 +7794,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -7562,4 +7840,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -7731,4 +8010,5 @@
     psF64           user_4;
     psF64           user_5;
+    char            *data_state;
     psS16           fault;
 } detStackedImfileRow;
@@ -7753,4 +8033,5 @@
     psF64           user_4,
     psF64           user_5,
+    const char      *data_state,
     psS16           fault
 );
@@ -7796,4 +8077,5 @@
     psF64           user_4,
     psF64           user_5,
+    const char      *data_state,
     psS16           fault
 );
@@ -7956,4 +8238,5 @@
     char            *class_id;
     psF32           norm;
+    char            *data_state;
     psS16           fault;
 } detNormalizedStatImfileRow;
@@ -7969,4 +8252,5 @@
     const char      *class_id,
     psF32           norm,
+    const char      *data_state,
     psS16           fault
 );
@@ -8003,4 +8287,5 @@
     const char      *class_id,
     psF32           norm,
+    const char      *data_state,
     psS16           fault
 );
@@ -8172,4 +8457,5 @@
     psF64           user_5;
     char            *path_base;
+    char            *data_state;
     psS16           fault;
 } detNormalizedImfileRow;
@@ -8194,4 +8480,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -8237,4 +8524,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -8405,4 +8693,5 @@
     psF64           user_5;
     char            *path_base;
+    char            *data_state;
     psS16           fault;
 } detNormalizedExpRow;
@@ -8426,4 +8715,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -8468,4 +8758,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -8626,4 +8917,6 @@
     psS64           det_id;
     psS32           iteration;
+    psS64           ref_det_id;
+    psS32           ref_iter;
     psS64           exp_id;
     char            *class_id;
@@ -8648,4 +8941,5 @@
     psF64           user_5;
     char            *path_base;
+    char            *data_state;
     psS16           fault;
 } detResidImfileRow;
@@ -8659,4 +8953,6 @@
     psS64           det_id,
     psS32           iteration,
+    psS64           ref_det_id,
+    psS32           ref_iter,
     psS64           exp_id,
     const char      *class_id,
@@ -8681,4 +8977,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -8713,4 +9010,6 @@
     psS64           det_id,
     psS32           iteration,
+    psS64           ref_det_id,
+    psS32           ref_iter,
     psS64           exp_id,
     const char      *class_id,
@@ -8735,4 +9034,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -8913,4 +9213,5 @@
     psF64           user_5;
     char            *path_base;
+    char            *data_state;
     bool            accept;
     psS16           fault;
@@ -8945,4 +9246,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     bool            accept,
     psS16           fault
@@ -8998,4 +9300,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     bool            accept,
     psS16           fault
@@ -9157,4 +9460,5 @@
     psS64           det_id;
     psS32           iteration;
+    char            *data_state;
     psF64           bg;
     psF64           bg_stdev;
@@ -9172,4 +9476,5 @@
     psS64           det_id,
     psS32           iteration,
+    const char      *data_state,
     psF64           bg,
     psF64           bg_stdev,
@@ -9208,4 +9513,5 @@
     psS64           det_id,
     psS32           iteration,
+    const char      *data_state,
     psF64           bg,
     psF64           bg_stdev,
@@ -9381,4 +9687,5 @@
     psF64           user_5;
     char            *path_base;
+    char            *data_state;
     psS16           fault;
 } detRegisteredImfileRow;
@@ -9403,4 +9710,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -9446,4 +9754,5 @@
     psF64           user_5,
     const char      *path_base,
+    const char      *data_state,
     psS16           fault
 );
@@ -11468,6 +11777,8 @@
     char            *workdir;
     char            *label;
-    char            *stats;
+    char            *reduction;
     char            *region;
+    char            *hostname;
+    psS16           fault;
 } flatcorrRunRow;
 
@@ -11484,6 +11795,8 @@
     const char      *workdir,
     const char      *label,
-    const char      *stats,
-    const char      *region
+    const char      *reduction,
+    const char      *region,
+    const char      *hostname,
+    psS16           fault
 );
 
@@ -11521,6 +11834,8 @@
     const char      *workdir,
     const char      *label,
-    const char      *stats,
-    const char      *region
+    const char      *reduction,
+    const char      *region,
+    const char      *hostname,
+    psS16           fault
 );
 
@@ -11672,7 +11987,7 @@
     bool            mdcf                ///< format as mdconfig or simple
 );
-/** flatcorrExpRow data structure
- *
- * Structure for representing a single row of flatcorrExp table data.
+/** flatcorrChipLinkRow data structure
+ *
+ * Structure for representing a single row of flatcorrChipLink table data.
  */
 
@@ -11680,31 +11995,31 @@
     psS64           corr_id;
     psS64           chip_id;
-} flatcorrExpRow;
-
-/** Creates a new flatcorrExpRow object
- *
- *  @return A new flatcorrExpRow object or NULL on failure.
- */
-
-flatcorrExpRow *flatcorrExpRowAlloc(
+} flatcorrChipLinkRow;
+
+/** Creates a new flatcorrChipLinkRow object
+ *
+ *  @return A new flatcorrChipLinkRow object or NULL on failure.
+ */
+
+flatcorrChipLinkRow *flatcorrChipLinkRowAlloc(
     psS64           corr_id,
     psS64           chip_id
 );
 
-/** Creates a new flatcorrExp table
- *
- * @return true on success
- */
-
-bool flatcorrExpCreateTable(
+/** Creates a new flatcorrChipLink table
+ *
+ * @return true on success
+ */
+
+bool flatcorrChipLinkCreateTable(
     psDB            *dbh                ///< Database handle
 );
 
-/** Deletes a flatcorrExp table
- *
- * @return true on success
- */
-
-bool flatcorrExpDropTable(
+/** Deletes a flatcorrChipLink table
+ *
+ * @return true on success
+ */
+
+bool flatcorrChipLinkDropTable(
     psDB            *dbh                ///< Database handle
 );
@@ -11717,5 +12032,5 @@
  */
 
-bool flatcorrExpInsert(
+bool flatcorrChipLinkInsert(
     psDB            *dbh,               ///< Database handle
     psS64           corr_id,
@@ -11728,5 +12043,5 @@
  */
 
-long long flatcorrExpDelete(
+long long flatcorrChipLinkDelete(
     psDB            *dbh,               ///< Database handle
     const psMetadata *where,            ///< Row match criteria
@@ -11734,5 +12049,5 @@
 );
 
-/** Insert a single flatcorrExpRow object into a table
+/** Insert a single flatcorrChipLinkRow object into a table
  *
  * This function constructs and inserts a single row based on it's parameters.
@@ -11741,10 +12056,10 @@
  */
 
-bool flatcorrExpInsertObject(
-    psDB            *dbh,               ///< Database handle
-    flatcorrExpRow  *object             ///< flatcorrExpRow object
-);
-
-/** Insert an array of flatcorrExpRow object into a table
+bool flatcorrChipLinkInsertObject(
+    psDB            *dbh,               ///< Database handle
+    flatcorrChipLinkRow *object             ///< flatcorrChipLinkRow object
+);
+
+/** Insert an array of flatcorrChipLinkRow object into a table
  *
  * This function constructs and inserts multiple rows based on it's parameters.
@@ -11753,10 +12068,10 @@
  */
 
-bool flatcorrExpInsertObjects(
-    psDB            *dbh,               ///< Database handle
-    psArray         *objects            ///< array of flatcorrExpRow objects
-);
-
-/** Insert data from a binary FITS table flatcorrExpRow into the database
+bool flatcorrChipLinkInsertObjects(
+    psDB            *dbh,               ///< Database handle
+    psArray         *objects            ///< array of flatcorrChipLinkRow objects
+);
+
+/** Insert data from a binary FITS table flatcorrChipLinkRow into the database
  *
  * This function expects a psFits object with a FITS table as the first
@@ -11768,5 +12083,5 @@
  */
 
-bool flatcorrExpInsertFits(
+bool flatcorrChipLinkInsertFits(
     psDB            *dbh,               ///< Database handle
     const psFits    *fits               ///< psFits object
@@ -11783,5 +12098,5 @@
  */
 
-bool flatcorrExpSelectRowsFits(
+bool flatcorrChipLinkSelectRowsFits(
     psDB            *dbh,               ///< Database handle
     psFits          *fits,              ///< psFits object
@@ -11790,22 +12105,22 @@
 );
 
-/** Convert a flatcorrExpRow into an equivalent psMetadata
+/** Convert a flatcorrChipLinkRow into an equivalent psMetadata
  *
  * @return A psMetadata pointer or NULL on error
  */
 
-psMetadata *flatcorrExpMetadataFromObject(
-    const flatcorrExpRow *object             ///< fooRow to convert into a psMetadata
+psMetadata *flatcorrChipLinkMetadataFromObject(
+    const flatcorrChipLinkRow *object             ///< fooRow to convert into a psMetadata
 );
 
 /** Convert a psMetadata into an equivalent fooRow
  *
- * @return A flatcorrExpRow pointer or NULL on error
- */
-
-flatcorrExpRow *flatcorrExpObjectFromMetadata(
+ * @return A flatcorrChipLinkRow pointer or NULL on error
+ */
+
+flatcorrChipLinkRow *flatcorrChipLinkObjectFromMetadata(
     psMetadata      *md                 ///< psMetadata to convert into a fooRow
 );
-/** Selects up to limit rows from the database and returns as flatcorrExpRow objects in a psArray
+/** Selects up to limit rows from the database and returns as flatcorrChipLinkRow objects in a psArray
  *
  *  See psDBSelectRows() for documentation on the format of where.
@@ -11814,10 +12129,10 @@
  */
 
-psArray *flatcorrExpSelectRowObjects(
+psArray *flatcorrChipLinkSelectRowObjects(
     psDB            *dbh,               ///< Database handle
     const psMetadata *where,            ///< Row match criteria
     unsigned long long limit            ///< Maximum number of elements to return
 );
-/** Deletes a row from the database coresponding to an flatcorrExp
+/** Deletes a row from the database coresponding to an flatcorrChipLink
  *
  *  Note that a 'where' search psMetadata is constructed from each object and
@@ -11827,7 +12142,7 @@
  */
 
-bool flatcorrExpDeleteObject(
-    psDB            *dbh,               ///< Database handle
-    const flatcorrExpRow *object    ///< Object to delete
+bool flatcorrChipLinkDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const flatcorrChipLinkRow *object    ///< Object to delete
 );
 /** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
@@ -11839,10 +12154,10 @@
  */
 
-long long flatcorrExpDeleteRowObjects(
+long long flatcorrChipLinkDeleteRowObjects(
     psDB            *dbh,               ///< Database handle
     const psArray   *objects,           ///< Array of objects to delete
     unsigned long long limit            ///< Maximum number of elements to delete 
 );
-/** Formats and prints an array of flatcorrExpRow objects
+/** Formats and prints an array of flatcorrChipLinkRow objects
  *
  * When mdcf is set the formated output is in psMetadataConfig
@@ -11852,10 +12167,10 @@
  */
 
-bool flatcorrExpPrintObjects(
+bool flatcorrChipLinkPrintObjects(
     FILE            *stream,            ///< a stream
-    psArray         *objects,           ///< An array of flatcorrExpRow objects
+    psArray         *objects,           ///< An array of flatcorrChipLinkRow objects
     bool            mdcf                ///< format as mdconfig or simple
 );
-/** Formats and prints an flatcorrExpRow object
+/** Formats and prints an flatcorrChipLinkRow object
  *
  * When mdcf is set the formated output is in psMetadataConfig
@@ -11865,7 +12180,208 @@
  */
 
-bool flatcorrExpPrintObject(
+bool flatcorrChipLinkPrintObject(
     FILE            *stream,            ///< a stream
-    flatcorrExpRow *object,    ///< an flatcorrExpRow object
+    flatcorrChipLinkRow *object,    ///< an flatcorrChipLinkRow object
+    bool            mdcf                ///< format as mdconfig or simple
+);
+/** flatcorrCamLinkRow data structure
+ *
+ * Structure for representing a single row of flatcorrCamLink table data.
+ */
+
+typedef struct {
+    psS64           corr_id;
+    psS64           chip_id;
+    psS64           cam_id;
+} flatcorrCamLinkRow;
+
+/** Creates a new flatcorrCamLinkRow object
+ *
+ *  @return A new flatcorrCamLinkRow object or NULL on failure.
+ */
+
+flatcorrCamLinkRow *flatcorrCamLinkRowAlloc(
+    psS64           corr_id,
+    psS64           chip_id,
+    psS64           cam_id
+);
+
+/** Creates a new flatcorrCamLink table
+ *
+ * @return true on success
+ */
+
+bool flatcorrCamLinkCreateTable(
+    psDB            *dbh                ///< Database handle
+);
+
+/** Deletes a flatcorrCamLink table
+ *
+ * @return true on success
+ */
+
+bool flatcorrCamLinkDropTable(
+    psDB            *dbh                ///< Database handle
+);
+
+/** Insert a single row into a table
+ *
+ * This function constructs and inserts a single row based on it's parameters.
+ *
+ * @return true on success
+ */
+
+bool flatcorrCamLinkInsert(
+    psDB            *dbh,               ///< Database handle
+    psS64           corr_id,
+    psS64           chip_id,
+    psS64           cam_id
+);
+
+/** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+long long flatcorrCamLinkDelete(
+    psDB            *dbh,               ///< Database handle
+    const psMetadata *where,            ///< Row match criteria
+    unsigned long long limit            ///< Maximum number of elements to delete 
+);
+
+/** Insert a single flatcorrCamLinkRow object into a table
+ *
+ * This function constructs and inserts a single row based on it's parameters.
+ *
+ * @return true on success
+ */
+
+bool flatcorrCamLinkInsertObject(
+    psDB            *dbh,               ///< Database handle
+    flatcorrCamLinkRow *object             ///< flatcorrCamLinkRow object
+);
+
+/** Insert an array of flatcorrCamLinkRow object into a table
+ *
+ * This function constructs and inserts multiple rows based on it's parameters.
+ *
+ * @return true on success
+ */
+
+bool flatcorrCamLinkInsertObjects(
+    psDB            *dbh,               ///< Database handle
+    psArray         *objects            ///< array of flatcorrCamLinkRow objects
+);
+
+/** Insert data from a binary FITS table flatcorrCamLinkRow into the database
+ *
+ * This function expects a psFits object with a FITS table as the first
+ * extension.  The table must have at least one row of data in it, that is of
+ * the appropriate format (number of columns and their type).  All other
+ * extensions are ignored.
+ *
+ * @return true on success
+ */
+
+bool flatcorrCamLinkInsertFits(
+    psDB            *dbh,               ///< Database handle
+    const psFits    *fits               ///< psFits object
+);
+
+/** Selects up to limit from the database and returns them in a binary FITS table
+ *
+ * This function assumes an empty psFits object and will create a FITS table
+ * as the first extension.
+ *
+ *  See psDBSelectRows() for documentation on the format of where.
+ *
+ * @return true on success
+ */
+
+bool flatcorrCamLinkSelectRowsFits(
+    psDB            *dbh,               ///< Database handle
+    psFits          *fits,              ///< psFits object
+    const psMetadata *where,            ///< Row match criteria
+    unsigned long long limit            ///< Maximum number of elements to return
+);
+
+/** Convert a flatcorrCamLinkRow into an equivalent psMetadata
+ *
+ * @return A psMetadata pointer or NULL on error
+ */
+
+psMetadata *flatcorrCamLinkMetadataFromObject(
+    const flatcorrCamLinkRow *object             ///< fooRow to convert into a psMetadata
+);
+
+/** Convert a psMetadata into an equivalent fooRow
+ *
+ * @return A flatcorrCamLinkRow pointer or NULL on error
+ */
+
+flatcorrCamLinkRow *flatcorrCamLinkObjectFromMetadata(
+    psMetadata      *md                 ///< psMetadata to convert into a fooRow
+);
+/** Selects up to limit rows from the database and returns as flatcorrCamLinkRow objects in a psArray
+ *
+ *  See psDBSelectRows() for documentation on the format of where.
+ *
+ * @return A psArray pointer or NULL on error
+ */
+
+psArray *flatcorrCamLinkSelectRowObjects(
+    psDB            *dbh,               ///< Database handle
+    const psMetadata *where,            ///< Row match criteria
+    unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an flatcorrCamLink
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool flatcorrCamLinkDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const flatcorrCamLinkRow *object    ///< Object to delete
+);
+/** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+long long flatcorrCamLinkDeleteRowObjects(
+    psDB            *dbh,               ///< Database handle
+    const psArray   *objects,           ///< Array of objects to delete
+    unsigned long long limit            ///< Maximum number of elements to delete 
+);
+/** Formats and prints an array of flatcorrCamLinkRow objects
+ *
+ * When mdcf is set the formated output is in psMetadataConfig
+ * format, otherwise it is in a simple tabular format.
+ *
+ * @return true on success
+ */
+
+bool flatcorrCamLinkPrintObjects(
+    FILE            *stream,            ///< a stream
+    psArray         *objects,           ///< An array of flatcorrCamLinkRow objects
+    bool            mdcf                ///< format as mdconfig or simple
+);
+/** Formats and prints an flatcorrCamLinkRow object
+ *
+ * When mdcf is set the formated output is in psMetadataConfig
+ * format, otherwise it is in a simple tabular format.
+ *
+ * @return true on success
+ */
+
+bool flatcorrCamLinkPrintObject(
+    FILE            *stream,            ///< a stream
+    flatcorrCamLinkRow *object,    ///< an flatcorrCamLinkRow object
     bool            mdcf                ///< format as mdconfig or simple
 );
@@ -12075,4 +12591,220 @@
     FILE            *stream,            ///< a stream
     pstampDataStoreRow *object,    ///< an pstampDataStoreRow object
+    bool            mdcf                ///< format as mdconfig or simple
+);
+/** pstampProjectRow data structure
+ *
+ * Structure for representing a single row of pstampProject table data.
+ */
+
+typedef struct {
+    psS64           proj_id;
+    char            *name;
+    char            *state;
+    char            *dbname;
+    char            *dvodb;
+    char            *camera;
+    char            *telescope;
+    bool            need_magic;
+} pstampProjectRow;
+
+/** Creates a new pstampProjectRow object
+ *
+ *  @return A new pstampProjectRow object or NULL on failure.
+ */
+
+pstampProjectRow *pstampProjectRowAlloc(
+    psS64           proj_id,
+    const char      *name,
+    const char      *state,
+    const char      *dbname,
+    const char      *dvodb,
+    const char      *camera,
+    const char      *telescope,
+    bool            need_magic
+);
+
+/** Creates a new pstampProject table
+ *
+ * @return true on success
+ */
+
+bool pstampProjectCreateTable(
+    psDB            *dbh                ///< Database handle
+);
+
+/** Deletes a pstampProject table
+ *
+ * @return true on success
+ */
+
+bool pstampProjectDropTable(
+    psDB            *dbh                ///< Database handle
+);
+
+/** Insert a single row into a table
+ *
+ * This function constructs and inserts a single row based on it's parameters.
+ *
+ * @return true on success
+ */
+
+bool pstampProjectInsert(
+    psDB            *dbh,               ///< Database handle
+    psS64           proj_id,
+    const char      *name,
+    const char      *state,
+    const char      *dbname,
+    const char      *dvodb,
+    const char      *camera,
+    const char      *telescope,
+    bool            need_magic
+);
+
+/** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+long long pstampProjectDelete(
+    psDB            *dbh,               ///< Database handle
+    const psMetadata *where,            ///< Row match criteria
+    unsigned long long limit            ///< Maximum number of elements to delete 
+);
+
+/** Insert a single pstampProjectRow object into a table
+ *
+ * This function constructs and inserts a single row based on it's parameters.
+ *
+ * @return true on success
+ */
+
+bool pstampProjectInsertObject(
+    psDB            *dbh,               ///< Database handle
+    pstampProjectRow *object             ///< pstampProjectRow object
+);
+
+/** Insert an array of pstampProjectRow object into a table
+ *
+ * This function constructs and inserts multiple rows based on it's parameters.
+ *
+ * @return true on success
+ */
+
+bool pstampProjectInsertObjects(
+    psDB            *dbh,               ///< Database handle
+    psArray         *objects            ///< array of pstampProjectRow objects
+);
+
+/** Insert data from a binary FITS table pstampProjectRow into the database
+ *
+ * This function expects a psFits object with a FITS table as the first
+ * extension.  The table must have at least one row of data in it, that is of
+ * the appropriate format (number of columns and their type).  All other
+ * extensions are ignored.
+ *
+ * @return true on success
+ */
+
+bool pstampProjectInsertFits(
+    psDB            *dbh,               ///< Database handle
+    const psFits    *fits               ///< psFits object
+);
+
+/** Selects up to limit from the database and returns them in a binary FITS table
+ *
+ * This function assumes an empty psFits object and will create a FITS table
+ * as the first extension.
+ *
+ *  See psDBSelectRows() for documentation on the format of where.
+ *
+ * @return true on success
+ */
+
+bool pstampProjectSelectRowsFits(
+    psDB            *dbh,               ///< Database handle
+    psFits          *fits,              ///< psFits object
+    const psMetadata *where,            ///< Row match criteria
+    unsigned long long limit            ///< Maximum number of elements to return
+);
+
+/** Convert a pstampProjectRow into an equivalent psMetadata
+ *
+ * @return A psMetadata pointer or NULL on error
+ */
+
+psMetadata *pstampProjectMetadataFromObject(
+    const pstampProjectRow *object             ///< fooRow to convert into a psMetadata
+);
+
+/** Convert a psMetadata into an equivalent fooRow
+ *
+ * @return A pstampProjectRow pointer or NULL on error
+ */
+
+pstampProjectRow *pstampProjectObjectFromMetadata(
+    psMetadata      *md                 ///< psMetadata to convert into a fooRow
+);
+/** Selects up to limit rows from the database and returns as pstampProjectRow objects in a psArray
+ *
+ *  See psDBSelectRows() for documentation on the format of where.
+ *
+ * @return A psArray pointer or NULL on error
+ */
+
+psArray *pstampProjectSelectRowObjects(
+    psDB            *dbh,               ///< Database handle
+    const psMetadata *where,            ///< Row match criteria
+    unsigned long long limit            ///< Maximum number of elements to return
+);
+/** Deletes a row from the database coresponding to an pstampProject
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+bool pstampProjectDeleteObject(
+    psDB            *dbh,               ///< Database handle
+    const pstampProjectRow *object    ///< Object to delete
+);
+/** Deletes up to limit rows from the database and returns the number of rows actually deleted. 
+ *
+ *  Note that a 'where' search psMetadata is constructed from each object and
+ *  used to find rows to delete.
+ *
+ * @return A The number of rows removed or a negative value on error
+ */
+
+long long pstampProjectDeleteRowObjects(
+    psDB            *dbh,               ///< Database handle
+    const psArray   *objects,           ///< Array of objects to delete
+    unsigned long long limit            ///< Maximum number of elements to delete 
+);
+/** Formats and prints an array of pstampProjectRow objects
+ *
+ * When mdcf is set the formated output is in psMetadataConfig
+ * format, otherwise it is in a simple tabular format.
+ *
+ * @return true on success
+ */
+
+bool pstampProjectPrintObjects(
+    FILE            *stream,            ///< a stream
+    psArray         *objects,           ///< An array of pstampProjectRow objects
+    bool            mdcf                ///< format as mdconfig or simple
+);
+/** Formats and prints an pstampProjectRow object
+ *
+ * When mdcf is set the formated output is in psMetadataConfig
+ * format, otherwise it is in a simple tabular format.
+ *
+ * @return true on success
+ */
+
+bool pstampProjectPrintObject(
+    FILE            *stream,            ///< a stream
+    pstampProjectRow *object,    ///< an pstampProjectRow object
     bool            mdcf                ///< format as mdconfig or simple
 );
@@ -12306,4 +13038,5 @@
     psS32           fault;
     char            *uri;
+    psS64           exp_id;
     char            *outputBase;
     char            *args;
@@ -12323,4 +13056,5 @@
     psS32           fault,
     const char      *uri,
+    psS64           exp_id,
     const char      *outputBase,
     const char      *args
@@ -12361,4 +13095,5 @@
     psS32           fault,
     const char      *uri,
+    psS64           exp_id,
     const char      *outputBase,
     const char      *args
